{"version":3,"sources":["components/DocModal/DocModal.module.css","components/GeoPlaceInput/GeoPlaceInput.module.css","components/ExtraAttributes/ViewerControl/SummaryAttributeViewerControl.module.css","components/ExtraAttributes/EditorControl/LookupEditorControl.module.css","components/UploadImage/ImageEditorModal.module.css","components/FormBar/Item/Edit.module.css","components/FormBar/Item/Search.module.css","components/CommandActions/doc_printMultiple.js","components/ItemFlowsModal/ItemFlowsModal.module.css","components/UploadVersionModal/UploadVersionModal.module.css","components/RasterMapManagerModal/LayersEditor.module.css","components/RasterMapManagerModal/RasterMapModal.module.css","components/ReminderManagerModal/ReminderManagerModal.module.css","components/ExtraAttributes/ViewerControl/EnumViewerControl.module.css","data/reducers/userReducer.js","data/reducers/searchReducer.js","components/MapViewer/utils.js","components/ExtraAttributes/ViewerControl/ViewerControlBase.js","components/CountBadge/index.js","data/apiError.js","components/uppy-exif/index.js","data/uppy.js","data/extensions.js","components/SplitPanes/Pane.js","data/actions/actionTypes.js","components/DocListSimple/RowResult.module.css","components/Activities/Activity.module.css","components/Divider/index.js","data/history.js","data/utils.js","components/FolderTree/FolderTree.module.css","data/reducers/docsReducer.js","__i18n/moment lazy /^/.*$/ groupOptions: {} namespace object","components/FilterBar/SearchBucket/SearchBucket.module.css","__i18n/uppy lazy /^/.*$/ groupOptions: {} namespace object","../node_modules/leaflet-geosearch/lib/providers lazy /^/.*/.js$/ groupOptions: {} namespace object","components/PageStatus/inPoint_192.png","data/offline/serviceWorkerRegistration.js","index.js","data/reducers/formReducer.js","data/actions/index.js","data/reducers/loginReducer.js","components/Attributes/SummaryAttribute/SummaryAttribute.module.css","components/Reminder/ReminderItem.module.css","components/DocList/CellContent.module.css","containers/ActionPanel/ShouldBeVisible.js","data/toast.js","data/reducers/breadcrumbReducer.js","components/Loader/Loading.js","components/Status/Loading.js","components/Loader/index.js","data/ApiManagerOffline.js","data/ApiManager.js","data/api.js","views/minipicker/index.js","components/PickerModal/index.js","components/SearchParam/utils.js","components/Attributes/SummaryAttribute/ValueFacePile.js","components/Attributes/SummaryAttribute/ValuePrincipal.js","components/Attributes/SummaryAttribute/ValueProgress.js","components/Attributes/SummaryAttribute/ValueVisualRules.js","components/Attributes/SummaryAttribute/ValueEnum.js","components/Attributes/SummaryAttribute/ValueTextLink.js","components/Attributes/SummaryAttribute/ValueFilesize.js","components/Attributes/SummaryAttribute/ValueDatetime.js","components/Attributes/SummaryAttribute/ValueFactory.js","components/ItemFlows/FlowCardImage.js","components/ItemFlows/List.js","components/ItemFlows/Form.js","components/ItemFlows/index.js","components/User/Avatar.js","data/types.js","containers/OfflineHandler.js","components/ProgressModal/index.js","data/reducers/treeReducer.js","data/reducers/networkSelectors.js","data/reducers/selectors.js","data/offline/offlineQueue.js","components/CommandActions/utils/FormTokens.js","components/ExtraAttributes/EditorControl/NumberEditorControl.js","containers/ActionPanel/Utils.js","data/itemActions.js","components/UploadImage/UploadImage.module.css","components/ActionPanel/ActionCategory.js","components/ActionPanel/index.js","containers/ActionPanel/index.js","components/ItemActionPanel/index.js","hooks/AbortController.js","hooks/Broadcast.js","hooks/NetworkStatus.js","hooks/PostMessage/Handler.js","hooks/PostMessage/Modal.js","hooks/PostMessage/index.js","components/GeoPointActionPanel/index.js","hooks/PersistSetting.js","hooks/LocalStore.js","hooks/Moment.js","hooks/Uppy.js","hooks/PdfHighlight.js","hooks/OfflineHandler.js","hooks/ArrowNavigation.js","hooks/RecycleBin.js","hooks/ViewNameTypeRouting.js","data/formActions.js","hooks/FormActions.js","hooks/ItemFlows.js","hooks/FolderItemUri.js","components/ExtraAttributes/ViewerControl/LinkViewerControl.js","components/DocListSimple/Thumbnail.js","components/MapModal/PlaceInput.js","components/MapModal/index.js","containers/Breadcrumb.js","components/ExtraAttributes/EditorControl/EnumEditorControl.js","components/ExtraAttributes/ViewerControl/StaticViewerControl.js","data/ApiCatalog.js","data/ApiManagerBase.js","components/User/UserGroup.js","components/User/PrincipalAvatar.js","components/NativeSelect/NativeSelect.module.css","data/apiError.module.css","components/SiteSelect/SiteSelect.module.css","views/minipicker/minipicker.module.css","views/document/document.module.css","components/RecentFolderSelect/RecentFolderSelect.module.css","containers/Form.module.css","containers/TogglesHandler/index.js","containers/SplitPanes/index.js","components/Modal/index.js","data/reducers/workflowReducer.js","data/reducers/serviceWorkerReducer.js","components/ActionPanel/ActionsButton.js","components/ExtraAttributes/EditorControl/TextEditorControl.js","containers/ItemContext/index.js","data/panes.js","components/ExtraAttributes/AttributeLabel.module.css","components/DocListSimple/RowResultByLayout.module.css","components/Rename/index.js","components/Searchcrumb/index.js","containers/Searchcrumb.js","components/MainLayout/CrumbSelector.js","components/ToggleBar/Button.js","components/ToggleBar/index.js","containers/ToggleBar/index.js","components/MainLayout/index.js","components/MainLayout/usePendingOfflineChanges.js","containers/StickyToggle/index.js","components/ExtraAttributes/ViewerControl/ImageViewerControl.js","data/reducers/docsLayoutReducer.js","data/reducers/settingsReducer.js","data/reducers/currentItemReducer.js","data/reducers/searchFormsReducer.js","data/reducers/offlineReducer.js","containers/Moment.js","components/NativeSelect/index.js","components/ExtraAttributes/EditorControl/DateEditorControl.js","components/ExtraAttributes/ViewerControl/UserIdViewerControl.js","components/Form/utils.js","components/Form/index.js","components/ExtraAttributes/EditorControl/HiddenEditorControl.js","components/FormEdit/FieldEdit.js","components/NavigationBlock/index.js","components/FormEdit/index.js","containers/RememberValues/Checkbox.js","containers/RememberValues/Control.js","containers/RememberValues/index.js","containers/WebDavName/Control.js","containers/WebDavName/index.js","containers/Form.js","components/Attributes/SummaryAttribute/index.js","components/Attributes/index.js","data/loginFlow.js","components/ExtraAttributes/EditorControl/PrincipalEditorControl.js","components/ExtraAttributes/EditorControl/MemoEditorControl.js","components/FilterBar/SearchBucket/Name.js","components/FilterBar/SearchBucket/Header.js","components/FilterBar/SearchBucket/AllItem.js","components/FilterBar/SearchBucket/MenuItem.js","components/FilterBar/SearchBucket/Button.js","components/FilterBar/SearchBucket/Icon.js","components/FilterBar/SearchBucket/index.js","data/storeHelper.js","components/LocalContactInfo/index.js","components/ActionPanel/ItemAction.js","components/DocListSimple/RowResultByLayout.js","components/CommandActions/itemViews/itemView_docListGallery.js","components/CommandActions/itemViews/itemView_docList.js","components/CommandActions/itemViews/itemView_activityList.js","components/Reminder/EnumIcon.js","components/Reminder/ReminderItem.js","components/CommandActions/itemViews/itemView_reminder.js","components/CommandActions/itemViews/itemView_filter.js","components/CommandActions/itemViews/itemView_multiSelection.js","components/CommandActions/itemViews/Factory.js","components/ActionPanel/ItemActions.js","components/Divider/Divider.module.css","components/CommandActions/itemViews/itemView_docListGallery.module.css","components/LockInfo/LockInfo.module.css","components/CommandActions/itemViews/itemView_workflow.module.css","components/ShareModal/EditorControl/SharePrincipal.module.css","components/GeoRasterInput/GeoRasterInput.module.css","components/FormBar/Item/LockInfo.module.css","components/FormBar/Item/SearchScope.module.css","components/RasterMapManagerModal/RasterLayer.module.css","components/ExtraAttributes/GridEditorControl/GridUtils.js","components/Status/Overlay.js","components/Status/index.js","hooks/PostMessage/Actions/Default.js","hooks/PostMessage/Actions/CustomUpload.js","hooks/PostMessage/Actions/ArrowNavigation.js","hooks/PostMessage/Actions/PdfHighlight.js","hooks/PostMessage/Actions/PdfSignature.js","hooks/PostMessage/Actions/PdfPrint.js","hooks/PostMessage/Actions/Modal.js","hooks/PostMessage/Actions/Notification.js","hooks/PostMessage/Actions/Print.js","hooks/PostMessage/Actions/Toggles.js","hooks/PostMessage/Actions/Item.js","hooks/PostMessage/Actions/index.js","data/reducers/togglesReducer.js","data/reducers/cardsReducer.js","data/reducers/thumbnailsReducer.js","data/reducers/favoritesReducer.js","data/reducers/commandActionReducer.js","components/UploadSelection/index.js","components/LockInfo/index.js","components/ItemActionPanel/ItemActionPanel.module.css","components/TreeFilter/TreeFilter.module.css","components/ShareModal/ViewerControl/ExternalUser.module.css","components/LocalContactInfo/LocalContactInfo.module.css","components/GeoAreaInput/GeoAreaInput.module.css","components/FormBar/Item/Workflow.module.css","components/FormModal/FormModal.module.css","containers/FileDropHandler/index.js","containers/ItemContext/Provider.js","containers/StickyToggle/style.js","data/integrationTestUtils.js","components/Breadcrumb/BreadcrumbPart.js","components/Breadcrumb/BreadcrumbFavorite.js","components/Breadcrumb/Breadcrumb.js","components/Breadcrumb/index.js","data/bowser.js","data/context.js","components/ContextMenu/Handler.js","components/ItemUriLink/index.js","components/ExtraAttributes/ViewerControl/SummaryAttributeViewerControl.js","data/reducers/panesReducer.js","data/reducers/globalSearchReducer.js","data/reducers/globalEventsReducer.js","data/reducers/notificationReducer.js","components/CommandActions/CommandActionButton.js","components/ExtraAttributes/EAForm.js","components/ExternalLinkModal/index.js","components/NoteInput/index.js","components/Activities/RetentionInfo.js","components/Activities/Activity.js","components/Activities/ActivityList.js","components/Activities/CleanupKeepInfo.js","components/Activities/index.js","containers/Activities.js","data/reducers/index.js","components/ConflictModal/index.js","data/toggles.js","components/ItemStatusIcons/index.js","components/Attributes/SimpleAttribute.js","components/CommandActions/itemViews/itemView_workflow.js","components/SiteSelect/index.js","components/DayPickerInput/index.js","components/MapButton/index.js","components/CommandActions/doc_print.js","components/LoadingIframe/index.js","data/ApiCacheManager.js","data/ApiManagerMakeAvailableOffline.js","data/sagas/offlineSaga.js","data/sagas/userSaga.js","data/sagas/favoritesSaga.js","data/sagas/cardsSaga.js","data/sagas/workflowSaga.js","data/sagas/treeSaga.js","data/sagas/docsSaga.js","data/sagas/docsLayoutSaga.js","data/sagas/currentItemSaga.js","data/sagas/searchSaga.js","data/sagas/thumbnailsSaga.js","data/sagas/notificationsSaga.js","data/sagas/toastSaga.js","data/sagas/commandActionSaga.js","data/sagas/rootSaga.js","components/FilterBar/ViewModesMenu.js","components/FilterBar/ViewModesButtons.js","components/FilterBar/ViewModes.js","data/actionMenus.js","components/ActionsMenu/Render.js","components/ActionsMenu/index.js","components/DocListSimple/RowResult.js","components/DocListSimple/index.js","components/NoDocs/OpenFiltersButton.js","components/NoDocs/index.js","components/Status/Status.module.css","data/toast.module.css","components/Modal/Modal.module.css","components/ActionPanel/ItemAction.module.css","components/CommandActions/itemViews/itemView_docList.module.css","components/Attributes/SummaryAttribute/ValuePrincipal.module.css","containers/StickyToggle/StickyToggle.module.css","components/NoteInput/NoteInput.module.css","components/Activities/Activities.module.css","components/Breadcrumb/Breadcrumb.module.css","components/PickerModal/PickerModal.module.css","components/Rename/Rename.module.css","components/Searchcrumb/Searchcrumb.module.css","components/ToggleBar/Button.module.css","components/OptionsModal/OptionsModal.module.css","components/MapModal/PlaceInput.module.css","components/ItemFlows/List.module.css","components/PageStatus/index.js","components/Sidebar/utils.js","data/queryString.js","data/store.js","data/persistTransforms.js","data/storage.js","containers/ItemUri/index.js","hooks/NetworkStatus.module.css","components/ActionPanel/ItemActions.module.css","components/FilterBar/ViewModes.module.css","components/CommandActions/CommandActionButton.module.css","components/Attributes/SummaryAttribute/ValueFacePile.module.css","components/User/UserGroup.module.css","components/ActionPanel/ActionCategory.module.css","components/DayPickerInput/DayPickerInput.module.css","components/ExtraAttributes/Error.module.css","components/ExtraAttributes/EditorControl/PrincipalEditorControl.module.css","components/ShareModal/ViewerControl/Attachments.module.css","components/ShareModal/ShareModal.module.css","components/MapModal/MapModal.module.css","hooks/PostMessage/Utils.js","components/FormBar/Item/ArchiveTarget.module.css","components/PageStatus/PageStatus.module.css","components/CommandActions/itemFlows/itemFlow_document.module.css","components/WorkflowActionPanel/WorkflowActionPanel.module.css","containers/SettingValue/index.js","containers/LayoutLoader/index.js","components/DocListFilterBar/index.js","components/DocList/CellContent.js","components/DocList/index.js","components/DocListFilterModal/Operators.js","components/DocListFilterModal/DatePicker.js","components/DocListFilterModal/FilterDateValue.js","components/DocListFilterModal/BoolPicker.js","components/DocListFilterModal/FilterValue.js","components/DocListFilterModal/index.js","containers/UploadHandler/index.js","containers/DocList.js","components/FormBar/Item/ArchiveTarget.js","components/FormBar/Item/Edit.js","components/FormBar/Item/LockInfo.js","components/FormBar/Item/Search.js","components/FormBar/Item/SearchScope.js","components/FormBar/Item/View.js","components/FormBar/Item/Workflow.js","components/FormBar/Item/index.js","components/FormBar/Factory.js","components/ExtraAttributes/EditorControl/LookupEditorControl.js","containers/ViewerKeysHandler/index.js","containers/SuggestionHandler/index.js","components/CommandActions/ip_commandAction.js","components/CommandActions/ip_archive.js","components/CommandActions/ip_browse.js","components/CommandActions/ip_edit.js","components/CommandActions/ip_properties.js","components/CommandActions/folder_delete.js","components/CommandActions/folder_editClassification.js","components/OptionsModal/index.js","components/ShareModal/NotifyOptionsModal.js","components/ShareModal/Utils.js","components/ShareModal/ShareActionForm.js","components/ShareModal/EditorControl/ShareAction.js","components/ShareModal/SharePrincipalForm.js","components/ShareModal/EditorControl/SharePrincipal.js","components/ShareModal/ViewerControl/ExternalUser.js","components/ShareModal/ViewerControl/ShareAction.js","components/ShareModal/ViewerControl/Attachments.js","components/ShareModal/ShareForm.js","components/ShareModal/index.js","components/CommandActions/share.js","components/CommandActions/folder_emailLink.js","components/CommandActions/folder_preview.js","components/CommandActions/form_back.js","components/CommandActions/form_cancel.js","components/CommandActions/form_clear.js","components/CommandActions/search_favorite.js","components/CommandActions/search_preview.js","components/CommandActions/search_scope.js","components/CommandActions/searchForm_abort.js","components/CommandActions/searchForm_operator.js","components/CommandActions/searchForm_scope.js","components/CommandActions/doclist_resetFilters.js","components/CommandActions/doclist_exportCsv.js","components/CommandActions/doc_download.js","components/CommandActions/doc_downloadZip.js","components/CommandActions/doc_downloadFilesAPI.js","components/CommandActions/doc_delete.js","components/ModalFullscreenButton/index.js","components/DocModal/index.js","components/CommandActions/doc_preview.js","components/CommandActions/doc_related.js","views/itemFlows/CategoryFilter.js","components/CommandActions/itemFlows/itemFlow_custom.js","components/CommandActions/itemFlows/itemFlow_folder.js","components/CommandActions/itemFlows/CustomUploadSelection.js","components/CommandActions/itemFlows/DocumentSelection.js","components/CommandActions/itemFlows/itemFlow_document.js","components/CommandActions/itemFlows/itemFlow_docTemplate.js","components/NameModal/index.js","components/CommandActions/createFolder_template.js","components/CommandActions/itemFlows/itemFlow_folderTemplate.js","components/CommandActions/itemFlows/Factory.js","views/itemFlows/index.js","containers/ItemFlows.js","components/ItemFlowsModal/index.js","components/CommandActions/doc_upload.js","components/UploadVersionModal/index.js","components/CommandActions/doc_uploadVersion.js","components/CommandActions/doc_emailLink.js","components/CommandActions/doc_emailAttachment.js","components/CommandActions/doc_editClassification.js","components/CommandActions/doc_editWebDav.js","components/CommandActions/doc_editCloud.js","components/CommandActions/favorite.js","components/CommandActions/link.js","components/CommandActions/lock.js","components/CommandActions/unlock.js","components/CommandActions/subscribe.js","components/CommandActions/unsubscribe.js","components/CommandActions/share_web.js","components/WorkflowActionPanel/index.js","components/CommandActions/wf_info.js","components/ListWorkflowsModal/index.js","components/CommandActions/wf_start.js","components/CommandActions/itemFlows.js","components/CommandActions/transfer.js","components/CommandActions/recyclebin_docClear.js","components/CommandActions/recyclebin_docRestore.js","components/CommandActions/recyclebin_folderClear.js","components/CommandActions/recyclebin_folderRestore.js","components/FormModal/index.js","components/CommandActions/editClassification.js","components/CommandActions/clipboard_copyItemUri.js","components/CommandActions/clipboard_copyItemLink.js","components/RasterMapManagerModal/RasterLayer.js","components/RasterMapManagerModal/LayersEditor.js","components/RasterMapManagerModal/index.js","components/CommandActions/raster_manage.js","components/ExtraAttributes/ViewerControl/EnumViewerControl.js","components/Reminder/ReminderForm.js","components/ReminderManagerModal/index.js","components/CommandActions/reminder_manage.js","components/CommandActions/offline_add.js","components/CommandActions/offline_delete.js","components/CommandActions/offline_syncItem.js","components/CommandActions/index.js","components/CardList/CardItem.js","components/TreeFilter/index.js","components/GeoPlaceInput/index.js","components/ExtraAttributes/ViewerControl/EmailViewerControl.js","components/ExtraAttributes/ViewerControl/TelViewerControl.js","components/LocatorButton/geoLocatorOptions.js","components/DocViewer/HandleSignedPdf.js","components/DocViewer/HandlePdfPrint.js","components/DocViewer/ViewerUrl.js","components/DocViewer/PdfArrowNavigation.js","components/DocViewer/index.js","components/InlineViewer/index.js","containers/ContinuousPreview/index.js","containers/DocViewer.js","components/FolderTree/RowContent.js","components/FolderTree/Row.js","components/FolderTree/index.js","containers/FolderTree.js","components/NarrowToggle/index.js","components/FilterBar/CombinedFiltersMenu.js","components/FilterBar/index.js","components/GeoAreaInput/index.js","components/ExtraAttributes/EditorControl/GeoAreaEditorControl.js","components/ExtraAttributes/Error.js","components/ExtraAttributes/EditorControl/FormsyEditorBase.js","data/constants.js","components/ConfirmModal/index.js","components/DocListFilterModal/Utils.js","components/NoData/index.js","components/SearchResultActionPanel/index.js","shared/styles.module.css","components/ExtraAttributes/AttributeLabel.js","components/Tree/index.js","containers/FilterBar.js","data/logging.js","components/DocListFilterModal/RelativeDatePicker.js","containers/LocalStore.js","components/uppy-restrictions/index.js","components/MapViewer/providerSupport.js","components/DocModal/TopRowExtras.js","components/ExtraAttributes/ViewerControl/LocationViewerControl.js","components/MapViewer/index.js","components/ExtraAttributes/ViewerControl/GeoRasterViewerControl.js","components/ExtraAttributes/EditorControl/LoadableGeoPointEditorControl.js","components/UploadImage/cropImage.js","components/UploadImage/rotation.js","components/UploadImage/clampInRange.js","components/UploadImage/zoom.js","components/UploadImage/ImageEditorModal.js","components/UploadImage/index.js","components/ExtraAttributes/EditorControl/ImageEditorControl.js","components/CommandActions/searchResult_form.geoLocation.js","data/barcode.js","components/CommandActions/searchResult_form.barcode.js","components/CommandActions/searchResult_form.js","components/SearchParam/Text.js","components/SearchParam/Label.js","components/SearchParam/index.js","containers/ViewName/index.js","views/document/index.js","components/GeoRasterInput/index.js","components/ExtraAttributes/EditorControl/GeoRasterEditorControl.js","components/RecentFolderSelect/index.js","components/MainSearchScope/SearchScopeSelect.js","components/Status/Overlay.module.css","components/ConfirmModal/ConfirmModal.module.css","components/NoData/NoData.module.css","components/NoDocs/NoDocs.module.css","components/DocListSimple/DocListSimple.module.css","components/User/Avatar.module.css","components/Attributes/SummaryAttribute/ValueProgress.module.css","components/Attributes/SummaryAttribute/ValueEnum.module.css","components/ExtraAttributes/ViewerControl/LinkViewer.module.css","components/DocListSimple/Thumbnail.module.css","components/ActionsMenu/ActionsMenu.module.css","components/ToggleBar/ToggleBar.module.css","components/Tree/Tree.module.css","components/DocListFilterModal/DocListFilterModal.module.css","containers/GlobalEventsHandler/index.js","components/ShareModal/EditorControl/ShareAction.module.css","components/ShareModal/ViewerControl/ShareAction.module.css","components/ProgressModal/ProgressModal.module.css"],"names":["module","exports","doc_printMultiple","logger","toastActionResult","createPrintableFile","data","contentType","$type","Buffer","from","toString","Error","iframe","execute","multiple","itemUri","ext","name","docName","isDoc","items","a","documents","filter","item","push","length","getLocalizedText","count","openProgressModal","icon","title","initialProgress","doWork","close","setError","setProgress","progressPart","Promise","resolve","node","handleInit","e","isTrusted","source","type","PrintAction","Ready","window","removeEventListener","addEventListener","document","createElement","src","process","body","appendChild","errors","doc","d","downloadDocUri","CONFIG","general","htmlViewerExtensions","includes","String","toLowerCase","imageViewerExtensions","uri","fetch","response","arrayBuffer","buffer","headers","get","reject","handlePrepareFile","Failed","postMessageTo","Prepare","contentWindow","console","warn","Print","setTimeout","message","removeChild","initialState","displayName","id","status","Constants","NONE","sites","mainNavigation","isWfEnabled","isAdmin","avatar","undefined","hasOfflineItems","itemActions","categories","actions","userReducer","state","action","actionTypes","USER_FETCH_REQUESTED","payload","USER_FETCH_RESULT","rest","favorites","USER_SITES_RESULT","LOGIN_SIGNOUT","PERSIST_PURGE","userIdSelector","user","userNameSelector","userStatusSelector","userCorrelationIdSelector","correlationId","userSitesSelector","userMainNavigationSelector","userIsAdminSelector","OK","userIsWfEnabledSelector","userLanguageSelector","language","userDecimalSeparator","decimalSeparator","userThousandSeparator","thousandSeparator","userItemActionsSelector","userFormActionsSelector","formActions","userTopbarItemsSelector","topbar","userHasOfflineItemsSelector","error","result","totalCount","totalTime","aggregations","form","changes","searchRequest","searchItem","isValid","searchReducer","SEARCH_RESET","SEARCH_FAVRENAME_REQUEST","SEARCH_FAVRENAME_RESULT","SEARCH_FETCH_REQUEST","SEARCH_FETCH_RESULT","SEARCH_ITEM_SAVE","SEARCH_FORM_CHANGES","SEARCH_FORM_VALIDATION","SEARCH_FORM_FETCH_REQUEST","Object","assign","LOADING","SEARCH_FORM_FETCH_RESULT","SEARCH_FORM_RESET","SEARCH_COUNT_REQUEST","SEARCH_COUNT_RESULT","searchStatusSelector","search","searchErrorSelector","searchResultSelector","searchResultTotalCountSelector","searchRequestSelector","searchTermsSelector","terms","searchItemSelector","searchFormStatusSelector","searchFormResultSelector","searchFormIdSelector","searchFormChangesSelector","searchCountStatusSelector","searchCountResultSelector","searchCountAggregationsSelector","searchFormValidationSelector","TrimLocation","location","map","point","replace","ParseLocation","trim","indexOf","pos","split","isNaN","Number","latitude","parseFloat","longitude","ParseRaster","loc","x","y","rasterId","ParseArea","area","ParseRadius","value","radius","parts","RadiusToString","LocationToString","toFixed","AreaToString","reduce","index","GeoPointValidationRegex","GeoAreaValidationRegex","ViewerControlBase","className","style","children","width","ctx","useContext","PaneSizeContext","computedStyle","useMemo","styles","maxWidth","abbrNum","number","decPlaces","Math","pow","abbrev","i","size","round","format","CountBadge","HTTP_ERROR_UNAUTHORIZED","HTTP_ERROR_FORBIDDEN","HTTP_ERROR_CONFLICT","_log","JL","ApiErrorContainer","constructor","super","captureStackTrace","this","ApiError","args","isError","ApiNetworkError","statusCode","statusText","ApiConflictError","ApiForbiddenError","ApiNetworkOfflineError","detail","eventId","notifyOnForbidden","msg","email","url","details","bsSize","group","bsStyle","btn","href","target","rel","toastStyled","toastId","toastTypes","partial","autoClose","notifyOnError","extra","notify","text","handleClick","copy","JSON","stringify","onCopy","clipboardData","failure","onClick","UppyExif","BasePlugin","uppy","opts","extractExif","file","meta","log","reader","FileReader","readyState","parser","create","parse","metadata","tags","keys","forEach","tagName","prefix","tag","isEmpty","setFileMeta","err","readAsArrayBuffer","install","on","uninstall","off","DEFAULT_UPPY_ID","uppyPendingUploadsCountSelector","pendingCount","files","fileId","progress","uploadComplete","uppyHasPendingUploadsSelector","uppyIsResumingUploadsSelector","currentUploads","uppyPendingFilesMetaSelector","uploadStarted","preview","getUppyLocale","locale","mapToUppyLocale","userLanguage","i18n","default","bg","cs","de","en","es","fr","hr","hu","it","ru","sk","sl","uk","lt","createUppy","maxNumberOfFiles","maxFileSize","allowedFileTypes","deniedFileTypes","Uppy","store","ReduxStore","autoProceed","restrictions","allowMultipleUploadBatches","debug","addUppyPlugins","_uppy","CustomHttpHeader","CorrelationId","SecureParams","MiniView","isMiniView","accessToken","authorization","getPlugin","use","Tus","endpoint","host","bridge","basename","withCredentials","chunkSize","limit","retryDelays","onShouldRetry","retryAttempt","options","next","originalResponse","getStatus","Webcam","facingMode","countdown","modes","mirror","strings","pluginNameCamera","isFeatureOn","Feature","uppyLexmark","Lexmark","UppyLexmark","pluginNameLexmark","scanFromMFP","ThumbnailGenerator","thumbnailWidth","localStorage","GoldenRetriever","serviceWorker","offline","DOMException","UppyMsg","UppyRestrictions","isOnline","queue","getFiles","key","anyPendingChanges","then","exists","addToOfflineQueue","OfflineQueueItemType","UppyFile","params","removeFile","swOfflineQueueAddFile","all","values","ModalAction","Close","uppyError","find","startsWith","handleBeforeUpload","handleFile","setState","allowNewUpload","addFile","addUppyEvents","events","event","callback","removeUppyEvents","Date","prototype","toLocalJSON","pad","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","slice","crypto","require","randomUUID","c","getRandomValues","Uint8Array","Pane","dataTest","useState","height","dimensions","setDimensions","bounds","onResize","measureRef","ref","data-test","Provider","TOGGLES_PERSIST","TOGGLES_CHANGE","TOGGLES_UPDATECOUNTER","LOGIN_RESULT","LOGIN_REFRESH","LOGIN_SET_RENEWAL","FAVORITES_FETCH_REQUEST","FAVORITES_FETCH_RESULT","CARDS_FETCH_REQUESTED","CARDS_FETCH_RESULT","CARDS_FETCH_ENTITY_REQUESTED","CARDS_FETCH_ENTITY_RESULT","WF_FETCH_REQUESTED","WF_FETCH_RESULT","WF_PROVIDERS_FETCH_REQUESTED","WF_PROVIDERS_FETCH_RESULT","TREE_SET_STATUS","TREE_FETCH_REQUEST","TREE_FETCH_RESULT","DOCS_FETCH_REQUEST","DOCS_FETCH_RESULT","DOCS_EXPORT_CSV","DOCS_LAYOUT_REQUEST","DOCS_LAYOUT_SET","DOCS_FILTERS_RESET","DOCS_FILTERS_SETBYREF","DOCS_FILTERS_SETBYNAME","DOCS_FILTERTEXT_SET","DOCS_THUMBNAIL_REQUEST","DOCS_THUMBNAIL_RESULT","SEARCH_ABORT","SEARCH_ADD_RECENT","SEARCH_FORM_LIST_FETCH_REQUEST","SEARCH_FORM_LIST_FETCH_RESULT","SPLITPANES_PERSIST","SPLITPANES_SET","SETTINGS_SIDEBAR_MINI","SETTINGS_DOCLIST_VIEWMODE","SETTINGS_SET","GLOBALDEFAULTSEARCH_FETCH_REQUEST","GLOBALDEFAULTSEARCH_FETCH_RESULT","CURRENT_BREADCRUMB","CURRENTITEM_SET","CURRENTITEM_BAK","CURRENTITEM_RESTORE","CURRENTITEM_SAVE","CURRENTITEM_LOADED","EA_CLEAR","EA_DETAILVIEW_SET","EA_GRID_CURRENTROW","EA_FIELD_SET","EA_AUDITLOG_UPDATE","EA_AUDITLOG_CLEAR","EA_AUDITLOG_INSERT","EA_AUDITLOG_DEL","EA_TABINDEX_SET","FORM_DEFAULTS_SET","FORM_EDITMODE_SET","GLOBALEVENTS_SERVER","OFFLINE_SYNC_REQUEST","OFFLINE_SYNC_STARTED","OFFLINE_SYNC_DONE","OFFLINE_SYNC_UPDATE","OFFLINEITEM_SYNC_STATUS","OFFLINEITEM_REMOVE","OFFLINEITEM_DEPSMAP_REQUEST","OFFLINEITEM_DEPSMAP_RESULT","SW_INIT","SW_UPDATE","NOTIFICATION_TOAST","NOTIFICATION_UPSERT","NOTIFICATION_DEL","NOTIFICATION_CLEAR","NOTIFICATION_STATUS","COMMANDACTION_REQUEST","COMMANDACTION_QUEUE_ADD","COMMANDACTION_QUEUE_REMOVE","COMMANDACTION_QUEUE_START","COMMANDACTION_QUEUE_PAUSE","COMMANDACTION_ABORT","COMMANDACTION_REMOVE","COMMANDACTION_LOG","COMMANDACTION_STATUS","COMMANDACTION_ITEM_STATUS","Divider","header","hideHR","defaultExpanded","expanded","expandedFromProps","unmountOnExit","mountOnEnter","usePersistSetting","defaultValue","setExpanded","useEffect","getClassNames","main","aria-expanded","textNoHR","Library","fa","fixedWidth","in","createBrowserHistory","isListed","list","some","l","getFileExtension","fileName","lastIndexOf","replaceFileExtension","filename","newExt","substr","hasSomeParentTheClass","element","getAttribute","parentNode","context","t","isValidItemUri","tokenize","input","parseUserId","parseUserName","tokenized","userId","userName","replaceAll","original","prop","joinWith","Array","isArray","join","mapValues","o","f","entries","v","K","V","moveArrayItem","arr","to","clone","splice","call","hasCacheSupport","performanceTester","fn","t0","performance","now","asyncFilter","predicate","memo","sleep","ms","classNames","closeMenuOnScroll","match","getValue","param","hasOwnProperty","parseSaveDocListFilterOperators","DocListFilterOperators","None","k","toUpperCase","op","maybeLocalizeBreadcrumb","bcText","siteType","delimiter","idx","maybeHandleSiteName","SystemWebDavName","s","msToTime","msInPart","label","msPart","trunc","filters","sorts","rowCount","pageNum","pageSize","rows","cols","filterText","docsReducer","ERROR","receivedAt","produce","draft","docsItemUriSelector","docs","docsStatusSelector","docsPageNumSelector","docsErrorSelector","docsColsSelector","docsRowsSelector","docsTotalCountSelector","docsFiltersSelector","docsSortsSelector","webpackAsyncContext","req","__webpack_require__","code","ids","isLocalhost","Boolean","hostname","registerValidSW","swUrl","config","navigator","register","registration","trace","activeWorker","active","onSuccess","onstatechange","onupdatefound","installingWorker","installing","controller","info","onUpdate","catch","fatalException","onFailure","sagaMiddleware","run","rootSaga","Root","Loader","loader","browserCheck","bowser","satisfies","chrome","edge","firefox","safari","opera","android","iOS","samsung_internet","blackberry","electron","alert","URL","origin","ready","unregister","reload","checkValidServiceWorker","serviceWorkerRegistration","dispatch","serviceWorkerInitializedAction","serviceWorkerUpdatedAction","JEST_WORKER_ID","container","getElementById","createRoot","render","detailView","defaults","isEditMode","formReducer","isNew","seqId","seqIdFromPayload","rowIndex","auditLog","updatedRows","parseSeqId","newRows","isGridRowDeleted","deletedIds","lastChange","tabIndex","eaTab","docmodal","folder","formDetailViewSelector","formLastChangeSelector","formAuditLogSelector","formGridRowIndexSelector","formGridRowSeqIdSelector","formDefaultsSelector","formIsEditModeSelector","formTabIndexSelector","togglesChangeAction","toggles","persistTogglesAction","togglesUpdateCounterAction","counts","getUserAction","getUserResultAction","setSitesAction","setLoginResultAction","loginRefreshAction","loginSetRenewalAction","loginSignoutAction","getGlobalSearchDefaultAction","globalSearchDefaultResultAction","getFavoritesAction","getFavoritesResultAction","getWorkflowProviders","getWorkflowProvidersResult","providers","getWorkflowCards","getWorkflowCardsResult","cards","getCardsAction","getCardsByEntityAction","cardTypes","cardItemTypes","getCardsResultAction","getCardsByEntityResultAction","setTreeStatus","getTreeAction","deep","getTreeResultAction","tree","nodes","isRoot","isBrowsable","searchAbortAction","searchResetAction","getSearchFormListAction","getSearchFormListResultAction","setSearchFormChangesAction","getSearchFormAction","model","getSearchFormResultAction","searchFormResetAction","searchFormValidationAction","setSearchItemAction","getSearchAction","getSearchResultAction","getSearchCountAction","getSearchCountResultAction","renameSearchFavoriteAction","renameSearchFavoriteResultAction","addSearchRecentAction","docThumbnailRequestAction","docThumbnailResultAction","setDocListViewModeAction","viewMode","exportDocsToCsvAction","getDocsAction","getDocsResultAction","setSettingAction","setSplitPanesAction","view","persistSplitPanesAction","setSidebarMini","mini","setCurrentBreadcrumb","breadcrumb","isFav","viewName","setCurrentItemAction","backupCurrentItemAction","restoreCurrentItemAction","setDocsLayoutAction","layout","requestDocsLayoutAction","allowPreFetch","setDocFilterTextAction","valueType","operator","resetDocFilters","setDocFilterByRef","docContextClick","resetValues","setDocFilterByName","saveCurrentItemAction","persist","currentItemLoadedAction","formSetDefaultsAction","formSetEditModeAction","extraAttributesSetTabIndexAction","extraAttributesClearAction","extraAttributesSetDetailViewAction","extraAttributesSetField","ns","extraAttributesAuditLogUpdateRow","extraAttributesAuditLogDeleteRow","extraAttributesAuditLogClearRow","extraAttributesAuditLogInsertRow","extraAttributesGridSetCurrentRow","serverEventAction","evt","startOfflineSyncAction","offlineSyncStartedAction","OfflineSyncStatus","Syncing","offlineSyncDoneAction","Synced","offlineSyncUpdateAction","setOfflineItemSyncStatusAction","took","removeOfflineItemAction","setOfflineItemDepsMapAction","depsMap","notificationUpsertAction","notificationDelAction","notificationId","notificationStatusAction","notificationClearAction","notificationToastAction","commandActionRequestAction","guid","commandActionQueueAddAction","commandActionQueueRemoveAction","commandActionRemoveAction","commandActionLogAction","commandActionStatusAction","commandActionItemStatusAction","idToken","refreshToken","expiresIn","expiresOn","loginReducer","loginStatusSelector","login","loginIdTokenSelector","loginAccessTokenSelector","loginRefreshTokenSelector","loginExpiresOnSelector","loginExpiresInSelector","applyAnySelectionContext","cb","contextProps","check_isMultiSelection","every","check_isDoc","check_isSpecialFolder","SpecialFoldersItemURIs","check_isWindows","is","check_hasContext","check_licenseAllowEdit","licenseAllowEdit","check_isSyncForced","uploadProvider","UploadProvider","Sync","check_isSyncUpload","props","check_hasItemStatus","itemStatus","ItemStatuses","Nothing","check_hasSearchType","searchType","parseInt","isCustom","check_hasExtension","substring","checkMapping","getState","SearchItemType","Favorite","isFolder","isSpecialFolder","isSyncEnabled","isSyncForced","isSyncUpload","isWindows","hasSiteType","SiteType","NotSet","hasContext","hasFeature","check_hasFeature","hasBrowser_webShareApi","share","canShare","isCreateAllowed","hasItemStatus","isRecycleBin","hasSearchType","isWorkflowEnabled","isAnyOnlineStatus","isAnySelection","isMultiSelection","hasExtension","hasRowAndColId","columnIndex","isAnyPdf","hasPdf","isPdf","canPdf","isAnyErrorState","shouldBeVisible","expr","negate","conditionName","func","toastPosition","toast","POSITION","PdfJs","NetworkStatus","NoNetwork","OfflineChanges","ServiceWorker","ServiceWorkerOfflineQueue","UppyInfo","UppyRecovered","UppySuccess","refresh","NotificationStyle","Info","btnToast","success","Success","Warning","uppyComplete","uppyRecovered","isRouted","uppyInfo","uppyResuming","pdfSignature","position","TOP_CENTER","swReady","globalloc","cache","done","swFailed","failed","swReload","swOfflineQueueAdd","offlinePendingChanges","Toast","RoutedToast","withRouter","NotificationStatusFlag","New","timestamp","dismissToast","notification","getNotification","settingValue","NotificationType","API","dismiss","locPrefix","locParams","breadcrumbReducer","breadcrumbItemUriSelector","breadcrumbNameSelector","breadcrumbLevelsCountSelector","breadcrumbVersionSelector","version","breadcrumbFormatIdSelector","formatId","breadcrumbSiteTypeSelector","Loading","isLoading","pastDelay","modules","loading","Status","loadingType","LoadingType","Default","Loadable","delay","timeout","StatusLoading","getDefaltsByLoadingType","storeHelper","QueuedOfflineStatusText","ApiManagerOffline","ApiManagerBase","_loadFromStore","request","ContentType","AUTO","resultBody","Headers","append","Response","OnFetch","bind","AfterFetch","CheckLicense","apiContext","_handleOfflineRequest","showToast","cacheKey","_getFullCacheKey","caches","allowEdit","HttpMethod","POST","PUT","DELETE","method","_handleOfflineSave","_handleOfflineTransformer","transformer","ApiCall","ApiManager","nameof","fetchSites","fetchUser","fetchUserSettings","saveUserSettings","fetchCards","signal","fetchCardsByEntity","fetchNews","fetchFavorites","addFavorite","delFavorite","addSearchFavorite","delFavoriteLink","linkId","sendMail","sendMailAttachments","fetchTree","createFolder","elementType","createFolderFromTemplate","template","targetFolderName","createFolderTemplateGetItemUri","jobId","fetchItemFlows","dir","fetchItemFlowForm","formType","templateId","templateType","fetchBreadcrumb","delItemUri","fetchSearchFormList","fetchNewForm","fetchForm","fetchSearchForm","fetchFormLookup","keyword","lookupType","fetchFormLookupDependencies","currentLookupValues","fetchExtraAttributesEmbeddedGrid","sortColumn","sortDirection","saveForm","etag","saveNewDocFromTemplate","validateForm","validateWebdavName","getArchiveTargets","getFolderItemUri","fetchActivities","fetchItemNote","noteId","addItemNote","updateItemNote","deleteItemNote","delDocVersion","restoreDocVersion","prepareFilters","fetchDocCount","fetchDocsCsv","fetchDocs","fetchDownloadToken","downloadDocToken","token","inline","pdf","stream","api","qs","fetchThumbnail","fetchRelatedDocs","itemLinkType","getSource","getWebDavHttpLink","webDavName","getCloudInfo","lock","unlock","subscribe","isSubscribed","unsubscribeByItemUri","unsubscribeById","linkID","fetchWorkflowProviders","fetchWorkflowCards","fetchNewWorkflows","fetchWorkflowInfo","provider","wfId","delDefiniteItemUri","restoreItemUri","fetchRasterMapLayers","rasterMapIdSelector","saveRasterMapLayers","fetchSAYT","fetchSearchCount","fetchSearchResult","addSearchRecent","fetchSearchPrincipal","includeUsers","includeGroups","fetchSearchSuggestion","fetchReminders","upsertReminder","deleteReminder","reminderId","fetchShare","createShare","shareRequest","updateShare","deleteShare","checkShareName","itemUris","webDavNames","fetchShareContext","formatIds","fetchOfflineItems","addOfflineItem","delOfflineItem","transfer","transferRequest","itemContexts","ItemContextsFlags","All","fetchItemContexts","fetchDownloadContext","WebDavName","Extension","fetchShareAttachment","Filesize","fetchDocResultFlags","ResultFlags","fetchItemContext","fetchViewNameType","ViewName","compose","LocalStoreHandler","TogglesHandler","GlobalEventsHandler","ServerEventItemType","ServerEventActionType","delete","refreshMode","RefreshMode","Originator","refreshMessage","refreshRoute","SplitPanes","paneIds","toggleIds","direction","filterAction","onDocSingleClick","onDocDoubleClick","onFolderSingleClick","onBreadcrumbPartClick","onClose","breadcrumbScopeFromLevel","canChangeSite","useDispatch","treeStatus","useSelector","treeIsBrowsable","treeTotalCount","treeAvailable","sitesSelector","treeFilter","setTreeFilter","includeSubfolders","setIncludeSubfolders","isTreeFocused","setIsTreeFocused","activeItemUri","setActiveItemUri","currentFolderRow","setCurrentFolderRow","currentDocumentRow","setCurrentDocumentRow","prevItemUri","usePrevious","handleTreeClick","useCallback","treeNodeId","handleTreeExpand","handleTreeFilterChange","handleSingleClick","handleIconClick","preventDefault","CommandActionHandler","newWindow","ctrlKey","altKey","useEffectOnce","MainLayout","actionsDisabled","breadcrumbReadonly","breadcrumbCanChangeSite","topRowEnd","TreeFilter","onChange","allowSubfolders","noTree","FolderTree","focused","activeTreeNodeId","onExpand","doclist","DocList","showAddDocument","activeRowIndex","onIconClick","onSingleClick","onDoubleClick","onMoreClick","PickerType","Folder","File","Any","PickerModal","open","pickerType","helpText","onSelect","additionalActions","scopeBreadcrumb","canSelectSite","selectButton","currentRootItemUri","setCurrentRootItemUri","currentItemUri","setCurrentItemUri","currentRootItemUriLevels","setCurrentItemUriLevels","handleFolderSelect","handleDocumentSelect","setRootItemUri","handleClose","useModalPostMessageHandler","handleSelect","abortController","useAbortController","bc","fetchData","disabled","Modal","ModalSize","Small","fullscreen","enforceFocus","show","onHide","dialogClassName","picker","headerSize","footerSize","Body","Footer","aria-label","onToggle","isOpen","stopPropagation","button","pullRight","dropup","eventKey","defaultProps","openPickerModal","createModal","ADVANCED_SEARCH_PARAMS","KNOWN_PARAMS","getParamsFromSearchText","searchText","getLocalizedSearchLabel","p","getLocalizedParamLabel","getLocalizedParamTitle","ValueFacePile","wrapper","pile","PrincipalAvatar","sharedStyles","description","total","facePileMore","onMoreCommand","Principal","Component","ValuePrincipal","ValueProgress","ValueVisualRules","caption","color","iconSize","pulse","iconUrl","alt","ValueEnum","renderEnumValue","enumValue","rawValue","isMulti","enum","ValueTextLink","link","isIconLast","ValueFilesize","ValueDatetime","SummaryAttributeValueFactory","SummaryAttributeValueType","FacePile","VisualRules","Enum","TextLink","User","Group","Progress","Datetime","ReactElement","SimpleAttribute","FlowCardImage","flow","commandAction","ElementType","FileExt","List","flows","selectedFlow","suggested","isSuggested","others","NoData","renderCardItem","CardItem","visible","isSelected","CardType","Action","itemtype","CardItemType","CommandAction","desc","image","removeSpaces","Form","defaultValues","setDefaultValues","useAsync","nameField","fields","onCancel","onBack","onSaveNew","onCreate","saveLabel","savingLabel","defaultFormTitle","defaultFormIcon","newFormType","onSaveReturnAllFields","ItemFlows","Avatar","imgUrl","encodeURIComponent","avatarStyle","backgroundImage","GET","HEAD","BLOB","TEXT","CacheStrategy","StaleWhileRevalidate","CacheFirst","NetworkFirst","NetworkOnly","CacheOnly","DEFAULT_CACHE_NAME","CacheKey","Authorization","CustomAuthorization","OfflineItemUri","OfflineApiName","OfflineSync","GlobalSites","MySites","SharedSites","RecycleBin","MailBox","AUSites","ViewNameType","flat","mailbox","GlobalSite","MySite","SharedSite","SidebarItemSource","System","Custom","Offline","NavigationItemType","Home","News","Report","Search","SearchResult","Wf","Upload","PrincipalType","SharePrincipalType","Share","Unknown","SyncedWithErrors","Conflict","SharedDocumentsUri","RecycledDocumentsUri","RecycleBinUri","Reminder","Relation","PDF","WFReport","Note","Link","MailHasAttachment","MailReplied","MailForwarded","Locked","Template","Subscribed","CloudSync","AnyParentDeleted","Deleted","Signed","ListViewMode","Thumbnails","Grid","Map","Calendar","Equals","NotEquals","LessThan","LessThanOrEqualsTo","GreaterThan","GreaterThanOrEqualsTo","Contains","DoesNotContain","StartsWith","DoesNotStartWith","EndsWith","DoesNotEndWith","Between","NotBetween","DateRelative","DocListColumnType","StringValue","FileSize","IntValue","BooleanValue","LongValue","ShortValue","DoubleValue","DecimalValue","SingleValue","DateTimeValue","DateTimeOffsetValue","ByteValue","ObjectValue","SortDirectionOptions","Ascending","Descending","ActivityType","modifyContent","modifyField","comment","locked","unlocked","RetentionType","Forever","ItemNoteType","PdfHighlight","ItemNoteTypeIcon","pdfHighlight","CleanupKeepVersionType","Last","PerDay","PerUser","FormLookupType","ip","ea_lookup","ea_ftlookup","sf_ftlookup","NewFormType","Document","ExtraAttributeEmbeddedGridRowStatus","Updated","Added","DateTimeFormat","Time","LongTime","DateTime","DateLongTime","JsonDate","JsonDateEnd","JsonDateTime","ItemLinkType","Manual","WorkflowReport","Shortcut","WorkflowProvider","inPointWorkflow","AxonIvy","WorkflowType","Routing","Process","ToDo","WorkflowStartLinkMode","Window","Docked","SearchOperator","Contextor","From","To","FromTo","FromToWithTime","FromWithTime","ToWithTime","EqualsWithTime","RelativeDate","FromRelative","ToRelative","GeoRadius","GeoArea","GeoRadiusIntersect","GeoRadiusWithin","GeoAreaIntersect","GeoAreaWithin","GeoAreaPoint","ContextorContains","SearchNodeType","AllNodes","LeafNode","CustomNode","Auto","SearchScope","AllSites","AllFolders","CurrentFolder","SearchValueType","ItemType","Decimal","GeoPoint","StringFieldOnly","DecimalFieldOnly","IUID","SearchRequestType","Recent","Freetext","Url","FakeResultItemType","Add","Edit","Delete","Rec","Fav","Task","Doc","SearchForm","ArchiveTarget","UploadMode","CreateDocument","ModifyDocument","activity","task","favorite","subscription","notSet","add","modify","edit","Self","ItemFlowDirection","out","ItemFlowTemplateType","DocTemplate","FolderTemplate","RasterMapLayerEditAction","none","rename","LocalDateStringOption","DateTimeLong","year","month","day","hour","minute","second","ReminderPriority","High","Normal","Low","ReminderTypeFlags","Mail","CustomAction","CustomActionState","NotStarted","Retry","Done","Abort","ReminderTypeFlagsEnumValues","ReminderPriorityEnumValues","AllowedShareActionFlags","Web","Attachment","Pdf","Anonym","WebShare","ShareType","ShareAccessControlListType","View","ShareNotifyType","SORT_BUCKET_NAME","GridListConstant","ExtensionIcon","IconItemStatus","ItemUri","ItemStatus","ViewerUrl","Workflow","CustomIcon","Toggles","IsLockedForUser","ItemContextKey","IsDoc","IsFlatAU","IsReadOnly","HasWorkflow","InPointSyncIntegration","IsFolderClassificationEditAllowed","IsEditAllowed","IsDocClassificationEditAllowed","IsDocEditAllowed","IsDocDownloadAllowed","IsDocAssignmentAllowed","IsDocSendByEmailAllowed","IsOffline","HasPdf","CanPdf","IsPdf","IsContinuousPreview","CanBeShared","Icon","IconColor","TransferType","Copy","Move","Read","Pending","PriorityType","Intermediate","CommandActionStatusFlag","Partial","FormBarView","DocModal","LockInfo","withOfflineHandler","WrappedComponent","HOC","offlineHandler","useOfflineHandler","getDisplayName","ProgressModal","React","PureComponent","componentDidMount","cancelButton","modal","Header","closeButton","Title","treeReducer","treeNodesSelector","treeStatusSelector","treeErrorSelector","treeIsRootSelector","treeIsBrowsableSelector","treeTotalCountSelector","isApiOnlineSelector","network","isNavigatorOnlineSelector","isNavigatorOnline","isOnlineSelector","hasDetectedNetworkStatus","hasDetectedNetworkStatusSelector","itemUriSelector","queryString","dbKey","offlineQueueStorage","setItem","keyPrefix","keysStartingWith","replayOfflineQueue","getAllItems","allItems","offlineQueueItem","_replayApiCall","_replayUppyUpload","queueItem","qi","removeItem","retries","_handleConflict","openConflictModal","currentEtag","retryUpload","cancelAll","stringForFormTokens","parseFieldsOrAttributes","shouldURIEncode","rawValues","field","withFormTokens","otherContext","attributes","IMaskNumberDefault","decimalScale","truncateZeros","mask","scale","signed","normalizeZeros","thousandsSeparator","padFractionalZeros","radix","mapToRadix","connect","ownProps","currency","maskProps","numberProps","blocks","num","IMaskCurrencyDefault","placeholder","required","isRequired","changeValue","isReadonly","onChangeWithRawEvent","borderRadius","validations","notEmptyMask","IMask","pipe","definitions","A","9","C","n","PIPE_TYPE","MASKED","UNMASKED","validationErrors","shouldRenderItem","targetView","views","check_isView","itemUriRegex","check_itemUriRegex","check_formatId","backwardsCompatibleShouldBeVisible","rule","endsWith","targetViewOrCurrent","negatedViews","defaultViews","RegExp","exec","mergePartialConfig","userActions","sysActions","cloneDeep","userAction","sysIndex","findIndex","sa","sysAction","mergeItemActionsConfig","order","category","showAddNote","showHistory","showNotes","showRetentionInfo","isEdit","onlineEditor","triggerEditMode","flowId","asModal","docked","getDefaultsConfig","unionBy","ActionCategory","onAction","catActions","content","ItemActions","renderHeader","ActionPanel","hasError","scroll","margin","locContext","sort","b","getContextProps","hasWorkflow","ActionPanelContainer","allContextProps","useAsyncMemo","folderItemUri","categoriesFromConfig","actionsFromConfig","MemoActionPanelContainer","prevProps","nextProps","openActionPanel","RowTitle","RowBody","thumbnail","Breadcrumb","Attributes","marginTop","marginBottom","openItemActionPanel","parsedName","parsedTitle","parsedTitleOrName","parseTitle","abortControllerInstance","AbortController","abort","useRef","reset","current","useBroadcast","channelName","channel","BroadcastChannel","onmessage","postMessage","useNetworkStatus","useUpdateEffect","usePostMessageHandler","handlers","parentWindow","parent","handleMessage","handler","onMessage","useEvent","CloseLegacy","handleGeoInfo","row","openSearchResultActionPanel","openGeoPointActionPanel","useDefaultPostMessageHandler","history","DefaultAction","Browse","externalLink","mark","print","docRoute","flatRoute","folderRoute","mailRoute","getRoute","isMini","isExternalLink","searchRouteWithItem","GeoInfo","GeoInfoLegacy","Exec","actionId","Picker","Open","selectedItemUri","Select","Cancel","asObject","settingValueSelector","setValue","useLocalStore","storeName","createSagaMiddleware","middlewares","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","createStore","appReducers","responsiveStoreEnhancer","applyMiddleware","localRootSaga","getStore","useMomentLocale","getMomentLocale","setStatus","moment","locales","useUppy","uppyId","uppyProps","setReady","finally","usePendingUploads","pendingUploads","setPendingUploads","uppyPendingUploads","useDeepCompareEffect","usePdfHighlight","createGlobalState","usePdfHighlightActions","createPostMessage","handleLoad","PdfHighlightAction","Load","handleUpsert","Upsert","handleHighlight","Highlight","handleDelete","usePdfHighlightActivityList","setEdit","isReadOnly","highlight","setHighlight","pdfHighlights","extras","activityId","messageHandler","what","targetHighlight","usePdfHighlightInput","handleNoteExtras","noteRef","clearableInput","scrollIntoView","block","focus","useDismissNetworkToast","setDismiss","handleDismissClick","handleEnableOffline","factory","fetchRequest","useArrowNavigationTransmitter","targetData","setCurrentIndex","ArrowNavigationAction","Paginate","qsParam","currentIndex","pathname","useArrowNavigationReceiver","handlePagination","handleDeletedWhileOpen","currentIndexFromProps","postMessageProps","setPostMessageProps","minCount","setMinCount","maxCount","setMaxCount","getActiveRowItemUri","isNextDisabled","isPrevDisabled","getNext","getPrev","onPaginate","isNext","onSetActiveRowIndex","opener","onPrev","prevRowIndex","onNext","nextRowIndex","Reload","newSource","SetIndex","hasMoreThanOne","useRecycleBin","itemUriFromProps","itemStatusFromProps","checkIfRecycledDocuments","checkIfDeleted","checkIfAnyParentDeleted","checkIfInRecycleBin","hash","useViewNameTypeRouting","targetViewNameType","viewNameType","useFormActions","itemContext","ItemContext","userFormActions","useFormActionsConfig","useItemFlows","targetItemUri","visibleFlowIds","categoryId","canFetch","setSelectedFlow","selectedCategory","setSelectedCategory","allowFlowIdFromProps","cfg","selectFlowId","useFolderItemUri","renderValue","linkType","LinkViewer","comparableValue","useAnchorProps","nolink","select_none","cursor_forbidden","LinkViewerControl","isGridCell","textAlign","select_text","Thumbnail","_fetch","_onLoad","onLoad","maxHeight","PlaceInput","_onChangePlace","latlng","inputGroup","Addon","iconWrapper","GeoPlaceInput","MapModal","_onSet","mapRef","editLocation","GetEditLocationResult","onSet","_onChangeFromPlaceInput","SetCenterMarker","_showGeoInput","usePlaceInput","SupportGeoPlaceInput","useMarker","locations","_onViewerLoad","viewerLoaded","MapViewer","mapProvider","footer","setButtonLabel","btnSet","createRef","openMapModal","toggleFavorite","BreadcrumbContainer","favStatus","initialLoading","_isMounted","componentWillUnmount","_maybeGetNewAbortController","favOnClick","componentDidUpdate","isRefreshing","refreshId","isFavorable","scopeFromLevel","onPartClick","ButtonGroupEnumRenderer","isActive","EnumRenderer","ButtonGroup","Dropdown","Toggle","activeLabels","Menu","EnumEditorControl","handleFlagsChange","handleChange","currentTarget","Fragment","EnumRenderComponent","component","useHtmlFor","StaticViewerControl","minWidth","htmlValue","dangerouslySetInnerHTML","__html","ApiCatalog","strategy","keyParams","depsAnalyzer","isEditAllowed","depsApis","mediaViewerExtensions","ea","getGeoRasterProvider","scope","hasMore","rowKey","fetchDocument","treeNode","depsApi","_callReturnContext","urlEnd","_pipeline","_encodeData","_getHeaders","auth","useCustomAuthHeader","secure_params","_networkError","BeforeFetch","DecodeBody","CheckCustomError","EOL","apiTook","urlParams","credentials","mode","ok","signinRedirect","_getErrorData","contentHeader","json","lic","isLegacyResponseClone","blob","UserGroup","onInit","selectedTogglesFromProps","viewNameFromProps","injectedToggles","usedViewName","prevSelectedTogglesFromProps","togglesFromViewName","getToggles","setToggles","setPersist","allowMultiple","browser","greaterThanOrEqual","medium","prevAllowMultiple","selectedTogglesFromStore","selectedTogglesSelector","prevSelectedTogglesFromStore","selectedTogglesFromQueryString","prevSelectedTogglesFromQueryString","selectedToggles","setSelectedToggles","prevSelectedToggles","handleSetToggles","togglesFromCallback","isDisabled","availableToggles","isHidden","isEqual","validToggles","handleToggleChange","togglesBySelected","isMultiple","hasSelection","toggle","TogglesAction","Get","Set","maybeAllToggles","split1","split2","panes","panesViewSelector","prevPanes","handleDispatch","setSplitSizes","paneIdx","setSizes","Split","sizes","minSize","gutterSize","onDragEnd","getSizes","elementStyle","dimension","gutterStyle","master","panesDefaultState","slave","ModalHeader","ModalBody","Large","Medium","historyUnlisten","listen","_search","closeRequested","_onResizeDebounced","capture","passive","_onResize","fs","_shouldFullscreen","vh","_getHeight","debounce","isHandheld","_getWidth","isIOS","documentElement","clientWidth","innerWidth","clientHeight","innerHeight","_renderChildren","Children","child","_renderChild","cloneElement","overflowY","onKeyPress","backdropClassName","animation","workflowReducer","workflowStatusSelector","workflow","workflowCardsSelector","workflowProvidersSelector","workflowPendingCountSelector","REFRESH","card","initialized","updated","serviceWorkerReducer","isSwInitializedSelector","sw","isSwFailedSelector","isSwUpdatedSelector","swRegistrationSelector","ActionsButton","TextEditorControl","inputType","withItemContext","asProps","parentContext","setRefreshId","prevRefreshId","baseRefreshContext","newRefreshId","refreshContext","setItemContext","itemContextWithExtras","itemContextAsProps","minipicker","miniflat","upload","itemflows","Rename","nameFromProps","inputRef","useToggle","editing","toggleEditing","handleBlur","handleEnter","blur","autoFocus","onBlur","onEnter","Searchcrumb","onRename","Item","SearchParam","Label","SearchcrumbContainer","_getParams","filtersAsParams","concat","_parse","favOnRename","CustomBreadcrumb","fontSize","CrumbSelector","ToggleBarButton","badge","ToggleBar","ToggleBarContainer","togglesFromProps","togglesFromStore","newToggles","topRowClassName","topRowBefore","onActionShouldBeVisible","breadcrumbIsRecycleBin","usePendingOfflineChanges","ActionsMenu","onShouldBeVisible","DEFAULT_CONFIG","renderDiv","usePortal","portalTargetSelector","portalTargetSelectionMethod","getStyle","transform","zIndex","top","getBoundingClientRect","left","rowIndexProp","isActiveProp","isHoveredProp","actionsHandlerProp","actionsDisabledProp","shouldRender","withStickyToggle","onMouseEnter","onMouseLeave","MultiSelectionContext","divRef","actionsHandler","isHovered","setShow","handleMouseEnter","handleMouseLeave","wrapperProps","calculatedStyle","opacity","getPortalTarget","querySelectorAll","portalTarget","setPortalTarget","createPortal","defaultFallbackImage","ImageViewerControl","heightStyle","widthStyle","parsedValue","border","objectFit","minHeight","docsLayoutFiltersSelector","docsLayout","docsLayoutSortsSelector","docListViewMode","settingsReducer","sidebarMiniSelector","settings","docListViewModeSelector","currentItemReducer","saved","currentItemUriSelector","currentNameSelector","searchFormsReducer","searchFormListStatusSelector","searchForms","searchFormListResultSelector","searchFormListCountSelector","offlineReducer","at","offlineItemsSelector","Moment","MomentLocale","DownChevron","components","NativeSelect","_onChange","selected","so","valueKey","_getValue","wrapperClassName","selectRef","option","labelKey","prevState","DateEditorControl","_getFormat","localeData","longDateFormat","_getDate","time","_isValid","_onDayChange","dayPickerInput","inputValue","isValueEmpty","_ref","dateValue","getValueAsDate","shouldRenderTime","timeValue","invalidate","nextState","_onTimeChange","toDate","shouldRenderSeconds","shouldRenderDate","valueFormat","getValidValue","inputProps","overlayWrapper","overlay","dayPickerProps","showWeekNumber","numberOfMonths","fixedWeeks","onDayChange","step","flexGrow","dt","HTML5_FMT","UserIdViewerControl","userid","whiteSpace","AttributeLabel","padding","marginLeft","findCustomField","getFieldType","summary","SummaryAttributeViewerControl","creatorIdField","modifiedIdField","LocationViewerControl","marker","GeoRasterViewerControl","T","TelViewerControl","EmailViewerControl","hidden","MyForm","isNoDataError","getFields","fieldsLength","hasEA","onSubmit","labelWidth","EAForm","formTitle","layoutXml","LocalContactInfo","MemoizedForm","HiddenEditorControl","FormsyEditorBase","isAdditionalRender","getValidationErrors","customErrors","isDefaultRequiredValue","FieldEdit","formPrefix","ro","ImageEditorControl","isNotInvalid","LookupEditorControl","NumberEditorControl","maxLength","max","isFilename","isPathname","MemoEditorControl","isEmail","matchRegexp","showLabel","GeoAreaEditorControl","GeoRasterEditorControl","isDirty","shouldDisplayPrompt","setShouldDisplayPrompt","keepDirty","setKeepDirty","handleNavigation","unlisten","onbeforeunload","when","_","navAction","MyFormEdit","_prepForm","changed","defaultValueKey","defaultAttributeKey","attribute","defaultFieldKey","_setupValidations","addValidationRule","range","min","test","_onInvalid","canSubmit","_onValid","_onSubmit","resetForm","invalidateForm","cancelEditMode","isValidating","onValidate","isSubmitting","onSave","_onFieldChange","commonName","submitOnChange","_isDirty","_getSaveButtonLabel","_formsySubmit","_formsyRef","submit","confirmLabel","toolbar","isFormButtonEnabled","onValidSubmit","onValid","onInvalid","buttonToolbarPortal","ReactDOM","verticalAlign","cursor","Checkbox","handleToggle","checked","Control","remember","setRemember","checkbox","handleRememberValues","controlId","withRememberValues","isNewDocument","computedRemember","setSelected","remembered","setRemembered","availableValues","setAvailableValues","prevFormatId","cacheStorage","getItem","valuesString","mapFormDefaultValues","updateAvailableValues","renderCheckbox","renderControl","additionalProps","rememberValues","keep","setKeep","handleKeepFilename","withWebDavName","computedKeep","setForm","isWebDavNameHidden","ignoreWebDavName","ignore","FormContainer","paramUri","_updateToggleLoading","onFormLoad","e2","_onValidate","locErrors","_onSave","renderNewDocument","newDoc_group","newDoc_checkbox","newDoc_label","getFormBarViewNames","showHeader","isOfflineAllowed","adjustedItemUri","lockInfo","FormEdit","center","SummaryAttribute","useDefaultStyle","ValueFactory","AttributeFactory","functions","randomGuid","guidHolder","hex","r","guidResponse","random","getAuthUrl","client_id","clientId","redirect_uri","redirectUrl","response_type","responseType","nonce","resource","forceLogin","prompt","forceLoginPrompt","authorizeEndpoint","getToken","URLSearchParams","tokenEndpoint","getAuthCallback","urlLocation","qr","error_description","expires_in","parsed","base64","jsonPayload","decodeURIComponent","atob","charCodeAt","parseJwt","access_token","id_token","expires_on","exp","signout","persistor","pause","flush","purge","endSessionEndpoint","id_token_hint","post_logout_redirect_uri","logoutRedirectUrl","signinFromLocation","getPkce","verifier","challenge","localForage","code_challenge_method","code_challenge","Option","PrincipalEditorControl","localNewUserIdRef","createUser","createGroup","newUserIdRef","setKeyword","getNewId","types","AsyncCreatable","Async","componentProps","createOptionPosition","isValidNewOption","selectValue","selectOptions","principal","validationRules","getNewOptionData","optionLabel","handleInputChange","handleSearchAsYouType","optionRenderer","word","classNamePrefix","inputId","provided","control","borderColor","menu","menuPortal","valueContainer","dropdownIndicator","clearIndicator","display","alignItems","isFocused","boxShadow","background","textShadow","cacheOptions","loadOptions","getOptionLabel","getOptionValue","defaultOptions","isClearable","openMenuOnFocus","loadingMessage","noOptionsMessage","onInputChange","menuPortalTarget","menuPlacement","resize","overflow","paddingTop","paddingLeft","paddingBottom","multi","maxRows","Name","selectedValue","getSelected","parseSelectedValue","bucket","buckets","findBucketValue","hideName","AllItem","MenuItem","Button","fontWeight","fontStyle","SearchBucket","hideMenu","hideAllReset","cardsCards","docsItemUri","globalSitesAreaSelector","defaultLocale","getFirstItemUri","itemUriColIndex","col","localContactInfo","ItemAction","RowResultByLayout","colIndexes","colName","colIdx","extensionColIndex","nameColIndex","_onSingleClick","table","colIndex","colNameIndex","cell","lastcell","Thumbs","thumb","ItemView_DocListGallery","stripRef","goLeft","scrollLeft","goRight","useSwipeable","onSwipeLeft","onSwipeRight","strip","nav","stripInner","ItemView_DocList","onItemUriAction","setViewMode","ViewModes","viewModes","DocListSimple","minRowHeight","RenderRowComponentClass","loadMoreRows","setSorting","requestShowFilter","showThumbnails","showFilterbar","ItemView_ActivityList","Activities","showActions","EnumIcon","enumValues","ReminderItem","reminder","customAction","onEdit","onDelete","reminderTypeEnumValues","CustomActionReminder","reason","readonly","priority","date","toLocaleDateString","recipient","getLocContextFor","ItemView_Reminder","reminders","setReminders","openConfirmModal","confirmButton","confirmed","_reminders","handleSave","_reminder","creator","handleEdit","handleReadOnly","Icons","filterByValue","filterAddValue","filterRemove","getActionArgs","opType","GetFilterValueAsString","ItemView_Filter","canSort","showAction","onActionClick","GetDefaults","enable","disable","invert","selectAll","deselectAll","ItemView_MultiSelection","multiSelection","activeRows","availableRows","handleInvert","handleSelectAll","handleDeselectAll","viewMappings","itemView_docList","itemView_activityList","itemView_workflow","ItemView_Workflow","itemView_reminder","itemView_filter","itemView_multiSelection","Factory","componentClass","itemView","getGridRowDefaultValues","gridName","grid","getGrid","columns","seqIdColumn","convertSeqIdToIndex","convertIndexToSeqId","mapGridRowToColumns","isGridRowUpdated","Overlay","okStyle","CustomUploadAction","Language","PdfSignatureAction","PdfPrintAction","NotificationAction","Show","Hide","Clear","Created","Modified","togglesReducer","persisted","_selected","togglesPersistedSelector","cardsReducer","cardsToAdd","oldCard","cardsToUpdate","cardsStatusSelector","cardsCardsSelector","thumbnailsReducer","thumbnailStatusSelector","thumbnails","thumbnailResultSelector","favoritesReducer","favoritesStatusSelector","favoritesFavoritesSelector","commandActionReducer","unshift","j","commandActionRequestSelector","UploadSelection","openBrowseDialog","openCamera","onAddFile","plugin","hideAllPanels","getElementsByClassName","click","showPanel","toggleAddFilesPanel","plugins","hideUploadButton","hideRetryButton","hidePauseResumeButton","hideCancelButton","showLinkToFileUploadResult","showProgressDetails","disableInformer","disableThumbnailGenerator","metaFields","proudlyDisplayPoweredByUppy","hideProgressAfterFinish","doneButtonHandler","LockInfoOn","UnlockedOn","FileDropHandler","_registerHandler","_unregisterHandler","allowDrop","isDragDropSupported","_dropzone","onDrop","onDragOver","onDragLeave","clearTimeout","_timeout","dataTransfer","dropEffect","isFileDrag","getDroppedFiles","addedCount","filesDTO","fileDTO","relativePath","addFilesToUppy","isRestriction","isDragover","_timedDragLeave","DropHandler","dragOverText","effects","prevProp","StickyToggleStyle","GridList","outer","closest","inner","rect","rgb","scrollbarWidth","scrollbarHeight","scrollTop","justifyContent","borderLeft","borderBottom","partTitle","isLast","bctext","BreadcrumbPart","symbolName","onMeasured","measureWidth","bi","findDOMNode","localizedText","BreadcrumbFavorite","MyBreadcrumb","forwardRef","leafActive","showParts","hiddenCount","showChangeSiteType","setShowChangeSiteType","toggleChangeSiteType","handleSiteChange","role","canClick","SiteSelect","defaultItemUri","part","ResponsiveBreadcrumb","_onMeasured","__calcVisible","knownState","reduceRight","previousValue","currentValue","calculated","_calcVisible","throttle","leading","trailing","knownWidth","noop","Bowser","getParser","userAgent","hasConsole","BROWSER_MAP","createContext","LabelSizeContext","CurrentItemContext","RememberValuesContext","ArrowNavigationContext","EventHandler","onContextMenu","onTouchEnd","onTouchStart","onTouchMove","onMouseDown","onMouseUp","handleAdd","autoToggleRow","setAutoToggleRow","handleTouchStart","handleTouchMove","handleTouchEnd","handleMouseDown","handleMouseUp","inPointAction","browse","properties","archive","inPointActionLink","uris","sp","ClientLink","shortItemUri","sortKey","searchRouteWithKeyword","searchRouteWithKeywordAndMore","nodeType","viewNameTypeRouteMapping","sitesOrdered","orderedIndex","orderedSite","orderedIndex2","BrowserLink","BrowserDragLink","isSecureParams","panesReducer","globalSearchReducer","globalSearchOptionsSelector","globalSearch","globalEventsReducer","notificationReducer","notificationSelector","CommandActionButton","actionPrefix","locId","getItemActionLocalizationIdentifier","openExternalLinkModal","frameBorder","allowFullScreen","getNoteType","NoteInput","onAbort","noteExtras","setNoteExtras","handleAbort","noteContainer","noteWrapper","noteInput","RetentionInfo","months","getCommentIconString","Activity","showDetails","isHighlighted","isLastVersion","actionMenu","renderWhatIcon","renderWhat","renderChange","change","newVal","oldVal","renderChanges","condensed","tbody","activityRef","renderText","toggleComponent","retention","article","ActivityList","currentVersion","commentType","setCommentType","handleAction","itemCommentType","filterType","lastVersionId","totalVersions","accumulator","CleanupKeepInfo","cleanupKeepInfo","retentionInfo","noteService","ActivitiesContainer","_setActivityListDefaults","activityList","_onAddNote","_canUserUpdateOrDelete","_onUpdateNote","_onDeleteNote","abs","deleted","_toggleDetails","_onAction","itemUriWithVersion","onShowVersion","restoreVersion","deleteVersion","combineReducers","docsLayoutReducer","globalEvents","networkReducer","createResponsiveStateReducer","extraFields","greaterThan","mediaType","uppyReducer","requireSelection","home","wf","news","searchresult","isCallback","itemStatusMapping","Notes","Email","Replied","Forwarded","Cloud","FileSignature","getPropsForItemStatus","ItemStatusIcons","iconStyle","marginRight","bit","ItemStatusComponent","SimpleAttributeValue","WorkflowActions","workflowActions","page","wfid","wfs","progressBadge","SiteRow","site","siteDisplayName","filteredSites","selectedSite","siteSelect","siteSelectNative","menuitem","getDateFnsLocale","country","Locales","DayPickerInput","dateFormat","valueFromProps","Input","overlayComponent","setMonth","isPopperOpen","setIsPopperOpen","isFocusTrapActive","setIsFocusTrapActive","popperRef","closePopper","dateObj","handleFocus","handleDaySelect","formattedDate","handleActivate","handleDeactivate","setToday","onFocus","modifiers","enabled","rootBoundary","positionFixed","placement","focusTrapOptions","initialFocus","allowOutsideClick","clickOutsideDeactivates","returnFocusOnDeactivate","onActivate","onDeactivate","backgroundColor","data-placement","defaultMonth","onMonthChange","modifiersStyles","todayButton","MapButton","SupportGeoMapViewer","getGeoMapViewerProvider","doc_print","LoadingIframe","setLoading","marginHeight","marginWidth","ApiCacheManager","OpenCache","DeleteCache","CacheExists","LogEstimates","cachedRequests","getStorageEstimate","estimate","usageInGb","quotaInGb","percentUsed","ApiManagerMakeAvailableOffline","offlineItem","_callWithDeps","_offlineItem","_apiCache","_runTransformer","cacheBody","apiMethod","_addToCache","put","defaultCache","updateUser","startSync","preFetchGlobals","preFetchFolder","fetchDeps","removeOfflineItem","checkOfflineItems","watchOfflineSync","getDepsMap","watchNetworkStatus","offlineSaga","checkServerConnectivity","APIs","getAPI","isSyncing","promptedForPersistentStorage","anyOfflineItemSyncErrors","spawn","select","storeItems","storeItem","_collapsed","timeLog","timeEnd","take","childMapRef","rootDep","dep","deps","isSuccess","currentOffline","storage","persistent","itemsToSync","currentOfflineItem","lastUpdate","race","networkActionTypes","persistNetworkStatus","takeLatest","fork","pingUrl","networkActions","startWatchNetworkStatus","Request","getUser","logoutUser","setRenewal","userSaga","MAX_RACE_TIMEOUT","web_version","provider_fileVersion","provider_serviceVersion","features","grant_type","refresh_token","expiresInMs","expiresInDelta","delayInMs","DEV","formated","logout","renewal","getFavorites","checkIsFav","refreshFavorites","favoritesSaga","breadcrumbSelector","stateFavoritesStatus","favoritesFetched","stateFavorites","takeEvery","getCards","refreshCards","getCardsByEntity","cardsSaga","cancelled","getCardItemTypeFrom","itemType","getProviders","workflowSaga","lib","defaultCount","start","pending","countCards","countBy","getTree","treeSaga","getDocs","exportToCsv","docsSaga","FileSaver","saveAs","resetFilters","setFilterByRef","setFilterByName","getDocsLayout","setFilterText","resultSelector","currentItemSelector","formatIdSelector","ResetFilters","newfilters","newValue","newFilters","currentItemLoaded","currentItem","docsresult","loadSettings","calcCurrentItem","saveCurrentItem","currentItemSaga","togglesSelector","panesSelector","ignoredViews","isIgnoredView","currentItemName","getName","getKey","shouldPersist","viewStorage","isPersisted","usePersistedToggles","homeActions","def","getSearchResult","getSearchCountResult","renameSearchFavorite","updateResultToggle","updateResultToggles","resetSearch","updateSearchFormToggles","getSearchFormList","getSearchForm","getGlobalDefault","handleSearchAddRecent","searchSaga","forms","thumbnailsSaga","getThumbnail","actionChannel","buffers","expanding","requestChan","cancel","notificationLoop","actionLoop","notificationsSaga","createSocket","HubConnectionBuilder","withAutomaticReconnect","nextRetryDelayInMilliseconds","retryContext","elapsedMilliseconds","configureLogging","withUrl","accessTokenFactory","build","signalChannel","connection","eventChannel","emit","onreconnecting","ping","onreconnected","connectionId","onclose","chan","triggerNotificationAPI","toastSaga","mapFontawesomeIconToNotificationsIcon","lang","Notification","triggerReactToastify","toastOptions","theme","notificationType","handleCommandActionRequest","updateCommandActionStatus","handleQueueRequest","executeCommandAction","abortCommandAction","removeCommandAction","handleCommandActionQueueAction","pauseQueue","rebuildQueue","watchCommandActionQueue","commandActionSaga","actionHandler","actionMappings","queueMultiple","getToastType","getToastMessage","identifier","report","requests","docsLayoutSaga","ViewModesMenu","ViewModeIcon","vm","ViewModesButtons","large","right","ActionMenus","docactivity_context","docactivity_readonly_context","RenderActionMenuItem","menuName","onGetActionTextArguments","divider","RenderActionsMenu","actionMenus","openMenuOnHover","caret","RowResult","showThumbnail","isMultiSelected","handleDoubleClick","renderName","statusColIndex","sizeColIndex","val","combinedClassNames","hovered","below","attrs","RowResultWithStickyToggle","_initCellMeasurerCache","_cache","CellMeasurerCache","clearAll","_isRowLoaded","_loadMoreRows","startIndex","stopIndex","pagesStatus","floor","Infinity","_rowRenderer","isScrolling","handleRowMoreClick","handleRowContextMenu","_cellOnContextMenu","handleRowMouseEnter","hoveredRowIndex","measure","onContextClick","contentRect","flex","isRowLoaded","onRowsRendered","registerChild","_list","deferredMeasurementCache","rowHeight","rowRenderer","overscanRowCount","noRowsRenderer","NoDocs","scrollToIndex","scrollToRow","scrollToAlignment","OpenFiltersButton","isDocAssignmentAllowed","hasActiveFilter","IsFiltered","canUploadDocument","PageStatus","siteActiveCache","isSiteActive","qsuri","_queryString","object","skipNull","skipEmptyString","setupLogging","transforms","reducerName","loginInitialState","createTransform","inboundState","outboundState","whitelist","persistConfig","persistStorage","autoRehydrate","reducer","persistReducer","persistStore","NotAvailable","extendPrototype","NoStorageDriver","_driver","_initStorage","clear","iterate","defineDriver","createInstance","driver","INDEXEDDB","LOCALSTORAGE","usage","quota","db","withItemUri","SettingValue","namespace","extraProps","LayoutLoader","PP","showDocs","DocListFilterBar","quickFilter","prepFilters","filterBuckets","sortBucket","_getQuickFilterConfig","quickFilterCol","_findCol","defaultFilters","hasFilter","filterCaption","_getFilterDisplay","_getValueOrValues","_onFilterTextChange","_onFilterBarSelect","_onFilterBarClear","_onViewModeChange","nameCol","FilterBar","onClear","onFilterTextChange","filterTextPlaceholder","onViewModeChange","renderFilter","disableFilter","CellContentWithStickyToggle","desktop","mobile","icons","boolean","readOnly","isColumnFiltered","canColumnFilter","isColumnSorted","getColumnSortDirection","handleCellClick","parseCellColumnTitle","handleHeaderFilterClick","handleHeaderClick","parseCellHeaderCaption","rawData","getColumnWidth","colWidths","widthChange","newColumnWidth","manualResized","btoa","sectionRendered","rowStartIndex","rowStartIndexUpdated","__folderFormatId","columnCount","CellContent","ContextMenuHandler","onCellClick","onCellDoubleClick","onCellMoreClick","onHeaderClick","onHeaderFilterClick","isRowActive","onReorder","columnMapper","operatorsPerType","Operators","currentYear","fromMonth","toMonth","DatePicker","handleYearMonthChange","areValuesEqual","prevValues","currentValues","handleDayChange","setHours","valueIndex","utc","startOf","toJSON","Manager","getMonthToDisplay","before","after","captionLayout","FilterDateValue","RelativeDatePicker","BoolPicker","FilterValue","DocListFilterModal","_onFilter","onFilter","_onOperatorChange","_onValueChange","_resetValues","_resetSelect","_onKeyPress","which","_getFocusColumnIndex","focusOnFilterName","focusColumnIndex","horizontal","ControlLabel","sm","htmlFor","UploadHandler","itemUriIndex","indexOrUndefined","docTracker","currentRow","setCurrentRow","refreshEvent","newState","_maybeSetActiveRow","DocListContainer","getColOrder","storedOrder","oldIndex","newIndex","newColumnMapper","removed","_setSorting","_onFilterClose","onFilterClose","_requestShowFilter","_rowStartIndexUpdated","_onContextClick","_isRowActive","activeState","setupColumns","storedColWidths","prevNotInitialFilters","isLayoutChanged","notDefaultFilters","GetDefaultFilters","_updateToggleCounter","setAvailableRows","pagination","onRowsUpdate","showFilter","breadcrumbName","flexDirection","ArchiveTargetImageWithTitle","archiveTarget","noIcon","borderless","Container","toggleShow","aside","hide","lockedById","lockedByName","lockedDate","searchForm","setOperator","setScope","isSearching","showSearchOperators","showSearchScope","searchScope","onSearchScopeChange","scopeItemUri","SearchScopeSelect","radioClassName","radio","Scope","renderAction","FormBarItem","useFormBarViews","setTarget","getLoadingMessage","getNoOptionMessage","shouldComponentUpdate","loadIndex","getParentAsFilters","parentName","attr","parentLookupCommonName","getCurrentDependentLookupValues","lookupValues","getValueByOperator","fetchLookup","loadedOptions","additional","boostLeafNode","formId","_fixValue","_handleDependenciesUpdate","_handleLookupValue","_prepareOtherValueFor","useKeys","O","splittedName","shift","dependentLookups","lookup","_lookup","_onInputChange","_valueRenderer","toLocaleString","valueWithIcon","_optionRenderer","innerProps","onMouseMove","onMouseOver","newProps","ValueComponent","selectProps","indicatorSeparator","debounceTimeout","cacheUniqs","onMenuClose","filterOption","createFilter","ignoreAccents","useContains","ViewerKeysHandler","handleKeyDown","classList","contains","keyCode","charCode","SuggestionHandler","docSearchProvider","itemUriFromLocation","errorDetail","setErrorDetail","setItemUri","pSplit","isSearchParam","ip_commandAction","ip_archive","ip_browse","ip_edit","ip_properties","folder_delete","folder_editClassification","OptionsModal","defaultOption","isDefault","NotifyOptionsModal","shareAs","openNotifyOptionsModal","isEditable","shareType","getShareDate","expires","getBytes","bytes","getActionKey","getEnumIcon","ShareActionForm","onConfirm","shareAction","handleShareAsChange","nameAndIndex","indexValue","handleConfirmedChange","typeEnumValues","aclEnumValues","acl","isGreaterThanNow","ShareActionEditorControl","bsClass","SharePrincipalForm","onRemove","sharePrincipal","aclEnumValuesWithDefault","aclEnumValuesOrEmpty","withDefault","defaultAcl","SharePrincipalEditorControl","currentPrincipal","currentIdx","handleRemove","principals","empty","noBorder","ExternalUserViewerControl","ShareActionViewerControl","itemKey","docCount","folderCount","AttachmentsViewerControl","attachments","showBytes","attachment","ShareForm","setCanSubmit","handleConfirm","isAdvanced","setIsAdvanced","allowedShareActionFlags","disableSubmit","enableSubmit","isActionEdit","setIsActionEdit","prevIsAdvanced","toggleFlag","flag","setFlag","newUserId","changedPrincipals","externalUsers","handleUserRemove","ShareAction","SharePrincipal","baseClassName","hasPrincipals","ExternalUser","Attachments","getShare","allowedFlags","ShareModal","canEdit","allowedShareActionFlagsFromProps","shareTypeFromProps","isAdvancedFromSettings","persistIsAdvancedToSettings","shareTypeFromSettings","persistShareTypeToSettings","persistIsPersisted","setShare","setNotify","setShareAs","setIsSubmitting","setAllowedShareActionFlags","openShareModal","shareTypeKey","changeShareType","newShareTypeKey","handlePersistSettings","upsertShare","SHARE","names","handleShareAsOnSave","proposedShareAs","proposed","handleShareNotifyOptionsOnSave","getAttachment","getModalProps","allowedActions","allowedAcl","shareTypeFromContext","folder_emailAttachment","folder_preview","folderUri","form_back","form_cancel","form_clear","search_favorite","search_preview","searchResultUrl","search_scope","searchForm_abort","searchForm_operator","searchForm_scope","doc_resetFilters","doc_exportCsv","downloadFile","createObjectURL","temporaryDownloadLink","setAttribute","revokeObjectURL","doc_download","fileNameWithExtension","maybeAddContext","doc_downloadZip","getFileName","disposition","utf8FilenameRegex","asciiFilenameRegex","filenameStart","partialDisposition","matches","zip","generateAsync","percent","doc_downloadFilesAPI","showDirectoryPicker","directoryHandle","requestPermission","writable","getFileHandle","fileHandle","createWritable","write","doc_delete","ExpandButton","viewBox","CompressButton","ModalFullscreenButton","isFullscreen","openDocModal","onReopenWith","searchTerm","triggerPrint","fullScreenHandle","useFullScreenHandle","toggleFullscreen","exit","enter","handle","allowTogglesFromQueryString","TopRowExtras","prevDisabled","nextDisabled","doc_preview","getItemUri","docModalProps","togglesFrom","doc_related","onModalLoad","CategoryFilter","CustomItemFlow","encodedContext","tokenizedUrl","previewNewItem","onCreated","CustomUploadSelection","iframeRef","iframeTimeout","isRemote","setLanguage","DocumentSelection","uppyRef","onFileAdded","onFileRemoved","openCustomUrl","numOfFiles","setOpen","DocumentSelectionWithRef","isSuccessfulUpload","successful","defaultValuesFromProps","filesFromProps","setFiles","_updateFiles","_onCreate","keepOriginalFilename","newModel","extension","NameModal","newName","validationMessage","_validationState","validation","okButton","nameLabel","validationState","openNameModal","ValidateTemplate","newTargetFolderName","$NAME$","CheckJobStatus","times","interval","setInterval","clearInterval","newTargetItemUri","createFolder_template","flowsMappings","itemFlow_custom","itemFlow_document","itemFlow_docTemplate","itemFlow_folder","itemFlow_folderTemplate","defaultValuesFromStore","ComponentClass","ItemFlowsView","_updateToggles","_getTotalCount","filteredFlows","_filterList","_getFilteredList","_onFilterTypeChange","_updateFormToggle","_onSelect","_onFormCancel","_onCreated","triggerToast","ItemFlowsContainer","ItemFlowsModal","openItemFlowsModal","doc_upload","UploadVersionModal","_onClose","_onFileAdded","_onUploadSuccess","resp","uploadURL","openUploadVersionModal","doc_uploadVersion","doc_emailLink","doc_emailAttachment","doc_editClassification","doc_editWebDav","webDavUrl","SupportedExtensions","doc_editCloud","webEditUrl","specs","useFormTokens","lockApi","unlockApi","subscribeApi","unsubscribe","handleUnsubscribe","confirm","getFileNameFromContentDisposition","contentDisposition","decodeURI","share_web","isDocSendByEmailAllowed","isDocDownloadAllowed","WorkflowActionPanel","openWorkflowActionPanel","wf_info","workflows","ListWorkflowsModal","aria-labelledby","startLink","ITEMURI","startLinkMode","openListWorkflowsModal","wf_start","itemFlows","createDraft","recipe","tokens","defaultValuesWithTokens","finishDraft","transferApi","recyclebin_docClear","recyclebin_docRestore","recyclebin_folderClear","recyclebin_folderRestore","FormModal","formProps","footerRef","formmodal","notAuthorizedWrapper","notAuthorizedIcon","openFormModal","editClassification","clipboard_copyItemUri","clipboard_copyItemLink","RasterLayer","layer","onMoveUp","onMoveDown","layerContainer","arrows","btnDelete","LayersEditor","onMapEdit","removeLayer","layers","editAction","renameLayer","moveUp","moveDown","m","RasterMapManagerModal","setMap","addLayer","saveMap","newMap","openRasterMapManagerModal","raster_manage","EnumViewerControl","renderedValue","ReminderForm","allowReminderTypeEdit","hasFlag","getReminder","setDate","ReminderManagerModal","reminderFromProps","setReminder","setIsDirty","handleCanSubmit","openReminderManagerModal","reminder_manage","offline_add","offline_delete","offline_syncItem","folder_emailLink","doclist_resetFilters","doclist_exportCsv","searchResult_form","appInsights","trackEvent","CardSubTypeIcon","cardtype","onlyName","cardType","cardColor","liRef","isValidElement","borderRightColor","persisted_includeSubfolders","persisted_setIncludeSubfolders","changeFilter","toggleSubfolders","placeholderText","toggleTitle","toggleGroup","buttonDeep","si","_initProvider","providerName","osm","google","bing","esri","getGeoPlacesProvider","_geoCodingProvider","geo","places","getSAYT","query","gpi","textOverflow","IndicatorSeparator","DropdownIndicator","refreshIndex","geoLocatorOptions","custom","enableHighAccuracy","maximumWait","maximumAge","desiredAccuracy","fallbackToIP","addressLookup","timezone","staticMap","useHandleSignedPdf","toastRef","useUnmount","useHandlePdfPrint","handleTriggerPrint","useViewerUrl","getDocUrl","usePdfArrowNavigation","onPdfReady","onKeyDown","PDFViewerApplication","pdfViewer","isHorizontalScrollbarEnabled","createEvent","initEvent","dispatchEvent","DocViewer","viewerUrl","InlineViewer","withContinuousPreview","isContinuousPreview","atEnd","setAtEnd","handlePrev","triggeredByHtmlViewer","handleNext","HtmlViewerAction","Top","Bottom","MediaViewer","ImageViewer","HtmlViewer","tokenFromProps","customViewerUrl","tokenRef","offlineHandlerFactory","viewer","docViewer","calculatePosition","calclulatedPposition","offsetHeight","querySelector","RowContentWithStickyToggle","bottom","treeItem","localizedWebDavName","listLeft","numberOfChildren","expand","noexpand","elementIcon","listName","treeCount","Row","isVisible","onLoadMore","handleContextClick","listGroupItem","listGroupItemActive","NoDataContent","_hasMore","_renderRow","_getActiveTreeNodeIndex","Tree","unfocused","totalItems","renderRow","onScroll","treeNodes","setAll","_onClick","_onExpand","_onLoadMore","NarrowToggle","toggled","narrow","isToggled","setIsToggled","CombinedFiltersMenu","showClear","renderedBucket","setHeight","setMaxWidth","isNarrow","setIsNarrow","GeoAreaInput","_setAreaManually","getGeoAreaProvider","editLocationResult","onManualArea","showIcon","buttonsWrapper","SupportGeoAreaEdit","errorMessage","showValidationBelow","FormsyEditorBaseContainer","withFormsy","afterHeaderComponentClass","overrideIsValid","onValidationChange","additionalRender","handleChangeValue","fieldName","renderField","hasCheckbox","valid","hasLabel","found","exactItemUri","globalDefaults","archiveTargetsWithItemFlows","mailService","rasterMapService","reminderService","searchAsYouType","searchCalendar","searchFacets","searchStatistics","searchAdvanced","shareService","templateService","workflowService","xs","ConfirmModal","confirmStyle","len","filterDef","GetDefaultOperatorForType","nodata","forceUpdateGrid","FilterBarContainer","_prep","aggregation","appenders","consoleAppender","createConsoleAppender","sendLogItems","logItems","successCallback","logItem","getDebugLevel","getInfoLevel","getWarnLevel","setOptions","level","browserLoggingLevel","browserLoggingForwardToServer","serverAppender","createAjaxAppender","batchSize","bufferSize","storeInBufferLevel","sendWithBufferLevel","beforeSend","xhr","setRequestHeader","relDate","LocalStore","localStore","setUppyRestrictions","updatedRestrictions","onRestrictionFailed","onBeforeUpload","_updateRestrictions","restrictedFileIDs","fileID","_checkRestrictions","restrictedFiles","old_onBeforeUpload","onBeforeFileAdded","old_onBeforeFileAdded","beforeUpload","SupportGeoPointEdit","getGeoPointProvider","SupportGeoRadiusEdit","getGeoRadiusProvider","PrevDocButton","NextDocButton","onFullscreen","flexShrink","wrapperStyle","_iframe","setCenterMarker","_fetchRasterLayers","mapLayers","fetchError","_callOnLoad","_frameLoaded","isRaster","showLocations","searchRadius","_addLocationsToMap","showMoreLocations","_getMapUrl","providerKey","WithContext","Consumer","getRadianAngle","degreeValue","PI","createImage","Image","getCroppedImg","imageSrc","pixelCrop","rotation","rotRad","bBoxWidth","cos","sin","bBoxHeight","canvas","getContext","translate","rotate","drawImage","getImageData","putImageData","toDataURL","degrees","Rotation","onRotate","setRotation","array","prev","clampInRange","Zoom","maxZoom","onZoom","ImageEditorModal","_onDone","croppedAreaPixels","croppedImage","_onCropChange","crop","_onCropComplete","croppedArea","_onZoomChange","zoom","_onRotationChange","aspect","cropShape","minZoom","onCropChange","onCropComplete","onZoomChange","onRotationChange","openImageEditorModal","UploadImage","_onDrop","_validateFile","_processFile","_onBrowse","_input","_onBrowseChange","accept","onDone","readAsDataURL","_onEdit","_parseValueAsImageResultDTO","fallback","hideEdit","middle","getGeoLocation","onLocation","geolocator","locate","coords","getBarcodeMatch","re","lastIndex","getBarcode","onBarcode","openBarcodeModal","fixSearchFilterName","runSearchItem","fb","createSearchItem","onSearchItemCreated","userFilter","geoFilter","strLoc","geolocation","barcodeFilter","barcode","createSearchItemAsync","newSearchItem","ParamText","labelClassName","valueClassName","localizedLabel","localizedTitle","ParamLabel","Text","withViewName","mapper","isDocClassificationEditAllowed","triggerEditModeFromProps","isFlatAU","searchTermFromProps","triggerPrintFromProps","versionFromStore","formInEditMode","setVersion","versionedItemUri","setVersionedItemUri","triggerEditModeFromPropsOrQs","setTriggerEditMode","handleDrop","handleCancelForm","handleShowVersion","isDocEditAllowed","filedrop","mapViewerName","DocumentWithoutHash","GeoRasterInput","_setLocationManually","onManualLocation","onSetLocationManually","FolderRow","RecentFolderSelect","filteredCards","selectedCard","recentFolder","recentFolderNative","selectClassName","actionClassName","setFolderItemUri","siteItemUri","setSiteItemUri","prevSearchScope","prevFolderItemUri","prevSiteItemUri","handleScopeChange","handleFolderPickerChange","_refreshId","_refreshRoute","parentItemUri","doRefresh"],"mappings":"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","file":"static/js/main.3b0be9fc.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"fullscreen\":\"DocModal_fullscreen__2ZG9O\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"gpi\":\"GeoPlaceInput_gpi__1aADj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"form\":\"SummaryAttributeViewerControl_form__P-Isy\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"option\":\"LookupEditorControl_option__1DYL2\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"modal\":\"ImageEditorModal_modal__1IqC7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"content\":\"Edit_content__2642Y\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"header\":\"Search_header__3aAYS\"};","// @flow\r\nimport { openProgressModal } from \"components/ProgressModal\";\r\nimport { downloadDocUri } from \"data/api\";\r\nimport { getLocalizedText } from \"data/utils\";\r\nimport { toastActionResult } from \"data/toast\";\r\nimport { PrintAction } from \"hooks/PostMessage/Actions\";\r\nimport { postMessageTo } from \"hooks/PostMessage/Utils\";\r\n\r\ntype Context = {\r\n items?: Array,\r\n};\r\n\r\nclass doc_printMultiple {\r\n logger: () => any = toastActionResult;\r\n createPrintableFile = (data, contentType) => {\r\n switch (contentType) {\r\n case \"image/apng\":\r\n case \"image/avif\":\r\n case \"image/gif\":\r\n case \"image/jpeg\":\r\n case \"image/png\":\r\n case \"image/svg+xml\":\r\n case \"image/webp\":\r\n return {\r\n $type: \"image\",\r\n data: `data:${contentType};base64,${new Buffer.from(\r\n data\r\n ).toString(\"base64\")}`,\r\n };\r\n case \"text/html\":\r\n return {\r\n $type: \"html\",\r\n data: new Buffer.from(data).toString(),\r\n };\r\n case \"application/pdf\":\r\n return { $type: \"pdf\", data };\r\n default:\r\n throw new Error(`Cannot print Content-Type: ${contentType}`);\r\n }\r\n };\r\n iframe = null;\r\n execute = async ({\r\n multiple,\r\n itemUri,\r\n ext,\r\n name: docName,\r\n isDoc,\r\n items,\r\n }: Context): Promise => {\r\n const documents = items?.filter((item) => item.isDoc) || [];\r\n if (!multiple && isDoc) {\r\n documents.push({ itemUri, ext, isDoc, name: docName });\r\n }\r\n if (!documents.length) {\r\n this.logger(false, \"itemActions:doc_print\");\r\n return false;\r\n }\r\n\r\n const name = getLocalizedText(`$multiselection:actionpanel.document`, {\r\n count: documents.length,\r\n });\r\n\r\n await openProgressModal({\r\n icon: \"fa-regular fa-print\",\r\n title: getLocalizedText(\"$itemActions:doc_print.preparing\", {\r\n documents: name,\r\n }),\r\n initialProgress: 0,\r\n doWork: async (close, setError, setProgress) => {\r\n const progressPart = 100 / documents.length;\r\n try {\r\n // Load ipw-print-js in iframe\r\n this.iframe = await new Promise((resolve) => {\r\n let node;\r\n const handleInit = (e) => {\r\n /* istanbul ignore if */\r\n if (!e.isTrusted || !e.data) return;\r\n /* istanbul ignore if */\r\n if (e.data?.source !== \"inPoint\") return;\r\n /* istanbul ignore if */\r\n if (e.data?.type !== PrintAction.Ready) return;\r\n window.removeEventListener(\"message\", handleInit);\r\n resolve(node);\r\n };\r\n window.addEventListener(\"message\", handleInit);\r\n node = document.createElement(\"iframe\");\r\n node.src = `${process.env.PUBLIC_URL || \"\"}/__printjs/`;\r\n document.body.appendChild(node);\r\n });\r\n\r\n let errors = 0;\r\n\r\n // Iterate over documents and prepare for print\r\n for (let doc = 0; doc < documents.length; doc++) {\r\n const d = documents[doc];\r\n try {\r\n const uri = await downloadDocUri(\r\n d.itemUri,\r\n false,\r\n !window.CONFIG.general.htmlViewerExtensions.includes(\r\n String(d.ext).toLowerCase()\r\n ) &&\r\n !window.CONFIG.general.imageViewerExtensions.includes(\r\n String(d.ext).toLowerCase()\r\n )\r\n );\r\n /* istanbul ignore if */\r\n if (uri == null)\r\n throw new Error(\r\n \"Cannot create download URI for document!\"\r\n );\r\n const response = await fetch(uri);\r\n const buffer = await response.arrayBuffer();\r\n const data = this.createPrintableFile(\r\n buffer,\r\n response.headers.get(\"Content-Type\")\r\n );\r\n // Send file to printjs and wait for response\r\n await new Promise((resolve, reject) => {\r\n /* istanbul ignore if */\r\n if (data == null) reject();\r\n const handlePrepareFile = (e) => {\r\n /* istanbul ignore if */\r\n if (!e.isTrusted || !e.data) return;\r\n /* istanbul ignore if */\r\n if (e.data?.source !== \"inPoint\") return;\r\n /* istanbul ignore if */\r\n if (e.data?.type === PrintAction.Failed)\r\n reject();\r\n /* istanbul ignore if */\r\n if (e.data?.type !== PrintAction.Ready)\r\n return;\r\n window.removeEventListener(\r\n \"message\",\r\n handlePrepareFile\r\n );\r\n resolve();\r\n };\r\n window.addEventListener(\r\n \"message\",\r\n handlePrepareFile\r\n );\r\n postMessageTo(\r\n PrintAction.Prepare,\r\n data,\r\n this.iframe?.contentWindow\r\n );\r\n });\r\n } catch (e) {\r\n console.warn(\r\n `Cannot add ${d.name} to print queue`,\r\n e\r\n );\r\n errors++;\r\n }\r\n\r\n // Update progress bar\r\n setProgress(progressPart * (doc + 1));\r\n }\r\n\r\n if (errors === documents.length) {\r\n this.logger(false, \"itemActions:doc_print\");\r\n close();\r\n return;\r\n }\r\n postMessageTo(\r\n PrintAction.Print,\r\n null,\r\n this.iframe?.contentWindow\r\n );\r\n //Close delayed to always show 100% progress\r\n setTimeout(close, 800);\r\n } catch (err) {\r\n /* istanbul ignore else */\r\n if (err && err.message) setError(err.message);\r\n console.warn(err);\r\n // notify user\r\n this.logger(false, \"itemActions:doc_print\");\r\n }\r\n },\r\n });\r\n /* istanbul ignore if */\r\n if (this.iframe != null) {\r\n document.body.removeChild(this.iframe);\r\n }\r\n return true;\r\n };\r\n}\r\n\r\nexport default doc_printMultiple;\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"itemflows\":\"ItemFlowsModal_itemflows__1RW_r\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"modal\":\"UploadVersionModal_modal__2h70W\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"LayersEditor_wrapper__3Fsse\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"modal\":\"RasterMapModal_modal__m_kKJ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"reminder\":\"ReminderManagerModal_reminder__3jeJJ\",\"modal\":\"ReminderManagerModal_modal__3LBpC\",\"button\":\"ReminderManagerModal_button__X91LK\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"enum\":\"EnumViewerControl_enum__1YC5A\"};","import actionTypes from \"data/actions/actionTypes\";\nimport Constants from \"data/constants\";\n\nexport const initialState = {\n displayName: \"N/A\",\n id: -1,\n status: Constants.NONE,\n sites: [],\n mainNavigation: [],\n isWfEnabled: false,\n isAdmin: false,\n avatar: undefined,\n hasOfflineItems: false,\n itemActions: [\n {\n categories: [],\n actions: [],\n },\n ],\n};\n\nconst userReducer = (state = initialState, action) => {\n switch (action.type) {\n case actionTypes.USER_FETCH_REQUESTED:\n return { ...state, ...action.payload };\n case actionTypes.USER_FETCH_RESULT:\n const { favorites, ...rest } = action.payload;\n return { ...state, ...rest };\n case actionTypes.USER_SITES_RESULT:\n return { ...state, ...action.payload };\n case actionTypes.LOGIN_SIGNOUT:\n return initialState;\n /* istanbul ignore next */\n case actionTypes.PERSIST_PURGE:\n return initialState;\n default:\n return state;\n }\n};\n\nexport default userReducer;\n\nexport const userIdSelector = (state: Object) => state.user.id;\nexport const userNameSelector = (state: Object) => state.user.displayName;\nexport const userStatusSelector = (state: Object) => state.user.status;\nexport const userCorrelationIdSelector = (state: Object) =>\n window.CONFIG.correlationId;\nexport const userSitesSelector = (state: Object) => state.user.sites;\nexport const userMainNavigationSelector = (state: Object) =>\n state.user.mainNavigation;\nexport const userIsAdminSelector = (state: Object) =>\n state.user.status === Constants.OK ? state.user.isAdmin : false;\nexport const userIsWfEnabledSelector = (state: Object) =>\n state.user.status === Constants.OK ? state.user.isWfEnabled : false;\nexport const userLanguageSelector = (state: Object) =>\n state.user.status === Constants.OK ? state.user.language : undefined;\nexport const userDecimalSeparator = (state: Object) =>\n state.user.status === Constants.OK ? state.user.decimalSeparator : \".\";\nexport const userThousandSeparator = (state: Object) =>\n state.user.status === Constants.OK ? state.user.thousandSeparator : \",\";\nexport const userItemActionsSelector = (state: Object) =>\n state.user.itemActions;\nexport const userFormActionsSelector = (state: Object) =>\n state.user.formActions;\nexport const userTopbarItemsSelector = (state: Object) =>\n state.user.topbar?.items;\nexport const userHasOfflineItemsSelector = (state: Object) =>\n state.user.status === Constants.OK ? state.user.hasOfflineItems : false;\n","import actionTypes from \"data/actions/actionTypes\";\nimport Constants from \"data/constants\";\nimport { type searchResultState } from \"./types\";\n\nexport const initialState: searchResultState = {\n status: Constants.NONE,\n error: undefined,\n result: undefined,\n count: {\n status: Constants.NONE,\n totalCount: -1,\n totalTime: -1,\n aggregations: [],\n },\n form: {\n id: -1,\n status: Constants.NONE,\n result: undefined,\n },\n changes: {},\n searchRequest: undefined,\n searchItem: undefined,\n isValid: true,\n};\n\nconst searchReducer = (state: searchResultState = initialState, action) => {\n switch (action.type) {\n case actionTypes.SEARCH_RESET:\n return {\n ...state,\n status: Constants.NONE,\n result: undefined,\n count: {\n status: Constants.NONE,\n totalCount: -1,\n totalTime: -1,\n aggregations: [],\n },\n searchRequest: undefined,\n searchItem: undefined,\n };\n\n case actionTypes.SEARCH_FAVRENAME_REQUEST:\n case actionTypes.SEARCH_FAVRENAME_RESULT:\n case actionTypes.SEARCH_FETCH_REQUEST:\n case actionTypes.SEARCH_FETCH_RESULT:\n case actionTypes.SEARCH_ITEM_SAVE:\n case actionTypes.SEARCH_FORM_CHANGES:\n case actionTypes.SEARCH_FORM_VALIDATION:\n return {\n ...state,\n ...action.payload,\n };\n\n case actionTypes.SEARCH_FORM_FETCH_REQUEST:\n return {\n ...state,\n form: Object.assign({}, state.form, {\n status: Constants.LOADING,\n id: action.payload.id,\n }),\n };\n\n case actionTypes.SEARCH_FORM_FETCH_RESULT:\n return {\n ...state,\n form: Object.assign({}, action.payload, {\n id: state.form && state.form.id,\n }),\n };\n case actionTypes.SEARCH_FORM_RESET:\n return {\n ...state,\n form: { ...initialState.form },\n changes: {},\n };\n\n case actionTypes.SEARCH_COUNT_REQUEST:\n return {\n ...state,\n count: { status: Constants.LOADING },\n };\n\n case actionTypes.SEARCH_COUNT_RESULT:\n return {\n ...state,\n count: action.payload,\n };\n\n /* istanbul ignore next */\n case actionTypes.PERSIST_PURGE:\n return initialState;\n default:\n return state;\n }\n};\n\nexport default searchReducer;\n\nexport const searchStatusSelector = (state: Object) => state.search.status;\nexport const searchErrorSelector = (state: Object) => state.search.error;\nexport const searchResultSelector = (state: Object) => state.search.result;\nexport const searchResultTotalCountSelector = (state: Object) =>\n state.search.status === Constants.OK && state.search.result\n ? state.search.result.totalCount\n : -1;\nexport const searchRequestSelector = (state: Object) =>\n state.search.searchRequest;\nexport const searchTermsSelector = (state: Object) => state.search.terms;\nexport const searchItemSelector = (state: Object) => state.search.searchItem;\nexport const searchFormStatusSelector = (state: Object) =>\n state.search.form.status;\nexport const searchFormResultSelector = (state: Object) =>\n state.search.form.result;\nexport const searchFormIdSelector = (state: Object) => state.search.form.id;\nexport const searchFormChangesSelector = (state: Object) =>\n state.search.changes;\nexport const searchCountStatusSelector = (state: Object) =>\n state.search.count.status;\nexport const searchCountResultSelector = (state: Object) => state.search.count;\nexport const searchCountAggregationsSelector = (state: Object) =>\n state.search.count.aggregations;\nexport const searchFormValidationSelector = (state: Object) =>\n state.search.isValid || state.search.form.id === -1;\n","import { type Location, type RasterLocation } from \"data/types\";\n\nexport const TrimLocation = (location: Array): Array =>\n location\n .map((point) => point.replace(/\\s+/g, \"\"))\n .filter((point) => !!point);\n\nexport /**\n * will parse a string like \"63.4234,-18.1232\" into a Location object\n *\n * @param {string} location in string i.e. \"lat,lang\"\n * @returns {Location} in object format i.e. { latitude: number, longitude: number } or null if could not parse\n */\nconst ParseLocation = (location: string): Location => {\n if (\n location == null ||\n String(location).trim().length === 0 ||\n location.indexOf(\",\") === -1\n )\n return null;\n const pos = TrimLocation(location.split(\",\"));\n // only Number() will correctly return NaN if any letters are in there\n if (isNaN(Number(pos[0])) || isNaN(Number(pos[1]))) return null;\n // but only parseFloat() will correctly return the full number (not rounded)\n const latitude = parseFloat(pos[0]);\n const longitude = parseFloat(pos[1]);\n return { latitude, longitude };\n};\n\nexport const ParseRaster = (location: string): RasterLocation => {\n if (\n location == null ||\n String(location).trim().length === 0 ||\n location.indexOf(\",\") === -1 ||\n location.indexOf(\":\") === -1\n )\n return null;\n const pos = TrimLocation(location.split(\":\"));\n const loc = ParseLocation(pos[1]);\n if (loc == null) return null;\n return {\n x: loc.latitude,\n y: loc.longitude,\n rasterId: pos[0],\n };\n};\n\nexport /**\n * will parse a string like \"63.4234,-18.1232;63.4234,-18.1232;63.4234,-18.1232\" into a list of Location objects\n *\n * @param {string} area in string i.e. \"lat,lang;lat,lang;...\"\n * @returns {Array} in object format i.e. [{latitude:number, longitude: number}, ...] or null if could not parse\n */\nconst ParseArea = (area: string): Array => {\n if (\n area == null ||\n String(area).trim().length === 0 ||\n area.indexOf(\",\") === -1\n )\n return null;\n return TrimLocation(area.split(\";\")).map((point) => ParseLocation(point));\n};\n\nexport /**\n * will parse a string like \"13.45,22.32,5000\" into a Location and Radius\n */\nconst ParseRadius = (\n value: string\n): { location: Location, radius: ?number } => {\n let location = null,\n radius = null;\n if (value && String(value).length > 0 && value.indexOf(\",\") > 0) {\n const parts = TrimLocation(value.split(\",\"));\n /* istanbul ignore else */\n if (parts.length >= 2) {\n location = ParseLocation(`${parts[0]},${parts[1]}`);\n if (parts.length === 3 && !isNaN(Number(parts[2]))) {\n radius = parseFloat(parts[2]);\n }\n }\n }\n return {\n location,\n radius,\n };\n};\n\nexport /**\n * will convert a location with radius into a string\n *\n * @param {Location} location input location object\n * @param {number} radius radius in meters\n * @returns {string} string result i.e. \"latitude,longitude,radius\"\n */\nconst RadiusToString = (location: Location, radius: number) =>\n location == null || radius == null\n ? \"\"\n : LocationToString(location) + \",\" + radius.toFixed(0);\n\nexport /**\n * will convert a Location object into a string\n *\n * @param {Location} location input location object\n * @returns {string} string result comma-separated i.e. \"lat,longitude\"\n */\nconst LocationToString = (location: Location): string =>\n location == null ? \"\" : location.latitude + \",\" + location.longitude;\n\nexport /**\n * will convert an area path into a string\n *\n * @param {Array} area input area coordinates\n * @returns {string} string result comma-separated and semi-colon separated i.e. \"lat,longitude;lat,longitude;...\"\n */\nconst AreaToString = (area: Array): string =>\n area == null\n ? \"\"\n : area.reduce(\n (result, location, index) =>\n (result +=\n (index > 0 ? \";\" : \"\") + LocationToString(location)),\n \"\"\n );\n\nexport /**\n * will convert a raster coordinate into a string\n *\n * @param {RasterLocation} raster input raster coordinates\n * @returns {string} string result of raster location, i.e. \"rasterId:x,y\"\n */\nconst RasterToString = (raster: RasterLocation) =>\n raster == null || raster.rasterId == null\n ? \"\"\n : `${raster.rasterId}:${raster.x},${raster.y}`;\n\nexport const GeoPointValidationRegex = /^[-+]?([1-8]?\\d(\\.\\d+)?|90(\\.0+)?),\\s*[-+]?(180(\\.0+)?|((1[0-7]\\d)|([1-9]?\\d))(\\.\\d+)?)$/;\nexport const GeoAreaValidationRegex = /^([-+]?([1-8]?\\d(\\.\\d+)?|90(\\.0+)?),\\s*[-+]?(180(\\.0+)?|((1[0-7]\\d)|([1-9]?\\d))(\\.\\d+)?)(;)*)*$/;\n","// @flow\nimport React, { useMemo, useContext } from \"react\";\nimport { PaneSizeContext } from \"data/context\";\ntype Props = {\n /** html style attribute */\n style: CSSStyleDeclaration,\n /** html class attribute */\n className: string,\n /** Components Children */\n children: Children,\n};\n\nconst ViewerControlBase = ({\n className = \"form-group\",\n style = {},\n children,\n}: Props) => {\n const margins = 32;\n let width;\n const ctx = useContext(PaneSizeContext);\n if (ctx != null) {\n width = ctx.width;\n }\n const computedStyle: CSSStyleDeclaration = useMemo(() => {\n const styles = { ...style };\n if (width != null) {\n styles.maxWidth = width - margins;\n }\n return styles;\n }, [style, width]);\n return (\n
\n {children}\n
\n );\n};\n\nexport default ViewerControlBase;\n","// @flow\nimport React from \"react\";\nimport Badge from \"react-bootstrap/lib/Badge\";\nimport loc from \"i18next\";\n\ntype Props = {\n /** CSS class to apply */\n className?: string,\n /** number to show (null or <0 will not render) */\n count?: number,\n /** title to show, defaults to count */\n title?: string,\n};\n\n// https://stackoverflow.com/questions/2685911/is-there-a-way-to-round-numbers-into-a-reader-friendly-format-e-g-1-1k\nfunction abbrNum(number, decPlaces) {\n // 2 decimal places => 100, 3 => 1000, etc\n decPlaces = Math.pow(10, decPlaces);\n\n // Enumerate number abbreviations\n var abbrev = [\"k\", \"m\", \"b\", \"t\"];\n\n // Go through the array backwards, so we do the largest first\n for (var i = abbrev.length - 1; i >= 0; i--) {\n // Convert array index to \"1000\", \"1000000\", etc\n var size = Math.pow(10, (i + 1) * 3);\n\n // If the number is bigger or equal do the abbreviation\n if (size <= number) {\n // Here, we multiply by decPlaces, round, and then divide by decPlaces.\n // This gives us nice rounding to a particular decimal place.\n number = Math.round((number * decPlaces) / size) / decPlaces;\n\n // Handle special case where we round up to the next abbreviation\n /* istanbul ignore next */\n if (number === 1000 && i < abbrev.length - 1) {\n number = 1;\n i++;\n }\n\n // Add the letter for the abbreviation\n number = loc.format(number, \"pretty\") + abbrev[i];\n\n // We are done... stop\n break;\n }\n }\n\n return number;\n}\n\n/** renders a normalized localized count number in a Badge */\nconst CountBadge = ({ className, count, title }: Props) => {\n if (count == null || count < 0) return null;\n return (\n \n {`${abbrNum(count, 1)}`}\n \n );\n};\nCountBadge.displayName = \"CountBadge\";\nexport default CountBadge;\n","import React from \"react\";\r\nimport { ApiErrorResult } from \"data/types\";\r\nimport Button from \"react-bootstrap/lib/Button\";\r\nimport ButtonGroup from \"react-bootstrap/lib/ButtonGroup\";\r\nimport { get } from \"data/constants\";\r\nimport { getLocalizedText } from \"data/utils\";\r\nimport { toastActionResult, toastStyled, toastTypes } from \"data/toast\";\r\nimport copy from \"copy-to-clipboard\";\r\nimport { JL } from \"data/logging\";\r\nimport styles from \"./apiError.module.css\";\r\n\r\nexport const HTTP_ERROR_UNAUTHORIZED = 401;\r\nexport const HTTP_ERROR_FORBIDDEN = 403;\r\nexport const HTTP_ERROR_CONFLICT = 412;\r\n\r\nconst _log = JL(\"apiError\");\r\nexport class ApiErrorContainer extends Error {\r\n data: ApiErrorResult;\r\n\r\n constructor(response: ApiErrorResult) {\r\n super(response.message);\r\n /* istanbul ignore else */\r\n if (Error.captureStackTrace)\r\n Error.captureStackTrace(this, ApiErrorContainer);\r\n this.data = response;\r\n }\r\n}\r\n\r\nexport class ApiError extends ApiErrorContainer {\r\n constructor(...args) {\r\n super({\r\n message: args.length > 0 ? args[0] : \"Unknown\",\r\n isError: true,\r\n });\r\n }\r\n}\r\n\r\nexport class ApiNetworkError extends ApiErrorContainer {\r\n constructor(...args) {\r\n const response: Response = args[0];\r\n super({\r\n ...(args.length > 1 ? args[1] : {}),\r\n statusCode: response.status,\r\n statusText: response.statusText,\r\n isError: true,\r\n });\r\n }\r\n}\r\n\r\nexport class ApiConflictError extends ApiNetworkError {}\r\n\r\nexport class ApiForbiddenError extends ApiNetworkError {}\r\n\r\nexport class ApiNetworkOfflineError extends ApiErrorContainer {\r\n constructor(...args) {\r\n super({\r\n message: args[0],\r\n detail: args.length > 1 ? args[1] : null,\r\n isError: true,\r\n eventId: { id: 0, name: \"OFFLINE\" },\r\n });\r\n }\r\n}\r\n\r\nexport const notifyOnForbidden = (response) => {\r\n _log.error(() => ({\r\n msg: \"Fetch.Api.Forbidden\",\r\n response,\r\n }));\r\n const { email = false, url = false } = get(\r\n window.CONFIG,\r\n [\"general\", \"localContactInfo\"],\r\n {}\r\n );\r\n const details =\r\n email || /* istanbul ignore next */ url\r\n ? () => (\r\n \r\n {email && (\r\n \r\n {email}\r\n \r\n )}\r\n {url && (\r\n \r\n {url}\r\n \r\n )}\r\n \r\n )\r\n : null;\r\n\r\n toastStyled({\r\n toastId: \"fetch-forbidden\",\r\n ...toastTypes.partial,\r\n autoClose: false,\r\n details,\r\n message: getLocalizedText(\"$fetch.forbidden\"),\r\n });\r\n};\r\n\r\nexport const notifyOnError = (response) => {\r\n _log.error(() => ({\r\n msg: \"Fetch.Api.Error\",\r\n response,\r\n }));\r\n\r\n if (!response.extra || response.extra.notify !== true) {\r\n return;\r\n }\r\n\r\n const { extra, isError, ...rest } = response;\r\n /* istanbul ignore next */\r\n const {\r\n email = false,\r\n text = \"\",\r\n url = false,\r\n } = get(window.CONFIG, [\"general\", \"localContactInfo\"], {});\r\n const message = getLocalizedText(\"$fetch.clipboard_copy.message\");\r\n const handleClick = () =>\r\n copy(JSON.stringify(rest), {\r\n message,\r\n format: \"text/plain\",\r\n onCopy: /* istanbul ignore next */ (clipboardData: Object) =>\r\n toastActionResult(true, \"fetch.clipboard_copy\"),\r\n });\r\n\r\n const details = () => (\r\n \r\n {email && (\r\n \r\n {email}\r\n \r\n )}\r\n {url && (\r\n \r\n {url}\r\n \r\n )}\r\n \r\n \r\n );\r\n\r\n toastStyled({\r\n ...toastTypes.failure,\r\n autoClose: false,\r\n details,\r\n message: getLocalizedText(response.extra.loc || \"$fetch.error\", {\r\n text,\r\n }),\r\n });\r\n};\r\n","// @flow\nimport { BasePlugin } from \"@uppy/core\";\n//import { type uppyFile } from \"data/uppy\";\nimport isEmpty from \"lodash/isEmpty\";\nimport parser from \"exif-parser\";\n\ntype uppyFileMetadata = {\n type: string,\n};\n\nexport type uppyFile = {\n id: string, // 'uppyteamkongjpg1501851828779'\n name: string, // 'nature.jpg'\n extension: string, // '.jpg'\n type: string, // 'image/jpeg'\n data: Object, // the Blob object\n size: number | string, // 3947642 (returns 'N/A' if size cannot be determined)\n preview: string, // value that can be used to populate \"src\" attribute of an \"img\" tag,\n meta: uppyFileMetadata,\n};\n\n/* istanbul ignore next */\nexport default class UppyExif extends BasePlugin {\n constructor(uppy: Object, opts: Object) {\n super(uppy, opts);\n this.uppy = uppy;\n this.type = \"exif\";\n this.id = \"Exif\";\n this.title = \"uppy-exif\";\n\n // set default options\n const defaultOptions = {\n prefix: \"exif_\",\n tags: [],\n };\n\n // merge default options with the ones set by user\n this.opts = Object.assign({}, defaultOptions, opts);\n }\n\n install() {\n this.uppy.log(\"[Exif] Installing UppyExif Plugin\");\n this.uppy.on(\"file-added\", this.extractExif);\n }\n\n uninstall() {\n this.uppy.log(\"[Exif] Removing UppyExif Plugin\");\n this.uppy.off(\"file-added\", this.extractExif);\n }\n\n extractExif = (file: uppyFile) => {\n // NOTE: EXIF only supported on jpeg files!\n if (file.meta.type !== \"image/jpeg\") {\n this.uppy.log(\n `[Exif] mime type: ${file.meta.type} does not support EXIF tags`\n );\n return;\n }\n\n this.uppy.log(`[Exif] Extracting tags from ${file.name}`);\n const reader = new FileReader();\n reader.addEventListener(\"loadend\", () => {\n // DONE?\n /* istanbul ignore else */\n if (reader.readyState === 2) {\n try {\n let buffer = parser.create(reader.result);\n // get Exif Tags\n const result = buffer.parse();\n const metadata = {};\n // any requested tags?\n if (this.opts.tags.length === 0) {\n // no, return them all\n Object.keys(result.tags).forEach((tagName) => {\n metadata[this.opts.prefix + tagName] =\n result.tags[tagName];\n });\n } else {\n // yes, return only those\n this.opts.tags.forEach((tagName) => {\n const tag = result.tags[tagName];\n /* istanbul ignore else */\n if (tag != null) {\n metadata[this.opts.prefix + tagName] = tag;\n }\n });\n }\n // any tags found?\n if (!isEmpty(metadata)) {\n this.uppy.setFileMeta(file.id, metadata);\n this.uppy.log(\n `[Exif] Found tags for ${file.name} and added to metadata with prefix: ${this.opts.prefix}`\n );\n } else {\n this.uppy.log(\n `[Exif] None of the requested tags found for ${file.name}`\n );\n }\n } catch (err) {\n // console.log(err);\n // got invalid data, handle error\n this.uppy.log(\n `[Exif] Cannot analyse tags for ${file.name}`,\n err.message\n );\n }\n } else {\n this.uppy.log(\n `[Exif] Cannot load file ${file.name}: ${reader.error.message}`\n );\n }\n });\n\n // convert from Blob to ArrayBuffer\n reader.readAsArrayBuffer(file.data);\n };\n}\n","// @flow\nimport Uppy from \"@uppy/core\";\nimport \"@uppy/core/dist/style.css\";\nimport Tus from \"@uppy/tus\";\nimport Webcam from \"@uppy/webcam\";\nimport \"@uppy/webcam/dist/style.css\";\nimport ThumbnailGenerator from \"@uppy/thumbnail-generator\";\nimport GoldenRetriever from \"@uppy/golden-retriever\";\nimport { accessToken, userLanguage, correlationId } from \"data/storeHelper\";\nimport { ReduxStore } from \"@uppy/store-redux\";\nimport store from \"data/store\";\nimport isEmpty from \"lodash/isEmpty\";\nimport UppyExif from \"components/uppy-exif\";\nimport UppyMsg from \"@hs/uppy-msg\";\nimport UppyLexmark from \"@hs/uppy-lexmark\";\nimport UppyRestrictions from \"components/uppy-restrictions\";\nimport { isFeatureOn, Feature, get, isMiniView } from \"data/constants\";\nimport { CustomHttpHeader, OfflineQueueItemType } from \"data/types\";\nimport { JL } from \"data/logging\";\nimport { isOnline } from \"data/storeHelper\";\nimport {\n addToOfflineQueue,\n anyPendingChanges,\n} from \"data/offline/offlineQueue\";\nimport { postMessageTo } from \"hooks/PostMessage/Utils\";\nimport { ModalAction } from \"hooks/PostMessage/Actions\";\nimport { toastStyled, toastTypes } from \"data/toast\";\nimport { getLocalizedText } from \"data/utils\";\n\nexport const DEFAULT_UPPY_ID = \"upload\";\n\nexport type uppyFile = {\n id: string, // 'uppyteamkongjpg1501851828779'\n name: string, // 'nature.jpg'\n extension: string, // '.jpg'\n type: string, // 'image/jpeg'\n data: Object, // the Blob object\n size: number | string, // 3947642 (returns 'N/A' if size cannot be determined)\n preview: string, // value that can be used to populate \"src\" attribute of an \"img\" tag\n};\n\nexport const uppyPendingUploadsCountSelector = (\n state: Object,\n id: string /* istanbul ignore next */ = DEFAULT_UPPY_ID\n) => {\n let pendingCount = 0;\n if (\n state &&\n state.uppy &&\n state.uppy[id] &&\n state.uppy[id].files &&\n !isEmpty(state.uppy[id].files)\n ) {\n Object.keys(state.uppy[id].files).forEach((fileId) => {\n const file = state.uppy[id].files[fileId];\n if (file.progress.uploadComplete !== true) {\n pendingCount++;\n }\n });\n }\n return pendingCount;\n};\n\nexport const uppyHasPendingUploadsSelector = (\n state: Object,\n id: string = DEFAULT_UPPY_ID\n) => uppyPendingUploadsCountSelector(state, id) > 0;\n\nexport const uppyIsResumingUploadsSelector = (\n state: Object,\n id: string = DEFAULT_UPPY_ID\n) =>\n state &&\n state.uppy &&\n state.uppy[id] &&\n state.uppy[id].currentUploads &&\n !isEmpty(state.uppy[id].currentUploads);\n\n// returns metadata of queued pending files (not uploaded nor started)\nexport const uppyPendingFilesMetaSelector = (\n state: Object,\n id: string = DEFAULT_UPPY_ID\n) => {\n if (\n state &&\n state.uppy &&\n state.uppy[id] &&\n state.uppy[id].files &&\n !isEmpty(state.uppy[id].files)\n ) {\n let result = [];\n Object.keys(state.uppy[id].files).forEach((fileId) => {\n const file = state.uppy[id].files[fileId];\n if (\n file.progress.uploadStarted === null &&\n file.progress.uploadComplete === false\n ) {\n result.push(\n Object.assign(\n {},\n { id: file.id, preview: file.preview },\n file.meta\n )\n );\n }\n });\n return result;\n } else {\n return null;\n }\n};\n\n/* istanbul ignore next */\nexport const getUppyLocale = async () => {\n const locale = mapToUppyLocale[userLanguage()] || \"en_US\";\n const i18n = (\n await import(\n `__i18n/uppy/${locale}` /* webpackChunkName: \"uppy-[request]\" */\n )\n ).default;\n return {\n locale,\n i18n,\n };\n};\n\nexport const mapToUppyLocale: Object = {\n bg: \"bg_BG\",\n cs: \"cs_CZ\",\n de: \"de_DE\",\n \"de-AT\": \"de_DE\",\n \"de-CH\": \"de_DE\",\n \"de-DE\": \"de_DE\",\n en: \"en_US\",\n \"en-GB\": \"en_US\",\n \"en-US\": \"en_US\",\n es: \"es_ES\",\n fr: \"fr_FR\",\n hr: \"hr_HR\",\n hu: \"hu_HU\",\n it: \"it_IT\",\n ru: \"ru_RU\",\n sk: \"sk_SK\",\n sl: \"sl_SL\", // manually created\n uk: \"uk_UA\",\n lt: \"en_US\", //\"lt_LT\", //NOT SUPPORTED\n \"zh-Hans\": \"zh_CN\",\n};\n\nexport const createUppy = ({\n id = DEFAULT_UPPY_ID,\n maxNumberOfFiles,\n maxFileSize,\n allowedFileTypes,\n deniedFileTypes,\n metadata,\n}: {\n id?: string,\n maxNumberOfFiles?: number,\n maxFileSize?: number,\n allowedFileTypes?: Array,\n deniedFileTypes?: Array,\n metadata?: Object,\n}) =>\n new Uppy({\n store: new ReduxStore({\n store,\n id,\n }),\n autoProceed: false,\n restrictions: {\n maxNumberOfFiles,\n maxFileSize,\n allowedFileTypes,\n deniedFileTypes, // custom option handled by our own components/uppy-restrictions\n },\n meta: metadata,\n allowMultipleUploadBatches: false,\n debug:\n process.env.NODE_ENV !== \"production\" /* istanbul ignore next */ ||\n get(window.CONFIG, [\"general\", \"browserLoggingLevel\"], 4000) < 3000,\n logger: JL(\"Uppy\"),\n });\n\n// #48012: Load uppy plugins when token is available\nexport const addUppyPlugins = (_uppy = uppy) => {\n const headers = {\n [CustomHttpHeader.CorrelationId]: correlationId(),\n [CustomHttpHeader.SecureParams]: get(\n window.CONFIG,\n [\"general\", \"secure_params\"],\n undefined\n ),\n [CustomHttpHeader.MiniView]: /* istanbul ignore next */ isMiniView(\n window.location\n )\n ? \"1\"\n : \"0\",\n };\n /* istanbul ignore next */\n if (get(window.CONFIG, [\"auth\", \"useCustomAuthHeader\"], false)) {\n headers[\"X-inPoint-Auth\"] = accessToken();\n } else {\n headers.authorization = `Bearer ${accessToken()}`;\n }\n /* istanbul ignore next */\n if (!_uppy.getPlugin(\"Tus\")) {\n _uppy = _uppy.use(Tus, {\n endpoint:\n (window.CONFIG.host.bridge || window.CONFIG.host.basename) +\n \"/__up\",\n withCredentials: true,\n headers,\n chunkSize: 10000000, // 10mb limit imposed by Azure otherwise HTTP 413: https://uppy.io/docs/tus/#chunkSize-Infinity\n limit: 1, //only one concurrent upload at a time - to avoid filename collisions\n retryDelays: [0, 1000, 3000, 5000],\n onShouldRetry(err, retryAttempt, options, next) {\n // 400 Bad Request, created by TusStoreException is used to signal that something went wrong with the upload,\n // and the file should be removed from the queue\n if (err?.originalResponse?.getStatus() === 400) {\n return false;\n }\n return next(err);\n },\n });\n }\n /* istanbul ignore next */\n try {\n if (!_uppy.getPlugin(\"Webcam\")) {\n _uppy = _uppy.use(Webcam, {\n facingMode: \"environment\",\n countdown: false,\n modes: [\"video-audio\", \"video-only\", \"audio-only\", \"picture\"],\n mirror: false,\n locale: {\n strings: {\n pluginNameCamera: getLocalizedText(\n \"$uppy:plugin.camera\"\n ),\n },\n },\n });\n }\n } catch (e) {\n _uppy.log(\"[Webcam] Cannot load Plugin...\");\n }\n /* istanbul ignore next */\n if (!_uppy.getPlugin(\"Lexmark\") && isFeatureOn(Feature.uppyLexmark)) {\n const { UppyLexmark: Lexmark } = UppyLexmark;\n _uppy = _uppy.use(Lexmark, {\n id: \"Lexmark\",\n locale: {\n strings: {\n pluginNameLexmark: getLocalizedText(\"$uppy:plugin.lexmark\"),\n scanFromMFP: getLocalizedText(\"$uppy:plugin.scanFromMFP\"),\n },\n },\n });\n }\n /* istanbul ignore next */\n if (!_uppy.getPlugin(\"ThumbnailGenerator\")) {\n _uppy = _uppy.use(ThumbnailGenerator, { thumbnailWidth: 280 });\n }\n /* istanbul ignore next */\n if (!_uppy.getPlugin(\"GoldenRetriever\"))\n try {\n if (window.localStorage) {\n // NOTE: https://github.com/transloadit/uppy/pull/268\n // GoldenRetriever restores ALL files from ANY queue (uppy.id)\n // only now (after Thumbnail-generator has been registered) include Golden-Retriever!\n _uppy = _uppy.use(GoldenRetriever, {\n serviceWorker: isFeatureOn(Feature.offline),\n });\n }\n } catch (e) {\n if (e instanceof DOMException && e.name === \"SecurityError\")\n console.error(\n \"Cannot load Uppy Plugin GoldenRetriever (disabled Local Storage)\"\n );\n }\n /* istanbul ignore next */\n if (!_uppy.getPlugin(\"Exif\")) {\n _uppy = _uppy.use(UppyExif, {\n tags: [\"GPSLatitude\", \"GPSLongitude\", \"GPSDOP\", \"Orientation\"],\n });\n }\n /* istanbul ignore next */\n if (!_uppy.getPlugin(\"Msg\")) {\n _uppy = _uppy.use(UppyMsg, {\n tags: [\"senderName\", \"senderEmail\", \"senderDomain\", \"subject\"],\n });\n }\n /* istanbul ignore next */\n if (!_uppy.getPlugin(\"Restrictions\")) {\n _uppy = _uppy.use(UppyRestrictions, {});\n }\n\n // uppy does not trigger error on offline anymore => move to start upload (and handle ALL files in queue)\n _uppy.on(\"upload\", (data) => {\n /* istanbul ignore else */\n if (!isOnline()) {\n _uppy.log(\"[Offline] handling upload request\", data);\n const queue = [];\n _uppy\n .getFiles()\n .filter(\n (file) =>\n file.progress?.uploadStarted == null &&\n file.progress?.uploadComplete === false\n )\n .forEach((file) => {\n const key = file.meta.itemUri + \"_\" + file.id; // to identify pending changes on target folder\n anyPendingChanges(key).then((exists) => {\n if (!exists) {\n queue.push(\n addToOfflineQueue({\n type: OfflineQueueItemType.UppyFile,\n key,\n name: file.name,\n params: file,\n }).then(() => {\n _uppy.removeFile(file.id);\n // Notify user that file has been added to offline queue\n toastStyled(\n toastTypes.swOfflineQueueAddFile\n );\n })\n );\n }\n });\n });\n\n // Trigger ModalAction.Close after all files have been added to offline queue\n return Promise.all(queue).then((values) => {\n postMessageTo(ModalAction.Close);\n });\n }\n });\n\n // standard upload-error handling\n _uppy.on(\"upload-error\", (file: uppyFile, error: any, response: any) => {\n toastStyled({\n ...toastTypes.uppyError,\n message: getLocalizedText(\"$upload:error\", { file: file.name }),\n details: /* istanbul ignore next */ () => (\n
\n {\n error\n ?.toString()\n .split(\",\")\n .find((i) => i.startsWith(\" response text:\"))\n .split(\" response text:\", 2)[1]\n }\n
\n ),\n });\n });\n\n return _uppy;\n};\n\n/**\n * Uppy cannot re-upload files that failed due to a error triggered by the server\n * via OnFileCompleteAsync, so we need to remove and re-add the file to the queue and\n * reset the upload state to allow new uploads\n *\n * @param {Uppy} [_uppy=uppy]\n * @param {() => void} [handleFile=null]\n */\nexport const handleBeforeUpload = (\n _uppy: Uppy = uppy,\n handleFile?: (file: uppyFile) => void = null\n) => {\n // reset state to allow new uploads\n _uppy.setState({ allowNewUpload: true });\n _uppy.getFiles()?.forEach((file) => {\n // remove and re-add the file to the queue\n _uppy.removeFile(file.id);\n _uppy.addFile(file);\n // apply any custom logic\n if (typeof handleFile === \"function\") handleFile(file);\n });\n};\n\nexport type UppyEvent = {\n type: string,\n callback: Function,\n};\n\nexport const addUppyEvents = (events: Array, _uppy: Uppy = uppy) => {\n events.forEach((event) => _uppy.on(event.type, event.callback));\n return _uppy;\n};\n\nexport const removeUppyEvents = (\n events: Array,\n _uppy: Uppy = uppy\n) => {\n events.forEach((event) => _uppy.off(event.type, event.callback));\n return _uppy;\n};\n\n/** our global uppy handler instance */\nconst uppy = createUppy({});\nexport default uppy;\n","/* istanbul ignore next */\nif (!Date.prototype.toLocalJSON) {\n //Use local Timezone (not UTC) for JSON\n (function () {\n function pad(number) {\n return number < 10 ? `0${number}` : number;\n }\n // eslint-disable-next-line\n Date.prototype.toLocalJSON = function () {\n return `${this.getFullYear()}-${pad(this.getMonth() + 1)}-${pad(\n this.getDate()\n )}T${pad(this.getHours())}:${pad(this.getMinutes())}:${pad(\n this.getSeconds()\n )}.${(this.getMilliseconds() / 1000).toFixed(3).slice(2, 5)}`;\n };\n })();\n}\n\n/* istanbul ignore next */\nif (typeof window.crypto === \"undefined\") {\n window.crypto = require(\"crypto\");\n}\n\n/* istanbul ignore next */\nif (typeof window.crypto.randomUUID !== \"function\") {\n window.crypto.randomUUID = function () {\n return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (c) =>\n (\n c ^\n (window.crypto.getRandomValues(new Uint8Array(1))[0] &\n (15 >> (c / 4)))\n ).toString(16)\n );\n };\n}\n","// @flow\nimport React, { useState } from \"react\";\nimport Measure from \"react-measure\";\nimport { PaneSizeContext } from \"data/context\";\n\ntype Props = {\n /** html id attribute */\n id: string,\n /** html class attribute */\n className: string,\n /** Components Children */\n children: Children,\n};\n\nconst Pane = ({ id, className, style, children, dataTest }: Props) => {\n const [dimensions, setDimensions] = useState({\n width: 0,\n height: 0,\n });\n return (\n {\n /* istanbul ignore next */\n if (\n bounds.width === dimensions.width &&\n bounds.height === dimensions.height\n )\n return;\n setDimensions({\n width: bounds.width,\n height: bounds.height,\n });\n }}\n >\n {({ measureRef }) => (\n \n \n {children}\n \n \n )}\n \n );\n};\n\nexport default Pane;\n","const actions = {\n TOGGLES_PERSIST: \"toggles/PERSIST\",\n TOGGLES_CHANGE: \"toggles/CHANGE\",\n TOGGLES_UPDATECOUNTER: \"toggles/UPDATECOUNTER\",\n\n USER_FETCH_REQUESTED: \"user/FETCH_REQUESTED\",\n USER_FETCH_RESULT: \"user/FETCH_RESULT\",\n\n USER_SITES_RESULT: \"user/SITES_RESULT\",\n\n LOGIN_RESULT: \"login/RESULT\",\n LOGIN_REFRESH: \"login/REFRESH\",\n LOGIN_SET_RENEWAL: \"login/SET_RENEWAL\",\n LOGIN_SIGNOUT: \"login/SIGNOUT\",\n\n FAVORITES_FETCH_REQUEST: \"favorites/FETCH_REQUEST\",\n FAVORITES_FETCH_RESULT: \"favorites/FETCH_RESULT\",\n\n CARDS_FETCH_REQUESTED: \"cards/FETCH_REQUESTED\",\n CARDS_FETCH_RESULT: \"cards/FETCH_RESULT\",\n CARDS_FETCH_ENTITY_REQUESTED: \"cards/FETCH_ENTITY_REQUESTED\",\n CARDS_FETCH_ENTITY_RESULT: \"cards/FETCH_ENTITY_RESULT\",\n\n WF_FETCH_REQUESTED: \"wf/FETCH_REQUEST\",\n WF_FETCH_RESULT: \"wf/FETCH_RESULT\",\n\n WF_PROVIDERS_FETCH_REQUESTED: \"wf_providers/FETCH_REQUEST\",\n WF_PROVIDERS_FETCH_RESULT: \"wf_providers/FETCH_RESULT\",\n\n TREE_SET_STATUS: \"tree/SET_STATUS\",\n TREE_FETCH_REQUEST: \"tree/FETCH_REQUEST\",\n TREE_FETCH_RESULT: \"tree/FETCH_RESULT\",\n\n DOCS_FETCH_REQUEST: \"docs/FETCH_REQUEST\",\n DOCS_FETCH_RESULT: \"docs/FETCH_RESULT\",\n DOCS_EXPORT_CSV: \"docs/EXPORT_CSV\",\n\n DOCS_LAYOUT_REQUEST: \"docs/LAYOUT_REQUEST\",\n DOCS_LAYOUT_SET: \"docs/LAYOUT_SET\",\n\n DOCS_FILTERS_RESET: \"docs/FILTER_RESET\",\n DOCS_FILTERS_SETBYREF: \"docs/FILTER_SETBYREF\",\n DOCS_FILTERS_SETBYNAME: \"docs/FILTER_SETBYNAME\",\n DOCS_FILTERTEXT_SET: \"docs/FILTERTEXT\",\n\n DOCS_THUMBNAIL_REQUEST: \"docs/THUMBNAIL_REQUEST\",\n DOCS_THUMBNAIL_RESULT: \"docs/THUMBNAIL_RESULT\",\n\n SEARCH_ABORT: \"search/ABORT\",\n SEARCH_RESET: \"search/RESET\",\n SEARCH_FETCH_REQUEST: \"search/FETCH_REQUEST\",\n SEARCH_FETCH_RESULT: \"search/FETCH_RESULT\",\n SEARCH_FAVRENAME_REQUEST: \"search/FAVRENAME_REQUEST\",\n SEARCH_FAVRENAME_RESULT: \"search/FAVRENAME_RESULT\",\n SEARCH_ITEM_SAVE: \"search/ITEM_SAVE\",\n SEARCH_COUNT_REQUEST: \"search/AGGR_REQUEST\",\n SEARCH_COUNT_RESULT: \"search/AGGR_RESULT\",\n SEARCH_ADD_RECENT: \"search/ADD_RECENT\",\n\n SEARCH_FORM_FETCH_REQUEST: \"search/FORM_FETCH_REQUEST\",\n SEARCH_FORM_FETCH_RESULT: \"search/FORM_FETCH_RESULT\",\n SEARCH_FORM_CHANGES: \"search/FORM_CHANGES\",\n SEARCH_FORM_RESET: \"search/FORM_RESET\",\n SEARCH_FORM_VALIDATION: \"search/FORM_VALIDATION\",\n\n SEARCH_FORM_LIST_FETCH_REQUEST: \"search/FORM_LIST_FETCH_REQUEST\",\n SEARCH_FORM_LIST_FETCH_RESULT: \"search/FORM_LIST_FETCH_RESULT\",\n\n SPLITPANES_PERSIST: \"splitPanes/PERSIST\",\n SPLITPANES_SET: \"splitPanes/SET\",\n\n SETTINGS_SIDEBAR_MINI: \"settings/SIDEBAR_MINI\",\n SETTINGS_DOCLIST_VIEWMODE: \"settings/DOCLIST_VIEWMODE\",\n SETTINGS_SET: \"settings/SET\",\n\n GLOBALDEFAULTSEARCH_FETCH_REQUEST: \"globalDefaultSearch/FETCH_REQUEST\",\n GLOBALDEFAULTSEARCH_FETCH_RESULT: \"globalDefaultSearch/FETCH_RESULT\",\n\n CURRENT_BREADCRUMB: \"current/BREADCRUMB\",\n\n CURRENTITEM_SET: \"currentItem/SET\",\n CURRENTITEM_BAK: \"currentItem/BACKUP\",\n CURRENTITEM_RESTORE: \"currentItem/RESTORE\",\n CURRENTITEM_SAVE: \"currentItem/SAVE\",\n CURRENTITEM_LOADED: \"currentItem/LOADED\",\n\n EA_CLEAR: \"EA/CLEAR\",\n EA_DETAILVIEW_SET: \"EA/DETAILVIEW_SET\",\n EA_GRID_CURRENTROW: \"EA/GRID_CURRENTROW\",\n EA_FIELD_SET: \"EA/FIELD_SET\",\n EA_AUDITLOG_UPDATE: \"EA/AUDITLOG_UPDATE\",\n EA_AUDITLOG_CLEAR: \"EA/AUDITLOG_CLEAR\",\n EA_AUDITLOG_INSERT: \"EA/AUDITLOG_INSERT\",\n EA_AUDITLOG_DEL: \"EA/AUDITLOG_DEL\",\n EA_TABINDEX_SET: \"EA/TABINDEX_SET\",\n FORM_DEFAULTS_SET: \"form/DEFAULTS_SET\",\n FORM_EDITMODE_SET: \"form/EDITMODE_SET\",\n\n GLOBALEVENTS_SERVER: \"GLOBALEVENTS/SERVER\",\n\n OFFLINE_SYNC_REQUEST: \"offline/SYNC_REQUEST\",\n OFFLINE_SYNC_STARTED: \"offline/SYNC_STARTED\",\n OFFLINE_SYNC_DONE: \"offline/SYNC_DONE\",\n OFFLINE_SYNC_UPDATE: \"offline/SYNC_UPDATE\",\n OFFLINEITEM_SYNC_STATUS: \"offlineItem/STATUS\",\n OFFLINEITEM_REMOVE: \"offlineItem/REMOVE\",\n OFFLINEITEM_DEPSMAP_REQUEST: \"offlineItem/DEPSMAP_REQUEST\",\n OFFLINEITEM_DEPSMAP_RESULT: \"offlineItem/DEPSMAP_RESULT\",\n // EVENT_REFRESH_TASKS: \"EVENT/REFRESH_TASKS\" source: client/server, lastUpdateDate:xxx\n\n SW_INIT: \"sw/INIT\",\n SW_UPDATE: \"sw/UPDATE\",\n\n NOTIFICATION_TOAST: \"notification/TOAST\",\n NOTIFICATION_UPSERT: \"notification/UPSERT\",\n NOTIFICATION_DEL: \"notification/DEL\",\n NOTIFICATION_CLEAR: \"notification/CLEAR\",\n NOTIFICATION_STATUS: \"notification/STATUS\",\n\n COMMANDACTION_REQUEST: \"commandAction/REQUEST\",\n COMMANDACTION_QUEUE_ADD: \"commandAction/QUEUE_ADD\",\n COMMANDACTION_QUEUE_REMOVE: \"commandAction/QUEUE_REMOVE\",\n COMMANDACTION_QUEUE_START: \"commandAction/QUEUE_START\",\n COMMANDACTION_QUEUE_PAUSE: \"commandAction/QUEUE_PAUSE\",\n COMMANDACTION_ABORT: \"commandAction/ABORT\",\n COMMANDACTION_REMOVE: \"commandAction/REMOVE\",\n COMMANDACTION_LOG: \"commandAction/LOG\",\n COMMANDACTION_STATUS: \"commandAction/STATUS\",\n COMMANDACTION_ITEM_STATUS: \"commandAction/ITEM_STATUS\",\n\n PERSIST_PURGE: \"persist/PURGE\",\n};\nexport default actions;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"row\":\"RowResult_row__XIpu8\",\"multi\":\"RowResult_multi__VKNpr\",\"ext\":\"RowResult_ext__2okQw\",\"thumbnail\":\"RowResult_thumbnail__2-QGf\",\"icon\":\"RowResult_icon__2tf7E\",\"active\":\"RowResult_active__kpxqP\",\"hovered\":\"RowResult_hovered__1Iq4t\",\"below\":\"RowResult_below__2auZK\",\"name\":\"RowResult_name__21RYa\",\"attrs\":\"RowResult_attrs__2Tbfn\",\"checkbox\":\"RowResult_checkbox__3VzO7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"Activity_container__uejwU\",\"table\":\"Activity_table__1XxiZ\",\"tbody\":\"Activity_tbody__nfvxC\",\"text\":\"Activity_text__5hnjX\",\"row\":\"Activity_row__3T3BS\",\"header\":\"Activity_header__3IuAV\",\"avatar\":\"Activity_avatar__26j0D\",\"what\":\"Activity_what__1n8dn\",\"actions\":\"Activity_actions__1y-L9\",\"version\":\"Activity_version__2UEbe\",\"article\":\"Activity_article__2O__4\",\"icon\":\"Activity_icon__3HvXO\",\"retention\":\"Activity_retention__3Jg-L\"};","import React, { type Node, useEffect } from \"react\";\nimport { usePersistSetting } from \"hooks\";\nimport Icons from \"@hs/icons\";\nimport Collapse from \"react-bootstrap/lib/Collapse\";\nimport styles from \"./Divider.module.css\";\nimport { getClassNames } from \"data/utils\";\n\ntype Props = {\n /** optional CSS classname to apply */\n className?: string,\n /** caption to show on top left */\n header: string | Node,\n /** setting name (for persistance) */\n name?: string,\n /** whether to hide HorizontalRow */\n hideHR?: boolean,\n /** whether per default it should be expanded */\n defaultExpanded?: boolean,\n /** prop to control expanded state */\n expanded?: boolean,\n /** for Collapse: whether per default child component unmounts on exit */\n unmountOnExit?: boolean,\n /** for Collapse: whether component is mounted on enter */\n mountOnEnter?: boolean,\n};\n\nconst Divider = ({\n className,\n header,\n name,\n hideHR,\n defaultExpanded,\n children,\n expanded: expandedFromProps,\n dataTest,\n unmountOnExit = true,\n mountOnEnter = false,\n}: Props) => {\n const [expanded, setExpanded] = usePersistSetting({\n name: name || \"NA\",\n defaultValue: defaultExpanded != null ? defaultExpanded : true,\n });\n useEffect(() => {\n setExpanded(expandedFromProps);\n }, [setExpanded, expandedFromProps]);\n return (\n <>\n {\n name && setExpanded(!expanded);\n }}\n className={getClassNames(styles.main, className)}\n aria-expanded={expanded}\n >\n {children ? (\n \n \n <>{header}\n \n ) : (\n <>{header}\n )}\n {hideHR !== true &&
}\n \n {children && (\n \n {children}\n \n )}\n \n );\n};\nDivider.displayName = \"Divider\";\nexport default Divider;\n","// https://github.com/ReactTraining/react-router/blob/master/FAQ.md#how-do-i-access-the-history-object-outside-of-components\nimport { createBrowserHistory } from \"history\";\nimport { get } from \"data/constants\";\n\nexport default createBrowserHistory({\n basename: get(window.CONFIG, [\"host\", \"basename\"], \"\"),\n});\n","// @flow\nimport loc from \"i18next\";\nimport {\n DocListFilterOperators,\n type DocListFilterOperatorsEnum,\n SystemWebDavName,\n} from \"data/types\";\nimport { userId, userName } from \"data/storeHelper\";\n// import template from \"lodash/template\";\n\n/**\n * checks if value is included in list (case-insensitive)\n *\n * @param {string} value to search for in list\n * @param {Array} list of string to search\n */\nexport const isListed = (value: string, list: Array): boolean =>\n list.some((l) => l.toLowerCase() === value.toLowerCase());\n\n/** returns file extension (with .)\n * @param {string} fileName the filename (without path)\n */\nexport const getFileExtension = (fileName: string): string =>\n fileName.slice(((fileName.lastIndexOf(\".\") - 1) >>> 0) + 1);\n\n/**\n * will replace the file extension in filename with newExt\n *\n * @param {string} filename the filename (without path) to fix\n * @param {string} newExt new file extension to assign (without .)\n * @returns {string} filename with the new extension\n * @memberof Upload\n */\nexport const replaceFileExtension = (\n filename: ?string,\n newExt: string\n): string =>\n (filename || \"\").substr(\n 0,\n (((filename || \"\").lastIndexOf(\".\") - 1) >>> 0) + 1\n ) +\n \".\" +\n newExt;\n\n/** returns true if any of element's DOM parent has the className */\nexport const hasSomeParentTheClass = (\n element: any,\n className: string\n): boolean => {\n // If the current node has the class return true, otherwise we will search\n // it in the parent node\n if (\n String(element?.getAttribute?.(\"class\") ?? \"\")\n .split(\" \")\n .indexOf(className) >= 0\n )\n return true;\n // If we are here we didn't find the searched class in any parents node\n if (!element?.parentNode) return false;\n return hasSomeParentTheClass(element.parentNode, className);\n};\n\n/**\n * will check if text starts with $ signaling our own internal i18next localization id\n * @param {string} text freetext or $loc.id\n * @returns {string} localized text\n */\nexport const getLocalizedText = (text: ?string, context?: any): ?string => {\n if (text && text.startsWith(\"$\")) {\n return loc.t(text.substr(1), context);\n }\n return text;\n};\n\nexport /**\n * @returns {boolean} true if itemUri starts with pam-item://\n * @param {string} itemUri to validate\n */\nconst isValidItemUri = (itemUri: string = \"\") =>\n itemUri.startsWith(\"pam-item://\");\n\nexport /**\n * simple js string templates\n * https://gist.github.com/pbroschwitz/3891293\n * @param {string} input source string including reference variables enclosed in single {}\n * @param {Object} data object defining the variables\n * @param {boolean} parseUserId whether to replace {user.Id} with current user's id\n * @param {boolean} parseUserName whether to replace {user.Name} with current user's name\n * @returns result after replacing tokens\n */\nconst tokenize = (\n input: string,\n data: Object,\n parseUserId = true,\n parseUserName = true\n) => {\n let tokenized = input;\n\n if (parseUserId) {\n tokenized = tokenized.replace(\"{user.Id}\", userId());\n }\n if (parseUserName) {\n tokenized = tokenized.replace(\"{user.Name}\", userName());\n }\n\n if (data) {\n tokenized = tokenized.replaceAll(\n /(?:([^?&=#]+)=)?{([^{}]*)}/g,\n (original, prop, key) => {\n const prefix = prop != null ? `${prop}=` : \"\";\n const joinWith = prop != null ? `&${prop}=` : \", \";\n switch (typeof data[key]) {\n case \"object\":\n return Array.isArray(data[key])\n ? `${prefix}${data[key].join(joinWith)}`\n : original;\n case \"string\":\n case \"number\":\n return `${prefix}${data[key]}`;\n default:\n return original;\n }\n }\n );\n }\n\n return tokenized;\n};\n\n// export /**\n// * js string templating\n// * @note although lodash.template is very powerful, there is no way to disable javascript execution - to avoid XSS cross script attacks!\n// * @param {string} input source string including reference variables\n// * @param {Object} data object defining the variables\n// * @returns compiled template result\n// */\n// const interpolate = (input: string, data: Object) => {\n// // https://lodash.com/docs/4.17.15#template\n// const compiled = template(input, {\n// evaluate: null,\n// imports: null,\n// escape: /{-([\\s\\S]+?)}/g,\n// interpolate: /{([\\s\\S]+?)}/g\n// });\n// return compiled(data);\n// };\n\nexport /**\n * map an object by changing it's values\n * @note although lodash.mapValues exists, it's 26KB big!\n * @param {Object} o input object\n * @param {(value: any) => any} f value transformation callback function\n * @returns {Object} transformed object with the same keys\n */\nconst mapValues = (o: Object, f: (value: any) => any) =>\n Object.entries(o).reduce((a, [key, value]) => {\n a[key] = Array.isArray(value)\n ? value.map((v) => f(v?.K ?? v?.V ?? v))\n : f(value?.K ?? value?.V ?? value);\n return a;\n }, {});\n\nexport /**\n * Moves an item in an array to a new position\n * @returns {Array} cloned array with updated item's position\n */\nconst moveArrayItem = (arr: Array, from: number, to: number) => {\n const clone = [...arr];\n Array.prototype.splice.call(\n clone,\n to,\n 0,\n Array.prototype.splice.call(clone, from, 1)[0]\n );\n return clone;\n};\n\nexport /** checks if browser support Caching */\nconst hasCacheSupport = () => \"caches\" in window;\n\nexport /** executes fn() and logs performance statistics */\nconst performanceTester = async (\n fn: () => Promise,\n log: (ms: number) => void\n): any | null => {\n /* istanbul ignore if */\n if (typeof fn !== \"function\")\n throw new Error(\"performanceTester function not defined!\");\n const t0 = performance.now();\n const result = await fn();\n log(performance.now() - t0);\n return result;\n};\n\n// export const calcSha256 = async (message) => {\n// // encode as UTF-8\n// const msgBuffer = new TextEncoder().encode(message);\n\n// // hash the message\n// const hashBuffer = await crypto.subtle.digest(\"SHA-256\", msgBuffer);\n\n// // convert ArrayBuffer to Array\n// const hashArray = Array.from(new Uint8Array(hashBuffer));\n\n// // convert bytes to hex string\n// const hashHex = hashArray\n// .map((b) => (\"00\" + b.toString(16)).slice(-2))\n// .join(\"\");\n// return hashHex;\n// };\n\n// https://advancedweb.hu/how-to-use-async-functions-with-array-filter-in-javascript/\nexport const asyncFilter = async (arr, predicate) =>\n arr.reduce(\n async (memo, e) => ((await predicate(e)) ? [...(await memo), e] : memo),\n []\n );\n\n// https://advancedweb.hu/how-to-use-async-functions-with-array-some-and-every-in-javascript/\nexport const asyncEvery = async (arr, predicate) => {\n for (let e of arr) {\n if (!(await predicate(e))) return false;\n }\n return true;\n};\n\nexport /* istanbul ignore next */ const sleep = (ms) =>\n new Promise((resolve) => setTimeout(resolve, ms));\n\nexport const getClassNames = (...classNames) =>\n classNames.filter((className) => className).join(\" \");\n\nexport /* istanbul ignore next */ const closeMenuOnScroll = (e: Event) =>\n !e.target?.getAttribute?.(\"class\")?.match(/__menu-list/);\n\nexport /*istanbul ignore next */ const getValue = (value, param = \"value\") =>\n value != null && Object.prototype.hasOwnProperty.call(value, \"$type\")\n ? value[param] || value.value\n : value;\n\nexport const parseSaveDocListFilterOperators = (\n value: ?string\n): DocListFilterOperatorsEnum => {\n if (value == null) return DocListFilterOperators.None;\n return (\n Object.keys(DocListFilterOperators)\n .map((k) => ({\n key: k.toUpperCase(),\n value: DocListFilterOperators[k],\n }))\n .find((op) => op.key === value.toUpperCase())?.value ??\n DocListFilterOperators.None\n );\n};\n\nexport const maybeLocalizeBreadcrumb = ({\n bcText,\n siteType,\n delimiter = \"/\",\n}: {\n bcText: ?string,\n siteType: SiteTypeEnum,\n delimiter: string,\n}) => {\n if (bcText == null) return \"\";\n const idx = bcText.indexOf(delimiter);\n if (idx === -1) return maybeHandleSiteName(bcText);\n return `${maybeHandleSiteName(\n bcText.substr(0, idx),\n siteType\n )}${bcText.substr(idx)}`;\n};\n\nexport const maybeHandleSiteName = (text, siteType) =>\n text == null || Object.values(SystemWebDavName).some((s) => s === text)\n ? loc.t(`siteItemType.${String(siteType)}`)\n : text;\n\nexport /* istanbul ignore next */ const msToTime = (ms) => {\n if ((ms ?? 0) < 1000) return \"0s\";\n const parts = [];\n [\n [1000 * 60 * 60 * 24, \"d\"],\n [1000 * 60 * 60, \"h\"],\n [1000 * 60, \"m\"],\n [1000, \"s\"],\n ].forEach(([msInPart, label]) => {\n const msPart = Math.trunc(ms / msInPart);\n if (msPart > 0) {\n parts.push(msPart + label);\n ms -= msPart * msInPart;\n }\n });\n return parts.join(\" \");\n};\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"noexpand\":\"FolderTree_noexpand__388Tp\",\"expand\":\"FolderTree_expand__1mzmT\",\"listLeft\":\"FolderTree_listLeft__3a5E-\",\"listGroupItem\":\"FolderTree_listGroupItem__3RbNs\",\"treeCount\":\"FolderTree_treeCount__HQ7wx\",\"listGroupItemActive\":\"FolderTree_listGroupItemActive__1zjWs\",\"unfocused\":\"FolderTree_unfocused__hOH3r\",\"elementIcon\":\"FolderTree_elementIcon__3XY-Q\",\"listName\":\"FolderTree_listName__1B74y\",\"hasMore\":\"FolderTree_hasMore__37Bgu\"};","import actionTypes from \"data/actions/actionTypes\";\nimport Constants, { type ConstantsEnum } from \"data/constants\";\nimport { produce } from \"immer\";\nimport { type docsResultState, type docFilterText } from \"./types\";\n\nconst initialState: docsResultState = {\n status: Constants.NONE,\n error: undefined,\n filters: [],\n sorts: [],\n totalCount: 0,\n rowCount: 0,\n pageNum: 0,\n pageSize: 0,\n itemUri: null,\n rows: {},\n cols: [],\n filterText: null,\n};\n\nconst docsReducer = (state: docsResultState = initialState, action) => {\n switch (action.type) {\n case actionTypes.CURRENTITEM_SET:\n if (\n action.payload.name !== \"docmodal\" &&\n action.payload.name !== \"itemflows\" &&\n action.payload.itemUri !== state.itemUri\n )\n return { ...initialState };\n else return state;\n\n case actionTypes.DOCS_FILTERTEXT_SET:\n return { ...state, filterText: action.payload };\n\n case actionTypes.DOCS_FETCH_REQUEST:\n if (action.payload.itemUri !== state.itemUri) {\n return { ...initialState, ...action.payload };\n }\n return {\n ...state,\n ...action.payload,\n };\n\n case actionTypes.DOCS_FETCH_RESULT:\n switch (action.payload.status) {\n case Constants.ERROR:\n return {\n ...initialState,\n itemUri: state.itemUri,\n status: action.payload.status,\n error: action.payload.error,\n receivedAt: action.payload.receivedAt,\n };\n case Constants.OK:\n if (state.pageNum <= 0) {\n return {\n ...state,\n // req specific\n totalCount: action.payload.totalCount,\n status: action.payload.status,\n error: action.payload.error,\n receivedAt: action.payload.receivedAt,\n\n rowCount: action.payload.result.rowCount,\n ...action.payload.result,\n };\n } else {\n return {\n // kept\n cols: state.cols,\n // TODO remove filters/sorts - should be retrieved from DocLayout!\n filters: state.filters,\n sorts: state.sorts,\n itemUri: state.itemUri,\n pageSize: state.pageSize,\n totalCount: state.totalCount,\n pageNum: state.pageNum,\n // req specific\n status: action.payload.status,\n error: action.payload.error,\n receivedAt: action.payload.receivedAt,\n\n rowCount: action.payload.result.rowCount,\n rows: produce(state, (draft) => {\n if (draft.rows == null) draft.rows = {};\n\n Object.assign(\n draft.rows,\n action.payload.result.rows\n );\n }).rows,\n };\n }\n\n /* istanbul ignore next */\n default:\n return {\n ...state,\n ...action.payload,\n };\n }\n\n /* istanbul ignore next */\n case actionTypes.PERSIST_PURGE:\n return initialState;\n default:\n return state;\n }\n};\n\nexport default docsReducer;\n\nexport const docsItemUriSelector = (state: Object): string =>\n state.docs.itemUri;\nexport const docsStatusSelector = (state: Object): ConstantsEnum =>\n state.docs.status;\nexport const docsPageNumSelector = (state: Object): ConstantsEnum =>\n state.docs.pageNum;\nexport const docsErrorSelector = (state: Object) => state.docs.error;\nexport const docsColsSelector = (state: Object) => state.docs.cols;\nexport const docsRowsSelector = (state: Object) => state.docs.rows;\nexport const docsFilterTextSelector = (state: Object): docFilterText =>\n state.docs.filterText;\nexport const docsTotalCountSelector = (state: Object): number =>\n state.docs?.totalCount ?? 0;\nexport const docsFiltersSelector = (state: Object) => state.docs.filters;\nexport const docsSortsSelector = (state: Object) => state.docs.sorts;\n","var map = {\n\t\"./bg\": [\n\t\t1040,\n\t\t3\n\t],\n\t\"./bg.js\": [\n\t\t1040,\n\t\t3\n\t],\n\t\"./cs\": [\n\t\t1041,\n\t\t4\n\t],\n\t\"./cs.js\": [\n\t\t1041,\n\t\t4\n\t],\n\t\"./de\": [\n\t\t1044,\n\t\t5\n\t],\n\t\"./de-at\": [\n\t\t1042,\n\t\t6\n\t],\n\t\"./de-at.js\": [\n\t\t1042,\n\t\t6\n\t],\n\t\"./de-ch\": [\n\t\t1043,\n\t\t7\n\t],\n\t\"./de-ch.js\": [\n\t\t1043,\n\t\t7\n\t],\n\t\"./de.js\": [\n\t\t1044,\n\t\t5\n\t],\n\t\"./en-gb\": [\n\t\t1045,\n\t\t8\n\t],\n\t\"./en-gb.js\": [\n\t\t1045,\n\t\t8\n\t],\n\t\"./es\": [\n\t\t1046,\n\t\t9\n\t],\n\t\"./es.js\": [\n\t\t1046,\n\t\t9\n\t],\n\t\"./fr\": [\n\t\t1047,\n\t\t10\n\t],\n\t\"./fr.js\": [\n\t\t1047,\n\t\t10\n\t],\n\t\"./hr\": [\n\t\t1048,\n\t\t11\n\t],\n\t\"./hr.js\": [\n\t\t1048,\n\t\t11\n\t],\n\t\"./hu\": [\n\t\t1049,\n\t\t12\n\t],\n\t\"./hu.js\": [\n\t\t1049,\n\t\t12\n\t],\n\t\"./it\": [\n\t\t1050,\n\t\t13\n\t],\n\t\"./it.js\": [\n\t\t1050,\n\t\t13\n\t],\n\t\"./lt\": [\n\t\t1051,\n\t\t14\n\t],\n\t\"./lt.js\": [\n\t\t1051,\n\t\t14\n\t],\n\t\"./ru\": [\n\t\t1052,\n\t\t15\n\t],\n\t\"./ru.js\": [\n\t\t1052,\n\t\t15\n\t],\n\t\"./sk\": [\n\t\t1053,\n\t\t16\n\t],\n\t\"./sk.js\": [\n\t\t1053,\n\t\t16\n\t],\n\t\"./sl\": [\n\t\t1054,\n\t\t17\n\t],\n\t\"./sl.js\": [\n\t\t1054,\n\t\t17\n\t],\n\t\"./uk\": [\n\t\t1055,\n\t\t18\n\t],\n\t\"./uk.js\": [\n\t\t1055,\n\t\t18\n\t],\n\t\"./zh-cn\": [\n\t\t1056,\n\t\t19\n\t],\n\t\"./zh-cn.js\": [\n\t\t1056,\n\t\t19\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__.t(id, 7);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 1626;\nmodule.exports = webpackAsyncContext;","// extracted by mini-css-extract-plugin\nmodule.exports = {\"icon\":\"SearchBucket_icon__2JAIn\",\"value\":\"SearchBucket_value__brB2H\",\"margin\":\"SearchBucket_margin__3eJZx\",\"badge\":\"SearchBucket_badge__3cSnH\"};","var map = {\n\t\"./bg_BG\": [\n\t\t1057,\n\t\t20\n\t],\n\t\"./bg_BG.js\": [\n\t\t1057,\n\t\t20\n\t],\n\t\"./cs_CZ\": [\n\t\t1058,\n\t\t21\n\t],\n\t\"./cs_CZ.js\": [\n\t\t1058,\n\t\t21\n\t],\n\t\"./de_DE\": [\n\t\t1059,\n\t\t22\n\t],\n\t\"./de_DE.js\": [\n\t\t1059,\n\t\t22\n\t],\n\t\"./en_US\": [\n\t\t1060,\n\t\t23\n\t],\n\t\"./en_US.js\": [\n\t\t1060,\n\t\t23\n\t],\n\t\"./es_ES\": [\n\t\t1061,\n\t\t24\n\t],\n\t\"./es_ES.js\": [\n\t\t1061,\n\t\t24\n\t],\n\t\"./fr_FR\": [\n\t\t1062,\n\t\t25\n\t],\n\t\"./fr_FR.js\": [\n\t\t1062,\n\t\t25\n\t],\n\t\"./hr_HR\": [\n\t\t1063,\n\t\t26\n\t],\n\t\"./hr_HR.js\": [\n\t\t1063,\n\t\t26\n\t],\n\t\"./hu_HU\": [\n\t\t1064,\n\t\t27\n\t],\n\t\"./hu_HU.js\": [\n\t\t1064,\n\t\t27\n\t],\n\t\"./it_IT\": [\n\t\t1065,\n\t\t28\n\t],\n\t\"./it_IT.js\": [\n\t\t1065,\n\t\t28\n\t],\n\t\"./ru_RU\": [\n\t\t1066,\n\t\t29\n\t],\n\t\"./ru_RU.js\": [\n\t\t1066,\n\t\t29\n\t],\n\t\"./sk_SK\": [\n\t\t1067,\n\t\t30\n\t],\n\t\"./sk_SK.js\": [\n\t\t1067,\n\t\t30\n\t],\n\t\"./sl_SL\": [\n\t\t1068,\n\t\t31\n\t],\n\t\"./sl_SL.js\": [\n\t\t1068,\n\t\t31\n\t],\n\t\"./uk_UA\": [\n\t\t1069,\n\t\t32\n\t],\n\t\"./uk_UA.js\": [\n\t\t1069,\n\t\t32\n\t],\n\t\"./zh_CN\": [\n\t\t1070,\n\t\t33\n\t],\n\t\"./zh_CN.js\": [\n\t\t1070,\n\t\t33\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 1639;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./algoliaProvider.js\": [\n\t\t1681,\n\t\t86\n\t],\n\t\"./bingProvider.js\": [\n\t\t1689,\n\t\t87\n\t],\n\t\"./esriProvider.js\": [\n\t\t1682,\n\t\t88\n\t],\n\t\"./geoApiFrProvider.js\": [\n\t\t1683,\n\t\t89\n\t],\n\t\"./geocodeEarthProvider.js\": [\n\t\t1684,\n\t\t84\n\t],\n\t\"./googleProvider.js\": [\n\t\t1685,\n\t\t90\n\t],\n\t\"./hereProvider.js\": [\n\t\t1690,\n\t\t91\n\t],\n\t\"./index.js\": [\n\t\t1691,\n\t\t81\n\t],\n\t\"./locationIQProvider.js\": [\n\t\t1686,\n\t\t85\n\t],\n\t\"./mapBoxProvider.js\": [\n\t\t1688,\n\t\t92\n\t],\n\t\"./openCageProvider.js\": [\n\t\t1687,\n\t\t93\n\t],\n\t\"./openStreetMapProvider.js\": [\n\t\t1680,\n\t\t94\n\t],\n\t\"./peliasProvider.js\": [\n\t\t1679,\n\t\t95\n\t],\n\t\"./provider.js\": [\n\t\t1678,\n\t\t97\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 1650;\nmodule.exports = webpackAsyncContext;","export default \"data:image/png;base64,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\"","import { JL } from \"data/logging\";\n\n/* istanbul ignore next */ const _log = JL(\"serviceWorkerRegistration\");\n\n/* istanbul ignore next */\nconst isLocalhost = Boolean(\n window.location.hostname === \"localhost\" ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === \"[::1]\" ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport /* istanbul ignore next */ function register(config, now) {\n if (process.env.NODE_ENV === \"production\" && \"serviceWorker\" in navigator) {\n // Basename should be here instead of \".\" otherwise the serviceWorker scope is wrong so /mini/ wont work!\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(\n window.CONFIG.host.basename || \"/\" /*process.env.PUBLIC_URL*/,\n window.location.href\n );\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n const install = () => {\n // Basename should be here instead of \".\" otherwise the serviceWorker scope is wrong so /mini/ wont work!\n const swUrl = `${\n window.CONFIG.host.basename || \"\" /*process.env.PUBLIC_URL*/\n }/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n _log.info(() => \"Service-Worker is ready!\");\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n };\n\n if (now === true) install();\n else window.addEventListener(\"load\", install);\n }\n}\n\n/* istanbul ignore next */\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n _log.trace(\"after register\", registration);\n const activeWorker = registration.active;\n if (activeWorker != null) {\n if (activeWorker.state === \"activated\") {\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n } else {\n activeWorker.onstatechange = () => {\n _log.trace(() => ({\n msg: \"activeWorker.state\",\n state: activeWorker.state,\n }));\n if (activeWorker.state === \"activated\") {\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n };\n }\n }\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n _log.trace(() => ({\n msg: \"installingWorker.state\",\n state: installingWorker.state,\n }));\n if (installingWorker.state === \"installed\") {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n _log.info(\n () =>\n \"New content is available and will be used when all \" +\n \"tabs for this page are closed.\"\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n _log.info(\n () => \"Content is cached for offline use.\"\n );\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n _log.fatalException(\n \"Error during service worker registration\",\n error\n );\n if (config && config.onFailure) {\n config.onFailure(error);\n }\n });\n}\n\n/* istanbul ignore next */\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { \"Service-Worker\": \"script\" },\n })\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get(\"content-type\");\n if (\n response.status === 404 ||\n (contentType != null &&\n contentType.indexOf(\"javascript\") === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n _log.info(\n () =>\n \"No internet connection found. App is running in offline mode.\"\n );\n });\n}\n\nexport /* istanbul ignore next */ function unregister() {\n if (\"serviceWorker\" in navigator) {\n navigator.serviceWorker.ready\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n _log.fatalException(\n \"While un-registering serviceWorker\",\n error\n );\n });\n }\n}\n","import \"core-js/stable\";\nimport \"data/extensions\"; // Extension methods for vanilla js objects\nimport React from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport Loader from \"components/Loader\";\nimport bowser from \"data/bowser\";\nimport \"bootstrap-no-fonts-no-js/css/bootstrap.css\";\nimport \"bootstrap-no-fonts-no-js/css/bootstrap-theme.css\";\nimport \"./index.css\";\nimport \"@hs/clearable-input/build/ClearableInput.css\";\nimport \"@hs/close-button/build/CloseButton.css\";\nimport \"@hs/dropdown/build/Dropdown.css\";\nimport \"@hs/form-bar/build/FormBar.css\";\nimport \"@hs/grid-list/build/GridList.css\";\nimport \"@hs/search-input/build/SearchInput.css\";\nimport store, { sagaMiddleware } from \"data/store\";\nimport { Provider } from \"react-redux\";\nimport {\n serviceWorkerInitializedAction,\n serviceWorkerUpdatedAction,\n} from \"data/actions\";\nimport * as serviceWorkerRegistration from \"data/offline/serviceWorkerRegistration\";\nimport { isFeatureOn, Feature } from \"data/constants\";\nimport rootSaga from \"data/sagas/rootSaga\";\nimport \"@hs/icons/build/Icons.css\";\n\n// run the rootSaga which forks all the others\nsagaMiddleware.run(rootSaga);\n\n// import reportWebVitals from \"./reportWebVitals\";\n\n/* istanbul ignore next */\nconst Root = Loader({\n loader: () => import(\"containers/Root\" /* webpackChunkName: \"Root\" */),\n});\n\nexport function browserCheck() {\n // Browser detection\n //console.log(`Browser ${bowser.getBrowserName()} v${bowser.getBrowserVersion()}`, bowser);\n // Browser/OS mappings: https://github.com/lancedikson/bowser/blob/master/src/constants.js\n /* istanbul ignore next */\n if (\n !bowser.satisfies({\n chrome: \">41\",\n edge: \">90\",\n firefox: \">89\",\n safari: \">13\",\n opera: \">76\",\n android: \">7\",\n iOS: \">13\",\n samsung_internet: \">13\",\n blackberry: \">10\",\n electron: \">10\",\n })\n ) {\n window.alert(\n \"Sorry, your Browser or Version is unsupported - see Browser Requirements\"\n );\n window.location.assign(\n \"https://serviceportal.hs.ag/docs/inPoint.Web/docs/admin-gettingstarted.html#client\"\n );\n return false;\n }\n return true;\n}\n\n/* istanbul ignore next */\nif (browserCheck()) {\n if (isFeatureOn(Feature.offline)) {\n serviceWorkerRegistration.register({\n onSuccess: (registration) => {\n store.dispatch(\n serviceWorkerInitializedAction({ registration })\n );\n },\n onUpdate: (registration) => {\n store.dispatch(serviceWorkerUpdatedAction({ registration }));\n },\n onFailure: (error) => {\n store.dispatch(serviceWorkerInitializedAction({ error }));\n },\n });\n } else {\n serviceWorkerRegistration.unregister();\n }\n\n // If you want to start measuring performance in your app, pass a function\n // to log results (for example: reportWebVitals(console.log))\n // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\n // reportWebVitals(console.log);\n if (process.env.JEST_WORKER_ID === undefined) {\n const container = document.getElementById(\"root\");\n const root = createRoot(container);\n\n root.render(\n \n \n \n );\n\n // ReactDOM.render(\n // // \n // \n // \n // ,\n // // ,\n // document.getElementById(\"root\")\n // );\n }\n}\n","import actionTypes from \"../actions/actionTypes\";\nimport { produce } from \"immer\";\nimport {\n parseSeqId,\n isGridRowDeleted,\n} from \"components/ExtraAttributes/GridEditorControl/GridUtils\";\n\nexport const initialState = produce({}, () => ({\n detailView: {},\n defaults: {},\n isEditMode: {},\n \"ea.tab\": {},\n}));\n\nconst formReducer = (state = initialState, action) =>\n produce(state, (draft) => {\n let isNew, seqId;\n const {\n name,\n seqId: seqIdFromPayload,\n rowIndex,\n } = action.payload || {};\n switch (action.type) {\n case actionTypes.EA_AUDITLOG_UPDATE:\n /* istanbul ignore else */\n if (draft[name] == null)\n draft[name] = {\n auditLog: {\n updatedRows: { [seqIdFromPayload]: [] },\n },\n };\n\n Object.assign(\n draft[name].auditLog.updatedRows[seqIdFromPayload],\n action.payload.values\n );\n return draft;\n\n case actionTypes.EA_AUDITLOG_DEL:\n [isNew, seqId] = parseSeqId(seqIdFromPayload);\n if (isNew) {\n draft[name]?.auditLog?.newRows?.splice(seqId, 1);\n return draft;\n }\n if (\n state[name] &&\n isGridRowDeleted(state[name].auditLog, seqId)\n ) {\n return state;\n }\n /* istanbul ignore else */\n if (draft[name] == null)\n draft[name] = {\n auditLog: { deletedIds: [] },\n };\n draft[name].auditLog.deletedIds.push(seqId);\n return draft;\n\n case actionTypes.EA_AUDITLOG_INSERT:\n /* istanbul ignore else */\n if (draft[name] == null)\n draft[name] = {\n auditLog: { newRows: [] },\n };\n\n /* istanbul ignore else */\n if (draft[name].auditLog.newRows[rowIndex] == null)\n draft[name].auditLog.newRows[rowIndex] = [];\n\n Object.assign(\n draft[name].auditLog.newRows[rowIndex],\n action.payload.values\n );\n return draft;\n\n case actionTypes.EA_AUDITLOG_CLEAR:\n [isNew, seqId] = parseSeqId(seqIdFromPayload);\n if (isNew) {\n /* istanbul ignore next */\n if (draft[name] == null)\n draft[name] = {\n auditLog: { newRows: [] },\n };\n draft[name].auditLog.newRows[seqId] = action.payload.values;\n return draft;\n }\n // Clear Updates\n if (draft[name] == null) {\n draft[name] = { auditLog: { updatedRows: {} } };\n } else if (draft[name].auditLog.updatedRows == null) {\n draft[name].auditLog.updatedRows = {};\n } else {\n delete draft[name].auditLog.updatedRows[seqIdFromPayload];\n }\n\n // Clear Deletes\n if (\n state[name] &&\n isGridRowDeleted(state[name].auditLog, seqId)\n ) {\n draft[name].auditLog.deletedIds.splice(\n state[name].auditLog.deletedIds.indexOf(seqId),\n 1\n );\n }\n return draft;\n\n case actionTypes.EA_GRID_CURRENTROW:\n /* istanbul ignore else */\n if (draft[name] == null) draft[name] = {};\n draft[name].rowIndex = rowIndex;\n draft[name].seqId = seqIdFromPayload;\n return draft;\n\n case actionTypes.EA_DETAILVIEW_SET:\n if (action.payload == null) {\n draft.detailView = {};\n return draft;\n } else {\n /* istanbul ignore else */\n if (draft.detailView == null) draft.detailView = {};\n Object.assign(draft.detailView, action.payload);\n return draft;\n }\n\n case actionTypes.EA_FIELD_SET:\n if (action.payload == null) {\n return;\n } else {\n draft.lastChange = action.payload;\n return draft;\n }\n\n case actionTypes.EA_TABINDEX_SET:\n /* istanbul ignore else */\n if (draft[\"ea.tab\"] == null) draft[\"ea.tab\"] = {};\n /* istanbul ignore else */\n if (draft[\"ea.tab\"][action.payload.itemUri] == null)\n draft[\"ea.tab\"][action.payload.itemUri] = {};\n /* istanbul ignore else */\n if (draft[\"ea.tab\"][action.payload.itemUri][name] == null)\n draft[\"ea.tab\"][action.payload.itemUri][name] = {};\n\n draft[\"ea.tab\"][action.payload.itemUri][name].tabIndex =\n action.payload.tabIndex;\n return draft;\n\n case actionTypes.EA_CLEAR:\n // make sure not to clear the default form values (set by containers/DefaultValuesHandler)\n const { defaults, isEditMode, \"ea.tab\": eaTab } = draft;\n draft = { ...initialState };\n draft.defaults = defaults;\n draft.isEditMode = isEditMode;\n draft[\"ea.tab\"] = eaTab;\n return draft;\n\n case actionTypes.FORM_DEFAULTS_SET:\n draft = { ...initialState };\n draft.defaults = action.payload.defaults;\n return draft;\n\n case actionTypes.FORM_EDITMODE_SET:\n // if (state.current && state.current.name)\n draft = {\n ...initialState,\n isEditMode: {},\n \"ea.tab\": state[\"ea.tab\"],\n };\n // HACK tricky to get called to pass in viewName, so we set everything here\n if (name === \"doc\") {\n draft.isEditMode.docmodal = action.payload.isEditMode;\n draft.isEditMode.document = action.payload.isEditMode;\n } else {\n /* istanbul ignore else */ if (name === \"folder\") {\n draft.isEditMode.folder = action.payload.isEditMode;\n } else alert(\"Unknown form named \" + name);\n }\n return draft;\n\n /* istanbul ignore next */\n case actionTypes.PERSIST_PURGE:\n return initialState;\n default:\n return;\n }\n });\n\nexport default formReducer;\n\nexport const formDetailViewSelector = (state: Object) => state.form.detailView;\nexport const formLastChangeSelector = (state: Object) => state.form.lastChange;\nexport const formAuditLogSelector = (state: Object, name: string) =>\n state.form?.[name]?.auditLog ?? null;\nexport const formGridRowIndexSelector = (state: Object, name: string) =>\n state.form?.[name]?.rowIndex ?? -1;\nexport const formGridRowSeqIdSelector = (state: Object, name: string) =>\n state.form?.[name]?.seqId ?? -1;\nexport const formDefaultsSelector = (state: Object) => state.form.defaults;\nexport const formIsEditModeSelector = (state: Object, name: string) =>\n state.form?.isEditMode?.[name] ?? false;\nexport const formTabIndexSelector = (\n state: Object,\n name: string,\n itemUri: string\n) => state.form?.[\"ea.tab\"]?.[itemUri]?.[name]?.tabIndex ?? -1;\n","// @flow\nimport actionTypes from \"./actionTypes\";\nimport Constants, { type ConstantsEnum } from \"data/constants\";\nimport type {\n ApiErrorResult,\n Dictionary,\n UserInfoResultDTO,\n CardItemResultDTO,\n SAYTOptionDTO,\n DocListFilterRequestDTO,\n DocListFilterOperatorsEnum,\n BreadcrumbResultDTO,\n DocListSortRequestDTO,\n TreeDTO,\n DocsResultDTO,\n DocListLayout,\n SearchRequestDTO,\n SearchResultDTO,\n ListViewModeEnum,\n ToggleItemDTO,\n SearchFormResultDTO,\n SearchFormInfoDTO,\n SearchItemDTO,\n SearchCountResultDTO,\n SearchValueTypeEnum,\n OfflineSyncStatusEnum,\n OfflineItemDTO,\n NotificationDTO,\n NotificationId,\n NotificationStatusFlagEnum,\n GUID,\n CommandActionLog,\n CommandActionStatusFlagEnum,\n} from \"data/types\";\nimport { OfflineSyncStatus } from \"data/types\";\nimport { type actionResult } from \"./types\";\nimport { docFilterText } from \"data/reducers/types\";\n\n//#region Toggles\n// called to set but not persist toggle\nexport const togglesChangeAction = (\n name: string,\n toggles: Array\n): actionResult => ({\n type: actionTypes.TOGGLES_CHANGE,\n payload: { name, toggles },\n});\n\n// called by containers/ToggleBarContainer to switch a toggle\nexport const persistTogglesAction = (\n name: string,\n toggles: Array\n): actionResult => ({\n type: actionTypes.TOGGLES_PERSIST,\n payload: { name, toggles },\n});\n\n// update toggle counters\n// counts: { name: count, name: count, ... }\n// status: { name: status, name: status, ... }\n// use status=Constants.LOADING to show spinner\nexport const togglesUpdateCounterAction = ({\n name,\n counts,\n status,\n}: {\n name: string,\n counts: Dictionary,\n status?: Dictionary,\n}): actionResult => ({\n type: actionTypes.TOGGLES_UPDATECOUNTER,\n payload: { name, counts, status },\n});\n//#endregion\n\n//#region USER\n\n// called by containers/UserContainer to load current user's info\nexport const getUserAction = (status?: ConstantsEnum): actionResult => ({\n type: actionTypes.USER_FETCH_REQUESTED,\n payload: { status: status || Constants.LOADING },\n});\n\n// called by sagas/userSaga to load current user's info\nexport const getUserResultAction = ({\n status,\n message,\n info,\n}: {\n status: ConstantsEnum,\n message?: string,\n info?: UserInfoResultDTO,\n}): actionResult => ({\n type: actionTypes.USER_FETCH_RESULT,\n payload: { status, message, ...info },\n receivedAt: Date.now(),\n});\n\nexport const setSitesAction = (sites: Array) => ({\n type: actionTypes.USER_SITES_RESULT,\n payload: { sites },\n});\n\nexport const setLoginResultAction = (payload: {\n idToken: string,\n accessToken: string,\n refreshToken?: string,\n expiresOn: number,\n expiresIn: number,\n status: ConstantsEnum,\n message?: string,\n}): actionResult => ({\n type: actionTypes.LOGIN_RESULT,\n payload,\n receivedAt: Date.now(),\n});\n\nexport const loginRefreshAction = (): actionResult => ({\n type: actionTypes.LOGIN_REFRESH,\n payload: {},\n receivedAt: Date.now(),\n});\n\nexport const loginSetRenewalAction = (): actionResult => ({\n type: actionTypes.LOGIN_SET_RENEWAL,\n payload: {},\n receivedAt: Date.now(),\n});\n\nexport const loginSignoutAction = (): actionResult => ({\n type: actionTypes.LOGIN_SIGNOUT,\n payload: {},\n});\n//#endregion\n\n//#region GlobalSearch\n\nexport const getGlobalSearchDefaultAction = (): actionResult => ({\n type: actionTypes.GLOBALDEFAULTSEARCH_FETCH_REQUEST,\n payload: {},\n});\n\nexport const globalSearchDefaultResultAction = ({\n status,\n message,\n options,\n}: {\n status: ConstantsEnum,\n message?: string,\n options: Array,\n}): actionResult => ({\n type: actionTypes.GLOBALDEFAULTSEARCH_FETCH_RESULT,\n payload: {\n status,\n message,\n options,\n },\n receivedAt: Date.now(),\n});\n\n//#endregion\n\n//#region Favorites\n\nexport const getFavoritesAction = (status?: ConstantsEnum): actionResult => ({\n type: actionTypes.FAVORITES_FETCH_REQUEST,\n payload: { status: status || Constants.LOADING },\n});\n\nexport const getFavoritesResultAction = ({\n status,\n message,\n favorites,\n}: {\n status: ConstantsEnum,\n message?: string,\n favorites: Array,\n}): actionResult => ({\n type: actionTypes.FAVORITES_FETCH_RESULT,\n payload: {\n status,\n message,\n favorites,\n },\n receivedAt: Date.now(),\n});\n\n//#endregion\n\n//#region Workflows\n\nexport const getWorkflowProviders = (): actionResult => ({\n type: actionTypes.WF_PROVIDERS_FETCH_REQUESTED,\n payload: { status: Constants.LOADING },\n});\n\nexport const getWorkflowProvidersResult = ({\n status,\n providers,\n message,\n}: {\n status: ConstantsEnum,\n providers: Array,\n message?: string,\n}): actionResult => ({\n type: actionTypes.WF_PROVIDERS_FETCH_RESULT,\n payload: { status, providers, message },\n});\n\nexport const getWorkflowCards = (status?: ConstantsEnum): actionResult => ({\n type: actionTypes.WF_FETCH_REQUESTED,\n payload: { status: status || Constants.LOADING },\n});\n\nexport const getWorkflowCardsResult = ({\n status,\n cards,\n message,\n}: {\n status: ConstantsEnum,\n cards: Array,\n message?: string,\n}): actionResult => ({\n type: actionTypes.WF_FETCH_RESULT,\n payload: {\n status,\n message,\n cards,\n },\n receivedAt: Date.now(),\n});\n//#endregion\n\n//#region Cards\n\n// called by sagas/cardsSaga to load current user's home cards\nexport const getCardsAction = (status?: ConstantsEnum): actionResult => ({\n type: actionTypes.CARDS_FETCH_REQUESTED,\n payload: { status: status || Constants.LOADING },\n});\n\nexport const getCardsByEntityAction = (\n cardTypes: Array,\n cardItemTypes: Array,\n status?: ConstantsEnum\n): actionResult => ({\n type: actionTypes.CARDS_FETCH_ENTITY_REQUESTED,\n payload: { status: status || Constants.LOADING, cardTypes, cardItemTypes },\n});\n\nexport const getCardsResultAction = ({\n status,\n cards,\n message, //optional error message\n}: {\n status: ConstantsEnum,\n cards: Array,\n message?: string,\n}): actionResult => ({\n type: actionTypes.CARDS_FETCH_RESULT,\n payload: {\n status,\n message,\n cards,\n },\n receivedAt: Date.now(),\n});\n\nexport const getCardsByEntityResultAction = ({\n status,\n cards,\n cardTypes,\n cardItemTypes,\n}: {\n status: ConstantsEnum,\n cards: Array,\n cardTypes: Array,\n cardItemTypes: Array,\n}): actionResult => ({\n type: actionTypes.CARDS_FETCH_ENTITY_RESULT,\n payload: {\n status,\n cards,\n cardTypes,\n cardItemTypes,\n },\n receivedAt: Date.now(),\n});\n\nexport const setTreeStatus = (\n status: ContantsEnum = Constants.LOADING\n): actionResult => ({\n type: actionTypes.TREE_SET_STATUS,\n payload: { status },\n});\n\nexport const getTreeAction = ({\n itemUri,\n filter,\n deep,\n all,\n}: {\n itemUri: string,\n filter: ?string,\n deep: boolean,\n all: boolean,\n}): actionResult => ({\n type: actionTypes.TREE_FETCH_REQUEST,\n payload: { itemUri, filter, deep, all, status: Constants.LOADING },\n});\n\nexport const getTreeResultAction = ({\n status,\n tree,\n error,\n}: {\n status: ConstantsEnum,\n tree: TreeDTO,\n error?: Error,\n}): actionResult => ({\n type: actionTypes.TREE_FETCH_RESULT,\n payload: {\n status,\n error,\n nodes:\n tree && Object.prototype.hasOwnProperty.call(tree, \"items\")\n ? tree.items\n : [],\n isRoot:\n tree && Object.prototype.hasOwnProperty.call(tree, \"isRoot\")\n ? tree.isRoot\n : false,\n isBrowsable:\n tree && Object.prototype.hasOwnProperty.call(tree, \"isBrowsable\")\n ? tree.isBrowsable\n : true,\n totalCount: (tree && tree.totalCount) || 0,\n },\n receivedAt: Date.now(),\n});\n\n//#endregion\n\n//#region Search\n\nexport const searchAbortAction = (): actionResult => ({\n type: actionTypes.SEARCH_ABORT,\n});\n\nexport const searchResetAction = (): actionResult => ({\n type: actionTypes.SEARCH_RESET,\n payload: {},\n});\n\nexport const getSearchFormListAction = (): actionResult => ({\n type: actionTypes.SEARCH_FORM_LIST_FETCH_REQUEST,\n payload: { status: Constants.LOADING },\n});\n\nexport const getSearchFormListResultAction = ({\n status,\n result,\n message,\n}: {\n status: ConstantsEnum,\n result: Array,\n message?: string,\n}): actionResult => ({\n type: actionTypes.SEARCH_FORM_LIST_FETCH_RESULT,\n payload: { status, result, message },\n receivedAt: Date.now(),\n});\n\nexport const setSearchFormChangesAction = (changes: Object): actionResult => ({\n type: actionTypes.SEARCH_FORM_CHANGES,\n payload: { changes },\n});\n\nexport const getSearchFormAction = ({\n id,\n model,\n}: {\n id: number,\n model: Object,\n}): actionResult => ({\n type: actionTypes.SEARCH_FORM_FETCH_REQUEST,\n payload: { id, model, status: Constants.LOADING },\n});\n\nexport const getSearchFormResultAction = ({\n status,\n result,\n message,\n}: {\n status: ConstantsEnum,\n result: SearchFormResultDTO,\n message?: string,\n}): actionResult => ({\n type: actionTypes.SEARCH_FORM_FETCH_RESULT,\n payload: { status, result, message },\n receivedAt: Date.now(),\n});\n\nexport const searchFormResetAction = (): actionResult => ({\n type: actionTypes.SEARCH_FORM_RESET,\n});\n\nexport const searchFormValidationAction = (isValid): actionResult => ({\n type: actionTypes.SEARCH_FORM_VALIDATION,\n payload: { isValid },\n});\n\nexport const setSearchItemAction = ({\n searchItem,\n}: {\n searchItem: SearchItemDTO,\n}): actionResult => ({\n type: actionTypes.SEARCH_ITEM_SAVE,\n payload: { searchItem },\n});\n\nexport const getSearchAction = ({\n searchRequest,\n}: {\n searchRequest: SearchRequestDTO,\n}): actionResult => ({\n type: actionTypes.SEARCH_FETCH_REQUEST,\n payload: { searchRequest, status: Constants.LOADING },\n});\n\nexport const getSearchResultAction = ({\n status,\n result,\n terms,\n error,\n}: {\n status: ConstantsEnum,\n result: SearchResultDTO,\n terms: Array,\n error?: ApiErrorResult,\n}): actionResult => ({\n type: actionTypes.SEARCH_FETCH_RESULT,\n payload: { status, error, result, terms },\n receivedAt: Date.now(),\n});\n\nexport const getSearchCountAction = ({\n searchRequest,\n}: {\n searchRequest: SearchRequestDTO,\n}): actionResult => ({\n type: actionTypes.SEARCH_COUNT_REQUEST,\n payload: { searchRequest, status: Constants.LOADING },\n});\n\nexport const getSearchCountResultAction = ({\n status,\n result,\n message,\n}: {\n status: ConstantsEnum,\n result: SearchCountResultDTO,\n message?: string,\n}): actionResult => ({\n type: actionTypes.SEARCH_COUNT_RESULT,\n payload: { status, message, ...result },\n receivedAt: Date.now(),\n});\n\nexport const renameSearchFavoriteAction = ({\n name,\n}: {\n name: string,\n}): actionResult => ({\n type: actionTypes.SEARCH_FAVRENAME_REQUEST,\n payload: { name },\n});\n\nexport const renameSearchFavoriteResultAction = ({\n status,\n searchRequest,\n message,\n}: {\n status: ConstantsEnum,\n searchRequest: SearchRequestDTO,\n message?: string,\n}): actionResult => ({\n type: actionTypes.SEARCH_FAVRENAME_RESULT,\n payload: { status, message, searchRequest },\n receivedAt: Date.now(),\n});\n\nexport const addSearchRecentAction = (\n searchRequest: SearchRequestDTO\n): actionResult => ({\n type: actionTypes.SEARCH_ADD_RECENT,\n payload: { searchRequest },\n});\n\n//#endregion\n\n//#region Documents\n\nexport const docThumbnailRequestAction = (itemUri: string): actionResult => ({\n type: actionTypes.DOCS_THUMBNAIL_REQUEST,\n payload: { itemUri },\n});\n\nexport const docThumbnailResultAction = ({\n itemUri,\n result,\n status,\n message,\n}: {\n itemUri: string,\n result: string,\n status: ConstantsEnum,\n message?: string,\n}): actionResult => ({\n type: actionTypes.DOCS_THUMBNAIL_RESULT,\n payload: { itemUri, result, status, message },\n});\n\nexport const setDocListViewModeAction = (\n viewMode: ListViewModeEnum\n): actionResult => ({\n type: actionTypes.SETTINGS_DOCLIST_VIEWMODE,\n payload: { viewMode },\n});\n\nexport const exportDocsToCsvAction = (): actionResult => ({\n type: actionTypes.DOCS_EXPORT_CSV,\n});\n\nexport const getDocsAction = ({\n itemUri,\n pageNum,\n sorts,\n filters,\n}: {\n itemUri: string,\n pageNum?: number,\n sorts?: Array,\n filters?: Array,\n}): actionResult => ({\n type: actionTypes.DOCS_FETCH_REQUEST,\n payload: { itemUri, pageNum, filters, sorts, status: Constants.LOADING },\n});\n\nexport const getDocsResultAction = ({\n status,\n result,\n error,\n totalCount,\n}: {\n status: ConstantsEnum,\n result: DocsResultDTO,\n error?: Error,\n totalCount?: number,\n}): actionResult => ({\n type: actionTypes.DOCS_FETCH_RESULT,\n payload: {\n status,\n error,\n result,\n totalCount,\n },\n receivedAt: Date.now(),\n});\n\n//#endregion\n\n//#region Settings\n\nexport const setSettingAction = (\n name: string,\n value: Object\n): actionResult => ({\n type: actionTypes.SETTINGS_SET,\n payload: { name, value },\n});\n\nexport const setSplitPanesAction = ({\n view,\n name,\n dimensions,\n}: {\n view: string,\n name: string,\n dimensions: Array,\n}): actionResult => ({\n type: actionTypes.SPLITPANES_SET,\n payload: { view, name, dimensions },\n});\n\nexport const persistSplitPanesAction = ({\n view,\n name,\n dimensions,\n}: {\n view: string,\n name: string,\n dimensions: Array,\n}): actionResult => ({\n type: actionTypes.SPLITPANES_PERSIST,\n payload: { view, name, dimensions },\n});\n\nexport const setSidebarMini = (mini: boolean): actionResult => ({\n type: actionTypes.SETTINGS_SIDEBAR_MINI,\n payload: { mini },\n});\n\nexport const setCurrentBreadcrumb = ({\n breadcrumb,\n isFav,\n viewName,\n}: {\n breadcrumb: BreadcrumbResultDTO,\n isFav?: boolean,\n viewName: string,\n}): actionResult => ({\n type: actionTypes.CURRENT_BREADCRUMB,\n payload: { isFav, breadcrumb, viewName },\n});\n\nexport const setCurrentItemAction = (payload: Object): actionResult => ({\n type: actionTypes.CURRENTITEM_SET,\n payload,\n});\n\nexport const backupCurrentItemAction = (): actionResult => ({\n type: actionTypes.CURRENTITEM_BAK,\n});\n\nexport const restoreCurrentItemAction = (): actionResult => ({\n type: actionTypes.CURRENTITEM_RESTORE,\n});\n\nexport const setDocsLayoutAction = (layout?: DocListLayout): actionResult => ({\n type: actionTypes.DOCS_LAYOUT_SET,\n payload: {\n status: Constants.OK,\n ...layout,\n },\n});\n\nexport const requestDocsLayoutAction = (\n itemUri: string,\n allowPreFetch?: boolean\n): actionResult => ({\n type: actionTypes.DOCS_LAYOUT_REQUEST,\n payload: { itemUri, allowPreFetch, status: Constants.LOADING },\n});\n\nexport const setDocFilterTextAction = ({\n name,\n value,\n valueType,\n operator,\n}: docFilterText): actionResult => ({\n type: actionTypes.DOCS_FILTERTEXT_SET,\n payload: { name, value, valueType, operator },\n});\n\nexport const resetDocFilters = (): actionResult => ({\n type: actionTypes.DOCS_FILTERS_RESET,\n payload: {},\n});\n\nexport const setDocFilterByRef = (\n docContextClick: {\n rowIndex: number,\n columnIndex: number,\n },\n resetValues: boolean\n): actionResult => ({\n type: actionTypes.DOCS_FILTERS_SETBYREF,\n payload: { docContextClick, resetValues },\n});\n\nexport const setDocFilterByName = ({\n name,\n valueType,\n value,\n operator,\n}: {\n name: string,\n valueType: SearchValueTypeEnum,\n value: any,\n operator?: DocListFilterOperatorsEnum,\n}): actionResult => ({\n type: actionTypes.DOCS_FILTERS_SETBYNAME,\n payload: { name, valueType, operator, value },\n});\n\n// persist=>TRUE save in long storage,\n// parise=>FALSE save only in session cache\nexport const saveCurrentItemAction = ({\n name,\n key,\n value,\n persist,\n}: {\n name: string,\n key: string,\n value: Object,\n persist: boolean,\n}): actionResult => ({\n type: actionTypes.CURRENTITEM_SAVE,\n payload: { name, key, value, persist },\n});\n\nexport const currentItemLoadedAction = (value?: Object): actionResult => ({\n type: actionTypes.CURRENTITEM_LOADED,\n payload: { status: Constants.OK, ...value },\n});\n\n//#endregion\n\n//#region Forms\n\nexport const formSetDefaultsAction = (defaults: Object): actionResult => ({\n type: actionTypes.FORM_DEFAULTS_SET,\n payload: { defaults },\n});\n\nexport const formSetEditModeAction = (\n name: string,\n isEditMode: boolean\n): actionResult => ({\n type: actionTypes.FORM_EDITMODE_SET,\n payload: { name, isEditMode },\n});\n\nexport const extraAttributesSetTabIndexAction = ({\n name,\n itemUri,\n tabIndex,\n}: {\n name: string,\n itemUri: string,\n tabIndex: number,\n}): actionResult => ({\n type: actionTypes.EA_TABINDEX_SET,\n payload: { name, itemUri, tabIndex },\n});\n\nexport const extraAttributesClearAction = (): actionResult => ({\n type: actionTypes.EA_CLEAR,\n payload: {},\n});\n\nexport const extraAttributesSetDetailViewAction = (\n values?: Object\n): actionResult => ({\n type: actionTypes.EA_DETAILVIEW_SET,\n payload: values,\n});\n\nexport const extraAttributesSetField = (\n ns: string,\n name: string,\n value: Object\n): actionResult => ({\n type: actionTypes.EA_FIELD_SET,\n payload: { ns, name, value },\n});\n\nexport const extraAttributesAuditLogUpdateRow = (\n name: string,\n seqId: string,\n values: Array\n): actionResult => ({\n type: actionTypes.EA_AUDITLOG_UPDATE,\n payload: { name, seqId: String(seqId), values },\n});\n\nexport const extraAttributesAuditLogDeleteRow = (\n name: string,\n seqId: string\n): actionResult => ({\n type: actionTypes.EA_AUDITLOG_DEL,\n payload: { name, seqId: String(seqId) },\n});\n\nexport const extraAttributesAuditLogClearRow = (\n name: string,\n seqId: string,\n values: Array\n): actionResult => ({\n type: actionTypes.EA_AUDITLOG_CLEAR,\n payload: { name, seqId: String(seqId), values },\n});\n\nexport const extraAttributesAuditLogInsertRow = (\n name: string,\n rowIndex: number,\n values: Array\n): actionResult => ({\n type: actionTypes.EA_AUDITLOG_INSERT,\n payload: { name, rowIndex, values },\n});\n\nexport const extraAttributesGridSetCurrentRow = (\n name: string,\n rowIndex: number,\n seqId: string\n): actionResult => ({\n type: actionTypes.EA_GRID_CURRENTROW,\n payload: { name, rowIndex, seqId: String(seqId) },\n});\n\n//#endregion\n\n//#region ServerSentEvents\n\nexport const serverEventAction = (evt: any): actionResult => ({\n type: actionTypes.GLOBALEVENTS_SERVER,\n payload: evt,\n receivedAt: Date.now(),\n});\n\n//#endregion\n\n//#region Offline\n\nexport /* istanbul ignore next */ const startOfflineSyncAction = (\n items?: Array\n): actionResult => ({\n type: actionTypes.OFFLINE_SYNC_REQUEST,\n payload: { items },\n receivedAt: Date.now(),\n});\n\nexport const offlineSyncStartedAction = (\n {\n status,\n message,\n }: {\n status?: OfflineSyncStatusEnum,\n message?: string,\n } = { status: OfflineSyncStatus.Syncing }\n): actionResult => ({\n type: actionTypes.OFFLINE_SYNC_STARTED,\n payload: { status, message },\n receivedAt: Date.now(),\n});\n\nexport const offlineSyncDoneAction = (\n {\n status,\n message,\n }: {\n status: OfflineSyncStatusEnum,\n message?: string,\n } = { status: OfflineSyncStatus.Synced }\n): actionResult => ({\n type: actionTypes.OFFLINE_SYNC_DONE,\n payload: { status, message },\n receivedAt: Date.now(),\n});\n\nexport /*istanbul ignore next */ const offlineSyncUpdateAction =\n (): actionResult => ({\n type: actionTypes.OFFLINE_SYNC_UPDATE,\n });\n\nexport const setOfflineItemSyncStatusAction = ({\n item,\n status,\n took,\n message,\n}: {\n item: OfflineItemStatus,\n status: OfflineSyncStatusEnum,\n took: number,\n message?: string,\n}): actionResult => ({\n type: actionTypes.OFFLINEITEM_SYNC_STATUS,\n payload: { status, item, took, message },\n receivedAt: Date.now(),\n});\n\nexport const removeOfflineItemAction = (\n item: OfflineItemStatus\n): actionResult => ({\n type: actionTypes.OFFLINEITEM_REMOVE,\n payload: { item },\n receivedAt: Date.now(),\n});\n\nexport /* istanbul ignore next */ const getOfflineItemDepsMapAction = (\n item: OfflineItemStatus\n): actionResult => ({\n type: actionTypes.OFFLINEITEM_DEPSMAP_REQUEST,\n payload: { item },\n receivedAt: Date.now(),\n});\n\nexport const setOfflineItemDepsMapAction = (\n item: OfflineItemStatus,\n depsMap: Object\n): actionResult => ({\n type: actionTypes.OFFLINEITEM_DEPSMAP_RESULT,\n payload: { item, depsMap },\n receivedAt: Date.now(),\n});\n//#endregion\n\n//#region ServiceWorker\nexport const serviceWorkerInitializedAction = ({\n registration,\n error,\n}: {\n registration?: ServiceWorkerRegistration,\n error?: Error,\n}): actionResult => ({\n type: actionTypes.SW_INIT,\n payload: { registration, error },\n receivedAt: Date.now(),\n});\n\nexport const serviceWorkerUpdatedAction = ({\n registration,\n}: {\n registration: ServiceWorkerRegistration,\n}): actionResult => ({\n type: actionTypes.SW_UPDATE,\n payload: { registration },\n receivedAt: Date.now(),\n});\n//#endregion\n\n//#region Notification\nexport const notificationUpsertAction = (\n payload: NotificationDTO\n): actionResult => ({\n type: actionTypes.NOTIFICATION_UPSERT,\n payload,\n});\n\nexport const notificationDelAction = (\n notificationId: NotificationId\n): actionResult => ({\n type: actionTypes.NOTIFICATION_DEL,\n payload: { notificationId },\n});\n\nexport const notificationStatusAction = (\n status: NotificationStatusFlagEnum,\n notificationId: NotificationId,\n replace: boolean = false\n): actionResult => ({\n type: actionTypes.NOTIFICATION_STATUS,\n payload: { notificationId, status, replace },\n});\n\nexport const notificationClearAction = (\n payload: NotificationDTO\n): actionResult => ({\n type: actionTypes.NOTIFICATION_CLEAR,\n payload,\n});\n\nexport const notificationToastAction = (\n payload: NotificationDTO\n): actionResult => ({\n type: actionTypes.NOTIFICATION_TOAST,\n payload,\n});\n//#endregion\n\n//#region CommandAction\nexport const commandActionRequestAction = (\n payload: CommandActionRequestDTO\n): actionResult => ({\n type: actionTypes.COMMANDACTION_REQUEST,\n payload: { guid: window.crypto.randomUUID(), ...payload },\n});\n\nexport const commandActionQueueAddAction = (payload): actionResult => ({\n type: actionTypes.COMMANDACTION_QUEUE_ADD,\n payload,\n});\nexport const commandActionQueueRemoveAction = (guid: GUID): actionResult => ({\n type: actionTypes.COMMANDACTION_QUEUE_REMOVE,\n payload: { guid },\n});\nexport const commandActionQueuePauseAction = (): actionResult => ({\n type: actionTypes.COMMANDACTION_QUEUE_PAUSE,\n});\nexport const commandActionQueueStartAction = (): actionResult => ({\n type: actionTypes.COMMANDACTION_QUEUE_START,\n});\n\nexport const commandActionRemoveAction = (guid: GUID): actionResult => ({\n type: actionTypes.COMMANDACTION_REMOVE,\n payload: { guid },\n});\n\nexport const commandActionAbortAction = (guid: GUID): actionResult => ({\n type: actionTypes.COMMANDACTION_ABORT,\n payload: { guid },\n});\n\nexport const commandActionLogAction = (\n guid: GUID,\n log: CommandActionLog\n): actionResult => ({\n type: actionTypes.COMMANDACTION_LOG,\n payload: { guid, log },\n});\n\nexport const commandActionStatusAction = (\n guid: GUID,\n status: CommandActionStatusFlagEnum,\n replace: boolean = false\n): actionResult => ({\n type: actionTypes.COMMANDACTION_STATUS,\n payload: { guid, status, replace },\n});\n\nexport const commandActionItemStatusAction = (\n guid: GUID,\n itemUri: string,\n status: ConstantsEnum\n): actionResult => ({\n type: actionTypes.COMMANDACTION_ITEM_STATUS,\n payload: { guid, itemUri, status },\n});\n//#endregion\n","import actionTypes from \"data/actions/actionTypes\";\nimport Constants from \"data/constants\";\n\nexport const initialState = {\n idToken: null,\n accessToken: null,\n refreshToken: null,\n status: Constants.NONE,\n expiresIn: null,\n expiresOn: null,\n};\n\nconst loginReducer = (state = initialState, action) => {\n switch (action.type) {\n case actionTypes.LOGIN_RESULT:\n return {\n ...state,\n ...action.payload,\n };\n case actionTypes.LOGIN_SIGNOUT:\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case actionTypes.PERSIST_PURGE:\n return initialState;\n default:\n return state;\n }\n};\n\nexport default loginReducer;\n\nexport const loginStatusSelector = (state: Object) => state.login.status;\nexport const loginIdTokenSelector = (state: Object) =>\n state.login.status === Constants.OK\n ? state.login.idToken\n : /* istanbul ignore next */ null;\nexport const loginAccessTokenSelector = (state: Object) =>\n state.login.status === Constants.OK\n ? state.login.accessToken\n : /* istanbul ignore next */ null;\nexport const loginRefreshTokenSelector = (state: Object) =>\n state.login.status === Constants.OK\n ? state.login.refreshToken\n : /* istanbul ignore next */ null;\nexport const loginExpiresOnSelector = (state: Object) => state.login.expiresOn;\nexport const loginExpiresInSelector = (state: Object) => state.login.expiresIn;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"SummaryAttribute_container__2SVTU\",\"wrapper\":\"SummaryAttribute_wrapper__vowL8\",\"caption\":\"SummaryAttribute_caption__xkbEO\",\"value\":\"SummaryAttribute_value__1onpP\",\"avatar\":\"SummaryAttribute_avatar__2LLNl\",\"link\":\"SummaryAttribute_link__2yzxB\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"reminder\":\"ReminderItem_reminder__2qE4d\",\"date\":\"ReminderItem_date__kKrtv\",\"actions\":\"ReminderItem_actions__hX4vX\",\"avatar\":\"ReminderItem_avatar__SFNdD\",\"reason\":\"ReminderItem_reason__1Vn30\",\"icon\":\"ReminderItem_icon__1nG6x\",\"customAction\":\"ReminderItem_customAction__3j_0d\",\"readonly\":\"ReminderItem_readonly__2Dy5i\",\"error\":\"ReminderItem_error__3O7NC\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"checkbox\":\"CellContent_checkbox__152-h\",\"desktop\":\"CellContent_desktop__2ulOb\",\"link\":\"CellContent_link__2nsPt\",\"icons\":\"CellContent_icons__1tAYs\",\"boolean\":\"CellContent_boolean__3cO2X\",\"number\":\"CellContent_number__2HsSU\",\"icon\":\"CellContent_icon__1L8G3\",\"mobile\":\"CellContent_mobile__24RA3\"};","import store from \"data/store\";\r\nimport { isMiniView, isFeatureOn, type FeatureEnum } from \"data/constants\";\r\nimport { isValidItemUri } from \"data/utils\";\r\nimport bowser from \"data/bowser\";\r\nimport * as s from \"data/reducers/selectors\";\r\nimport {\r\n ItemStatuses,\r\n UploadProvider,\r\n SpecialFoldersItemURIs,\r\n SiteType,\r\n SearchItemType,\r\n type ItemActionConfigBase,\r\n} from \"data/types\";\r\nimport { get } from \"data/constants\";\r\n\r\n/**\r\n * Apply any selection context (itemUri, formatId and isDoc) to existing callback (check_*) function\r\n *\r\n * @param {Function} cb check_* function to apply any selection context to\r\n */\r\nexport const applyAnySelectionContext =\r\n (cb: Function): Function =>\r\n (args: any): boolean => {\r\n const { contextProps } = args;\r\n return check_isMultiSelection(args)\r\n ? contextProps?.items.every((item) =>\r\n cb({\r\n ...args,\r\n ...item,\r\n contextProps: { ...args.contextProps, ...item },\r\n })\r\n )\r\n : cb(args);\r\n };\r\n\r\nexport const check_isFavorite = ({\r\n itemUri,\r\n contextProps,\r\n}: {\r\n itemUri: string,\r\n}) =>\r\n s.favoritesFavoritesSelector(store.getState()).includes(itemUri) ||\r\n contextProps?.isFav === true ||\r\n check_hasSearchType({ contextProps, params: SearchItemType.Favorite });\r\n\r\nexport const check_isDoc = ({ contextProps: { isDoc = false } }) =>\r\n isDoc === true;\r\n\r\nexport const check_isSpecialFolder = ({ itemUri }) =>\r\n Object.values(SpecialFoldersItemURIs).includes(itemUri);\r\n\r\nexport const check_isAdmin = () => s.userIsAdminSelector(store.getState());\r\n\r\nexport const check_isValidItemUri = ({ itemUri }) => isValidItemUri(itemUri);\r\n\r\nexport const check_isOnline = () => s.isOnlineSelector(store.getState());\r\n\r\nexport const check_isWindows = () => bowser.is(\"windows\");\r\n\r\nexport const check_isMiniView = () => isMiniView(window.location);\r\n\r\nexport const check_hasSiteType = ({ contextProps, params }) => {\r\n const siteType = SiteType[params];\r\n if (siteType == null) {\r\n console.warn(`Unknown SiteType: ${params}`);\r\n }\r\n return (\r\n siteType ===\r\n ((contextProps && contextProps.siteType) || SiteType.NotSet)\r\n );\r\n};\r\n\r\n/** returns a property from the contextProps (boolean) */\r\nexport const check_hasContext = ({ contextProps, params }) =>\r\n get(contextProps, params.split(\".\"), false);\r\n\r\nexport const check_licenseAllowEdit = () => window.CONFIG.licenseAllowEdit;\r\n\r\nexport const check_isSyncForced = () =>\r\n window.CONFIG.general.uploadProvider === UploadProvider.Sync;\r\n\r\nexport const check_isSyncUpload = (props) =>\r\n check_isWindows() &&\r\n check_isSyncForced() &&\r\n check_hasContext({\r\n ...props,\r\n params: \"inPointSyncIntegration\",\r\n });\r\n\r\nexport const check_isWorkflowEnabled = () =>\r\n s.userIsWfEnabledSelector(store.getState());\r\n\r\nexport const check_hasItemStatus = ({\r\n contextProps: { itemStatus = ItemStatuses.Nothing },\r\n params,\r\n}) => itemStatus & ItemStatuses[params];\r\n\r\nexport const check_hasSearchType = ({\r\n contextProps: { searchRequest },\r\n params,\r\n}) => {\r\n if (!searchRequest) return false;\r\n return (\r\n searchRequest.searchType === parseInt(params, 10) &&\r\n !searchRequest.isCustom\r\n );\r\n};\r\n\r\n// whether browser supports WebShareAPI (used by CommandActions/share_web)\r\nexport const check_browser_webShareApi = () =>\r\n navigator.share !== undefined && navigator.canShare !== undefined;\r\n\r\nexport const check_hasFeature = ({ name }: { name: FeatureEnum }) =>\r\n isFeatureOn(name);\r\n\r\nexport const check_isMultiSelection = ({ contextProps: { multiple } }) =>\r\n !!multiple;\r\n\r\nexport const check_hasExtension = ({ contextProps: { ext }, params }) =>\r\n String(\r\n ext && ext.startsWith(\".\") ? ext.substring(1) : ext || \"\"\r\n ).toUpperCase() === params.toUpperCase();\r\n\r\nexport const check_isAnyPdf = ({\r\n contextProps: { hasPdf = false, isPdf = false, canPdf = false, ext = \"\" },\r\n}) =>\r\n hasPdf ||\r\n isPdf ||\r\n canPdf ||\r\n check_hasExtension({ contextProps: { ext }, params: \"pdf\" });\r\n\r\nconst checkMapping = {\r\n isOnline: check_isOnline,\r\n isAdmin: check_isAdmin,\r\n isFav: applyAnySelectionContext(check_isFavorite),\r\n isDoc: applyAnySelectionContext(check_isDoc),\r\n isFolder: applyAnySelectionContext((props) => !check_isDoc(props)),\r\n isSpecialFolder: applyAnySelectionContext(check_isSpecialFolder),\r\n isValidItemUri: applyAnySelectionContext(check_isValidItemUri),\r\n isSyncEnabled: (props) =>\r\n check_hasContext({\r\n ...props,\r\n params: \"inPointSyncIntegration\",\r\n }),\r\n isSyncForced: check_isSyncForced,\r\n isSyncUpload: check_isSyncUpload,\r\n isWindows: check_isWindows,\r\n isMiniView: check_isMiniView,\r\n hasSiteType: check_hasSiteType,\r\n hasContext: check_hasContext,\r\n hasFeature: (props) => check_hasFeature({ name: props.params }),\r\n hasBrowser_webShareApi: check_browser_webShareApi,\r\n isCreateAllowed: (props) =>\r\n check_hasContext({ ...props, params: \"isEditAllowed\" }) ||\r\n check_hasContext({ ...props, params: \"isDocAssignmentAllowed\" }),\r\n hasItemStatus: check_hasItemStatus,\r\n isRecycleBin: (props) =>\r\n check_hasItemStatus({ ...props, params: \"Deleted\" }) ||\r\n check_hasItemStatus({ ...props, params: \"AnyParentDeleted\" }),\r\n hasSearchType: check_hasSearchType,\r\n licenseAllowEdit: check_licenseAllowEdit,\r\n isWorkflowEnabled: check_isWorkflowEnabled,\r\n isAnyOnlineStatus: () => true,\r\n isAnySelection: () => true,\r\n isMultiSelection: check_isMultiSelection,\r\n hasExtension: check_hasExtension,\r\n hasRowAndColId: ({ contextProps }) =>\r\n contextProps.columnIndex != null && contextProps.rowIndex != null,\r\n isAnyPdf: check_isAnyPdf,\r\n isAnyErrorState: () => true,\r\n isError: ({ contextProps }) => contextProps.isError,\r\n};\r\n\r\nexport const shouldBeVisible = ({\r\n item,\r\n itemUri,\r\n contextProps,\r\n}: {\r\n item: ItemActionConfigBase,\r\n itemUri: string,\r\n contextProps: ?Object,\r\n}): Promise =>\r\n item.shouldBeVisible?.every((expr) => {\r\n let negate = false;\r\n const split = expr.split(\":\");\r\n let conditionName = split[0];\r\n if (conditionName.startsWith(\"!\")) {\r\n negate = true;\r\n conditionName = conditionName.substr(1);\r\n }\r\n const func = checkMapping[conditionName];\r\n if (func == null) {\r\n console.warn(\"Unknown shouldBeVisible expression: \" + expr);\r\n return false;\r\n }\r\n const result = func({ itemUri, params: split[1], contextProps });\r\n return negate ? !result : result;\r\n }) ?? true;\r\n","import React from \"react\";\nimport { toast } from \"react-toastify\";\nimport Icons from \"@hs/icons\";\nimport styles from \"./toast.module.css\";\nimport Button from \"react-bootstrap/lib/Button\";\nimport { withRouter } from \"react-router\";\nimport loc from \"i18next\";\nimport {\n settingValue,\n isOnline,\n dispatch,\n getNotification,\n} from \"data/storeHelper\";\nimport {\n NotificationType,\n ToastProps,\n ToastType,\n NotificationStyle,\n NotificationStatusFlag,\n} from \"data/types\";\nimport { notificationToastAction } from \"data/actions\";\nimport { getLocalizedText } from \"data/utils\";\nimport globalloc from \"data/i18n.global\";\n\nexport const toastPosition = toast.POSITION;\n\nexport const toastId = {\n PdfJs: \"pdfjs\",\n NetworkStatus: \"network-status\",\n NoNetwork: \"offline\",\n OfflineChanges: \"offline-changes\",\n ServiceWorker: \"sw\",\n ServiceWorkerOfflineQueue: \"swoq\",\n UppyInfo: \"uppy-info\",\n UppyRecovered: \"uppy-recovered\",\n UppySuccess: \"uppy-success\",\n};\n\nexport const toastTypes: Object = {\n refresh: {\n icon: \"arrows-rotate\",\n style: NotificationStyle.Info,\n autoClose: false,\n details: /* istanbul ignore next */ ({ handleClick }) => (\n \n {loc.t(\"globalEvents:refresh.button\")}\n \n ),\n toastId: \"refresh\",\n },\n success: {\n icon: \"check\",\n style: NotificationStyle.Success,\n },\n partial: {\n icon: \"circle-exclamation\",\n style: NotificationStyle.Warning,\n },\n failure: {\n icon: \"triangle-exclamation\",\n style: NotificationStyle.Error,\n },\n uppyComplete: {\n message: \"$upload:complete\",\n style: NotificationStyle.Success,\n toastId: toastId.UppySuccess,\n },\n uppyError: {\n style: NotificationStyle.Error,\n toastId: toastId.UppyInfo,\n },\n uppyRecovered: {\n icon: \"upload\",\n style: NotificationStyle.Info,\n toastId: toastId.UppyRecovered,\n isRouted: true,\n },\n uppyInfo: {\n icon: \"upload\",\n style: NotificationStyle.Info,\n toastId: toastId.UppyInfo,\n },\n uppyResuming: {\n message: \"$upload:resuming\",\n icon: \"upload\",\n style: NotificationStyle.Info,\n },\n pdfSignature: {\n toastId: toastId.PdfJs,\n style: NotificationStyle.Warning,\n autoClose: false,\n position: toast.POSITION.TOP_CENTER,\n },\n swReady: {\n message: globalloc.cache.done,\n toastId: toastId.ServiceWorker,\n icon: \"cloud-arrow-down\",\n style: NotificationStyle.Info,\n },\n swFailed: {\n message: globalloc.cache.failed,\n toastId: toastId.ServiceWorker,\n style: NotificationStyle.Error,\n },\n swReload: {\n message: globalloc.cache.reload,\n toastId: toastId.ServiceWorker,\n icon: \"cloud-arrow-down\",\n style: NotificationStyle.Info,\n },\n swOfflineQueueAdd: {\n toastId: toastId.ServiceWorkerOfflineQueue,\n icon: \"cloud-arrow-down\",\n style: NotificationStyle.Info,\n autoClose: true,\n message: \"$common:offline.add\",\n },\n swOfflineQueueAddFile: {\n toastId: toastId.ServiceWorkerOfflineQueue,\n icon: \"cloud-arrow-down\",\n style: NotificationStyle.Info,\n autoClose: true,\n message: \"$common:offline.addFile\",\n },\n offlinePendingChanges: {\n message: \"$common:offline.pending\",\n icon: \"hourglass-half\",\n style: NotificationStyle.Info,\n toastId: toastId.OfflineChanges,\n },\n};\n\nexport const Toast = ({\n message,\n icon,\n details,\n handleClick,\n style,\n ...rest\n}: ToastProps) => (\n
\n {icon && }\n {message}\n {typeof details === \"function\" && (\n
{details({ handleClick })}
\n )}\n
\n);\n\nexport const RoutedToast = withRouter(Toast);\n\n/**\n * will toast a message depending on @see {ToastType}\n *\n * @param {ToastType} toastType\n */\nexport const toastStyled = ({\n message,\n style,\n icon,\n status = NotificationStatusFlag.New,\n ...toast\n}: ToastType): Notification | string => {\n dispatch(\n notificationToastAction({\n notificationId: toast?.toastId,\n icon,\n message: getLocalizedText(message),\n timestamp: Date.now(),\n style,\n status,\n toast,\n })\n );\n};\n\nexport const dismissToast = (toastId: ToastId) => {\n const { toast: notification } = getNotification(toastId);\n settingValue(\"notificationType\") === NotificationType.API\n ? notification?.close?.()\n : toast.dismiss(toastId);\n};\n\n/**\n * will toast a success/failure message depending on @see {success}\n *\n * @param {boolean} success\n * @param {string} locPrefix localization name prefix (will append .success or .failure accordingly)\n * @param {any} locParams localization parameters\n */\nexport const toastActionResult = (\n success: boolean,\n locPrefix: string,\n locParams?: any,\n toastId?: string\n): void => {\n //#56010 in case of success+!isOnline there should be no toast\n if (success && !isOnline()) return;\n const message = success\n ? loc.t(locPrefix + \".success\", locParams)\n : loc.t(locPrefix + \".failure\", locParams);\n const type = toastTypes[success ? \"success\" : \"failure\"];\n toastStyled({ ...type, message, toastId });\n};\n","import actionTypes from \"../actions/actionTypes\";\nimport { SiteType } from \"data/types\";\n\nexport const initialState = {};\n\nconst breadcrumbReducer = (state = initialState, action) => {\n switch (action.type) {\n case actionTypes.CURRENT_BREADCRUMB:\n const { parts } = action.payload.breadcrumb;\n return {\n ...state,\n [action.payload.viewName]: {\n ...action.payload.breadcrumb,\n isFav: action.payload.isFav,\n //viewName: action.payload.viewName,\n itemUri:\n parts == null ||\n !Array.isArray(parts) ||\n parts.length === 0\n ? undefined\n : parts[parts.length - 1].itemUri,\n },\n };\n /* istanbul ignore next */\n case actionTypes.PERSIST_PURGE:\n return initialState;\n default:\n return state;\n }\n};\n\nexport default breadcrumbReducer;\n\nexport const breadcrumbIsFavSelector = (state: Object, name: string) =>\n (state.breadcrumb[name] && state.breadcrumb[name].isFav) || false;\nexport const breadcrumbItemUriSelector = (state: Object, name: string) =>\n state.breadcrumb[name] && state.breadcrumb[name].itemUri;\nexport const breadcrumbNameSelector = (state: Object, name: string) =>\n state.breadcrumb[name] && state.breadcrumb[name].parts\n ? state.breadcrumb[name].parts[state.breadcrumb[name].parts.length - 1]\n .text\n : \"\";\nexport const breadcrumbLevelsCountSelector = (state: Object, name: string) =>\n state.breadcrumb[name] && state.breadcrumb[name].parts\n ? state.breadcrumb[name].parts.length\n : -1;\nexport const breadcrumbVersionSelector = (state: Object, name: string) =>\n state.breadcrumb[name] && state.breadcrumb[name].version;\nexport const breadcrumbFormatIdSelector = (state: Object, name: string) =>\n state.breadcrumb[name] && state.breadcrumb[name].formatId;\nexport const breadcrumbSiteTypeSelector = (state: Object, name: string) =>\n (state.breadcrumb[name] && state.breadcrumb[name].siteType) ||\n SiteType.NotSet;\n","// @flow\nimport React from \"react\";\nimport globalloc from \"data/i18n.global\";\n\nconst Loading = ({\n isLoading,\n pastDelay,\n error,\n}: {\n isLoading: boolean,\n pastDelay: boolean,\n error: boolean,\n}) => {\n if (isLoading) {\n // While our other component is loading...\n /*if (props.timedOut) {\n // In case we've timed out loading our other component.\n return
Loader timed out!
;\n } else*/ if (\n pastDelay\n ) {\n // Display a loading screen after a set delay.\n return
{globalloc.modules.loading}
;\n } else {\n // Don't flash \"Loading...\" when we don't need to.\n return null;\n }\n } else if (error) {\n console.error(\"Loader error\", error);\n // If we aren't loading, maybe\n return
{globalloc.modules.error}
;\n } else {\n // This case shouldn't happen... but we'll return null anyways.\n return null;\n }\n};\n\nexport default Loading;\n","// @flow\nimport React from \"react\";\nimport Status from \"./index\";\nimport Constants from \"data/constants\";\n\nconst Loading = ({\n isLoading,\n pastDelay,\n error,\n}: {\n isLoading: boolean,\n pastDelay: boolean,\n error: boolean,\n}) => {\n if (!pastDelay && isLoading) return null;\n let status = error ? Constants.ERROR : Constants.LOADING;\n return ;\n};\n\nexport default Loading;\n","//@flow\nimport Loadable from \"react-loadable\";\nimport Loading from \"./Loading\";\nimport StatusLoading from \"components/Status/Loading\";\nimport { LoadingType, type LoadingTypeEnum } from \"data/types\";\n\nconst getDefaltsByLoadingType = (loadingType: LoadingTypeEnum) => {\n switch (loadingType) {\n case LoadingType.Default:\n return {\n loading: Loading,\n delay: 5000,\n timeout: 10,\n };\n case LoadingType.Status:\n return {\n loading: StatusLoading,\n delay: 0,\n timeout: 10,\n };\n /* istanbul ignore next */\n default:\n console.warn(\"Unknown LoadingType provided for Loader\");\n }\n};\n\ntype LoaderOptions = {\n loading: React.Node,\n delay: number,\n timeout: number,\n};\n\nconst Loader = (\n opts: LoaderOptions,\n loadingType: LoadingTypeEnum = LoadingType.Default\n) => Loadable(Object.assign(getDefaltsByLoadingType(loadingType), opts));\n\nexport default Loader;\n","import ApiManagerBase, { type Context } from \"./ApiManagerBase\";\nimport { ContentType, HttpMethod, OfflineQueueItemType } from \"data/types\";\nimport { JL } from \"data/logging\";\nimport { ApiNetworkOfflineError } from \"data/apiError\";\nimport { addToOfflineQueue } from \"data/offline/offlineQueue\";\nimport * as storeHelper from \"data/storeHelper\";\nimport { toastStyled, toastTypes } from \"data/toast\";\n\nconst { isOnline } = storeHelper;\nconst QueuedOfflineStatusText = \"[OFFLINE]\";\n\n/**\n * Adds Offline capabilities\n *\n * @export\n * @class ApiManagerOffline\n * @extends {ApiManagerBase}\n */\nexport default class ApiManagerOffline extends ApiManagerBase {\n constructor(args) {\n super(args);\n this._log = JL(\"ApiManagerOffline\");\n this.OnFetch = this.OnFetch.bind(this);\n this.AfterFetch = this.AfterFetch.bind(this);\n this.CheckLicense = this.CheckLicense.bind(this);\n }\n\n /**\n * Runs actual data fetch\n * @param {Context} context query context\n * @returns {Promise} current context with fetch .response\n * @memberof ApiManagerOffline\n * @virtual\n */\n async OnFetch(context: Context): Promise {\n if (false === isOnline()) {\n this._log.debug(() => ({\n msg: `${context.request.name}: OnFetch`,\n apiContext: context,\n }));\n context = await this._handleOfflineRequest(context);\n } else {\n context = await super.OnFetch(context);\n }\n return context;\n }\n\n /**\n * First response in fetch response chain\n * @param {Context} context query context\n * @returns {Promise} current context\n * @memberof ApiManager\n * @virtual\n */\n async AfterFetch(context: Context): Promise {\n context = await super.AfterFetch(context);\n\n const { response } = context;\n const addedToOfflineQueue =\n response.status === 202 &&\n response.statusText === QueuedOfflineStatusText;\n\n if (\n addedToOfflineQueue &&\n context.request.offline &&\n context.request.offline.showToast !== false\n ) {\n toastStyled(toastTypes.swOfflineQueueAdd);\n }\n return context;\n }\n\n /**\n * Logic for handling a Request while network is offline\n * Note: we handle offline requests by ourselves, since:\n * 1. workbox only checks ONE cache at a time\n * 2. workbox cannot handle PUT/POST requests (tricky with plugins)\n * 3. we handle our own offlineItems (ApiManagerOffline)\n * 4. we return custom error for non-cached methods\n * @param {Context} context\n * @returns {Promise}\n * @memberof ApiManager\n * @private\n */\n async _handleOfflineRequest(context: Context): Promise {\n // do we have request pre-cached?\n const cacheKey = this._getFullCacheKey(context);\n const match = await window.caches.match(cacheKey);\n if (match != null) {\n this._log.debug(() => ({\n msg: `${context.request.name}: OnFetch (from cache)`,\n apiContext: context,\n cacheKey,\n }));\n context.response = match;\n } else {\n // is this a Save request and the ApiMethod supports it?\n const shouldSaveOffline =\n context.request.offline &&\n context.request.offline.allowEdit &&\n [HttpMethod.POST, HttpMethod.PUT, HttpMethod.DELETE].includes(\n context.request.method\n );\n\n if (shouldSaveOffline) {\n context = await this._handleOfflineSave(context, cacheKey);\n } else if (\n typeof context.request?.offline?.storeHelper === \"string\" &&\n Object.prototype.hasOwnProperty.call(\n storeHelper,\n context.request.offline.storeHelper\n )\n ) {\n context = this._loadFromStore(context);\n } else {\n // not managed offline - throw offline error\n this._log.warn(() => ({\n msg: `${context.request.name}: OnFetch (from cache) - NOT FOUND`,\n apiContext: context,\n cacheKey,\n }));\n throw new ApiNetworkOfflineError(\"OFFLINE\", cacheKey);\n }\n }\n return context;\n }\n\n async _handleOfflineTransformer(context: Context): Promise {\n if (\n context.request.contentType !== ContentType.AUTO &&\n context.request.contentType !== ContentType.JSON\n ) {\n throw new Error(\n `ApiCatalog method ${context.request.name} error: cache.transformer can only be used on ContentType.AUTO or JSON!`\n );\n }\n\n // transform it and convert back to body\n const resultBody = JSON.stringify(\n context.request.offline.transformer(context.request.params)\n );\n\n // return this response instead\n const headers = new Headers();\n headers.append(\"Content-Type\", \"application/json\");\n context.response = new Response(resultBody, {\n status: 202, // Accepted\n statusText: QueuedOfflineStatusText,\n headers,\n });\n return context;\n }\n\n _loadFromStore = (context: Context): Context => {\n if (\n context.request.contentType !== ContentType.AUTO &&\n context.request.contentType !== ContentType.JSON\n ) {\n throw new Error(\n `ApiCatalog method ${context.request.name} error: cache.storeHelper can only be used on ContentType.AUTO or JSON!`\n );\n }\n\n // transform it and convert back to body\n const resultBody = JSON.stringify(\n storeHelper[context.request.offline.storeHelper]()\n );\n\n // return this response instead\n const headers = new Headers();\n headers.append(\"Content-Type\", \"application/json\");\n context.response = new Response(resultBody, {\n status: 202, // Accepted\n statusText: QueuedOfflineStatusText,\n headers,\n });\n return context;\n };\n\n /**\n * Logic for handling a Save Request while offline\n * @param {Context} context\n * @param {string} cacheKey\n * @returns {Promise}\n * @memberof ApiManager\n * @private\n */\n async _handleOfflineSave(\n context: Context,\n cacheKey: string\n ): Promise {\n this._log.info(() => ({\n msg: `${context.request.name}: OnFetch while offline - add to offline queue`,\n apiContext: context,\n cacheKey,\n }));\n\n await addToOfflineQueue({\n type: OfflineQueueItemType.ApiCall,\n name: context.request.name,\n params: context.request.params,\n });\n\n if (typeof context.request.offline.transformer === \"function\") {\n // #56022 Support offline save also for items not marked as offline\n // return the success body expected by the relevant apiCatalog method\n context = await this._handleOfflineTransformer(context);\n } else {\n // ...and return meaningful info e.g. \"will be saved once online...\" -> handled by AfterFetch()\n context.response = new Response(null, {\n status: 202, // Accepted\n statusText: QueuedOfflineStatusText,\n });\n }\n return context;\n }\n\n /**\n * We skip licensing check when offline\n * @param {Context} context query context\n * @returns {Promise} current context\n * @memberof ApiManagerOffline\n * @override\n */\n async CheckLicense(context: Context): Promise {\n return context;\n }\n}\n","import ApiManagerBase from \"./ApiManagerBase\";\nimport ApiManagerOffline from \"./ApiManagerOffline\";\nimport { isFeatureOn, Feature } from \"data/constants\";\n\nconst ApiManager = isFeatureOn(Feature.offline)\n ? new ApiManagerOffline()\n : new ApiManagerBase();\nexport default ApiManager;\n","// @flow\n//#region imports\nimport type {\n UserInfoResultDTO,\n CardItemResultDTO,\n TreeDTO,\n BreadcrumbResultDTO,\n FormResultDTO,\n SearchFormResultDTO,\n DocListFilterRequestDTO,\n DocListSortRequestDTO,\n DocsResultDTO,\n WorkflowDTO,\n WorkflowInfoDTO,\n WorkflowProviderDTO,\n SAYTOptionDTO,\n SearchResultDTO,\n SearchCountResultDTO,\n SearchRequestDTO,\n SearchFilterDTO,\n UserPrincipalDTO,\n GroupPrincipalDTO,\n ExtraAttributesEmbeddedGridDTO,\n SortDirectionEnum,\n ItemLinkTypeEnum,\n ActivitiesDTO,\n NewFormTypeEnum,\n LookupValuesResultDTO,\n FormLookupTypeEnum,\n NewsFeedDTO,\n SubscribeResponseDTO,\n UserSettingsResultDTO,\n SearchFormInfoDTO,\n UserSettingsDTO,\n ItemFlowsConfigDTO,\n ItemFlowDirectionEnum,\n NewItemResultDTO,\n RasterMapResultDTO,\n ReminderDTO,\n ItemContextResponseDTO,\n TransferItemRequestDTO,\n ShareAttachment,\n // SearchValueTypeEnum\n} from \"data/types\";\nimport { ItemContextsFlags } from \"data/types\";\nimport API from \"./ApiManager\";\nimport { correlationId, isOnline } from \"data/storeHelper\";\nimport qs from \"data/queryString\";\n//#endregion\n\n//#region AbortSignal\n// https://github.com/flow-typed/flow-typed/issues/1652\n// translation of https://dom.spec.whatwg.org/#abortcontroller\ndeclare interface AbortSignal extends EventTarget {\n +aborted: boolean;\n onabort: EventHandler;\n}\ndeclare class AbortController {\n +signal: AbortSignal;\n abort: () => void;\n}\n//#endregion\n\n// helper\nconst nameof = (o) => Object.keys(o)[0];\n\n//#region SiteItems\nexport const fetchSites = (): Promise> =>\n API.call(nameof({ fetchSites }));\n//#endregion\n\n//#region UserInfo\n\n// retrieves the user's info object from WebApi\nexport const fetchUser = (): Promise =>\n API.call(nameof({ fetchUser }));\n//#endregion\n//#region UserSettings\n\nexport const fetchUserSettings = (): Promise =>\n API.call(nameof({ fetchUserSettings }));\n\nexport const saveUserSettings = (params: UserSettingsDTO): Promise =>\n API.call(nameof({ saveUserSettings }), { params });\n//#endregion\n//#region Cards\n\n// retrieves the user's home cards from WebApi\n/* istanbul ignore next */\nexport const fetchCards = (\n signal?: AbortController\n): Promise> =>\n API.call(nameof({ fetchCards }), { signal });\n\nexport const fetchCardsByEntity = (\n params: CardListRequest,\n signal?: AbortController\n): Promise> =>\n API.call(nameof({ fetchCardsByEntity }), { params, signal });\n//#endregion\n//#region Favorites\n\nexport const fetchNews = (): Promise =>\n API.call(nameof({ fetchNews }));\n\nexport const fetchFavorites = (): Promise> =>\n API.call(nameof({ fetchFavorites }));\n\nexport const addFavorite = (itemUri: string, name: string): Promise =>\n API.call(nameof({ addFavorite }), { params: { itemUri, name } });\n\nexport const delFavorite = (itemUri: string): Promise =>\n API.call(nameof({ delFavorite }), { params: { itemUri } });\n\nexport const addSearchFavorite = (params: SearchRequestDTO): Promise =>\n API.call(nameof({ addSearchFavorite }), {\n params,\n });\n\nexport const delFavoriteLink = (linkId: number): Promise =>\n API.call(nameof({ delFavoriteLink }), {\n params: { linkId },\n });\n//#endregion\n//#region Mails\n\nexport /* istanbul ignore next */ const sendMail = (\n params: SendNotificationRequestDTO\n): Promise =>\n API.call(nameof({ sendMail }), {\n params,\n });\n\nexport /* istanbul ignore next */ const sendMailAttachments = (\n params: SendDocumentsRequestDTO\n): Promise =>\n API.call(nameof({ sendMailAttachments }), {\n params,\n });\n//#endregion\n//#region Folder's Tree\n\nexport /* istanbul ignore next */ const fetchTree = ({\n itemUri,\n filter = \"\",\n deep = false,\n all = false,\n signal,\n}: {\n itemUri: string,\n filter: string,\n deep: boolean,\n all: boolean,\n signal?: AbortSignal,\n}): Promise =>\n API.call(nameof({ fetchTree }), {\n params: {\n itemUri,\n filter,\n deep,\n all,\n },\n signal,\n });\n//#endregion\n//#region Folder\n\nexport const createFolder = ({\n itemUri,\n formatId,\n elementType,\n values,\n}: {\n itemUri: string,\n formatId: number,\n elementType?: number,\n values: Object,\n}): Promise =>\n API.call(nameof({ createFolder }), {\n params: {\n itemUri,\n formatId,\n elementType,\n values,\n },\n });\n\nexport const createFolderFromTemplate = (\n template: string,\n itemUri: string,\n targetFolderName: string\n) =>\n API.call(nameof({ createFolderFromTemplate }), {\n params: { template, itemUri, targetFolderName },\n });\n\nexport const createFolderTemplateGetItemUri = (jobId: number) =>\n API.call(nameof({ createFolderTemplateGetItemUri }), {\n params: { jobId },\n });\n//#endregion\n//#region ItemFlows\n\nexport const fetchItemFlows = (\n itemUri: string,\n dir: ItemFlowDirectionEnum\n): Promise =>\n API.call(nameof({ fetchItemFlows }), {\n params: {\n itemUri,\n dir,\n },\n });\n\nexport const fetchItemFlowForm = ({\n formType,\n itemUri,\n templateId,\n templateType,\n}: {\n formType: NewFormTypeEnum,\n itemUri: string,\n templateId: string,\n templateType: string,\n}): Promise =>\n API.call(nameof({ fetchItemFlowForm }), {\n params: {\n formType,\n itemUri,\n templateId,\n templateType,\n },\n });\n\n//#endregion\n//#region Breadcrumb\n\nexport const fetchBreadcrumb = (\n itemUri: string,\n signal?: AbortSignal\n): Promise =>\n API.call(nameof({ fetchBreadcrumb }), { params: { itemUri }, signal });\n//#endregion\n//#region Item\nexport const delItemUri = (itemUri: string): Promise =>\n API.call(nameof({ delItemUri }), { params: { itemUri } });\n//#endregion\n//#region Form\nexport const fetchSearchFormList = (): Promise> =>\n API.call(nameof({ fetchSearchFormList }));\n\nexport const fetchNewForm = (\n formType: NewFormTypeEnum,\n itemUri: string\n): Promise =>\n API.call(nameof({ fetchNewForm }), {\n params: { itemUri },\n });\n\nexport const fetchForm = (itemUri: string): Promise =>\n API.call(nameof({ fetchForm }), { params: { itemUri } });\n\nexport const fetchSearchForm = (\n id: number,\n values: Object\n): Promise =>\n API.call(nameof({ fetchSearchForm }), {\n params: { id, values },\n });\n\nexport const fetchFormLookup = ({\n keyword,\n pageNum,\n isDoc,\n formatId,\n name,\n lookupType,\n id,\n filters,\n values,\n itemUri,\n}: {\n keyword: string,\n pageNum: number,\n isDoc: boolean,\n formatId: number,\n name: string,\n lookupType: FormLookupTypeEnum,\n id: ?number,\n filters: Array,\n values: Object,\n itemUri: string,\n}): Promise =>\n API.call(nameof({ fetchFormLookup }), {\n params: {\n keyword,\n pageNum,\n isDoc,\n formatId,\n name,\n lookupType,\n id,\n filters,\n values,\n itemUri,\n },\n });\n\nexport const fetchFormLookupDependencies = ({\n isDoc,\n formatId,\n name,\n lookupType,\n currentLookupValues,\n itemUri,\n}: {\n isDoc: boolean,\n formatId: number,\n name: string,\n lookupType: FormLookupTypeEnum,\n currentLookupValues: Array,\n itemUri: string,\n}) =>\n API.call(nameof({ fetchFormLookupDependencies }), {\n params: {\n isDoc,\n formatId,\n name,\n lookupType,\n currentLookupValues,\n itemUri,\n },\n });\n\nexport const fetchExtraAttributesEmbeddedGrid = (\n itemUri: string,\n name: string,\n filter: string,\n pageNum: number,\n sortColumn: string,\n sortDirection: SortDirectionEnum,\n signal?: AbortController\n): Promise =>\n API.call(nameof({ fetchExtraAttributesEmbeddedGrid }), {\n params: {\n itemUri,\n name,\n filter,\n pageNum,\n sortColumn,\n sortDirection,\n },\n signal,\n });\n\nexport const saveForm = (\n itemUri: string,\n formatId: number,\n values: Object,\n etag: string\n): Promise =>\n API.call(nameof({ saveForm }), {\n params: {\n itemUri,\n formatId,\n values,\n etag,\n },\n });\n\nexport const saveNewDocFromTemplate = ({\n templateId,\n itemUri,\n values,\n}: {\n templateId: string,\n itemUri: string,\n values: Object,\n}) =>\n API.call(nameof({ saveNewDocFromTemplate }), {\n params: {\n templateId,\n itemUri,\n values,\n },\n });\n\n/**\n * Will call the server to Validate a form's values\n * @export\n * @param {boolean} isNew create or update form?\n * @param {boolean} isDoc document or folder?\n * @param {string} itemUri if create then parent's itemUri, if update then item's itemUri\n * @param {boolean} validateWebdavName validate WebdavName?\n * @param {Object} values\n * @param {AbortController} [signal] AbortController's signal for cancelling\n * @returns {Promise} validationErrors - any resource names to localize will start with $\n */\nexport const validateForm = (\n isNew: boolean,\n isDoc: boolean,\n itemUri: string,\n validateWebdavName: boolean,\n values: Object,\n signal?: AbortSignal\n): Promise =>\n API.call(nameof({ validateForm }), {\n params: {\n isNew,\n isDoc,\n itemUri,\n validateWebdavName,\n values,\n },\n signal,\n });\n\nexport const getArchiveTargets = (\n offline?: boolean\n): Promise> =>\n API.call(nameof({ getArchiveTargets }), {\n params: { offline },\n });\n\nexport const getFolderItemUri = (\n itemUri: string,\n signal?: AbortSignal\n): Promise =>\n API.call(nameof({ getFolderItemUri }), { params: { itemUri }, signal });\n//#endregion\n//#region Documents\n\nexport const fetchActivities = (\n itemUri: string\n): Promise> =>\n API.call(nameof({ fetchActivities }), {\n params: { itemUri },\n });\n\nexport /* istanbul ignore next */ const fetchItemNote = (\n itemUri: string,\n noteId: number\n): Promise =>\n API.call(nameof({ fetchItemNote }), {\n params: { itemUri, noteId },\n });\n\nexport const addItemNote = (params: ActivityDTO): Promise =>\n API.call(nameof({ addItemNote }), {\n params,\n });\n\nexport const updateItemNote = (params: ActivityDTO): Promise =>\n API.call(nameof({ updateItemNote }), {\n params,\n });\n\nexport const deleteItemNote = (itemUri: string, noteId: number): Promise =>\n API.call(nameof({ deleteItemNote }), {\n params: { itemUri, noteId },\n });\n\nexport const delDocVersion = (\n itemUri: string,\n version: number\n): Promise =>\n API.call(nameof({ delDocVersion }), {\n params: { itemUri, version },\n });\n\nexport const restoreDocVersion = (\n itemUri: string,\n version: number\n): Promise =>\n API.call(nameof({ restoreDocVersion }), {\n params: { itemUri, version },\n });\n\n/* istanbul ignore next */\nconst prepareFilters = (filters) =>\n filters?.filter((f) => f.values?.some((v) => !!v) ?? false);\n\nexport const fetchDocCount = (\n itemUri: string,\n filters?: Array,\n signal?: AbortController\n): Promise =>\n API.call(nameof({ fetchDocCount }), {\n params: {\n itemUri,\n pageNum: 0,\n filters: prepareFilters(filters),\n },\n signal,\n });\n\nexport const fetchDocsCsv = (\n itemUri: string,\n sorts?: DocListSortRequestDTO | Array,\n filters?: Array\n): Promise /* istanbul ignore next */ =>\n API.call(nameof({ fetchDocsCsv }), {\n params: {\n itemUri,\n sorts,\n filters: prepareFilters(filters),\n },\n });\n\nexport const fetchDocs = (\n itemUri: string,\n pageNum?: number,\n sorts?: DocListSortRequestDTO | Array,\n filters?: Array,\n cols?: Array,\n signal?: AbortSignal\n): Promise /* istanbul ignore next */ =>\n API.call(nameof({ fetchDocs }), {\n params: {\n itemUri,\n pageNum,\n sorts,\n filters: prepareFilters(filters),\n cols,\n },\n signal,\n });\n\n/* istanbul ignore next */\nexport const fetchDownloadToken = (\n itemUri: string\n): Promise /* istanbul ignore next */ =>\n API.call(nameof({ fetchDownloadToken }), {\n params: { itemUri },\n });\n\n/* istanbul ignore next */\nexport function downloadDocToken(\n token: string,\n inline: ?boolean,\n pdf: ?boolean,\n stream: ?boolean\n): string /* istanbul ignore next */ {\n let data = { token };\n if (isOnline()) data.correlationId = correlationId();\n if (inline === true) data.inline = true;\n if (pdf === true) data.pdf = true;\n if (stream === true) data.stream = true;\n\n // if (uri !== undefined) {\n // return `${uri}?${qs.stringify(data)}`;\n // } else {\n const host =\n window.CONFIG.host.bridge ||\n `${window.CONFIG.host.basename}${window.CONFIG.general.api}`;\n return `${host}/doc/download?${qs.stringify(data)}`;\n // }\n}\n\n/* istanbul ignore next */\nconst downloadDocUri = (\n itemUri: string,\n inline: ?boolean,\n pdf: ?boolean\n): Promise =>\n fetchDownloadToken(itemUri).then((token: string) =>\n downloadDocToken(token, inline, pdf)\n );\n\nexport { downloadDocUri };\n\nexport const fetchThumbnail = (\n itemUri: string,\n signal?: AbortSignal\n): Promise =>\n API.call(nameof({ fetchThumbnail }), {\n params: { itemUri },\n signal,\n });\n\nexport const fetchRelatedDocs = (\n itemUri: string,\n itemLinkType: ItemLinkTypeEnum,\n getSource: ?boolean\n): Promise> =>\n API.call(nameof({ fetchRelatedDocs }), {\n params: { itemUri, itemLinkType, getSource },\n });\n\n/* istanbul ignore next */\nexport const getWebDavHttpLink = (\n itemUri: string,\n webDavName: string\n): Promise =>\n API.call(nameof({ getWebDavHttpLink }), {\n params: { itemUri, webDavName },\n });\n\n/* istanbul ignore next */\nexport const getCloudInfo = (\n itemUri: string,\n webDavName: string\n): Promise> =>\n API.call(nameof({ getCloudInfo }), { params: { itemUri, webDavName } });\n\n//#endregion\n//#region (Un)lock\n\nexport const lock = (itemUri: string): Promise =>\n API.call(nameof({ lock }), {\n params: { itemUri },\n });\n\nexport const unlock = (itemUri: string): Promise =>\n API.call(nameof({ unlock }), {\n params: { itemUri },\n });\n//#endregion\n//#region (Un)subscribe\n\nexport const subscribe = (itemUri: string, name: string): Promise =>\n API.call(nameof({ subscribe }), {\n params: { itemUri, name },\n });\n\nexport const isSubscribed = (itemUri: string): Promise =>\n API.call(nameof({ isSubscribed }), {\n params: { itemUri },\n });\n\nexport const unsubscribeByItemUri = (itemUri: string): Promise =>\n API.call(nameof({ unsubscribeByItemUri }), {\n params: { itemUri },\n });\n\nexport const unsubscribeById = ({\n linkID,\n itemUri,\n}: {\n linkID: number,\n itemUri: string,\n}): Promise =>\n API.call(nameof({ unsubscribeById }), {\n params: { linkID, itemUri },\n });\n//#endregion\n//#region Workflow\nexport const fetchWorkflowProviders = (\n signal?: AbortController\n): Promise> =>\n API.call(nameof({ fetchWorkflowProviders }), {\n signal,\n });\n\nexport const fetchWorkflowCards = (\n signal?: AbortController\n): Promise> =>\n API.call(nameof({ fetchWorkflowCards }), {\n signal,\n });\n\nexport const fetchNewWorkflows = (\n itemUri: string,\n signal?: AbortSignal\n): Promise> =>\n API.call(nameof({ fetchNewWorkflows }), {\n params: { itemUri },\n signal,\n });\nexport const fetchWorkflowInfo = ({\n provider,\n wfId,\n itemUri,\n signal,\n}: {\n provider: string,\n wfId?: string,\n itemUri?: string,\n signal?: AbortSignal,\n}): Promise> =>\n API.call(nameof({ fetchWorkflowInfo }), {\n params: { provider, wfId, itemUri },\n signal,\n });\n\n//#endregion\n//#region Recycle Bin\nexport const delDefiniteItemUri = (itemUri: string): Promise =>\n API.call(nameof({ delDefiniteItemUri }), {\n params: { itemUri },\n });\n\nexport const restoreItemUri = (itemUri: string): Promise =>\n API.call(nameof({ restoreItemUri }), {\n params: { itemUri },\n });\n\n//#endregion\n//#region Raster maps\nexport const fetchRasterMapLayers = ({\n itemUri,\n rasterMapIdSelector,\n create,\n}: {\n itemUri: string,\n rasterMapIdSelector: ?string,\n create?: boolean,\n}): Promise =>\n API.call(nameof({ fetchRasterMapLayers }), {\n params: { itemUri, rasterMapIdSelector, create },\n });\n\nexport const saveRasterMapLayers = ({\n map,\n}: {\n map: RasterMapSaveRequestDTO,\n}): Promise =>\n API.call(nameof({ saveRasterMapLayers }), {\n params: map,\n });\n//#endregion\n//#region Search\n\nexport const fetchSAYT = (\n keyword: ?string,\n itemUri: ?string\n): Promise> /* istanbul ignore next */ =>\n API.call(nameof({ fetchSAYT }), {\n params: { keyword, itemUri },\n });\n\nexport const fetchSearchCount = (\n params: SearchRequestDTO,\n signal?: AbortSignal\n): Promise /* istanbul ignore next */ =>\n API.call(nameof({ fetchSearchCount }), {\n params,\n signal,\n });\n\nexport const fetchSearchResult = (\n params: SearchRequestDTO,\n signal?: AbortSignal\n): Promise /* istanbul ignore next */ =>\n API.call(nameof({ fetchSearchResult }), {\n params,\n signal,\n });\n\nexport const addSearchRecent = (\n params: SearchRequestDTO,\n signal?: AbortSignal\n): Promise /* istanbul ignore next */ =>\n API.call(nameof({ addSearchRecent }), {\n params,\n signal,\n });\n\n/* istanbul ignore next */\nexport const fetchSearchPrincipal = (\n keyword: string,\n includeUsers: boolean = true,\n includeGroups: boolean = false,\n signal?: AbortSignal\n): Promise> =>\n API.call(nameof({ fetchSearchPrincipal }), {\n params: { keyword, includeUsers, includeGroups },\n signal,\n });\n\nexport const fetchSearchSuggestion = (\n provider: string,\n filters: Array\n): Promise =>\n API.call(nameof({ fetchSearchSuggestion }), {\n params: { provider, filters },\n });\n//#endregion\n//#region Reminder\nexport const fetchReminders = (\n itemUri: string,\n signal?: AbortSignal\n): Promise> =>\n API.call(nameof({ fetchReminders }), {\n params: { itemUri },\n signal,\n });\n\nexport const upsertReminder = (\n params: ReminderDTO,\n signal?: AbortSignal\n): int =>\n API.call(nameof({ upsertReminder }), {\n params,\n signal,\n });\n\nexport const deleteReminder = (\n reminderId: number,\n itemUri: string,\n signal?: AbortSignal\n): int =>\n API.call(nameof({ deleteReminder }), {\n params: { reminderId, itemUri },\n signal,\n });\n//#endregion\n//#region Share\n\nexport const fetchShare = (\n itemUri: string,\n signal?: AbortSignal\n): Promise =>\n API.call(nameof({ fetchShare }), { params: { itemUri }, signal });\n\nexport const createShare = (\n shareRequest: ShareDTO,\n signal?: AbortSignal\n): Promise =>\n API.call(nameof({ createShare }), { params: shareRequest }, signal);\n\nexport const updateShare = (\n shareRequest: ShareDTO,\n signal?: AbortSignal\n): Promise =>\n API.call(nameof({ updateShare }), { params: shareRequest }, signal);\n\nexport const deleteShare = (\n itemUri: string,\n signal?: AbortSignal\n): Promise =>\n API.call(nameof({ deleteShare }), { params: { itemUri }, signal });\n\nexport const checkShareName = (\n itemUris: Array,\n webDavNames: Array,\n signal?: AbortSignal\n): Promise =>\n API.call(nameof({ checkShareName }), {\n params: { itemUris, webDavNames },\n signal,\n });\n\nexport const fetchShareContext = (\n itemUris: Array,\n formatIds: Array,\n signal?: AbortSignal\n): Promise =>\n API.call(nameof({ fetchShareContext }), {\n params: { itemUris, formatIds },\n signal,\n });\n\n//#endregion\n//#region Offline\n\nexport const fetchOfflineItems = (): Promise> =>\n API.call(nameof({ fetchOfflineItems }));\n\nexport const addOfflineItem = (itemUri: string): Promise =>\n API.call(nameof({ addOfflineItem }), {\n params: { itemUri },\n });\n\nexport const delOfflineItem = (itemUri: string): Promise =>\n API.call(nameof({ delOfflineItem }), {\n params: { itemUri },\n });\n\n// called directly by service-worker.custom.js\n// export const fetchOfflinePrecache = (): Promise> =>\n// API.call(nameof({ fetchOfflinePrecache }));\n//#endregion\n\n//#region transfer\nexport const transfer = (\n transferRequest: TransferItemRequestDTO\n): Promise =>\n API.call(nameof({ transfer }), { params: transferRequest });\n//#endregion\n\n//#region context\nexport const context = (\n itemUris,\n formatIds,\n /* istanbul ignore next */\n itemContexts = ItemContextsFlags.All\n): Promise =>\n API.call(nameof({ context }), {\n params: { itemUris, formatIds, itemContexts },\n });\n\nexport const fetchItemContexts = (...args) => context(...args);\n\n/* istanbul ignore next */\nexport const fetchDownloadContext = (\n itemUri: string\n): Promise =>\n context(\n [itemUri],\n null,\n ItemContextsFlags.WebDavName | ItemContextsFlags.Extension\n );\n\nexport const fetchShareAttachment = (\n itemUri: string\n): Promise =>\n context(\n [itemUri],\n null,\n ItemContextsFlags.WebDavName |\n ItemContextsFlags.Extension |\n ItemContextsFlags.Filesize\n );\n\nexport const fetchDocResultFlags = (\n itemUri: string,\n formatId: number\n): Promise =>\n context([itemUri], [formatId], ItemContextsFlags.ResultFlags);\n\nexport const fetchItemContext = (\n itemUri: string\n): Promise =>\n context([itemUri], null, ItemContextsFlags.All);\n\nexport /* istanbul ignore next */ const fetchViewNameType = (\n itemUri: string\n): Promise =>\n context([itemUri], null, ItemContextsFlags.ViewName);\n\n//#endregion\n","// @flow\r\n//#region imports\r\nimport React, { useState, useMemo, useCallback, useEffect } from \"react\";\r\nimport { usePrevious, useEffectOnce } from \"hooks\";\r\nimport TogglesHandler from \"containers/TogglesHandler\";\r\nimport { useDispatch, useSelector, type Dispatch } from \"react-redux\";\r\nimport { compose } from \"redux\";\r\nimport MainLayout from \"components/MainLayout\";\r\nimport Status from \"components/Status\";\r\nimport {\r\n RefreshMode,\r\n ServerEventItemType,\r\n ServerEventActionType,\r\n type ToggleDTO,\r\n} from \"data/types\";\r\nimport TreeFilter from \"components/TreeFilter\";\r\nimport FolderTreeContainer from \"containers/FolderTree\";\r\nimport loc from \"i18next\";\r\nimport Constants, { type ConstantsEnum } from \"data/constants\";\r\nimport DocListContainer from \"containers/DocList\";\r\nimport * as s from \"data/reducers/selectors\";\r\nimport SplitPanes from \"containers/SplitPanes\";\r\nimport GlobalEventsHandler from \"containers/GlobalEventsHandler\";\r\nimport CloseButton from \"@hs/close-button\";\r\nimport CommandActionHandler from \"components/CommandActions\";\r\nimport { LocalStoreHandler } from \"containers/LocalStore\";\r\nimport Pane from \"components/SplitPanes/Pane\";\r\nimport styles from \"./minipicker.module.css\";\r\nimport { sitesSelector } from \"data/storeHelper\";\r\nimport { getClassNames } from \"data/utils\";\r\n//#endregion\r\n\r\nexport const viewName = \"minipicker\";\r\n\r\n//#region flow types\r\ntype Props = {\r\n /** callback when closing Modal dialog */\r\n onClose?: () => void,\r\n\r\n // from TogglesHandler\r\n /** TogglesHandler: current toggles */\r\n toggles: ?ToggleDTO,\r\n\r\n /** DocList: callback on Document single click\r\n * @param {SyntheticMouseEvent} e HTML click event\r\n * @param {string} itemUri the row's itemUri\r\n * @param {number} index the row's index\r\n */\r\n onDocSingleClick?: (\r\n e: SyntheticMouseEvent,\r\n itemUri: string,\r\n index: number\r\n ) => void,\r\n /** DocList: callback on Document double click\r\n * @param {SyntheticMouseEvent} e HTML click event\r\n * @param {string} itemUri the row's itemUri\r\n * @param {number} index the row's index\r\n */\r\n onDocDoubleClick?: (\r\n e: SyntheticMouseEvent,\r\n itemUri: string,\r\n index: number\r\n ) => void,\r\n\r\n /** FolderTree callback on Folder single click */\r\n onFolderSingleClick: (itemUri: string, treeNodeId: number) => void,\r\n\r\n /** optional breadcrumbPart click event instead of history.push */\r\n onBreadcrumbPartClick?: (itemUri: string) => void,\r\n\r\n /** whether to limit breadcrumb scope */\r\n breadcrumbScopeFromLevel?: number,\r\n /** TogglesHandler: whether multiple toggles are allowed */\r\n isMultiple: boolean,\r\n /** TogglesHandler: currently selected toggles' names */\r\n selectedToggles: Array,\r\n};\r\n\r\nexport const MiniPicker = ({\r\n filterAction,\r\n toggles,\r\n onDocSingleClick,\r\n onDocDoubleClick,\r\n onFolderSingleClick,\r\n onBreadcrumbPartClick,\r\n itemUri,\r\n onClose,\r\n breadcrumbScopeFromLevel,\r\n canChangeSite = false,\r\n}: Props) => {\r\n //#region redux\r\n const dispatch: Dispatch = useDispatch();\r\n const treeStatus: ConstantsEnum = useSelector(s.treeStatusSelector);\r\n const treeIsBrowsable: boolean = useSelector(s.treeIsBrowsableSelector);\r\n const treeTotalCount: number = useSelector(s.treeTotalCountSelector);\r\n const treeAvailable = useMemo(\r\n () => treeIsBrowsable && treeTotalCount,\r\n [treeIsBrowsable, treeTotalCount]\r\n );\r\n // Note: Use default state for user specific data.\r\n const sites = useMemo(sitesSelector, []);\r\n //#endregion\r\n\r\n //#region state\r\n /** current tree name filter */\r\n const [treeFilter, setTreeFilter] = useState(\"\");\r\n /** whether tree filter should include subfolders */\r\n const [includeSubfolders, setIncludeSubfolders] = useState(false);\r\n /** whether tree is focused */\r\n const [isTreeFocused, setIsTreeFocused] = useState(false);\r\n /** the real itemUri currently selected */\r\n const [activeItemUri, setActiveItemUri] = useState(itemUri);\r\n /** folder row */\r\n const [currentFolderRow, setCurrentFolderRow] = useState(null);\r\n /** document row */\r\n const [currentDocumentRow, setCurrentDocumentRow] = useState(-1);\r\n //#endregion};\r\n\r\n //#region props\r\n const prevItemUri = usePrevious(itemUri) || itemUri;\r\n //#endregion\r\n\r\n //#region tree\r\n const handleTreeClick = useCallback(\r\n (itemUri: string, treeNodeId: number): void => {\r\n setCurrentFolderRow(treeNodeId);\r\n setActiveItemUri(itemUri);\r\n setIsTreeFocused(true);\r\n /* istanbul ignore else */\r\n if (typeof onFolderSingleClick === \"function\")\r\n onFolderSingleClick(itemUri, treeNodeId);\r\n },\r\n [onFolderSingleClick]\r\n );\r\n\r\n const handleTreeExpand = useCallback(\r\n (itemUri: string): void => {\r\n setTreeFilter(\"\");\r\n setActiveItemUri(itemUri);\r\n setCurrentFolderRow(null);\r\n setIsTreeFocused(false);\r\n /* istanbul ignore else */\r\n if (typeof onBreadcrumbPartClick === \"function\")\r\n onBreadcrumbPartClick(itemUri);\r\n },\r\n [onBreadcrumbPartClick]\r\n );\r\n\r\n const handleTreeFilterChange = useCallback(\r\n (value: ?string, includeSubfolders: boolean): void => {\r\n setTreeFilter(value || \"\");\r\n setIncludeSubfolders(includeSubfolders);\r\n setIsTreeFocused(false);\r\n },\r\n []\r\n );\r\n //#endregion\r\n\r\n //#region itemUri effect\r\n useEffect(() => {\r\n if (itemUri === prevItemUri) return;\r\n /* istanbul ignore else */\r\n if (itemUri !== activeItemUri) setActiveItemUri(itemUri);\r\n setTreeFilter(\"\");\r\n setIncludeSubfolders(false);\r\n setCurrentFolderRow(null);\r\n setCurrentDocumentRow(-1);\r\n }, [itemUri, prevItemUri, activeItemUri, dispatch]);\r\n //#endregion\r\n\r\n //#region callbacks\r\n const handleSingleClick = useCallback(\r\n (e: SyntheticMouseEvent<*>, itemUri: string, rowIndex: number) => {\r\n setCurrentDocumentRow(rowIndex);\r\n setIsTreeFocused(false);\r\n /* istanbul ignore else */\r\n if (typeof onDocSingleClick === \"function\") {\r\n onDocSingleClick(e, itemUri, rowIndex);\r\n }\r\n },\r\n [onDocSingleClick]\r\n );\r\n const handleIconClick = useCallback(\r\n (e: SyntheticMouseEvent<*>, itemUri: string, rowIndex: number) => {\r\n handleSingleClick(e, itemUri, rowIndex);\r\n e.preventDefault();\r\n CommandActionHandler(\"doc_preview\", {\r\n itemUri,\r\n newWindow: e.ctrlKey || e.altKey,\r\n });\r\n },\r\n [handleSingleClick]\r\n );\r\n //#endregion\r\n\r\n //#region mount effect\r\n // Always select first itemUri from Sites, if Picker is empty\r\n useEffectOnce(() => {\r\n if (itemUri == null) handleTreeExpand(sites?.[0]?.itemUri);\r\n });\r\n //#endregion\r\n\r\n return (\r\n }\r\n breadcrumbScopeFromLevel={breadcrumbScopeFromLevel}\r\n >\r\n \r\n {treeAvailable ? (\r\n \r\n ) : (\r\n
\r\n )}\r\n {itemUri ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n {activeItemUri ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default compose(\r\n LocalStoreHandler({ name: viewName }),\r\n TogglesHandler({ viewName }),\r\n GlobalEventsHandler({\r\n items: [ServerEventItemType.folder],\r\n actions: [ServerEventActionType.delete],\r\n refreshMode: RefreshMode.Originator,\r\n refreshMessage: \"$globalEvents:folder.delete\",\r\n refreshRoute: true,\r\n }),\r\n SplitPanes({\r\n viewName,\r\n paneIds: [\"#picker_tree\", \"#picker_doclist\"],\r\n toggleIds: [\"tree\", \"doclist\"],\r\n direction: \"horizontal\",\r\n })\r\n)(MiniPicker);\r\n","// @flow\r\nimport React, { useState, useCallback, useEffect, useMemo } from \"react\";\r\nimport Modal, { ModalSize } from \"components/Modal\";\r\nimport { createModal } from \"react-modal-promise\";\r\nimport styles from \"./PickerModal.module.css\";\r\nimport MiniPicker from \"views/minipicker\";\r\nimport Button from \"react-bootstrap/lib/Button\";\r\nimport SplitButton from \"react-bootstrap/lib/SplitButton\";\r\nimport MenuItem from \"react-bootstrap/lib/MenuItem\";\r\nimport loc from \"i18next\";\r\nimport HelpBlock from \"react-bootstrap/lib/HelpBlock\";\r\nimport { fetchBreadcrumb } from \"data/api\";\r\nimport { useModalPostMessageHandler, useAbortController } from \"hooks\";\r\nimport { sitesSelector } from \"data/storeHelper\";\r\n\r\nexport const PickerType = {\r\n Folder: 0,\r\n File: 1,\r\n Any: 2,\r\n};\r\ntype PickerTypeEnum = $Values;\r\n\r\ntype PickerActionDTO = {\r\n label: string,\r\n eventKey: string,\r\n};\r\n\r\ntype Props = {\r\n /** react-modal-promise: whether to show dialog */\r\n open: boolean,\r\n /** react-modal-promise: callback when user closes Dialog */\r\n close: () => void,\r\n /** current folder's itemUri */\r\n itemUri: string,\r\n /** type of picker\r\n * @default {PickerTypeEnum} PickerType.File\r\n */\r\n pickerType: PickerTypeEnum,\r\n /** optional help text to display the user */\r\n helpText?: string,\r\n /** optional breadcrumb scoping */\r\n scopeBreadcrumb?: boolean,\r\n /** optional selectButton string */\r\n selectButton?: string,\r\n /** callback for additional actions */\r\n onSelect: (eventKey) => void,\r\n /** additional actions */\r\n additionalActions?: Array,\r\n /** can change site */\r\n canChangeSite?: boolean,\r\n /** can select site */\r\n canSelectSite?: boolean,\r\n};\r\n\r\n/** allows user to pick a Folder or Document */\r\nexport const PickerModal = ({\r\n open,\r\n close,\r\n itemUri,\r\n pickerType,\r\n helpText,\r\n onSelect,\r\n additionalActions,\r\n scopeBreadcrumb = false,\r\n canChangeSite = false,\r\n canSelectSite = false,\r\n selectButton = loc.t(\"minipicker:selectButton\"),\r\n}: Props) => {\r\n // remember the currently shown folder itemUri\r\n const [currentRootItemUri, setCurrentRootItemUri] = useState(itemUri);\r\n // remember the currently selected itemUri (folder/doc)\r\n const [currentItemUri, setCurrentItemUri] = useState(null);\r\n const [currentRootItemUriLevels, setCurrentItemUriLevels] = useState(-1);\r\n const sites = useMemo(sitesSelector, []);\r\n\r\n /* istanbul ignore next*/\r\n useEffect(() => {\r\n canSelectSite &&\r\n scopeBreadcrumb &&\r\n console.warn(\r\n \"Site Selection disabled: Prop canSelectSite will be false, when scopeBreadcrumb is true!\"\r\n );\r\n }, [canSelectSite, scopeBreadcrumb]);\r\n\r\n const handleFolderSelect = useCallback(\r\n (itemUri, treeNodeId) =>\r\n pickerType !== PickerType.File && setCurrentItemUri(itemUri),\r\n [pickerType]\r\n );\r\n const handleDocumentSelect = useCallback(\r\n (e, itemUri, index) =>\r\n pickerType !== PickerType.Folder && setCurrentItemUri(itemUri),\r\n [pickerType]\r\n );\r\n const setRootItemUri = useCallback(\r\n (itemUri: string) => {\r\n setCurrentRootItemUri(itemUri);\r\n if (pickerType !== PickerType.File) {\r\n handleFolderSelect(\r\n canSelectSite || !sites.some((s) => s.itemUri === itemUri)\r\n ? itemUri\r\n : null\r\n );\r\n } else {\r\n setCurrentItemUri(null);\r\n }\r\n },\r\n [pickerType, handleFolderSelect, canSelectSite, sites]\r\n );\r\n /* istanbul ignore next */\r\n const handleClose = useCallback(() => {\r\n close(false);\r\n }, [close]);\r\n\r\n useModalPostMessageHandler(handleClose);\r\n\r\n const handleSelect = useCallback(() => {\r\n close(currentItemUri);\r\n }, [close, currentItemUri]);\r\n\r\n const abortController = useAbortController();\r\n useEffect(() => {\r\n async function fetchData() {\r\n if (scopeBreadcrumb) {\r\n const bc = await fetchBreadcrumb(\r\n itemUri,\r\n abortController(true).signal\r\n );\r\n setCurrentItemUriLevels(bc.parts.length - 1);\r\n }\r\n }\r\n fetchData();\r\n }, [scopeBreadcrumb, itemUri, abortController]);\r\n\r\n const disabled = currentItemUri == null || currentItemUri === itemUri;\r\n\r\n return (\r\n \r\n \r\n \r\n pickerType !== PickerType.Folder && close(itemUri)\r\n }\r\n onFolderSingleClick={handleFolderSelect}\r\n onBreadcrumbPartClick={setRootItemUri}\r\n breadcrumbScopeFromLevel={currentRootItemUriLevels}\r\n canChangeSite={!scopeBreadcrumb && canChangeSite}\r\n />\r\n \r\n \r\n {helpText && (\r\n {helpText}\r\n )}\r\n {!additionalActions?.length ? (\r\n \r\n {selectButton}\r\n \r\n ) : (\r\n {\r\n e.stopPropagation(); // HACK: prevent closing of Menu within Modal.Footer\r\n }}\r\n onClick={handleSelect}\r\n bsStyle=\"primary\"\r\n title={selectButton}\r\n className={styles.button}\r\n pullRight\r\n dropup\r\n >\r\n {additionalActions.map((action, i) => (\r\n {\r\n onSelect(action.eventKey);\r\n handleSelect();\r\n }}\r\n >\r\n {action.label}\r\n \r\n ))}\r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\nPickerModal.displayName = \"PickerModal\";\r\nPickerModal.defaultProps = {\r\n pickerType: PickerType.File,\r\n};\r\nexport const openPickerModal = createModal(PickerModal);\r\n","import { getLocalizedText } from \"data/utils\";\n\nconst ADVANCED_SEARCH_PARAMS = [\"words\", \"phrase\", \"anyWords\", \"nonWords\"];\nconst FILTER_SEARCH_PARAMS = [\n \"ItemType\",\n \"Groesse\",\n \"Dateityp\",\n \"Geaendert_am\",\n \"Geaendert_von\",\n \"Erstellt_am\",\n \"Erstellt_von\",\n];\n\nconst KNOWN_PARAMS = [...ADVANCED_SEARCH_PARAMS, ...FILTER_SEARCH_PARAMS];\n\nexport const getParamsFromSearchText = (searchText) => {\n if (!searchText || typeof searchText === \"string\") return [];\n return Object.entries(searchText)\n .map(([key, value]) => {\n if (value === null) return null;\n return `${key}=${value}`;\n })\n .filter((v) => !!v);\n};\n\nexport const getLocalizedSearchLabel = (label, params) => {\n if (label && label !== \"N/A\") return label;\n return getLocalizedText(\n params?.some((p) =>\n ADVANCED_SEARCH_PARAMS.includes(p.split(\"=\", 2)[0])\n ) ?? false\n ? \"$search:mask.searchText\"\n : \"$search:freetext.empty\"\n );\n};\n\nexport const getLocalizedParamLabel = (param) => {\n const key = param.split(\"=\", 2)[0];\n if (!KNOWN_PARAMS.includes(key)) return key;\n return ADVANCED_SEARCH_PARAMS.includes(key)\n ? getLocalizedText(`$common:filter.SearchText.${key}`)\n : getLocalizedText(`$common:filter.${key}.name`);\n};\n\nexport const getLocalizedParamTitle = (param, label) => {\n const key = param.split(\"=\", 2)[0];\n if (!KNOWN_PARAMS.includes(key)) return label;\n return ADVANCED_SEARCH_PARAMS.includes(key)\n ? getLocalizedText(`$search:searchText.${key}`)\n : label;\n};\n","import React from \"react\";\nimport sharedStyles from \"./SummaryAttribute.module.css\";\nimport styles from \"./ValueFacePile.module.css\";\nimport Badge from \"react-bootstrap/lib/Badge\";\nimport PrincipalAvatar from \"components/User/PrincipalAvatar\";\nimport CommandActionHandler from \"components/CommandActions\";\nimport loc from \"i18next\";\nimport { getClassNames } from \"data/utils\";\n\nimport { type SummaryAttributeValueFacePile } from \"data/types\";\n\nconst ValueFacePile = ({\n value,\n className,\n}: {\n value: SummaryAttributeValueFacePile,\n}) => (\n \n {value.pile.map((p, index) => (\n \n ))}\n {value.total != null && value.total > value.pile.length && (\n \n value.onMoreCommand != null &&\n CommandActionHandler(\n value.onMoreCommand.name,\n value.onMoreCommand.props\n )\n }\n >\n +{value.total - value.pile.length}\n \n )}\n \n);\nValueFacePile.displayName = \"SummaryAttributeValue.FacePile\";\nexport default ValueFacePile;\n","import React, { useMemo } from \"react\";\r\nimport sharedStyles from \"./SummaryAttribute.module.css\";\r\nimport styles from \"./ValuePrincipal.module.css\";\r\nimport Icons from \"@hs/icons\";\r\nimport PrincipalAvatar from \"components/User/PrincipalAvatar\";\r\nimport { getClassNames, getLocalizedText } from \"data/utils\";\r\n\r\nimport { type SummaryAttributeValuePrincipal } from \"data/types\";\r\n\r\nconst Principal = ({ value, Component = \"span\", ...props }) => (\r\n \r\n {value.id > -1 && (\r\n \r\n )}\r\n \r\n {value.email && (\r\n \r\n )}\r\n {value.displayName}\r\n \r\n {value.description && {value.description}}\r\n \r\n);\r\n\r\nconst ValuePrincipal = ({\r\n value,\r\n className,\r\n}: {\r\n value: SummaryAttributeValuePrincipal,\r\n className: string,\r\n}) => {\r\n const props = useMemo(\r\n () =>\r\n value.email != null\r\n ? {\r\n onClick: /* istanbul ignore next */ (e) =>\r\n e.stopPropagation(),\r\n href: `mailto:${value.email}`,\r\n rel: \"noopener external noreferrer\",\r\n target: \"_blank\",\r\n title: getLocalizedText(\"$summaryAttribute:user.email\", {\r\n name: value.displayName,\r\n }),\r\n Component: \"a\",\r\n }\r\n : {},\r\n [value.email, value.displayName]\r\n );\r\n\r\n if (value.displayName == null) return null;\r\n return (\r\n \r\n );\r\n};\r\nValuePrincipal.displayName = \"AttributeSummaryValue.Principal\";\r\nexport default ValuePrincipal;\r\n","import React from \"react\";\nimport styles from \"./ValueProgress.module.css\";\nimport ProgressBar from \"react-bootstrap/lib/ProgressBar\";\nimport { getClassNames } from \"data/utils\";\n\nimport { type SummaryAttributeValueProgress } from \"data/types\";\n\nconst ValueProgress = ({\n value,\n className,\n}: {\n value: SummaryAttributeValueProgress,\n className: string,\n}) => {\n if (value.progress) {\n return (\n \n {value.progress.map((p, index) => (\n \n ))}\n \n );\n }\n\n return null;\n};\nValueProgress.displayName = \"SummaryAttributeValue.Progress\";\nexport default ValueProgress;\n","import React, { useMemo } from \"react\";\nimport { Img } from \"react-image\";\nimport Icons from \"@hs/icons\";\n\nexport const ValueVisualRules = ({\n className,\n caption,\n value,\n}: {\n className: string,\n caption: string,\n value: SummaryAttributeValueVisualRules,\n}) => {\n const [style, icon] = useMemo(() => {\n const style = value.color ? { color: value.color } : undefined;\n const icon = value.icon ? (\n }\n src={value.icon.iconUrl}\n alt={caption}\n />\n ) : null;\n return [style, icon];\n }, [value, caption]);\n return (\n \n {icon != null && icon} {value.value}\n \n );\n};\nValueVisualRules.displayName = \"SummaryAttribute.Value.VisualRules\";\n\nexport default ValueVisualRules;\n","import React, { useCallback } from \"react\";\nimport Icons from \"@hs/icons\";\nimport { getLocalizedText, getClassNames } from \"data/utils\";\nimport styles from \"./ValueEnum.module.css\";\n\nexport const ValueEnum = ({\n className,\n caption,\n value,\n}: {\n className: string,\n caption: string,\n value: SummaryAttributeValueEnum,\n}) => {\n const renderEnumValue = useCallback(\n (enumValue: EnumValue) =>\n enumValue ? (\n \n {enumValue.icon && }{\" \"}\n {getLocalizedText(enumValue.label)}\n \n ) : null,\n [caption]\n );\n return (\n \n {value.isMulti\n ? value.enum\n .filter((e) => (value.value & e.value) > 0)\n .map((e) => renderEnumValue(e))\n : renderEnumValue(\n value.enum.find((e) => e.value === value.value)\n )}\n \n );\n};\nValueEnum.displayName = \"SummaryAttribute.Value.Enum\";\n\nexport default ValueEnum;\n","import React from \"react\";\nimport { LinkViewer } from \"components/ExtraAttributes/ViewerControl/LinkViewerControl\";\nimport { type SummaryAttributeValueTextLink } from \"data/types\";\nimport styles from \"./SummaryAttribute.module.css\";\n\n/* istanbul ignore next */\nconst handleClick = (e: SyntheticEvent) => {\n e.stopPropagation();\n};\n\nexport const ValueTextLink = ({\n className,\n value,\n}: {\n className: string,\n value: SummaryAttributeValueTextLink,\n}) => {\n return (\n \n \n \n );\n};\nValueTextLink.displayName = \"SummaryAttribute.Value.TextLink\";\n\nexport default ValueTextLink;\n","import React from \"react\";\nimport { type SummaryAttributeValueFilesize } from \"data/types\";\n\nexport const ValueFilesize = ({\n className,\n value,\n}: {\n className: string,\n value: SummaryAttributeValueFilesize,\n}) => {\n return {value.value};\n};\nValueFilesize.displayName = \"SummaryAttribute.Value.Filesize\";\n\nexport default ValueFilesize;\n","import React from \"react\";\nimport { type SummaryAttributeValueDatetime } from \"data/types\";\n\nexport const ValueDatetime = ({\n className,\n value,\n}: {\n className: string,\n value: SummaryAttributeValueDatetime,\n}) => {\n return (\n \n {value.value}\n \n );\n};\nValueDatetime.displayName = \"SummaryAttribute.Value.Datetime\";\n\nexport default ValueDatetime;\n","import React from \"react\";\nimport {\n type SummaryAttributeValue,\n SummaryAttributeValueType,\n} from \"data/types\";\nimport styles from \"./SummaryAttribute.module.css\";\n\nimport ValueFacePile from \"./ValueFacePile\";\nimport ValuePrincipal from \"./ValuePrincipal\";\nimport ValueProgress from \"./ValueProgress\";\nimport ValueVisualRules from \"./ValueVisualRules\";\nimport ValueEnum from \"./ValueEnum\";\nimport ValueTextLink from \"./ValueTextLink\";\nimport ValueFilesize from \"./ValueFilesize\";\nimport ValueDatetime from \"./ValueDatetime\";\nimport { SimpleAttributeValue } from \"../SimpleAttribute\";\n\nconst SummaryAttributeValueFactory = (props: {\n value: SummaryAttributeValue,\n className: boolean,\n}) => {\n switch (props.value.$type) {\n case SummaryAttributeValueType.FacePile:\n return ;\n\n case SummaryAttributeValueType.VisualRules:\n return ;\n\n case SummaryAttributeValueType.Enum:\n return ;\n\n case SummaryAttributeValueType.TextLink:\n return ;\n\n case SummaryAttributeValueType.Filesize:\n return ;\n\n case SummaryAttributeValueType.User:\n case SummaryAttributeValueType.Group:\n return ;\n\n case SummaryAttributeValueType.Progress:\n return ;\n\n case SummaryAttributeValueType.Datetime:\n return ;\n\n // for internal use - will never be passed from the Server\n case SummaryAttributeValueType.ReactElement:\n return props.value.element;\n\n default:\n return ;\n }\n};\nSummaryAttributeValueFactory.displayName = \"SummaryAttribute.ValueFactory\";\nexport default SummaryAttributeValueFactory;\n","// @flow\nimport React from \"react\";\nimport { type ItemFlowConfigDTO } from \"data/types\";\nimport Icons from \"@hs/icons\";\n\nconst FlowCardImage = ({ flow }: { flow: ItemFlowConfigDTO }) => {\n if (\n flow.icon &&\n (flow.icon.startsWith(\"http\") ||\n flow.icon.startsWith(\"data:image\") ||\n flow.icon.startsWith(\"/\") ||\n flow.icon.startsWith(\"./\") ||\n flow.icon.startsWith(\"../\"))\n )\n return \"\";\n\n switch (flow.commandAction.name) {\n case \"itemFlow_folder\":\n return ;\n case \"itemFlow_docTemplate\":\n if (flow.icon.startsWith(\".\")) {\n return ;\n } else\n return (\n \n );\n case \"itemFlow_folderTemplate\":\n return (\n \n );\n\n default:\n return (\n \n );\n }\n};\nFlowCardImage.displayName = \"ItemFlows.FlowCardImage\";\nexport default FlowCardImage;\n","import React, { useMemo } from \"react\";\nimport {\n type ItemFlowConfigDTO,\n SiteType,\n CardType,\n CardItemType,\n} from \"data/types\";\nimport CardItem from \"components/CardList/CardItem\";\nimport \"components/CardList/index.css\";\nimport NoData from \"components/NoData\";\nimport FlowCardImage from \"./FlowCardImage\";\nimport Divider from \"components/Divider\";\nimport CountBadge from \"components/CountBadge\";\nimport { getLocalizedText, getClassNames } from \"data/utils\";\nimport { removeSpaces } from \"data/integrationTestUtils\";\nimport styles from \"./List.module.css\";\n\ntype Props = {\n /** current folder's itemUri */\n itemUri: string,\n /** current filterText */\n filterText: string,\n /** list of all flows */\n flows: Array,\n /** currently selected flow */\n selectedFlow: ?ItemFlowConfigDTO,\n /** callback when user selects a flow\n * @param {ItemFlowConfigDTO} flow selected\n */\n onSelect: (flow: ItemFlowConfigDTO) => void,\n};\n\nconst List = ({\n itemUri,\n filterText = \"\",\n flows = [],\n selectedFlow,\n onSelect,\n}: Props) => {\n const suggested = useMemo(\n () => flows.filter((flow) => flow.isSuggested),\n [flows]\n );\n const others = useMemo(\n () => flows.filter((flow) => !flow.isSuggested),\n [flows]\n );\n if (flows.length === 0) return ;\n\n const renderCardItem = (flow) => (\n }\n onClick={() => onSelect(flow)}\n dataTest={`flowListItem${removeSpaces(flow.name)}`}\n />\n );\n return (\n
\n {suggested.length > 0 && (\n \n {getLocalizedText(\"$itemflows:list.isSuggested\")}{\" \"}\n \n \n }\n >\n
    \n {suggested.map((flow) => renderCardItem(flow))}\n
\n \n )}\n {others.length > 0 && (\n \n {getLocalizedText(\"$itemflows:list.others\")}{\" \"}\n \n \n }\n >\n
    \n {others.map((flow) => renderCardItem(flow))}\n
\n \n )}\n
\n );\n};\nList.displayName = \"ItemFlows.List\";\nexport default List;\n","import React, { useState } from \"react\";\nimport { useAsync } from \"hooks\";\nimport { fetchItemFlowForm } from \"data/api\";\nimport {\n type NewFormTypeEnum,\n type ItemFlowTemplateTypeEnum,\n} from \"data/types\";\nimport FormContainer from \"containers/Form\";\nimport Status from \"components/Status\";\nimport Constants from \"data/constants\";\nimport loc from \"i18next\";\nimport { produce } from \"immer\";\nimport { getLocalizedText } from \"data/utils\";\nimport { toastActionResult } from \"data/toast\";\n\ntype Props = {\n /** current flow selected by user */\n flow: ItemFlowConfigDTO,\n /** current viewName */\n viewName: string,\n /** target folder itemUri to create item in */\n itemUri: string,\n /** callback when user wants to go a step back */\n onBack?: () => void,\n /** callback when user cancel */\n onCancel?: () => void,\n /** callback when user wants to create the item\n * @async\n * @param {object} model the form's values\n * @returns {boolean} true if success, false otherwise\n */\n onCreate?: (model: Object) => Promise,\n /** callback when item has been created\n * @param {boolean} success true if created successfully\n * @param {Object} error error object in case success is false\n * @param {NewItemResultDTO} data additional data related to new item\n */\n onCreated?: (\n success: boolean,\n error?: Object,\n data?: NewItemResultDTO\n ) => void,\n /** form default values */\n defaultValues?: Object,\n /** optional whether to preview the newly created item\n * @default true\n */\n previewNewItem?: boolean,\n /**\n * @type {NewFormTypeEnum}\n */\n formType: NewFormTypeEnum,\n /**\n * @type {ItemFlowTemplateTypeEnum}\n */\n templateType: ItemFlowTemplateTypeEnum,\n /**\n * @type {string}\n */\n templateId: string,\n};\n\n// centrally load new form definition required by any NewItemType (since all use /api/item/templates/newform)\n// one thing special here: props.onCreate is expected to actually create the item,\n// props.onCreated is called by parent to notify NewItemModal that it was actually created\n\nconst Form = (props: Props) => {\n // we might need to manipulate defaultValues\n const [defaultValues, setDefaultValues] = useState(\n props.defaultValues || {}\n );\n\n // get form definition\n const state = useAsync(async () => {\n try {\n const form = await fetchItemFlowForm({\n formType: props.formType,\n itemUri: props.itemUri,\n templateId: props.templateId,\n templateType: props.templateType,\n });\n // in order for WebDavName to be included in Save(model) it needs to be manually added to defaultValues for changeLog to take effect\n if (defaultValues == null || defaultValues[\"$NAME$\"] == null) {\n const nameField = form.fields.find(\n (f) => f.format === \"WebDavName\" && f.name === \"$NAME$\"\n );\n if (nameField != null) {\n setDefaultValues(\n produce(defaultValues, (draft) => {\n draft[\"$NAME$\"] = nameField.value;\n })\n );\n }\n }\n return form;\n } catch (err) {\n console.error(\"Error while fetchItemFlowForm\", err);\n props.onCancel();\n toastActionResult(false, \"itemflows:form\");\n\n throw err;\n }\n }, [props.flow]);\n\n if (state.loading) return ;\n if (state.error) return ;\n\n return (\n \n );\n};\nForm.displayName = \"ItemFlows.Form\";\nexport default Form;\n","import List from \"./List\";\nimport Form from \"./Form\";\n\nconst ItemFlows = {\n List,\n Form,\n};\n\nexport default ItemFlows;\n","// @flow\nimport React, { type Node, useMemo } from \"react\";\nimport styles from \"./Avatar.module.css\";\nimport { useSelector } from \"react-redux\";\nimport { isFeatureOn, Feature } from \"data/constants\";\nimport * as s from \"data/reducers/selectors\";\nimport { getClassNames } from \"data/utils\";\n\ntype Props = {\n id: number,\n style?: StyleSheet | Object,\n title?: string,\n className?: string,\n children?: Node,\n};\n\nconst Avatar = ({ id, style, title, className, children }: Props) => {\n const isOnline = useSelector(s.isOnlineSelector);\n const correlationId = useSelector(s.userCorrelationIdSelector);\n\n const imgUrl = useMemo(() => {\n let result = `${window.CONFIG.host.basename}${\n window.CONFIG.general.api\n }/user/avatar/${id}?correlationId=${\n isOnline || !isFeatureOn(Feature.offline)\n ? encodeURIComponent(correlationId)\n : \"offline\"\n }`;\n return result;\n }, [id, isOnline, correlationId]);\n\n const avatarStyle = useMemo(\n () =>\n Object.assign(\n {},\n {\n backgroundImage: `url(${imgUrl})`,\n },\n style\n ),\n [imgUrl, style]\n );\n\n return (\n \n {children}\n
\n );\n};\nAvatar.displayName = \"Avatar\";\nexport default Avatar;\n","// @flow\r\nimport { type ConstantsEnum } from \"./constants\";\r\nimport { toast } from \"react-toastify\";\r\n\r\nexport type Dictionary = { [key: K]: T };\r\n\r\n// --------- ApiCatalog\r\n\r\nexport const HttpMethod = {\r\n GET: \"GET\", // default\r\n PUT: \"PUT\",\r\n DELETE: \"DELETE\",\r\n POST: \"POST\",\r\n HEAD: \"HEAD\",\r\n};\r\nexport type HttpMethodEnum = $Values;\r\n\r\nexport const ContentType = {\r\n NONE: -1,\r\n AUTO: 0, // default (identify json / text by Response.ContentType)\r\n JSON: 1,\r\n BLOB: 2,\r\n TEXT: 3,\r\n};\r\nexport type ContentTypeEnum = $Values;\r\n\r\n// https://developers.google.com/web/tools/workbox/modules/workbox-strategies\r\nexport const CacheStrategy = {\r\n None: -1,\r\n StaleWhileRevalidate: 0,\r\n CacheFirst: 1,\r\n NetworkFirst: 2,\r\n NetworkOnly: 3,\r\n CacheOnly: 4,\r\n};\r\nexport type CacheStrategyEnum = $Values;\r\n\r\n/** Default Cache Name used by service-worker */\r\nexport const DEFAULT_CACHE_NAME = \"api\";\r\n\r\nexport type OfflineSettings = {\r\n /**\r\n * Whether offline editing is allowed. Will then be by data/offline/offlineQueue.js\r\n * @default {boolean} false\r\n */\r\n allowEdit?: boolean,\r\n /**\r\n * Whether to show user a toast that item has been queued\r\n * @default {boolean} false\r\n */\r\n showToast?: boolean,\r\n /**\r\n * Result object to return when called offline\r\n */\r\n transformer?: (params: Object) => Object,\r\n};\r\n\r\nexport type CacheSettings = {\r\n /**\r\n * Workbox Cache strategy to use\r\n * @description https://developers.google.com/web/tools/workbox/modules/workbox-strategies\r\n * @default CacheStrategy.NetworkOnly\r\n * @type {CacheStrategyEnum}\r\n */\r\n strategy?: CacheStrategyEnum,\r\n\r\n /**\r\n * Specify which params to use when creating the cacheKey\r\n */\r\n keyParams?: (params) => Object,\r\n\r\n // ApiManagerMakeAvailableOffline will transform result before caching\r\n transformer?: (data: Object) => Object,\r\n\r\n depsAnalyzer: (data: FormResultDTO, params: Object) => Array,\r\n};\r\n\r\nexport type ApiMethod = {\r\n url: string,\r\n /**\r\n * @default HttpMethod.GET\r\n * @type {HttpMethodEnum}\r\n */\r\n method?: HttpMethodEnum,\r\n params?: Object,\r\n contentType: ContentTypeEnum,\r\n cache?: boolean | CacheSettings,\r\n offline?: OfflineSettings,\r\n};\r\n\r\nexport type ApiMethodRef = {\r\n name: string,\r\n params?: Object,\r\n signal?: AbortSignal,\r\n};\r\n\r\n// const OperationTypeEnum = {\r\n// ReadOnly: 0,\r\n// WriteOnly: 1,\r\n// WriteResilient: 2,\r\n// }\r\n// when resilient -> connect to which Readonly method should return it (+transformer)\r\n\r\nexport const CustomHttpHeader = {\r\n /** name of HTTP header for CacheStrategy passed by ApiManager and parsed by service-worker.js */\r\n CacheStrategy: \"X-WB-CACHE-STRATEGY\",\r\n /** name of HTTP header for custom CacheKey passed by ApiManager and parsed by service-worker.js */\r\n CacheKey: \"X-WB-CACHE-KEY\",\r\n /** used by the server to correlate logging events (in Root.js) */\r\n CorrelationId: \"x-correlation-id\",\r\n /** Bearer token */\r\n Authorization: \"authorization\",\r\n /** instead not using standard Authorization header */\r\n CustomAuthorization: \"X-inPoint-Auth\",\r\n /** used to pass original secureParams token */\r\n SecureParams: \"X-SECURE-PARAMS\",\r\n /** \"1\"=running /mini/ view, \"0\"=full */\r\n MiniView: \"X-MINI-VIEW\",\r\n /** itemUri when storing in offline queue */\r\n OfflineItemUri: \"x-wb-api-uri\",\r\n /** apiCatalog.name ref when storing in offline queue */\r\n OfflineApiName: \"x-wb-api-name\",\r\n /** used by the server/Controllers to identify offline requests; \"true\" when online */\r\n OfflineSync: \"x-wb-sync\",\r\n};\r\n\r\n// --------- Offline\r\n\r\nexport type OfflineQueueItem = {\r\n name: string,\r\n params?: any,\r\n retries?: number,\r\n error?: any,\r\n};\r\n\r\nexport const OfflineQueueItemType = {\r\n ApiCall: \"api\",\r\n UppyFile: \"uppy\",\r\n};\r\nexport type OfflineQueueItemTypeEnum = $Values;\r\n\r\n// --------- Toggles\r\n\r\nexport type ToggleItemDTO = {\r\n value: string,\r\n text: string,\r\n icon?: string,\r\n count?: number,\r\n status?: string,\r\n isSelected: boolean,\r\n isHidden?: boolean,\r\n isDisabled?: boolean,\r\n};\r\n\r\nexport type ToggleDTO = {\r\n name: string,\r\n isMultiple: boolean,\r\n toggles: Array,\r\n};\r\n\r\n// --------- SiteItems\r\n\r\nexport const SiteType = {\r\n NotSet: 0,\r\n GlobalSites: 1,\r\n MySites: 2,\r\n SharedSites: 3,\r\n RecycleBin: 4,\r\n MailBox: 5,\r\n AUSites: 6,\r\n};\r\nexport type SiteTypeEnum = $Values;\r\n\r\nexport const ViewNameType = {\r\n folder: 0,\r\n flat: 1,\r\n mailbox: 2,\r\n};\r\nexport type ViewNameTypeEnum = $Values;\r\n\r\nexport const SystemWebDavName = {\r\n GlobalSite: \"GLOBALSITE\",\r\n MySite: \"MYSITE\",\r\n SharedSite: \"SHARESITE\",\r\n MailBox: \"MAILBOX\",\r\n RecycleBin: \"RECYCLEBIN\",\r\n};\r\nexport type SystemWebDavNameEnum = $Values;\r\n\r\nexport const SidebarItemSource = {\r\n System: 0,\r\n Custom: 1,\r\n User: 2,\r\n Offline: 3,\r\n};\r\nexport type SidebarItemSourceEnum = $Values;\r\n\r\nexport type SidebarItemDTO = {\r\n id?: string,\r\n source: SidebarItemSourceEnum,\r\n webDavName: SystemWebDavNameEnum | string,\r\n caption: string,\r\n itemUri: string,\r\n mini: boolean,\r\n siteType: SiteTypeEnum,\r\n viewName: ViewNameTypeEnum,\r\n shouldBeVisible?: Array,\r\n};\r\n\r\n// --------- Breadcrumb\r\n\r\nexport type BreadcrumbPartDTO = {\r\n text: string,\r\n itemUri: string,\r\n};\r\n\r\nexport type BreadcrumbResultDTO = {\r\n text: string,\r\n siteType: SiteTypeEnum,\r\n parts: Array,\r\n itemUri?: string,\r\n version?: number,\r\n formatId: number,\r\n};\r\n\r\n// --------- NavigationItems\r\n\r\nexport const NavigationItemType = {\r\n Home: \"home\",\r\n News: \"news\",\r\n Report: \"report\",\r\n Search: \"search\",\r\n SearchResult: \"searchResult\",\r\n Wf: \"wf\",\r\n Upload: \"upload\",\r\n CommandAction: \"commandAction\",\r\n};\r\nexport type NavigationItemTypeEnum = $Values;\r\n\r\nexport type CommandActionPropsDTO = {\r\n name: string,\r\n props?: Object,\r\n};\r\n\r\nexport type NavigationItemDTO = {\r\n id: string,\r\n type: NavigationItemTypeEnum,\r\n icon: ?string,\r\n title: ?string,\r\n description: ?string,\r\n href: ?string,\r\n commandAction: ?CommandActionPropsDTO,\r\n shouldBeVisible?: Array,\r\n};\r\n\r\n// ------ Attributes\r\n\r\nexport const SummaryAttributeValueType = {\r\n FacePile: \"face-pile\",\r\n Group: \"group\",\r\n User: \"user\",\r\n Progress: \"progress\",\r\n VisualRules: \"visual-rules\",\r\n Enum: \"enum\",\r\n TextLink: \"text-link\",\r\n Filesize: \"filesize\",\r\n ReactElement: \"react-element\",\r\n Datetime: \"datetime\",\r\n Extension: \"extension\",\r\n};\r\n\r\nexport type SummaryAttributeValueTypeEnum = $Values<\r\n typeof SummaryAttributeValueType\r\n>;\r\nexport type SummaryAttributeValue = {\r\n type: SummaryAttributeValueTypeEnum,\r\n};\r\n\r\nexport type SummaryAttributeDTO = {\r\n caption: string,\r\n name?: string,\r\n value: SummaryAttributeValue,\r\n format?: string,\r\n};\r\n\r\nexport const PrincipalType = {\r\n User: \"user\",\r\n Group: \"group\",\r\n};\r\n\r\nexport type PrincipalTypeEnum = $Values;\r\n\r\nexport const SharePrincipalType = {\r\n User: \"user\",\r\n Group: \"group\",\r\n Share: \"share\",\r\n};\r\nexport type SharePrincipalTypeEnum = $Values;\r\n\r\ntype IPrincipalDTO = {\r\n $type: PrincipalTypeEnum,\r\n id: int,\r\n displayName: string,\r\n};\r\n\r\ntype ISharePrincipalDTO = {\r\n $type: SharePrincipalTypeEnum,\r\n};\r\n\r\nexport type GroupPrincipalDTO = IPrincipalDTO & ISharePrincipalDTO;\r\n\r\nexport type UserPrincipalDTO = IPrincipalDTO &\r\n ISharePrincipalDTO & {\r\n description?: string,\r\n email?: string,\r\n };\r\n\r\nexport type SummaryAttributeValuePrincipal =\r\n | UserPrincipalDTO\r\n | GroupPrincipalDTO;\r\n\r\nexport type SummaryAttributeValueProgress = SummaryAttributeValue & {\r\n progress: Array,\r\n};\r\n\r\nexport type SummaryAttributeValueFacePile = SummaryAttributeValue & {\r\n total?: number,\r\n onMoreCommand?: CommandActionPropsDTO,\r\n pile: Array,\r\n};\r\n\r\nexport type SummaryAttributeValueTextLink = SummaryAttributeValue & {\r\n value: string,\r\n rawValue?: string,\r\n caption?: string,\r\n isDoc?: boolean,\r\n icon?: string,\r\n isIconLast?: boolean,\r\n};\r\n\r\nexport type SummaryAttributeValueFilesize = SummaryAttributeValue & {\r\n value: string,\r\n rawValue?: string,\r\n};\r\n\r\nexport type SummaryAttributeValueDatetime = SummaryAttributeValue & {\r\n value: string,\r\n rawValue?: Date,\r\n};\r\n\r\nexport type SummaryAttributeValueReactElement = SummaryAttributeValue & {\r\n element: React.ReactElement,\r\n};\r\n\r\n// export type SummaryAttributeValueUser = SummaryAttributeValuePrincipal & {\r\n// }\r\n\r\n// export type SummaryAttributeValueGroup = SummaryAttributeValuePrincipal & {\r\n// }\r\n\r\nexport type IconDTO = {\r\n iconUrl: string,\r\n iconSize?: Array,\r\n};\r\n\r\nexport type MarkerDTO = IconDTO & {\r\n iconAnchor?: Array,\r\n};\r\nexport type SummaryAttributeValueVisualRules = SummaryAttributeValue & {\r\n value: any,\r\n icon?: IconDTO,\r\n marker?: MarkerDTO,\r\n color?: string,\r\n};\r\n\r\nexport type SummaryAttributeValueExtension = SummaryAttributeValue & {\r\n value: string,\r\n icon?: string,\r\n color?: string,\r\n};\r\n\r\n// --------- UserInfo\r\n\r\n// what we actually received from Server.IOfflineService\r\nexport type OfflineItemDTO = {\r\n id: string,\r\n itemUri: string,\r\n isDoc: boolean,\r\n lastUpdate: ?Date,\r\n breadcrumb: BreadcrumbResultDTO,\r\n};\r\n\r\nexport const OfflineSyncStatus = {\r\n Unknown: \"Unknown\",\r\n Synced: \"Synced\",\r\n SyncedWithErrors: \"SyncedWithErrors\",\r\n Syncing: \"Syncing\",\r\n Conflict: \"Conflict\",\r\n Error: \"Error\",\r\n};\r\nexport type OfflineSyncStatusEnum = $Values;\r\n\r\n// what we actually store in our Redux-Store\r\nexport type OfflineItemStatus = OfflineItemDTO & {\r\n status: OfflineSyncStatusEnum,\r\n took?: number,\r\n at: Date,\r\n};\r\n\r\nexport type UserInfoResultDTO = {\r\n id: number,\r\n displayName: number,\r\n isAdmin: boolean,\r\n language: string,\r\n status: ConstantsEnum,\r\n wfEnabled: boolean,\r\n features: Array,\r\n sites: Array,\r\n favorites: Array,\r\n decimalSeparator: string,\r\n thousandSeparator: string,\r\n avatar: string,\r\n hasOfflineItems: boolean,\r\n};\r\n\r\n// --------- UserSettings\r\n\r\nexport type UserSettingsDTO = {\r\n language: string,\r\n};\r\n\r\nexport const NotificationType = {\r\n Toast: 0,\r\n API: 1,\r\n};\r\n\r\nexport type NotificationTypeEnum = $Values;\r\n\r\nexport type UserSettingsResultDTO = {\r\n current: UserSettingsDTO,\r\n allLanguages: Array<{ name: string, code: string }>,\r\n notification?: NotificationTypeEnum,\r\n identityChangePasswordUri?: string,\r\n identity2FaUri?: string,\r\n};\r\n\r\n// --------- Folder's Tree\r\n\r\nexport type TreeItemDTO = {\r\n elementType: number,\r\n id: number,\r\n itemUri: string,\r\n numberOfChildren: number,\r\n webDavName: string,\r\n bc?: string,\r\n};\r\n\r\nexport type TreeDTO = {\r\n isRoot: boolean,\r\n isBrowsable: boolean,\r\n totalCount: number,\r\n items: Array,\r\n};\r\n\r\nexport const SpecialFoldersItemURIs = {\r\n SharedDocumentsUri: \"shareddocuments\",\r\n RecycledDocumentsUri: \"recycleddocuments\",\r\n RecycleBinUri: \"recyclebin\",\r\n};\r\n\r\nexport type SpecialFoldersItemURIsEnum = $Values;\r\n// --------- Item Status\r\n\r\n/** @enum {number} */\r\nexport const ItemStatuses = {\r\n /** Nothing set */\r\n Nothing: 0,\r\n /** There is an reminder on this item. */\r\n Reminder: 1,\r\n /** This item is shared. */\r\n Share: 1 << 1,\r\n /** This item has a relation to another item. */\r\n Relation: 1 << 2,\r\n /** This item has a converted PDF of itself. */\r\n PDF: 1 << 3,\r\n /** This item has at least one Workflow-Report */\r\n WFReport: 1 << 4,\r\n /** This item has a note */\r\n Note: 1 << 5,\r\n /** This item has a link to another item. (Shortcut) */\r\n Link: 1 << 6,\r\n /** When this item is an msg and it has some attachments. */\r\n MailHasAttachment: 1 << 7,\r\n /** When this item is an msg and it was replied to someone. */\r\n MailReplied: 1 << 8,\r\n /** When this item is an msg and it was forwarded to someone. */\r\n MailForwarded: 1 << 9,\r\n /** When this item is checked out. */\r\n Locked: 1 << 10,\r\n /** When this item is has a DocTemplate applied. */\r\n Template: 1 << 11,\r\n /** There is a subscription on this item. */\r\n Subscribed: 1 << 12,\r\n /** This item managed via CloudSync. */\r\n CloudSync: 1 << 13,\r\n /** Any of this items parents is marked for deletion. */\r\n AnyParentDeleted: 1 << 14,\r\n // Custom flags for inPoint.Web.Server only\r\n /** This item is marked for deletion. */\r\n Deleted: 1 << 29,\r\n /** This item is signed. */\r\n Signed: 1 << 30,\r\n};\r\n\r\nexport type ItemStatusesDTO = $Values;\r\n\r\n// --------- Documents\r\n\r\nexport const ListViewMode = {\r\n Thumbnails: \"Thumbnails\",\r\n List: \"List\",\r\n Grid: \"Grid\",\r\n Map: \"Map\",\r\n Calendar: \"Calendar\",\r\n};\r\nexport type ListViewModeEnum = $Keys;\r\n\r\nexport const DocListFilterOperators = {\r\n None: \"None\",\r\n Equals: \"Equals\",\r\n NotEquals: \"NotEquals\",\r\n LessThan: \"LessThan\",\r\n LessThanOrEqualsTo: \"LessThanOrEqualsTo\",\r\n GreaterThan: \"GreaterThan\",\r\n GreaterThanOrEqualsTo: \"GreaterThanOrEqualsTo\",\r\n Contains: \"Contains\",\r\n DoesNotContain: \"DoesNotContain\",\r\n //Like: \"Like\",\r\n //NotLike: \"NotLike\",\r\n StartsWith: \"StartsWith\",\r\n DoesNotStartWith: \"DoesNotStartWith\",\r\n EndsWith: \"EndsWith\",\r\n DoesNotEndWith: \"DoesNotEndWith\",\r\n Between: \"Between\",\r\n NotBetween: \"NotBetween\",\r\n DateRelative: \"DateRelative\",\r\n};\r\n\r\nexport type DocListFilterOperatorsEnum = $Keys;\r\n\r\nexport const DocListColumnType = {\r\n StringValue: \"StringValue\",\r\n WebDavName: \"WebDavName\",\r\n FileSize: \"FileSize\",\r\n IntValue: \"IntValue\",\r\n BooleanValue: \"BooleanValue\",\r\n LongValue: \"LongValue\",\r\n ShortValue: \"ShortValue\",\r\n DoubleValue: \"DoubleValue\",\r\n DecimalValue: \"DecimalValue\",\r\n SingleValue: \"SingleValue\",\r\n DateTimeValue: \"DateTimeValue\",\r\n DateTimeOffsetValue: \"DateTimeOffsetValue\",\r\n ByteValue: \"ByteValue\",\r\n ObjectValue: \"ObjectValue\",\r\n};\r\n\r\nexport type DocListColumnTypeEnum = $Keys;\r\n\r\nexport type DocColumnResultDTO = {\r\n name: string,\r\n caption: string,\r\n width: number,\r\n type: DocListColumnTypeEnum,\r\n canSort: boolean,\r\n};\r\n\r\nexport type DocsResultDTO = {\r\n itemUri: string,\r\n pageSize: number,\r\n rowCount: number,\r\n rows: Object,\r\n cols: Array,\r\n flags: number,\r\n};\r\n\r\nexport const SortDirectionOptions = {\r\n Ascending: \"Ascending\",\r\n Descending: \"Descending\",\r\n};\r\nexport type SortDirectionEnum = $Keys;\r\n\r\nexport type DocListSortRequestDTO = {\r\n name: string,\r\n direction: SortDirectionEnum,\r\n};\r\n\r\nexport type DocListFilterRequestDTO = {\r\n operator: DocListFilterOperatorsEnum,\r\n name: string,\r\n values: Array,\r\n};\r\n\r\nexport type DocListLayout = {\r\n filters?: Array,\r\n sorts?: Array,\r\n cols?: Array,\r\n};\r\n\r\nexport const ActivityType = {\r\n create: \"create\",\r\n modifyContent: \"modifyContent\",\r\n modifyField: \"modifyField\",\r\n comment: \"comment\",\r\n locked: \"locked\",\r\n delete: \"delete\",\r\n unlocked: \"unlocked\",\r\n};\r\nexport type ActivityTypeEnum = $Keys;\r\n\r\nexport type ActivityFieldDTO = {\r\n caption: string,\r\n oldVal: ?string,\r\n newVal: ?string,\r\n};\r\n\r\nexport const RetentionType = {\r\n Default: \"default\",\r\n Forever: \"forever\",\r\n Custom: \"custom\",\r\n};\r\nexport type RetentionTypeEnum = $Keys;\r\n\r\nexport type RetentionInfoDTO = {\r\n type: RetentionTypeEnum,\r\n months?: number,\r\n label?: string,\r\n date?: string,\r\n isExpired?: boolean,\r\n};\r\n\r\nexport const ItemNoteType = {\r\n Default: \"default\",\r\n PdfHighlight: \"pdfHighlight\",\r\n};\r\n\r\nexport type ItemNoteTypeEnum = $Values;\r\n\r\nexport const ItemNoteTypeIcon = {\r\n default: \"fa-regular fa-comment\",\r\n pdfHighlight: \"fa-regular fa-comment-dots\",\r\n};\r\n\r\nexport type IItemNoteExtras = {\r\n $type: ItemNoteTypeEnum,\r\n};\r\n\r\nexport type ActivityDTO = {\r\n id: number,\r\n on: DateTime,\r\n what: ActivityTypeEnum,\r\n extras?: IItemNoteExtras,\r\n userId: number,\r\n userName: string,\r\n text: string,\r\n changes: Array,\r\n retention?: RetentionInfoDTO,\r\n};\r\n\r\nexport type ItemNoteExtrasDefault = IItemNoteExtras & {\r\n data: Array,\r\n};\r\n\r\nexport const PdfShapeType = {\r\n Rectangle: \"rectangle\",\r\n};\r\n\r\nexport type PdfShapeTypeEnum = $Values;\r\n\r\nexport type IPdfShape = {\r\n $type: PdfShapeTypeEnum,\r\n};\r\n\r\nexport type PdfShapeRectangle = {\r\n scale: number,\r\n pageNumber: number,\r\n x: number,\r\n y: number,\r\n width: number,\r\n height: number,\r\n};\r\n\r\nexport type ItemNoteExtrasPdfHighlight = IItemNoteExtras & {\r\n shapes: Array,\r\n};\r\n\r\n// export type ItemNoteDTO = {\r\n// itemUri: string,\r\n// text: string,\r\n// id?: number,\r\n// parentId?: number,\r\n// extras?: IItemNoteExtras,\r\n// date?: DateTime,\r\n// creationDate?: DateTime,\r\n// creator?: IPrincipalDTO,\r\n// };\r\n\r\nexport const CleanupKeepVersionType = {\r\n All: \"all\",\r\n Last: \"last\",\r\n PerDay: \"perDay\",\r\n PerUser: \"perUser\",\r\n};\r\nexport type CleanupKeepVersionTypeEnum = $Keys;\r\n\r\nexport type CleanupKeepInfoDTO = {\r\n type: CleanupKeepVersionTypeEnum,\r\n count: number,\r\n};\r\n\r\nexport type ActivitiesDTO = {\r\n items: Array,\r\n keep: CleanupKeepInfoDTO,\r\n retention: RetentionInfoDTO,\r\n};\r\n// --------- Form\r\n\r\nexport type LastChangeState = {\r\n ns?: string,\r\n name: string,\r\n value: Object,\r\n};\r\n\r\nexport const FormLookupType = {\r\n ip: 0,\r\n ea_lookup: 1,\r\n ea_ftlookup: 2,\r\n sf_ftlookup: 3,\r\n};\r\nexport type FormLookupTypeEnum = $Values;\r\n\r\nexport type FormLookupValue = {\r\n T: string,\r\n K?: string,\r\n};\r\n\r\n// export type GetLookupValuesRequestDTO = {\r\n// keyword: string,\r\n// pageNum: number,\r\n// itemUri: string,\r\n// name: string,\r\n// lookupType: FormLookupTypeEnum,\r\n// valueType: SearchValueTypeEnum,\r\n// values: any\r\n// }\r\n\r\nexport type LookupValuesResultDTO = {\r\n values: Array,\r\n hasMore: boolean,\r\n};\r\n\r\nexport const NewFormType = {\r\n Document: \"Document\",\r\n Folder: \"Folder\",\r\n};\r\nexport type NewFormTypeEnum = $Values;\r\n\r\nexport const ExtraAttributeEmbeddedGridRowStatus = {\r\n None: 0,\r\n Updated: 1,\r\n Added: 2,\r\n Deleted: 3,\r\n};\r\nexport type ExtraAttributeEmbeddedGridRowStatusEnum = $Values<\r\n typeof ExtraAttributeEmbeddedGridRowStatus\r\n>;\r\n\r\nexport type ExtraAttributeEmbeddedGridColumnDTO = {\r\n name: string,\r\n visible: boolean,\r\n width: number,\r\n};\r\n\r\nexport type ExtraAttributesEmbeddedGridDTO = {\r\n columns: Array,\r\n //rows: Dictionary>,\r\n rows: Array>,\r\n pageSize: number,\r\n showFilter: boolean,\r\n sortColumn: string,\r\n sortDirection: SortDirectionEnum,\r\n seqIdColumn: number,\r\n};\r\n\r\nexport type ExtraAttributeDataAuditLogDTO = {\r\n deletedIds: Array,\r\n updatedRows: Object,\r\n newRows: Array>,\r\n};\r\n\r\nexport const DateTimeFormat = {\r\n Time: \"Time\",\r\n LongTime: \"LongTime\",\r\n DateTime: \"DateTime\",\r\n DateLongTime: \"DateLongTime\",\r\n Date: \"Date\",\r\n //For non-formatted DateTimes, e.g. Reminder, Share, DocListFilter\r\n JsonDate: \"JsonDate\",\r\n JsonDateEnd: \"JsonDateEnd\", //Time should point to end of day\r\n JsonDateTime: \"JsonDateTime\",\r\n};\r\n\r\nexport type DateTimeFormatValues = $Values;\r\n\r\ntype FieldDefinitionBaseDTO = {\r\n id: number,\r\n header?: string,\r\n name: string,\r\n value: null | any | ExtraAttributesEmbeddedGridDTO,\r\n};\r\n\r\ntype FieldDefinitionWithExtrasBaseDTO = FieldDefinitionBaseDTO & {\r\n ro: boolean,\r\n req: boolean,\r\n format: string, // CustomFormats enum\r\n extra?: ?Object,\r\n};\r\n\r\nexport type FieldDefinitionDTO = FieldDefinitionWithExtrasBaseDTO & {\r\n width: number,\r\n height: number,\r\n};\r\n\r\nexport type FormFieldDTO = FieldDefinitionWithExtrasBaseDTO & {\r\n max?: number,\r\n};\r\n\r\nexport const ItemLinkType = {\r\n Manual: 0,\r\n WorkflowReport: 1,\r\n Shortcut: 2,\r\n};\r\nexport type ItemLinkTypeEnum = $Values;\r\n\r\ntype IFormResultDTO = {\r\n name: string,\r\n};\r\n\r\nexport type FormResultDTO = IFormResultDTO & {\r\n formatId: number,\r\n isDoc: boolean,\r\n layoutXml?: string,\r\n attributes?: Array,\r\n fields: Array,\r\n formTitle?: string,\r\n grids?: Array,\r\n labelWidth: number,\r\n etag: string,\r\n};\r\n\r\nexport type LockResultDTO = {\r\n lockedById: number,\r\n lockedByName: string,\r\n lockedOnMachine: string,\r\n lockedDate: string,\r\n};\r\n\r\nexport type DocFormResultDTO = FormResultDTO & {\r\n isLocked: boolean,\r\n lockInfo?: LockResultDTO,\r\n};\r\n\r\nexport type FormFieldProps = {\r\n name?: string,\r\n header: string,\r\n value: null | any | ExtraAttributesEmbeddedGridDTO,\r\n width?: number,\r\n userid?: number,\r\n marker?: any,\r\n isGridCell?: boolean,\r\n formatId?: number,\r\n};\r\n\r\nexport type FormFieldInfo = {\r\n Component: React.Component,\r\n props: FormFieldProps,\r\n};\r\n\r\n// --------- Workflow\r\n\r\nexport const WorkflowProvider = {\r\n inPointWorkflow: \"inPointWf\",\r\n AxonIvy: \"AxonIvy\",\r\n};\r\nexport type WorkflowProviderEnum = $Values;\r\n\r\nexport const WorkflowType = {\r\n Unknown: \"unknown\",\r\n Routing: \"routing\",\r\n Process: \"process\",\r\n ToDo: \"todo\",\r\n};\r\nexport type WorkflowTypeEnum = $Values;\r\n\r\nexport const WorkflowStartLinkMode = {\r\n Window: \"window\",\r\n Docked: \"docked\",\r\n Modal: \"modal\",\r\n};\r\nexport type WorkflowStartLinkModeEnum = $Values;\r\n\r\nexport type WorkflowDTO = {\r\n provider: string,\r\n id: string,\r\n icon?: string,\r\n name: string,\r\n description: string,\r\n startLink: string,\r\n startLinkMode: WorkflowStartLinkModeEnum,\r\n deadline?: string,\r\n progress?: number,\r\n itemUri?: string,\r\n};\r\n\r\nexport type WorkflowAction = {\r\n name: string,\r\n icon?: string,\r\n caption: string,\r\n description?: string,\r\n page: string,\r\n};\r\n\r\nexport type WorkflowInfoDTO = {\r\n provider: string,\r\n id: string,\r\n name: string,\r\n progress?: number,\r\n status?: string,\r\n attributes?: Array,\r\n actions?: Array,\r\n};\r\n\r\nexport type WorkflowProviderDTO = {\r\n provider: string,\r\n caption: string,\r\n icon?: string,\r\n};\r\n\r\n// --------- Search\r\n\r\nexport const SearchOperator = {\r\n NotSet: 0,\r\n Contextor: 1,\r\n From: 2,\r\n To: 3,\r\n FromTo: 4,\r\n FromToWithTime: 5,\r\n FromWithTime: 6,\r\n ToWithTime: 7,\r\n Equals: 8,\r\n EqualsWithTime: 9,\r\n RelativeDate: 10,\r\n // #46483 remove not working date searchform Operators\r\n // FromRelativeTo: 11,\r\n // FromRelativeToWithTime: 12,\r\n // FromToRelative: 13,\r\n // FromWithTimeToRelative: 14,\r\n FromRelative: 15,\r\n ToRelative: 16,\r\n Contains: 17,\r\n StartsWith: 18,\r\n EndsWith: 19,\r\n GeoRadius: 20,\r\n GeoArea: 21,\r\n GeoRadiusIntersect: 22,\r\n GeoRadiusWithin: 23,\r\n GeoAreaIntersect: 24,\r\n GeoAreaWithin: 25,\r\n GeoAreaPoint: 26,\r\n ContextorContains: 27,\r\n};\r\nexport type SearchOperatorEnum = $Values;\r\n\r\nexport const SearchNodeType = {\r\n AllNodes: 0,\r\n LeafNode: 1,\r\n CustomNode: 2,\r\n Auto: 3,\r\n};\r\nexport type SearchNodeTypeEnum = $Values;\r\n\r\nexport type SearchFormInfoDTO = {\r\n id: number,\r\n name: string,\r\n // scope: string,\r\n // itemUri: string,\r\n // breadcrumb: string,\r\n // image: string\r\n};\r\n\r\nexport const SearchScope = {\r\n AllSites: 0,\r\n AllFolders: 1,\r\n CurrentFolder: 2,\r\n};\r\nexport type SearchScopeEnum = $Values;\r\n\r\nexport const SearchValueType = {\r\n NotSet: 0,\r\n String: 1,\r\n RelativeDate: 2,\r\n DateTime: 3,\r\n FileSize: 4,\r\n ItemType: 5,\r\n Decimal: 6,\r\n GeoPoint: 7,\r\n GeoArea: 8,\r\n StringFieldOnly: 9,\r\n DecimalFieldOnly: 10,\r\n Link: 11,\r\n IUID: 100,\r\n};\r\nexport type SearchValueTypeEnum = $Values;\r\n\r\nexport type SearchBucketValueDTO = {\r\n value: string | number,\r\n caption?: string,\r\n count?: number,\r\n};\r\n\r\nexport type SearchBucketDTO = {\r\n visible?: boolean,\r\n name: string,\r\n caption?: string,\r\n hideName?: boolean,\r\n hideMenu?: boolean,\r\n hideAllReset?: boolean,\r\n selected?: Array,\r\n valueType?: SearchValueTypeEnum,\r\n buckets: Array,\r\n};\r\n\r\nexport const SearchRequestType = {\r\n Favorite: 0,\r\n Recent: 1,\r\n Freetext: 2,\r\n Form: 3,\r\n Url: 4,\r\n};\r\nexport type SearchRequestTypeEnum = $Values;\r\n\r\nexport type SearchFilterDTO = {\r\n name: string,\r\n valueType: SearchValueTypeEnum,\r\n value: any,\r\n op: SearchOperatorEnum,\r\n boostLeafNode?: number,\r\n nodeType?: SearchNodeTypeEnum,\r\n};\r\n\r\nexport type SearchSortDTO = {\r\n name: string,\r\n valueType: SearchValueTypeEnum,\r\n direction: SortDirectionEnum,\r\n};\r\n\r\nexport const FakeResultItemType = {\r\n Add: 0,\r\n Edit: 1,\r\n Delete: 2,\r\n};\r\n\r\nexport type FakeResultItemTypeEnum = $Values;\r\n\r\nexport type SearchFakeResultItemDTO = {\r\n type: FakeResultItemTypeEnum,\r\n itemUri: string,\r\n};\r\n\r\nexport type ISearchText = {\r\n words: Array,\r\n phrase: Array,\r\n anyWords: Array,\r\n nonWords: Array,\r\n};\r\n\r\nexport type SearchRequestDTO = {\r\n id: number,\r\n name: ?string,\r\n searchType: SearchRequestTypeEnum,\r\n scope?: SearchScopeEnum,\r\n isCustom: boolean,\r\n searchText?: string | ISearchText,\r\n pageNum: number,\r\n itemUri?: string,\r\n filters: Array,\r\n sorts: Array,\r\n fakeUris?: Array,\r\n};\r\n\r\nexport const SearchItemType = {\r\n Favorite: 0,\r\n Recent: 1,\r\n Freetext: 2,\r\n Form: 3,\r\n Url: 4, // passing Url parameters\r\n};\r\nexport type SearchItemTypeEnum = $Values;\r\n\r\nexport type SearchItemDTO = {\r\n name: string,\r\n searchText?: string | ISearchText,\r\n scope?: SearchScopeEnum,\r\n id: number,\r\n searchType: SearchItemTypeEnum,\r\n param?: Array,\r\n nodeType?: SearchNodeTypeEnum,\r\n\r\n // TODO those do not exist in server-side object!\r\n itemUri?: string,\r\n filters?: Array,\r\n sorts?: Array,\r\n fakeUris?: Array,\r\n};\r\n\r\nexport type SAYTOptionDTO = {\r\n /* required by react-select */\r\n className?: string,\r\n label: string,\r\n /* our custom values */\r\n count: number,\r\n item: SearchItemDTO,\r\n};\r\n\r\nexport type SearchResultRowDTO = {\r\n title: string,\r\n itemUri: string,\r\n isDoc: boolean,\r\n elementType: ?number,\r\n ext: string,\r\n summary: ?string,\r\n foundTerms: ?Array,\r\n breadcrumb: BreadcrumbResultDTO,\r\n attributes: Array,\r\n};\r\n\r\ntype IGridColumn = {\r\n type: string,\r\n name: string,\r\n caption: string,\r\n width: number,\r\n canSort: boolean,\r\n};\r\ntype IGridRow = any;\r\n\r\ntype IGridList = {\r\n cols: Array,\r\n rows: { [rowId: number]: IGridRow },\r\n pageSize: number,\r\n};\r\n\r\nexport type SearchResultDTO = IGridList & {\r\n pageNum: number,\r\n totalCount: number,\r\n aggregations?: Array,\r\n autoBrowseToItem?: boolean,\r\n listViewMode: ListViewModeEnum,\r\n};\r\n\r\nexport type SearchCountResultDTO = {\r\n totalCount: number,\r\n totalTime: number,\r\n aggregations?: Array,\r\n};\r\n\r\n// searchForms\r\n\r\nexport type SearchFieldDefinitionDTO = FieldDefinitionBaseDTO & {\r\n hidden?: boolean,\r\n multiple?: boolean,\r\n valueType: SearchValueTypeEnum,\r\n op: SearchOperatorEnum,\r\n boostLeafNode?: number,\r\n nodeType?: SearchNodeTypeEnum,\r\n required?: boolean,\r\n};\r\n\r\nexport type SearchFormResultDTO = IFormResultDTO & {\r\n layoutXml?: string,\r\n attributes?: Array,\r\n sort?: Array,\r\n itemUri: string,\r\n};\r\n\r\n// --------- Cards\r\n\r\nexport const CardType = {\r\n Rec: \"rec\",\r\n Fav: \"fav\",\r\n Task: \"task\",\r\n Action: \"action\",\r\n};\r\nexport type CardTypeEnum = $Values;\r\n\r\nexport const CardItemType = {\r\n Folder: \"folder\",\r\n Doc: \"doc\",\r\n Search: \"search\",\r\n Task: \"task\",\r\n SearchForm: \"searchForm\",\r\n CommandAction: \"commandAction\",\r\n ArchiveTarget: \"archiveTarget\",\r\n};\r\nexport type CardItemTypeEnum = $Values;\r\n\r\nexport type CardListRequest = {\r\n cardTypes: Array,\r\n cardItemTypes: Array,\r\n};\r\n\r\nexport type CardItemResultDTO = {\r\n id: string,\r\n type: CardTypeEnum,\r\n itemtype: CardItemTypeEnum,\r\n siteType: SiteTypeEnum,\r\n image: ?string,\r\n name: string,\r\n desc?: string,\r\n uri: ?string,\r\n searchItem?: SearchItemDTO, // only for search\r\n bcText?: string, // only for recent folders,\r\n commandAction?: CommandActionPropsDTO,\r\n extras?: Object, // any additional properties\r\n};\r\n\r\nexport type ItemActionViewConfig = {\r\n name: string,\r\n header?: string,\r\n};\r\n\r\nexport type ItemActionConfigBase = {\r\n id?: string,\r\n visible?: boolean,\r\n itemUriRegex?: string,\r\n loc?: string, //only used in data/itemActions.js\r\n name: string,\r\n desc?: string,\r\n icon?: string,\r\n shouldBeVisible?: Array,\r\n views?: Array,\r\n view?: ItemActionViewConfig,\r\n};\r\n\r\nexport type ItemActionCategoryConfig = ItemActionConfigBase & {\r\n renderHeader?: boolean,\r\n expanded?: boolean,\r\n};\r\n\r\nexport type ItemActionConfig = ItemActionConfigBase & {\r\n category?: string,\r\n commandAction?: CommandActionPropsDTO,\r\n};\r\n\r\nexport type ItemActionsConfigDTO = {\r\n categories: Array,\r\n actions: Array,\r\n};\r\n\r\nexport type FormActionsConfigDTO = Array;\r\n\r\n// ---------- Errors\r\n\r\nexport type ApiErrorEventId = {\r\n id: number,\r\n name: string,\r\n};\r\n\r\nexport type ApiErrorResult = {\r\n detail: string | null,\r\n message: string,\r\n isError: boolean,\r\n eventId: ApiErrorEventId,\r\n extra?: any,\r\n};\r\n\r\nexport type ApiError = {\r\n data: ApiErrorResult,\r\n};\r\n\r\n// ----------- NewsFeed\r\n\r\nexport type NewsFeedItemDTO = {\r\n date: Object,\r\n title: string,\r\n name: string,\r\n ext: string,\r\n category: string,\r\n itemUri: string,\r\n isDoc: boolean,\r\n elementType: number,\r\n breadcrumb: BreadcrumbResultDTO,\r\n summary: string,\r\n};\r\n\r\nexport type NewsFeedDTO = {\r\n items: Array,\r\n};\r\n\r\nexport type SubscribeResponseDTO = {\r\n id: number,\r\n name: string,\r\n itemUri: string,\r\n};\r\n\r\nexport type SubscribeRequestDTO = {\r\n itemUri: string,\r\n name: string,\r\n};\r\n\r\n// ----------- Upload\r\n\r\n/** whether TusHandler.cs should Create or Modify a document */\r\nexport const UploadMode = {\r\n CreateDocument: \"CreateDocument\",\r\n ModifyDocument: \"ModifyDocument\",\r\n};\r\n\r\n// ------------ Map\r\n\r\ntype MapProviderOnClickConfig = {\r\n // HACK will set commandAction.props.defaultValues[locationTargetFieldName] to clicked location\r\n locationTargetFieldName?: string,\r\n commandAction: CommandActionPropsDTO,\r\n};\r\n\r\nexport type MapProviderConfig = {\r\n name?: string,\r\n enabled?: boolean,\r\n key?: string,\r\n isRaster?: boolean,\r\n rasterMapIdSelector?: string, // only when isRaster=true\r\n onClick?: MapProviderOnClickConfig,\r\n layers?: Array, // references to public/__map/indoor-raster/*\r\n};\r\n\r\nexport type Location = {\r\n latitude: number,\r\n longitude: number,\r\n};\r\n\r\nexport type RasterLocation = {\r\n x: number,\r\n y: number,\r\n rasterId: string,\r\n};\r\n\r\n/** returned in callback methods from map providers */\r\nexport type MapEditLocationResult = {\r\n /** new Point location (or setRadius center) */\r\n location?: Location,\r\n /** setRadius setting */\r\n radius?: number,\r\n /** area path */\r\n area?: Array,\r\n};\r\n\r\nexport type MapLocationInfo = Location & {\r\n /** field's common name */\r\n attribute: string,\r\n /** item's name */\r\n label: string,\r\n /** item's rendered InfoPopup in HTML */\r\n preview?: string,\r\n /** item's image thumbnail either in URL format or base64 blob */\r\n thumbnail?: string | Blob,\r\n /** marker custom icon */\r\n icon?: MarkerDTO,\r\n /** item's itemUri */\r\n itemUri?: string,\r\n /** optional polygon area points */\r\n area?: Array,\r\n /** whether this marker can be dragged/edited */\r\n allowEdit?: boolean,\r\n};\r\n\r\n// export const MapEditMode = {\r\n// Readonly: 0,\r\n// Point: 1,\r\n// Area: 2,\r\n// Radius: 3\r\n// };\r\n\r\n// export type MapEditModeEnum = $Values;\r\n\r\n// ---- Server Sent Events\r\n\r\nexport const ServerEventItemType = {\r\n document: \"document\",\r\n folder: \"folder\",\r\n activity: \"activity\",\r\n task: \"task\",\r\n search: \"search\",\r\n favorite: \"favorite\",\r\n subscription: \"subscription\",\r\n offline: \"offline\",\r\n};\r\n\r\nexport type ServerEventItemEnum = $Values;\r\n\r\nexport const ServerEventActionType = {\r\n notSet: 0,\r\n add: \"add\",\r\n modify: \"modify\",\r\n edit: \"edit\",\r\n delete: \"delete\",\r\n refresh: \"refresh\",\r\n view: \"view\",\r\n};\r\n\r\nexport type ServerEventActionEnum = $Values;\r\n\r\nexport type ServerEventData = {\r\n userId: number,\r\n /** ServerEventItemUriData */\r\n itemUri: ?string,\r\n parentItemUri: ?string,\r\n /** ServerEventSearchData */\r\n formId: ?number,\r\n};\r\n\r\nexport type ServerEventMessage = {\r\n id: string,\r\n item: ServerEventItemEnum,\r\n action: ServerEventActionEnum,\r\n data: ServerEventData,\r\n};\r\n\r\nexport const RefreshMode = {\r\n All: 0, // Auto refresh all\r\n Originator: 1, // Auto refresh Originator, ask Others\r\n Self: 2, // Auto refresh Originator, ignore Others\r\n};\r\n\r\nexport type RefreshModeEnum = $Values;\r\n\r\nexport type ImageResultDTO = {\r\n /** base64 encoded src string */\r\n src: string,\r\n /** indicates if src is a default or editable source */\r\n fallback: boolean,\r\n};\r\n\r\n// ------ ArrowNavigation\r\n\r\nexport type ArrowNavigationSetter = {\r\n /** source (itemUri) of master => to target source specific child windows only */\r\n setSource: (source: string) => void,\r\n /** target setter => for action panel context */\r\n setTarget: (target: string) => void,\r\n /** set DocModal rows => context */\r\n setRows: (rows: Array) => void,\r\n /** callback to set */\r\n setCurrentIndex: (index: number) => void,\r\n};\r\n\r\n// ------ Pagination\r\n\r\nexport type PaginationProps = {\r\n /* set current index */\r\n setCurrent: (rowIndex: number) => number,\r\n /* get itemUri by index */\r\n getActiveRowItemUri: (index: number) => string,\r\n /* callback to update when pages are loaded */\r\n handleRowsUpdate: (result: any) => void,\r\n /* callback (search results only) to handle pages loaded */\r\n handleRowsLoaded?: (rows: any, totalCount: number) => void,\r\n};\r\n\r\n// ------ ItemFlows\r\n\r\nexport const ItemFlowDirection = {\r\n in: \"in\",\r\n out: \"out\",\r\n};\r\n\r\nexport type ItemFlowDirectionEnum = $Values;\r\n\r\nexport const ItemFlowTemplateType = {\r\n Document: \"Document\",\r\n DocTemplate: \"DocTemplate\",\r\n Folder: \"Folder\",\r\n FolderTemplate: \"FolderTemplate\",\r\n};\r\n\r\nexport type ItemFlowTemplateTypeEnum = $Values;\r\n\r\nexport type ItemFlowConfigDTO = ItemActionConfig & {\r\n isSuggested: boolean,\r\n};\r\n\r\nexport type ItemFlowCategoryConfig = ItemActionConfigBase & {};\r\n\r\nexport type ItemFlowsConfigDTO = {\r\n selectFlowId?: string,\r\n categories: Array,\r\n flows: Array,\r\n};\r\n\r\nexport const UploadProvider = {\r\n Any: \"Any\",\r\n Uppy: \"Uppy\",\r\n Sync: \"Sync\",\r\n};\r\n\r\nexport type UploadProviderEnum = $Values;\r\n\r\nexport type NewItemResultDTO = {\r\n success: boolean,\r\n itemUri: string,\r\n name: string,\r\n formatId: number,\r\n elementType: number,\r\n};\r\n\r\n// ------ Loading\r\n\r\nexport const LoadingType = {\r\n Default: \"Default\",\r\n Status: \"Status\",\r\n};\r\n\r\nexport type LoadingTypeEnum = $Values;\r\n\r\n// ------ Raster maps\r\n\r\nexport type RasterMapLayerDTO = {\r\n id: string,\r\n name: string,\r\n itemUri: string,\r\n dim: Array,\r\n zoom: Array,\r\n};\r\n\r\nexport type RasterMapResultDTO = {\r\n id: string,\r\n layers: Array,\r\n};\r\n\r\nexport const RasterMapLayerEditAction = {\r\n none: 0,\r\n delete: 1,\r\n add: 2,\r\n rename: 3,\r\n};\r\nexport type RasterMapLayerEditActionEnum = $Values<\r\n typeof RasterMapLayerEditAction\r\n>;\r\n\r\nexport type RasterMapLayerSaveRequestDTO = RasterMapLayerDTO & {\r\n editAction: RasterMapLayerEditAction,\r\n};\r\n\r\nexport type RasterMapSaveRequestDTO = {\r\n id: string,\r\n layers: Array,\r\n};\r\n\r\nexport const LocalDateStringOption = {\r\n DateTimeLong: {\r\n year: \"numeric\",\r\n month: \"2-digit\",\r\n day: \"2-digit\",\r\n hour: \"2-digit\",\r\n minute: \"2-digit\",\r\n second: \"2-digit\",\r\n },\r\n DateTime: {\r\n year: \"numeric\",\r\n month: \"2-digit\",\r\n day: \"2-digit\",\r\n hour: \"2-digit\",\r\n minute: \"2-digit\",\r\n },\r\n Date: {\r\n year: \"numeric\",\r\n month: \"2-digit\",\r\n day: \"2-digit\",\r\n },\r\n // Browser does not natively support displaying only Time from Date Object\r\n // TimeLong: {\r\n // hour: \"2-digit\",\r\n // minute: \"2-digit\",\r\n // second: \"2-digit\",\r\n // },\r\n // Time: {\r\n // hour: \"2-digit\",\r\n // minute: \"2-digit\",\r\n // },\r\n};\r\n\r\n// ------ Reminder\r\n\r\nexport const ReminderPriority = {\r\n NotSet: 0,\r\n High: 1,\r\n Normal: 2,\r\n Low: 3,\r\n};\r\nexport type ReminderPriorityEnum = $Values;\r\n\r\nexport const ReminderTypeFlags = {\r\n NotSet: 0,\r\n Calendar: 1,\r\n Task: 2,\r\n Mail: 4,\r\n CustomAction: 8,\r\n};\r\nexport type ReminderTypeFlagsEnum = $Values;\r\n\r\nexport const CustomActionState = {\r\n NotSet: 0,\r\n NotStarted: 1,\r\n Retry: 2,\r\n Error: 9,\r\n Done: 10,\r\n Abort: 11,\r\n};\r\n\r\nexport type CustomActionStateEnum = $Values;\r\nexport type CustomActionDTO = {\r\n id: string,\r\n displayName: string,\r\n state: CustomActionStateEnum,\r\n executedDate: DateTime,\r\n error: string,\r\n};\r\nexport type ReminderDTO = {\r\n id?: int,\r\n itemUri: string,\r\n date: DateTime,\r\n creationDate?: DateTime,\r\n creator?: UserPrincipalDTO,\r\n recipient?: UserPrincipalDTO | GroupPrincipalDTO,\r\n reason: string,\r\n priority: ReminderPriorityEnum,\r\n type?: ReminderTypeFlagsEnum,\r\n isReadOnly: boolean,\r\n customAction?: CustomActionDTO,\r\n};\r\n\r\nexport type EnumValue = {\r\n value: T,\r\n label: string,\r\n icon?: string,\r\n};\r\n\r\nexport type SummaryAttributeValueEnum = SummaryAttributeValue & {\r\n enum: EnumValue,\r\n value: T,\r\n};\r\n\r\nexport const ReminderTypeFlagsEnumValues: Array<\r\n EnumValue\r\n> = [\r\n {\r\n value: ReminderTypeFlags.Calendar,\r\n label: \"$reminder:type.calendar\",\r\n icon: \"fa-regular fa-calendar\",\r\n },\r\n {\r\n value: ReminderTypeFlags.Task,\r\n label: \"$reminder:type.task\",\r\n icon: \"fa-regular fa-rectangle-list\",\r\n },\r\n {\r\n value: ReminderTypeFlags.Mail,\r\n label: \"$reminder:type.mail\",\r\n icon: \"fa-regular fa-envelope\",\r\n },\r\n];\r\n\r\nexport const ReminderPriorityEnumValues: Array<\r\n EnumValue\r\n> = [\r\n {\r\n value: ReminderPriority.High,\r\n label: \"$reminder:priority.high\",\r\n icon: \"fa-regular fa-exclamation\",\r\n },\r\n {\r\n value: ReminderPriority.Normal,\r\n label: \"$reminder:priority.normal\",\r\n },\r\n {\r\n value: ReminderPriority.Low,\r\n label: \"$reminder:priority.low\",\r\n icon: \"down-long\",\r\n },\r\n];\r\n\r\n// ----- Share\r\n\r\nconst AllowedShareActionFlags = {\r\n NotSet: 0,\r\n Link: 1,\r\n Web: 2,\r\n Sync: 4,\r\n Share: 8,\r\n Attachment: 16,\r\n Pdf: 32,\r\n Anonym: 64,\r\n WebShare: 128,\r\n};\r\nAllowedShareActionFlags.Default =\r\n AllowedShareActionFlags.Link |\r\n AllowedShareActionFlags.Web |\r\n AllowedShareActionFlags.Share;\r\n\r\nexport { AllowedShareActionFlags };\r\n\r\nexport type AllowedShareActionFlagsEnum = $Values<\r\n typeof AllowedShareActionFlags\r\n>;\r\n\r\nexport const ShareType = {\r\n Anonym: \"anonym\", // SAS (not implemented yet)\r\n WebShare: \"webshare\", // Cloud Webshare\r\n Share: \"share\", // Create Share and Provide as Web/Client Link\r\n Link: \"link\", // Provide as Web/Client Link\r\n Attachment: \"attachment\", // Provide Document as Attachment via Mail\r\n Pdf: \"pdf\", // Provide Document as PDF via Mail\r\n};\r\n\r\nexport type ShareTypeEnum = $Values;\r\n\r\nexport const ShareAccessControlListType = {\r\n View: \"view\",\r\n Edit: \"edit\",\r\n Delete: \"delete\",\r\n};\r\n\r\nexport type ShareAccessControlListTypeEnum = $Values<\r\n typeof ShareAccessControlListType\r\n>;\r\n\r\nexport type ShareActionDTO = {\r\n allowedFlags: AllowedShareActionFlagsEnum,\r\n type: ShareTypeEnum,\r\n acl: ShareAccessControlListTypeEnum,\r\n expires?: DateTime,\r\n shareAs?: string,\r\n};\r\n\r\nexport type SharePrincipalDTO = ISharePrincipalDTO & {\r\n principal: GroupPrincipalDTO | UserPrincipalDTO,\r\n acl: ShareAccessControlListTypeEnum,\r\n};\r\n\r\nexport const ShareNotifyType = {\r\n Updated: \"updated\",\r\n All: \"all\",\r\n None: \"none\",\r\n};\r\n\r\nexport type ShareNotifyTypeTypeEnum = $Values;\r\n\r\nexport type ShareDTO = {\r\n names: Array,\r\n itemUris: Array,\r\n action: ShareActionDTO,\r\n principals: Array,\r\n message?: string,\r\n notify?: ShareNotifyTypeTypeEnum,\r\n};\r\n\r\nexport type ShareFormDTO = ShareDTO & {\r\n message: string,\r\n};\r\n\r\nexport type ShareAllowedDTO = {\r\n allowedAcl: Array,\r\n};\r\n\r\nexport type ShareAttachment = {\r\n name: string,\r\n ext: string,\r\n size: number,\r\n};\r\n\r\nexport const SORT_BUCKET_NAME = \"__SORT__\";\r\n\r\nexport const GridListConstant = {\r\n ExtensionIcon: \"ExtensionIcon\",\r\n IconItemStatus: \"IconItemStatus\",\r\n ItemUri: \"ITEMURI\",\r\n};\r\n\r\nexport type ItemContextResponseDTO = {\r\n isDoc: boolean,\r\n siteType: SiteTypeEnum,\r\n isFlatAU: boolean,\r\n isReadOnly: boolean,\r\n viewNameType: ViewNameTypeEnum,\r\n itemStatus?: ItemStatusesDTO,\r\n isFolderClassificationEditAllowed?: boolean,\r\n isEditAllowed?: boolean,\r\n isDocClassificationEditAllowed?: boolean,\r\n isDocEditAllowed?: boolean,\r\n isDocDownloadAllowed?: boolean,\r\n isDocAssignmentAllowed?: boolean,\r\n isDocSendByEmailAllowed?: boolean,\r\n inPointSyncIntegration?: boolean,\r\n isOffline?: boolean,\r\n name?: string,\r\n ext?: string,\r\n size?: number,\r\n customViewerUrl?: string,\r\n isContinuousPreview?: boolean,\r\n icon?: string,\r\n color?: string,\r\n toggles?: ToggleDTO,\r\n};\r\n\r\nconst ItemContextsFlags = {\r\n NotSet: 0,\r\n ItemType: 1,\r\n ItemStatus: 2,\r\n ResultFlags: 4,\r\n Offline: 8,\r\n Pdf: 16,\r\n WebDavName: 32,\r\n Extension: 64,\r\n Filesize: 128,\r\n ViewerUrl: 256,\r\n ViewName: 512,\r\n Workflow: 1024,\r\n CustomIcon: 2048,\r\n Toggles: 4096,\r\n IsLockedForUser: 8192,\r\n};\r\nItemContextsFlags.Pdf =\r\n ItemContextsFlags.ItemStatus |\r\n ItemContextsFlags.Pdf |\r\n ItemContextsFlags.Extension;\r\nItemContextsFlags.All =\r\n ItemContextsFlags.ItemType |\r\n ItemContextsFlags.ItemStatus |\r\n ItemContextsFlags.ResultFlags |\r\n ItemContextsFlags.Offline |\r\n ItemContextsFlags.WebDavName |\r\n ItemContextsFlags.Pdf |\r\n ItemContextsFlags.Extension |\r\n ItemContextsFlags.Filesize |\r\n ItemContextsFlags.ViewerUrl |\r\n ItemContextsFlags.ViewName |\r\n ItemContextsFlags.Workflow |\r\n ItemContextsFlags.CustomIcon |\r\n ItemContextsFlags.Toggles |\r\n ItemContextsFlags.IsLockedForUser;\r\n\r\nexport { ItemContextsFlags };\r\n\r\nexport type ItemContextsFlagsEnum = $Values;\r\n\r\nexport const ItemContextKey = {\r\n IsDoc: \"isDoc\",\r\n IsFlatAU: \"isFlatAU\",\r\n IsReadOnly: \"isReadOnly\",\r\n ViewName: \"viewNameType\",\r\n ItemStatus: \"itemStatus\",\r\n HasWorkflow: \"hasWorkflow\",\r\n WebDavName: \"name\",\r\n InPointSyncIntegration: \"inPointSyncIntegration\",\r\n IsFolderClassificationEditAllowed: \"isFolderClassificationEditAllowed\",\r\n IsEditAllowed: \"isEditAllowed\",\r\n Extension: \"ext\",\r\n Filesize: \"size\",\r\n IsDocClassificationEditAllowed: \"isDocClassificationEditAllowed\",\r\n IsDocEditAllowed: \"isDocEditAllowed\",\r\n IsDocDownloadAllowed: \"isDocDownloadAllowed\",\r\n IsDocAssignmentAllowed: \"isDocAssignmentAllowed\",\r\n IsDocSendByEmailAllowed: \"isDocSendByEmailAllowed\",\r\n IsOffline: \"isOffline\",\r\n HasPdf: \"hasPdf\",\r\n CanPdf: \"canPdf\",\r\n IsPdf: \"isPdf\",\r\n SiteType: \"siteType\",\r\n ViewerUrl: \"customViewerUrl\",\r\n IsContinuousPreview: \"isContinuousPreview\",\r\n CanBeShared: \"canBeShared\",\r\n Icon: \"icon\",\r\n IconColor: \"color\",\r\n Toggles: \"toggles\",\r\n IsLockedForUser: \"isLockedForUser\",\r\n};\r\nexport type ItemContextKeyEnum = $Values;\r\n\r\nexport type ItemContextRequestDTO = {\r\n itemUri: string,\r\n formatId: number,\r\n itemContexts: ItemContextsFlagsEnum,\r\n};\r\n\r\nexport const TransferType = {\r\n Copy: \"copy\",\r\n Move: \"move\",\r\n Link: \"link\",\r\n};\r\n\r\nexport type TransferTypeEnum = $Values;\r\n\r\nexport type TransferItemRequestDTO = {\r\n type: TransferTypeEnum,\r\n name: string,\r\n itemUri: string,\r\n targetItemUri: string,\r\n};\r\n\r\nexport type MultiSelectionActions = {\r\n handleAdd: (id: number) => void,\r\n handleRemove: (id: number) => void,\r\n handleToggle: (id: number) => void,\r\n handleSelectAll: () => void,\r\n handleDeselectAll: () => void,\r\n handleInvert: () => void,\r\n};\r\n\r\nexport type MultiSelectionHandlers = {\r\n onTouchEnd: () => void,\r\n onTouchMove: () => void,\r\n onTouchStart: () => void,\r\n};\r\n\r\nexport type MultiSelectionContextProps = {\r\n handler: MultiSelectionHandlers,\r\n multiple: boolean,\r\n actions: MultiSelectionActions,\r\n isSelected: (index: number) => boolean,\r\n renderedBucket: React.Component,\r\n renderCheckbox: (index: number) => React.Component,\r\n};\r\n\r\nexport type MultiSelectionProps = {\r\n actions: MultiSelectionActions,\r\n activeRows: any,\r\n availableRows: any,\r\n setAvailableRows: () => void,\r\n enable: () => void,\r\n disable: () => void,\r\n handler: MultiSelectionHandlers,\r\n multiple: boolean,\r\n isSelected: (index: number) => boolean,\r\n};\r\n\r\nexport const NotificationStyle = {\r\n Info: \"info\",\r\n Success: \"success\",\r\n Warning: \"warning\",\r\n Error: \"error\",\r\n Default: \"default\",\r\n};\r\nexport type NotificationStyleEnum = $Values;\r\n\r\nexport const NotificationStatusFlag = {\r\n New: 0,\r\n Read: 1,\r\n Pending: 2,\r\n Error: 4,\r\n};\r\nexport type NotificationStatusFlagEnum = $Values;\r\n\r\nexport type ToastProps = {\r\n message: string,\r\n icon?: string,\r\n details?: (props: ToastProps) => any,\r\n handleClick?: () => void,\r\n};\r\n\r\nexport type ToastType = ToastProps & {\r\n style?: NotificationStyleEnum,\r\n status?: NotificationStatusFlagEnum,\r\n toastId?: string,\r\n isRouted?: boolean,\r\n autoClose?: number | boolean,\r\n position?: $Keys,\r\n className?: string,\r\n};\r\n\r\nexport type GUID = string;\r\nexport type ToastId = string;\r\nexport type NotificationId = string;\r\n\r\nexport const PriorityType = {\r\n Low: 0,\r\n Intermediate: 1,\r\n High: 2,\r\n};\r\nexport type PriorityTypeEnum = $Values;\r\n\r\nexport type NotificationDTO = {\r\n notificationId: NotificationId,\r\n icon: string,\r\n message: string,\r\n priority: PriorityEnum,\r\n style: NotificationStyleEnum,\r\n status: NotificationStatusFlagEnum,\r\n toast?: any,\r\n Component?: React.Component,\r\n timestamp: Date,\r\n};\r\n\r\nexport const CommandActionStatusFlag = {\r\n NotSet: 0,\r\n Loading: 1,\r\n Done: 2,\r\n Success: 4,\r\n Partial: 8,\r\n Error: 16,\r\n};\r\nexport type CommandActionStatusFlagEnum = $Values<\r\n typeof CommandActionStatusFlag\r\n>;\r\n\r\nexport type CommandActionItem = {\r\n status: ConstantsEnum,\r\n itemUri: string,\r\n formatId: number,\r\n isDoc: boolean,\r\n};\r\n\r\nexport type CommandActionLog = {\r\n timestamp: Date,\r\n message: string,\r\n status: ConstantsEnum,\r\n details: any,\r\n itemUri: string,\r\n};\r\n\r\nexport type CommandActionRequest = {\r\n guid: GUID,\r\n status: CommandActionStatusFlagEnum,\r\n items: Array,\r\n commandAction: string,\r\n log: Array,\r\n};\r\n\r\nexport const FormBarView = {\r\n Document: \"document\",\r\n DocModal: \"docmodal\",\r\n Folder: \"folder\",\r\n Search: \"search\",\r\n LockInfo: \"lock_info\",\r\n ArchiveTarget: \"archive_target\",\r\n SearchScope: \"search_scope\",\r\n Upload: \"upload\",\r\n ItemFlows: \"itemflows\",\r\n Workflow: \"workflow\",\r\n};\r\n\r\nexport type FormBarViewEnum = $Values;\r\n","import { getDisplayName } from \"data/constants\";\nimport { useOfflineHandler } from \"hooks\";\n\nconst withOfflineHandler = (WrappedComponent) => {\n const HOC = (props) => {\n const offlineHandler = useOfflineHandler({\n itemUri: props.itemUri,\n name: props.name,\n });\n return ;\n };\n HOC.displayName = `withOfflineHandler(${getDisplayName(WrappedComponent)})`;\n return HOC;\n};\n\nexport default withOfflineHandler;\n","// @flow\nimport React from \"react\";\nimport Modal, { ModalSize } from \"components/Modal\";\nimport Button from \"react-bootstrap/lib/Button\";\nimport ProgressBar from \"react-bootstrap/lib/ProgressBar\";\nimport { createModal } from \"react-modal-promise\";\nimport styles from \"./ProgressModal.module.css\";\nimport Icons from \"@hs/icons\";\nimport loc from \"i18next\";\n\ntype Props = {\n /** react-modal-promise: whether to show dialog */\n open: boolean,\n /** react-modal-promise: callback when user closes Dialog */\n close: () => void,\n /** text to show in Cancel button */\n cancelButton?: string,\n /** Modal Dialog title */\n title?: string,\n /** FontAwesome icon to show above title\n * @default {string} \"spinner\"\n */\n icon?: string,\n /** called once dialog mounted to actually perform work\n * @param {Function} close call to close dialog passing whichever return value you need\n * @param {Function} setError call to set error message to display on dialog\n * @param {Function} setProgress call to set progress bar on dialog\n */\n doWork: (\n close: () => void,\n setError: (error: string) => void,\n setProgress: (progress: number) => void\n ) => void,\n /** initial progress (defaults to 100) */\n initialProgress: number,\n};\n\ntype State = {\n error: ?string,\n progress: number,\n};\n\n/** presents a Progress dialog to the user\n * @returns {boolean} true if user confirmed, null/undefined otherwise\n */\nexport class ProgressModal extends React.PureComponent {\n state = { error: null, progress: 100 };\n\n componentDidMount() {\n /* istanbul ignore else */\n if (typeof this.props.doWork === \"function\") {\n this.props.doWork(\n this.props.close,\n (error: string) => this.setState({ error }),\n (progress: number) => this.setState({ progress })\n );\n }\n if (this.state.progress !== this.props.initialProgress) {\n this.setState({\n progress: this.props.initialProgress,\n });\n }\n }\n\n render() {\n const {\n open,\n close,\n cancelButton = loc.t(\"common:cancel\"),\n title,\n icon,\n } = this.props;\n\n return (\n close()}\n dialogClassName={styles.modal}\n >\n {title && (\n \n \n {title}\n \n )}\n \n {this.state.error == null && (\n \n )}\n {this.state.error != null &&
{this.state.error}
}\n
\n {this.state.error != null && (\n \n close()}\n >\n {cancelButton}\n \n \n )}\n \n );\n }\n}\nProgressModal.displayName = \"ProgressModal\";\nProgressModal.defaultProps = {\n icon: \"spinner\",\n initialProgress: 100,\n};\n\nexport const openProgressModal = createModal(ProgressModal);\n","import actionTypes from \"data/actions/actionTypes\";\nimport Constants from \"data/constants\";\n\nconst initialState = {\n nodes: [],\n status: Constants.NONE,\n error: undefined,\n isRoot: undefined,\n isBrowsable: undefined,\n totalCount: 0,\n};\n\nconst treeReducer = (state = initialState, action) => {\n switch (action.type) {\n case actionTypes.TREE_SET_STATUS:\n return {\n ...state,\n status: action.payload.status,\n };\n case actionTypes.TREE_FETCH_REQUEST:\n return {\n ...state,\n itemUri: action.payload.itemUri,\n status: action.payload.status,\n // ...action.payload,\n };\n case actionTypes.TREE_FETCH_RESULT:\n return { ...state, ...action.payload };\n\n /* istanbul ignore next */\n case actionTypes.PERSIST_PURGE:\n return initialState;\n default:\n return state;\n }\n};\n\nexport default treeReducer;\n\n// ------ selectors\n\nexport const treeNodesSelector = (state: Object) => state.tree.nodes;\nexport const treeStatusSelector = (state: Object) => state.tree.status;\nexport const treeErrorSelector = (state: Object) => state.tree.error;\nexport const treeIsRootSelector = (state: Object) => !!state.tree.isRoot;\nexport const treeIsBrowsableSelector = (state: Object) =>\n state.tree.isBrowsable;\nexport const treeTotalCountSelector = (state: Object) => state.tree.totalCount;\n","// https://github.com/EventMobi/redux-saga-network-status/blob/master/src/reducer.js\n\n// // True when we have been online at least once\n// hasBeenOnline: false,\n// // Whether we have pinged the server at least once\n// hasDetectedNetworkStatus: false,\n// // Whether the browser is connected to a network\n// isNavigatorOnline: false,\n// // Whether the server is reachable over the network\n// isOnline: false,\n// // Whether we are currently pinging the server\n// isPinging: false,\n// // Number of milliseconds until the next ping attempt\n// msUntilNextPing: 0,\n// // The most recent ping error\n// pingError: null,\n\nexport const isApiOnlineSelector = (state) => state.network.isOnline;\nexport const isNavigatorOnlineSelector = (state) =>\n state.network.isNavigatorOnline;\nexport const hasDetectedNetworkStatusSelector = (state) =>\n state.network.hasDetectedNetworkStatus;\nexport const hasBeenOnlineSelector = (state) => state.network.hasBeenOnline;\n\nexport const isOnlineSelector = (state) =>\n hasDetectedNetworkStatusSelector(state)\n ? isNavigatorOnlineSelector(state) && isApiOnlineSelector(state)\n : isNavigatorOnlineSelector(state); // do not block even if not ping'ed api yet\n","// export all selectors at once to make imports easier\nimport queryString from \"data/queryString\";\nimport { Location } from \"history\";\nimport {\n favoritesStatusSelector,\n favoritesFavoritesSelector,\n} from \"./favoritesReducer\";\nimport {\n userIdSelector,\n userNameSelector,\n userStatusSelector,\n userCorrelationIdSelector,\n userSitesSelector,\n userMainNavigationSelector,\n userLanguageSelector,\n userDecimalSeparator,\n userThousandSeparator,\n userItemActionsSelector,\n userFormActionsSelector,\n userHasOfflineItemsSelector,\n userIsWfEnabledSelector,\n userTopbarItemsSelector,\n userIsAdminSelector,\n} from \"./userReducer\";\nimport {\n loginStatusSelector,\n loginIdTokenSelector,\n loginAccessTokenSelector,\n loginRefreshTokenSelector,\n loginExpiresOnSelector,\n loginExpiresInSelector,\n} from \"./loginReducer\";\nimport {\n treeStatusSelector,\n treeErrorSelector,\n treeNodesSelector,\n treeIsRootSelector,\n treeIsBrowsableSelector,\n treeTotalCountSelector,\n} from \"./treeReducer\";\nimport {\n docsItemUriSelector,\n docsStatusSelector,\n docsPageNumSelector,\n docsErrorSelector,\n docsColsSelector,\n docsRowsSelector,\n docsTotalCountSelector,\n docsFiltersSelector,\n docsSortsSelector,\n docsFilterTextSelector,\n} from \"./docsReducer\";\nimport {\n thumbnailStatusSelector,\n thumbnailResultSelector,\n} from \"./thumbnailsReducer\";\nimport {\n docsLayoutStatusSelector,\n docsLayoutFiltersSelector,\n docsLayoutSortsSelector,\n} from \"./docsLayoutReducer\";\nimport { cardsStatusSelector, cardsCardsSelector } from \"./cardsReducer\";\nimport {\n workflowStatusSelector,\n workflowProvidersSelector,\n workflowCardsSelector,\n workflowPendingCountSelector,\n} from \"./workflowReducer\";\nimport {\n breadcrumbIsFavSelector,\n breadcrumbItemUriSelector,\n breadcrumbNameSelector,\n breadcrumbLevelsCountSelector,\n breadcrumbVersionSelector,\n breadcrumbFormatIdSelector,\n breadcrumbSiteTypeSelector,\n} from \"./breadcrumbReducer\";\nimport {\n currentStatusSelector,\n currentItemUriSelector,\n currentNameSelector,\n} from \"./currentItemReducer\";\nimport {\n sidebarMiniSelector,\n docListViewModeSelector,\n settingValueSelector,\n} from \"./settingsReducer\";\nimport {\n formDetailViewSelector,\n formLastChangeSelector,\n formAuditLogSelector,\n formGridRowIndexSelector,\n formGridRowSeqIdSelector,\n formDefaultsSelector,\n formIsEditModeSelector,\n formTabIndexSelector,\n} from \"./formReducer\";\nimport {\n selectedTogglesSelector,\n togglesPersistedSelector,\n} from \"./togglesReducer\";\nimport { panesViewSelector } from \"./panesReducer\";\nimport { globalSearchOptionsSelector } from \"./globalSearchReducer\";\nimport {\n searchStatusSelector,\n searchErrorSelector,\n searchResultSelector,\n searchResultTotalCountSelector,\n searchRequestSelector,\n searchTermsSelector,\n searchItemSelector,\n searchFormStatusSelector,\n searchFormChangesSelector,\n searchFormResultSelector,\n searchFormIdSelector,\n searchFormValidationSelector,\n searchCountStatusSelector,\n searchCountResultSelector,\n searchCountAggregationsSelector,\n} from \"./searchReducer\";\nimport {\n searchFormListStatusSelector,\n searchFormListResultSelector,\n searchFormListCountSelector,\n} from \"./searchFormsReducer\";\nimport {\n offlineSyncStatusSelector,\n offlineItemsSelector,\n offlineItemDepsMapSelector,\n} from \"./offlineReducer\";\nimport { globalEventsSelector } from \"./globalEventsReducer\";\nimport {\n isOnlineSelector,\n isApiOnlineSelector,\n isNavigatorOnlineSelector,\n hasDetectedNetworkStatusSelector,\n hasBeenOnlineSelector,\n} from \"./networkSelectors\";\nimport {\n isSwInitializedSelector,\n isSwFailedSelector,\n isSwUpdatedSelector,\n swRegistrationSelector,\n} from \"./serviceWorkerReducer\";\n\nimport { notificationSelector } from \"./notificationReducer\";\n\nimport {\n commandActionRequestSelector,\n commandActionRequestItemSelector,\n} from \"./commandActionReducer\";\n\nexport const itemUriSelector = (props: Object & { location: Location }) => {\n const uri = queryString.parse(props.location.search).uri;\n return uri == null ? null : `pam-item://${uri}`;\n};\n\n// export const urlParamSelector = (\n// paramName: string,\n// props: Object & { location: Location }\n// ) => queryString.parse(props.location.search)[paramName];\n\nexport {\n isOnlineSelector,\n isApiOnlineSelector,\n isNavigatorOnlineSelector,\n hasDetectedNetworkStatusSelector,\n hasBeenOnlineSelector,\n favoritesStatusSelector,\n favoritesFavoritesSelector,\n userIdSelector,\n userNameSelector,\n userStatusSelector,\n userSitesSelector,\n userMainNavigationSelector,\n userLanguageSelector,\n userCorrelationIdSelector,\n userDecimalSeparator,\n userThousandSeparator,\n userItemActionsSelector,\n userFormActionsSelector,\n userHasOfflineItemsSelector,\n userIsWfEnabledSelector,\n userIsAdminSelector,\n userTopbarItemsSelector,\n loginStatusSelector,\n loginIdTokenSelector,\n loginAccessTokenSelector,\n loginRefreshTokenSelector,\n loginExpiresOnSelector,\n loginExpiresInSelector,\n treeStatusSelector,\n treeErrorSelector,\n treeNodesSelector,\n treeIsRootSelector,\n treeIsBrowsableSelector,\n treeTotalCountSelector,\n docsItemUriSelector,\n docsStatusSelector,\n docsPageNumSelector,\n docsErrorSelector,\n docsColsSelector,\n docsRowsSelector,\n docsTotalCountSelector,\n docsFiltersSelector,\n docsSortsSelector,\n thumbnailStatusSelector,\n thumbnailResultSelector,\n docsFilterTextSelector,\n docsLayoutStatusSelector,\n docsLayoutFiltersSelector,\n docsLayoutSortsSelector,\n cardsStatusSelector,\n cardsCardsSelector,\n workflowStatusSelector,\n workflowProvidersSelector,\n workflowCardsSelector,\n workflowPendingCountSelector,\n breadcrumbIsFavSelector,\n breadcrumbItemUriSelector,\n breadcrumbNameSelector,\n breadcrumbLevelsCountSelector,\n breadcrumbVersionSelector,\n breadcrumbFormatIdSelector,\n breadcrumbSiteTypeSelector,\n currentStatusSelector,\n currentItemUriSelector,\n currentNameSelector,\n sidebarMiniSelector,\n docListViewModeSelector,\n settingValueSelector,\n formDetailViewSelector,\n formLastChangeSelector,\n formAuditLogSelector,\n formGridRowIndexSelector,\n formGridRowSeqIdSelector,\n formDefaultsSelector,\n formIsEditModeSelector,\n formTabIndexSelector,\n selectedTogglesSelector,\n togglesPersistedSelector,\n panesViewSelector,\n globalSearchOptionsSelector,\n searchStatusSelector,\n searchErrorSelector,\n searchResultSelector,\n searchResultTotalCountSelector,\n searchRequestSelector,\n searchTermsSelector,\n searchItemSelector,\n searchCountStatusSelector,\n searchCountResultSelector,\n searchCountAggregationsSelector,\n searchFormStatusSelector,\n searchFormResultSelector,\n searchFormIdSelector,\n searchFormChangesSelector,\n searchFormListStatusSelector,\n searchFormListResultSelector,\n searchFormListCountSelector,\n searchFormValidationSelector,\n globalEventsSelector,\n offlineSyncStatusSelector,\n offlineItemsSelector,\n offlineItemDepsMapSelector,\n isSwInitializedSelector,\n isSwFailedSelector,\n isSwUpdatedSelector,\n swRegistrationSelector,\n notificationSelector,\n commandActionRequestSelector,\n commandActionRequestItemSelector,\n};\n","import ApiManager from \"data/ApiManagerBase\";\nimport { offlineQueueStorage, getAllItems } from \"data/storage\";\nimport { toastActionResult, dismissToast, toastId } from \"data/toast\";\nimport { sleep } from \"data/utils\";\nimport { JL } from \"data/logging\";\nimport { openConflictModal } from \"components/ConflictModal\";\nimport { produce } from \"immer\";\nimport { OfflineQueueItem, OfflineQueueItemType } from \"data/types\";\n// import uppy from \"data/uppy\";\n\nconst _log = JL(\"offlineQueue\");\nconst UPDATE_CONFLICT_EVENTID = 1201;\n\nexport /**\n * Add an ApiCatalog call to the offlineQueue\n * @param {string} name ApiCatalog.name\n * @param {*} params parameters to pass to ApiManager.call\n * @returns {Promise}\n */\nconst addToOfflineQueue = ({\n key,\n type,\n name,\n params,\n}: {\n key?: string,\n type: OfflineQueueItemTypeEnum,\n name: string,\n params: any,\n}): Promise => {\n let dbKey = key;\n if (dbKey == null) {\n dbKey = String(Date.now());\n if (params && params.hasOwnProperty(\"itemUri\")) {\n dbKey = params.itemUri + \"_\" + dbKey;\n }\n }\n return offlineQueueStorage.setItem(dbKey, {\n type,\n name,\n params,\n });\n};\n\nexport const anyPendingChanges = (keyPrefix: string): Promise =>\n // TODO review anyPendingChanges for exact or startsWith itemUri?\n offlineQueueStorage\n .keysStartingWith(keyPrefix)\n .then((result) => result.length > 0);\n\n/**\n * Works through the offlineQueue and retries the ApiCatalog calls\n */\nexport async function replayOfflineQueue(): Promise {\n const count = await offlineQueueStorage.length();\n if (count === 0) return;\n _log.debug(() => ({\n msg: `Found ${count} pending items in offlineQueue`,\n }));\n\n const api = new ApiManager();\n let isError = false;\n const allItems = await getAllItems(offlineQueueStorage);\n for (const item of allItems) {\n const offlineQueueItem = item.value;\n _log.debug(() => ({\n msg: `Syncing \"${item.key}\" from offlineQueue`,\n api: offlineQueueItem,\n }));\n let success = false;\n switch (offlineQueueItem.type) {\n case OfflineQueueItemType.ApiCall:\n success = await _replayApiCall(api, item.key, offlineQueueItem);\n break;\n case OfflineQueueItemType.UppyFile:\n success = await _replayUppyUpload(item.key, offlineQueueItem);\n break;\n /* istanbul ignore next */\n default:\n _log.warn(() => ({\n msg: \"Unknown OfflineQueueItemType\",\n offlineQueueItem,\n }));\n break;\n }\n\n if (!success) isError = true;\n }\n\n dismissToast(toastId.NetworkStatus);\n toastActionResult(!isError, \"common:offline.synced\");\n}\n\n// returns true for success\nasync function _replayApiCall(\n api: ApiManager,\n key: string,\n queueItem: OfflineQueueItem\n): Promise {\n let qi = produce(queueItem, (draft) => draft);\n\n // #55386 simple retrial policy\n for (let i = 0; i < 5; i++) {\n try {\n await api.call(qi.name, {\n params: qi.params,\n });\n await offlineQueueStorage.removeItem(key);\n return true;\n } catch (error) {\n // eslint-disable-next-line no-loop-func\n _log.error(() => ({\n msg: `Error while syncing \"${key}\" offline queue`,\n api: qi,\n error,\n }));\n qi = produce(qi, (draft) => {\n draft.retries = (draft.retries || 0) + 1;\n draft.error = error.data || error.message;\n });\n await offlineQueueStorage.setItem(key, qi);\n\n // #55376 conflict management\n if (\n error.data != null &&\n error.data.eventId === UPDATE_CONFLICT_EVENTID &&\n error.data.extra &&\n error.data.extra.name != null\n ) {\n qi = await _handleConflict(error, key, qi);\n if (qi == null) return true;\n }\n await sleep(3000);\n }\n }\n\n return false;\n}\n\n// returns true to try again\nasync function _handleConflict(\n error,\n key: string,\n offlineQueueItem: OfflineQueueItem\n): Promise {\n const doOverwrite = await openConflictModal(error.data.extra.name);\n if (doOverwrite) {\n const qi = produce(offlineQueueItem, (draft) => {\n // we blindly set the etag, reset counter try again\n draft.params[\"etag\"] = error.data.extra.currentEtag;\n draft.retries = 0;\n draft.error = null;\n });\n // update and immediately continue and retry (shorten concurrency window)\n await offlineQueueStorage.setItem(key, qi);\n return qi;\n } else {\n await offlineQueueStorage.removeItem(key);\n return null;\n }\n}\n\n// returns true for success\nasync function _replayUppyUpload(\n key: string,\n offlineQueueItem: OfflineQueueItem\n): Promise {\n try {\n const uppy = (await import(\"data/uppy\")).default;\n uppy.addFile(offlineQueueItem.params);\n const result = await uppy.retryUpload(offlineQueueItem.params.id);\n if (result && result.failed && result.failed.length === 0) {\n await offlineQueueStorage.removeItem(key);\n uppy.cancelAll();\n return true;\n } else {\n throw new Error(\"Uppy upload failed\");\n }\n } catch (error) {\n _log.error(() => ({\n msg: \"While replaying uppy file upload\",\n error,\n offlineQueueItem,\n }));\n const qi = produce(offlineQueueItem, (draft) => {\n draft.retries = (draft.retries || 0) + 1;\n draft.error = error.data || error.message;\n });\n await offlineQueueStorage.setItem(key, qi);\n }\n return false;\n}\n","import { fetchForm } from \"data/api\";\n\nconst stringForFormTokens = (uri: string): string =>\n uri.replaceAll(\"{ea.\", \"{ea_\").replaceAll(\"{ip.\", \"{ip_\"); // hack since tokenize does not support sub-objects\n\nconst parseFieldsOrAttributes = (\n fields,\n shouldURIEncode = false,\n prefix = \"ea_\"\n) => {\n const rawValues = {};\n if (fields && fields.length > 0) {\n fields.forEach(\n (field) => (rawValues[prefix + field.name] = field.value)\n );\n }\n /* istanbul ignore else */\n if (shouldURIEncode) {\n Object.keys(rawValues).forEach((key) => {\n const value = rawValues[key];\n rawValues[key] = Array.isArray(value)\n ? value.map((value) =>\n encodeURIComponent(value?.K ?? value?.V ?? value)\n )\n : encodeURIComponent(value?.K ?? value?.V ?? value);\n });\n }\n return rawValues;\n};\n\nconst withFormTokens = async (\n context: any,\n otherContext: any = {},\n shouldURIEncode = false\n) => {\n try {\n if (context.itemUri) {\n const form = await fetchForm(context.itemUri);\n const rawValues = {\n ...parseFieldsOrAttributes(form.fields, shouldURIEncode, \"ip_\"),\n ...parseFieldsOrAttributes(\n form.attributes,\n shouldURIEncode,\n \"ea_\"\n ),\n };\n return Object.assign(otherContext, rawValues);\n }\n } catch (e) {\n console.error(\"Error while withFormTokens\", e);\n }\n return otherContext;\n};\n\nexport { stringForFormTokens, withFormTokens, parseFieldsOrAttributes };\n","// @flow\nimport React, { useMemo } from \"react\";\nimport { connect } from \"react-redux\";\nimport FormsyEditorBase from \"./FormsyEditorBase\";\nimport MaskedInput from \"@hs/masked-input\";\nimport * as s from \"data/reducers/selectors\";\nimport { getClassNames } from \"data/utils\";\nimport IMask from \"imask\";\nimport loc from \"i18next\";\n\ntype Props = {\n /** precision - how many digits */\n decimalScale: number,\n /** currency identifier */\n currency?: string,\n /** localization setting for Thousands separator */\n thousandSeparator: string,\n /** localization setting for Decimal separator */\n decimalSeparator: string,\n /** whether field is readonly (disabled) */\n isReadonly: boolean,\n /** whether field is required (validation) */\n isRequired: boolean,\n /** placeholder text to display when @see {value} is empty */\n placeholder?: string,\n /** CSS Style to apply */\n style?: Object,\n /** CSS Classname to apply */\n className?: string,\n /** whether to truncate the trailing zeros at the end of decimal numbers */\n truncateZeros?: boolean,\n};\n\nconst IMaskNumberDefault = ({\n decimalScale,\n thousandSeparator,\n decimalSeparator,\n truncateZeros = false,\n}) => {\n const props = {\n mask: Number,\n scale: decimalScale,\n signed: false,\n normalizeZeros: true,\n thousandsSeparator: thousandSeparator,\n padFractionalZeros: false,\n radix: \"\\u200B\", //HACK: Use zero-width space as commaseparator to enforce integer\n mapToRadix: [],\n };\n if (decimalScale > 0) {\n // only set this to false in case of EA fields and searchfields\n props.padFractionalZeros = !truncateZeros;\n props.radix = decimalSeparator;\n props.mapToRadix = [decimalSeparator];\n }\n return props;\n};\n\nconst IMaskCurrencyDefault = ({ currency, ...numberProps }) => ({\n mask: `${currency} num`,\n blocks: {\n num: { ...IMaskNumberDefault(numberProps) },\n },\n});\n\nexport const NumberEditorControl = ({\n mask,\n currency,\n decimalScale,\n thousandSeparator,\n decimalSeparator,\n truncateZeros,\n ...props\n}: Props) => {\n const maskProps = useMemo(() => {\n if (mask) {\n if (String(mask).startsWith(\"{\")) {\n return JSON.parse(mask, function (key, value) {\n if (value === \"Number\") return Number;\n return value;\n });\n }\n return { mask };\n }\n if (currency) {\n return IMaskCurrencyDefault({\n currency,\n decimalScale,\n thousandSeparator,\n decimalSeparator,\n truncateZeros,\n });\n }\n return IMaskNumberDefault({\n decimalScale,\n thousandSeparator,\n decimalSeparator,\n truncateZeros,\n });\n }, [\n mask,\n currency,\n decimalScale,\n thousandSeparator,\n decimalSeparator,\n truncateZeros,\n ]);\n\n const placeholder = useMemo(() => {\n // if there's a placeholder, use it...\n if (props.placeholder) return props.placeholder;\n\n // ...if the mask is a string, use it...\n if (!String(mask).startsWith(\"{\")) return mask;\n\n // ...otherwise, use the mask's name if it has one\n return maskProps?.mask?.name || \"\";\n }, [maskProps, props.placeholder, mask]);\n\n return (\n (\n \n )}\n {...props}\n validations={{\n ...props.validations,\n notEmptyMask: /*istanbul ignore next*/ (values, value) => {\n if (!props.isRequired) return true;\n const rawValue = IMask.pipe(\n value ?? \"\",\n {\n ...maskProps,\n definitions: {\n \"#\": /[0-9]/,\n \"&\": /./,\n A: /[0-9a-zA-Z]/,\n a: /[0-9a-zA-Z]/,\n 9: /[0-9]/,\n C: /./,\n \"?\": /./,\n n: /[0-9]/,\n },\n },\n IMask.PIPE_TYPE.MASKED,\n IMask.PIPE_TYPE.UNMASKED\n );\n return String(rawValue) !== \"\";\n },\n }}\n validationErrors={{\n ...props.validationErrors,\n notEmptyMask: loc.t(\"common:validation.required\"),\n }}\n />\n );\n};\n\nconst mapStateToProps = /* istanbul ignore next */ (state, ownProps) => ({\n thousandSeparator: s.userThousandSeparator(state),\n decimalSeparator: s.userDecimalSeparator(state),\n ...ownProps,\n});\n\nexport default connect(mapStateToProps)(NumberEditorControl);\n","import { isListed } from \"data/utils\";\r\nimport {\r\n type ItemActionConfigBase,\r\n type ItemActionsConfigDTO,\r\n} from \"data/types\";\r\nimport { shouldBeVisible } from \"./ShouldBeVisible\";\r\nimport store from \"data/store\";\r\nimport * as s from \"data/reducers/selectors\";\r\nimport { getItemActionsConfig } from \"data/itemActions\";\r\nimport { getDefaultsConfig } from \"data/constants\";\r\nimport unionBy from \"lodash/unionBy\";\r\nimport cloneDeep from \"lodash/cloneDeep\";\r\n\r\nexport /**\r\n * returns true if item (itemAction or category) should be shown to the user\r\n *\r\n * @param {ItemActionConfigBase} item action or category to render\r\n * @param {string} itemUri current item\r\n * @param {number} formatId current formatId\r\n * @param {Object} contextProps current contextProps\r\n * @param {string} [targetView] override view context (from store)\r\n * @returns {boolean} true if should render, false to hide\r\n */\r\nconst shouldRenderItem = async (\r\n item: ItemActionConfigBase,\r\n itemUri: string,\r\n formatId: number,\r\n contextProps: Object,\r\n targetView: ?string\r\n): Promise => {\r\n if (contextProps == null) return false;\r\n if (item.visible === false) return false;\r\n if (\r\n item.views &&\r\n !check_isView({\r\n views: item.views,\r\n targetView,\r\n })\r\n )\r\n return false;\r\n if (\r\n item.itemUriRegex &&\r\n !check_itemUriRegex({\r\n itemUri,\r\n itemUriRegex: item.itemUriRegex,\r\n })\r\n )\r\n return false;\r\n if (\r\n item.formatIds &&\r\n !check_formatId({\r\n formatId,\r\n formatIds: item.formatIds,\r\n })\r\n )\r\n return false;\r\n\r\n // Add backwards compatibility\r\n const backwardsCompatibleShouldBeVisible = (\r\n item.shouldBeVisible ?? [\r\n \"!isRecycleBin\",\r\n \"!isSpecialFolder\",\r\n \"!isMultiSelection\",\r\n \"isOnline\",\r\n \"!isError\",\r\n ]\r\n ).slice();\r\n\r\n // hide everything from recyclebin\r\n if (\r\n !backwardsCompatibleShouldBeVisible.some((rule) =>\r\n rule.endsWith(\"isRecycleBin\")\r\n )\r\n ) {\r\n backwardsCompatibleShouldBeVisible.push(\"!isRecycleBin\");\r\n }\r\n // hide everything from special folder\r\n if (\r\n !contextProps.multiple &&\r\n !backwardsCompatibleShouldBeVisible.some((rule) =>\r\n rule.endsWith(\"isSpecialFolder\")\r\n )\r\n ) {\r\n backwardsCompatibleShouldBeVisible.push(\"!isSpecialFolder\");\r\n }\r\n // hide everything on multi selection\r\n if (\r\n !backwardsCompatibleShouldBeVisible.some(\r\n (rule) =>\r\n rule.endsWith(\"isMultiSelection\") ||\r\n rule.endsWith(\"isAnySelection\")\r\n )\r\n ) {\r\n backwardsCompatibleShouldBeVisible.push(\"!isMultiSelection\");\r\n }\r\n // hide everything offline...\r\n if (\r\n !backwardsCompatibleShouldBeVisible.some(\r\n (rule) =>\r\n rule.endsWith(\"isOnline\") || rule.endsWith(\"isAnyOnlineStatus\")\r\n )\r\n ) {\r\n backwardsCompatibleShouldBeVisible.push(\"isOnline\");\r\n }\r\n\r\n // hide everything with error\r\n if (\r\n !backwardsCompatibleShouldBeVisible.some(\r\n (rule) =>\r\n rule.endsWith(\"isError\") || rule.endsWith(\"isAnyErrorState\")\r\n )\r\n ) {\r\n backwardsCompatibleShouldBeVisible.push(\"!isError\");\r\n }\r\n\r\n // apply shouldBeVisible\r\n return (\r\n shouldBeVisible({\r\n item: {\r\n ...item,\r\n shouldBeVisible: backwardsCompatibleShouldBeVisible,\r\n },\r\n itemUri,\r\n contextProps,\r\n }) === true\r\n );\r\n};\r\n\r\nexport /**\r\n * checks if view is (not) included in list (case-insensitive)\r\n * negate with \"!\" as prefix\r\n *\r\n * @param {{Array}} views to search\r\n * @param {{?string}} targetView to (not) search for in views\r\n * @returns {boolean} true if match found\r\n */\r\nconst check_isView = ({\r\n views,\r\n targetView,\r\n}: {\r\n views: Array,\r\n targetView: ?string,\r\n}) => {\r\n if (views.length === 0) return false;\r\n const targetViewOrCurrent = targetView\r\n ? targetView\r\n : s.currentNameSelector(store.getState());\r\n const negatedViews = views\r\n .filter((l) => l.startsWith(\"!\"))\r\n .map((l) => l.substr(1));\r\n const defaultViews = views.filter((l) => !l.startsWith(\"!\"));\r\n return (\r\n (negatedViews.length === 0 ||\r\n !isListed(targetViewOrCurrent, negatedViews)) &&\r\n (defaultViews.length === 0 ||\r\n isListed(targetViewOrCurrent, defaultViews))\r\n );\r\n};\r\n\r\nexport /**\r\n * checks if itemUri matches the itemUriRegex regular expression\r\n * @returns {boolean} true if match found\r\n */\r\nconst check_itemUriRegex = ({\r\n itemUri,\r\n itemUriRegex,\r\n}: {\r\n itemUri: string,\r\n itemUriRegex: string,\r\n}) => new RegExp(itemUriRegex, \"i\").exec(itemUri) !== null;\r\n\r\nexport /**\r\n * checks if formatId is included in the formatIds list\r\n * @returns {boolean} true if included\r\n */\r\nconst check_formatId = ({\r\n formatId,\r\n formatIds,\r\n}: {\r\n formatId: number,\r\n formatIds: Array,\r\n}) => formatIds.includes(formatId);\r\n\r\nexport const mergePartialConfig = (userActions, sysActions) => {\r\n let result = cloneDeep(userActions);\r\n if (result)\r\n result.forEach((userAction) => {\r\n // is the userAction trying to override an existing system action (by id)?\r\n const sysIndex = sysActions.findIndex(\r\n (sa) => sa.id === userAction.id\r\n );\r\n if (sysIndex !== -1) {\r\n const sysAction = sysActions[sysIndex];\r\n // merge properties (in case user missed/does not want to specify any)\r\n Object.keys(sysAction).forEach((key) => {\r\n userAction[key] = userAction[key] || sysAction[key];\r\n });\r\n }\r\n });\r\n return result;\r\n};\r\n\r\n/** merges our data/itemActions.js with customer defined actions from appsettings.json */\r\nexport const mergeItemActionsConfig = (\r\n itemUri: string,\r\n formatId: number\r\n): ItemActionsConfigDTO => {\r\n // get itemActions as defined in appsettings.json (after being checked for security for this user)\r\n const userActions = cloneDeep(s.userItemActionsSelector(store.getState()));\r\n const itemActions = cloneDeep(getItemActionsConfig());\r\n\r\n // get itemUri specific itemActions\r\n const defaults = getDefaultsConfig(itemUri, formatId);\r\n if (defaults && defaults.itemActions) {\r\n if (defaults.itemActions.replace === true) {\r\n return {\r\n actions:\r\n mergePartialConfig(\r\n defaults.itemActions.actions,\r\n itemActions.actions\r\n ) || [],\r\n categories:\r\n defaults.itemActions.categories || itemActions.categories, // use our system categories in case they are not specified\r\n };\r\n } else {\r\n return {\r\n actions: unionBy(\r\n defaults.itemActions.actions,\r\n userActions.actions,\r\n itemActions.actions,\r\n \"id\"\r\n ),\r\n categories: unionBy(\r\n defaults.itemActions.categories,\r\n userActions.categories,\r\n itemActions.categories,\r\n \"id\"\r\n ),\r\n };\r\n }\r\n } else {\r\n return {\r\n actions: unionBy(userActions.actions, itemActions.actions, \"id\"),\r\n categories: unionBy(\r\n userActions.categories,\r\n itemActions.categories,\r\n \"id\"\r\n ),\r\n };\r\n }\r\n};\r\n","// @flow\r\nimport { type ItemActionsConfigDTO, ItemLinkType } from \"data/types\";\r\n\r\n// this file defines all the system pre-defined actionPanel commandActions available\r\n/* istanbul ignore next */\r\nexport const getItemActionsConfig = (): ItemActionsConfigDTO => ({\r\n categories: [\r\n {\r\n id: \"filter\",\r\n name: \"$actionCategory:filter.name\",\r\n icon: \"filter\",\r\n shouldBeVisible: [\r\n \"isAnyOnlineStatus\",\r\n \"isAnySelection\",\r\n \"isAnyErrorState\",\r\n \"hasRowAndColId\",\r\n ],\r\n order: 10,\r\n },\r\n {\r\n id: \"multiSelection\",\r\n name: \"$multiselection:name\",\r\n icon: \"list-check\",\r\n shouldBeVisible: [\r\n \"isAnyOnlineStatus\",\r\n \"isAnySelection\",\r\n \"isAnyErrorState\",\r\n \"hasContext:multiSelection\",\r\n ],\r\n order: 20,\r\n },\r\n {\r\n id: \"folder\",\r\n name: \"$actionCategory:folder.name\",\r\n icon: \"fa-regular fa-folder\",\r\n shouldBeVisible: [\r\n \"isFolder\",\r\n \"isAnyOnlineStatus\",\r\n \"isAnySelection\",\r\n \"isAnyErrorState\",\r\n ],\r\n order: 40,\r\n },\r\n {\r\n id: \"doc\",\r\n name: \"$actionCategory:doc.name\",\r\n icon: \"fa-regular fa-file-lines\",\r\n shouldBeVisible: [\r\n \"isDoc\",\r\n \"isAnyOnlineStatus\",\r\n \"isAnySelection\",\r\n \"isAnyErrorState\",\r\n ],\r\n order: 50,\r\n },\r\n {\r\n id: \"search\",\r\n name: \"$actionCategory:search.name\",\r\n icon: \"fa-regular fa-magnifying-glass\",\r\n shouldBeVisible: [\r\n \"hasContext:searchRequest\",\r\n \"isAnyOnlineStatus\",\r\n \"isAnySelection\",\r\n \"isAnyErrorState\",\r\n ],\r\n order: 60,\r\n },\r\n {\r\n id: \"wf\",\r\n name: \"$actionCategory:wf.name\",\r\n icon: \"fa-regular fa-square-check\",\r\n shouldBeVisible: [\r\n \"!hasContext:isFlatAU\",\r\n \"isWorkflowEnabled\",\r\n \"!hasContext:searchRequest\",\r\n \"isAnyErrorState\",\r\n ],\r\n order: 70,\r\n },\r\n {\r\n id: \"reminder\",\r\n name: \"$actionCategory:reminder.name\",\r\n icon: \"fa-regular fa-clock\",\r\n order: 80,\r\n },\r\n {\r\n id: \"history\",\r\n name: \"Activities\",\r\n expanded: true,\r\n shouldBeVisible: [\r\n \"hasContext:workflow\",\r\n \"isAnyOnlineStatus\",\r\n \"isAnyErrorState\",\r\n ],\r\n order: 90,\r\n },\r\n {\r\n id: \"sync\",\r\n name: \"$actionCategory:sync.name\",\r\n icon: \"arrow-up-right-from-square\",\r\n shouldBeVisible: [\r\n \"isSyncEnabled\",\r\n \"isAnySelection\",\r\n \"isAnyErrorState\",\r\n ],\r\n order: 100,\r\n },\r\n {\r\n id: \"clipboard\",\r\n name: \"$actionCategory:clipboard.name\",\r\n icon: \"fa-regular fa-clipboard\",\r\n shouldBeVisible: [\r\n \"isValidItemUri\",\r\n \"isAnyOnlineStatus\",\r\n \"isAnyErrorState\",\r\n ],\r\n order: 110,\r\n },\r\n {\r\n name: \"$actionCategory:others.name\",\r\n shouldBeVisible: [\"isAnyOnlineStatus\", \"isAnyErrorState\"],\r\n order: 120,\r\n },\r\n {\r\n id: \"recyclebin\",\r\n name: \"$actionCategory:recyclebin\",\r\n icon: \"trash-can\",\r\n shouldBeVisible: [\r\n \"isAnySelection\",\r\n \"isRecycleBin\",\r\n \"isAnyErrorState\",\r\n ],\r\n order: 130,\r\n },\r\n {\r\n id: \"offline\",\r\n name: \"$actionCategory:offline\",\r\n shouldBeVisible: [\r\n \"hasFeature:offline\",\r\n \"isAnySelection\",\r\n \"isAnyOnlineStatus\",\r\n \"isAnyErrorState\",\r\n ],\r\n order: 140,\r\n },\r\n ],\r\n actions: [\r\n {\r\n id: \"folder_activities\",\r\n category: \"history\",\r\n views: [\"home\", \"wf\"],\r\n shouldBeVisible: [\"isFolder\", \"isValidItemUri\"],\r\n commandAction: {\r\n name: \"folder_preview\",\r\n },\r\n view: {\r\n name: \"itemView_activityList\",\r\n isDoc: false,\r\n showAddNote: false,\r\n showHistory: false,\r\n showNotes: true,\r\n showRetentionInfo: false,\r\n },\r\n },\r\n {\r\n id: \"doc_activities\",\r\n category: \"history\",\r\n shouldBeVisible: [\"isDoc\", \"isValidItemUri\"],\r\n views: [\"home\", \"wf\", \"news\"],\r\n commandAction: {\r\n name: \"doc_preview\",\r\n },\r\n view: {\r\n name: \"itemView_activityList\",\r\n isDoc: true,\r\n showAddNote: false,\r\n showHistory: true,\r\n showNotes: true,\r\n },\r\n },\r\n {\r\n id: \"doclist_exportCsv\",\r\n category: \"folder\",\r\n name: \"$itemActions:doclist_exportCsv.name\",\r\n icon: \"fa-regular fa-file-excel\",\r\n views: [\"flat\", \"folder\", \"miniflat\"],\r\n commandAction: { name: \"doclist_exportCsv\" },\r\n },\r\n {\r\n id: \"doclist_filters\",\r\n category: \"filter\",\r\n views: [\"flat\", \"folder\", \"miniflat\", \"mailbox\"],\r\n view: {\r\n name: \"itemView_filter\",\r\n actions: [\r\n \"filterByValue\",\r\n \"filterAddValue\",\r\n \"filterRemove\",\r\n \"reset\",\r\n ],\r\n },\r\n shouldBeVisible: [\"hasRowAndColId\"],\r\n commandAction: {}, //HACK: persist props to itemView\r\n },\r\n {\r\n id: \"doc_preview\",\r\n category: \"doc\",\r\n name: \"$itemActions:doc_preview.name\",\r\n icon: \"eye\",\r\n views: [\r\n \"flat\",\r\n \"folder\",\r\n \"searchresult\",\r\n \"news\",\r\n \"home\",\r\n \"wf\",\r\n \"offline_item\",\r\n ],\r\n shouldBeVisible: [\"isAnyOnlineStatus\"],\r\n commandAction: {\r\n name: \"doc_preview\",\r\n },\r\n },\r\n {\r\n id: \"doc_popout\",\r\n category: \"doc\",\r\n name: \"$itemActions:doc_popout.name\",\r\n icon: \"arrow-up-right-from-square\",\r\n views: [\r\n \"flat\",\r\n \"folder\",\r\n \"searchresult\",\r\n \"docmodal\",\r\n \"mailbox\",\r\n \"news\",\r\n \"home\",\r\n \"wf\",\r\n \"offline_item\",\r\n ],\r\n shouldBeVisible: [\"isAnyOnlineStatus\"],\r\n commandAction: {\r\n name: \"doc_preview\",\r\n props: {\r\n newWindow: true,\r\n },\r\n },\r\n },\r\n {\r\n id: \"doc_print\",\r\n category: \"doc\",\r\n name: \"$itemActions:doc_print.name\",\r\n icon: \"print\",\r\n views: [\"doc\", \"docmodal\"],\r\n shouldBeVisible: [\"isAnyOnlineStatus\", \"isAnyPdf\"],\r\n commandAction: {\r\n name: \"doc_print\",\r\n },\r\n },\r\n {\r\n id: \"doc_printAny\",\r\n category: \"doc\",\r\n name: \"$itemActions:doc_print.name\",\r\n icon: \"print\",\r\n views: [\"doc\", \"docmodal\"],\r\n shouldBeVisible: [\"isAnyOnlineStatus\", \"!isAnyPdf\"],\r\n commandAction: {\r\n name: \"doc_printMultiple\",\r\n },\r\n },\r\n {\r\n id: \"doc_printMultiple\",\r\n category: \"doc\",\r\n name: \"$itemActions:doc_print.name\",\r\n icon: \"print\",\r\n views: [\r\n \"flat\",\r\n \"folder\",\r\n \"mailbox\",\r\n \"searchresult\",\r\n \"home\",\r\n \"news\",\r\n ],\r\n shouldBeVisible: [\"isAnySelection\", \"isAnyOnlineStatus\"],\r\n commandAction: {\r\n name: \"doc_printMultiple\",\r\n },\r\n },\r\n {\r\n id: \"doc_lock\",\r\n category: \"doc\",\r\n name: \"$itemActions:doc_lock.name\",\r\n icon: \"lock\",\r\n views: [\"flat\", \"folder\", \"searchresult\", \"docmodal\", \"document\"],\r\n shouldBeVisible: [\r\n \"!hasItemStatus:Locked\",\r\n \"hasContext:isDocEditAllowed\",\r\n \"isAnySelection\",\r\n ],\r\n commandAction: {\r\n name: \"lock\",\r\n },\r\n },\r\n {\r\n id: \"doc_unlock\",\r\n category: \"doc\",\r\n name: \"$itemActions:doc_unlock.name\",\r\n icon: \"lock-open\",\r\n views: [\"flat\", \"folder\", \"searchresult\", \"docmodal\", \"document\"],\r\n shouldBeVisible: [\r\n \"hasItemStatus:Locked\",\r\n \"hasContext:isDocEditAllowed\",\r\n \"isAnySelection\",\r\n \"!hasContext:isLockedForUser\",\r\n ],\r\n commandAction: {\r\n name: \"unlock\",\r\n },\r\n },\r\n {\r\n id: \"folder_lock\",\r\n visible: false,\r\n category: \"folder\",\r\n name: \"$itemActions:folder_lock.name\",\r\n icon: \"lock\",\r\n views: [\"flat\", \"folder\", \"searchresult\", \"minipicker\"],\r\n shouldBeVisible: [\r\n \"!hasItemStatus:Locked\",\r\n \"hasContext:isEditAllowed\",\r\n \"isAnySelection\",\r\n ],\r\n commandAction: {\r\n name: \"lock\",\r\n },\r\n },\r\n {\r\n id: \"folder_unlock\",\r\n visible: false,\r\n category: \"folder\",\r\n name: \"$itemActions:folder_unlock.name\",\r\n icon: \"lock-open\",\r\n views: [\"flat\", \"folder\", \"searchresult\", \"minipicker\"],\r\n shouldBeVisible: [\r\n \"hasItemStatus:Locked\",\r\n \"hasContext:isEditAllowed\",\r\n \"isAnySelection\",\r\n ],\r\n commandAction: {\r\n name: \"unlock\",\r\n },\r\n },\r\n {\r\n id: \"folder_fav_add\",\r\n category: \"folder\",\r\n // name: \"Add as Favorite\",\r\n name: \"$itemActions:fav_add.name\",\r\n icon: \"fa-regular fa-star\",\r\n shouldBeVisible: [\r\n \"!isFav\",\r\n \"isValidItemUri\",\r\n \"isAnyOnlineStatus\",\r\n \"isAnySelection\",\r\n ],\r\n commandAction: {\r\n name: \"favorite\",\r\n props: {\r\n isFav: false,\r\n },\r\n },\r\n },\r\n {\r\n id: \"folder_fav_remove\",\r\n category: \"folder\",\r\n name: \"$itemActions:fav_remove.name\",\r\n // name: \"Remove from Favorites\",\r\n icon: \"star\",\r\n shouldBeVisible: [\r\n \"isFav\",\r\n \"isValidItemUri\",\r\n \"isAnyOnlineStatus\",\r\n \"isAnySelection\",\r\n \"isAnyErrorState\",\r\n ],\r\n commandAction: {\r\n name: \"favorite\",\r\n props: {\r\n isFav: true,\r\n },\r\n },\r\n },\r\n {\r\n id: \"doc_fav_add\",\r\n category: \"doc\",\r\n // name: \"Add as Favorite\",\r\n name: \"$itemActions:fav_add.name\",\r\n icon: \"fa-regular fa-star\",\r\n shouldBeVisible: [\r\n \"!isFav\",\r\n \"isValidItemUri\",\r\n \"isAnyOnlineStatus\",\r\n \"isAnySelection\",\r\n ],\r\n commandAction: {\r\n name: \"favorite\",\r\n props: {\r\n isFav: false,\r\n },\r\n },\r\n },\r\n {\r\n id: \"doc_fav_remove\",\r\n category: \"doc\",\r\n name: \"$itemActions:fav_remove.name\",\r\n // name: \"Remove from Favorites\",\r\n icon: \"star\",\r\n shouldBeVisible: [\r\n \"isFav\",\r\n \"isValidItemUri\",\r\n \"isAnyOnlineStatus\",\r\n \"isAnySelection\",\r\n \"isAnyErrorState\",\r\n ],\r\n commandAction: {\r\n name: \"favorite\",\r\n props: {\r\n isFav: true,\r\n },\r\n },\r\n },\r\n {\r\n id: \"doc_share_web\",\r\n category: \"doc\",\r\n name: \"$itemActions:share_web.name\",\r\n icon: \"share-nodes\",\r\n shouldBeVisible: [\r\n \"hasBrowser_webShareApi\",\r\n \"isValidItemUri\",\r\n \"!hasSiteType:SharedSites\",\r\n \"isAnyOnlineStatus\",\r\n ],\r\n commandAction: {\r\n name: \"share_web\",\r\n },\r\n },\r\n {\r\n id: \"folder_share_web\",\r\n category: \"folder\",\r\n name: \"$itemActions:share_web.name\",\r\n icon: \"share-nodes\",\r\n shouldBeVisible: [\r\n \"hasBrowser_webShareApi\",\r\n \"isValidItemUri\",\r\n \"!hasSiteType:SharedSites\",\r\n \"isAnyOnlineStatus\",\r\n ],\r\n commandAction: {\r\n name: \"share_web\",\r\n },\r\n },\r\n {\r\n id: \"doc_share\",\r\n category: \"doc\",\r\n name: \"$itemActions:share.name\",\r\n icon: \"share-nodes\",\r\n shouldBeVisible: [\r\n \"hasContext:canBeShared\",\r\n \"isValidItemUri\",\r\n \"isAnySelection\",\r\n ],\r\n commandAction: {\r\n name: \"share\",\r\n },\r\n },\r\n {\r\n id: \"folder_share\",\r\n category: \"folder\",\r\n name: \"$itemActions:share.name\",\r\n icon: \"share-nodes\",\r\n shouldBeVisible: [\r\n \"hasContext:canBeShared\",\r\n \"isValidItemUri\",\r\n \"isAnySelection\",\r\n ],\r\n commandAction: {\r\n name: \"share\",\r\n },\r\n },\r\n {\r\n id: \"folder_share_edit\",\r\n category: \"folder\",\r\n name: \"$itemActions:share_edit.name\",\r\n icon: \"square-share-nodes\",\r\n shouldBeVisible: [\r\n \"hasContext:canBeShared\",\r\n \"isValidItemUri\",\r\n \"hasItemStatus:Share\",\r\n ],\r\n commandAction: {\r\n name: \"share\",\r\n props: {\r\n isEdit: true,\r\n },\r\n },\r\n },\r\n {\r\n id: \"doc_share_edit\",\r\n category: \"doc\",\r\n name: \"$itemActions:share_edit.name\",\r\n icon: \"square-share-nodes\",\r\n shouldBeVisible: [\r\n \"hasContext:canBeShared\",\r\n \"isValidItemUri\",\r\n \"hasItemStatus:Share\",\r\n ],\r\n commandAction: {\r\n name: \"share\",\r\n props: {\r\n isEdit: true,\r\n },\r\n },\r\n },\r\n {\r\n id: \"search_favorite_add\",\r\n category: \"search\",\r\n // name: \"Add as Favorite\",\r\n name: \"$itemActions:fav_add.name\",\r\n icon: \"fa-regular fa-star\",\r\n shouldBeVisible: [\"!hasContext:isFav\"],\r\n commandAction: {\r\n name: \"search_favorite\",\r\n },\r\n },\r\n {\r\n id: \"search_favorite_remove\",\r\n category: \"search\",\r\n name: \"$itemActions:fav_remove.name\",\r\n // name: \"Remove from Favorites\",\r\n icon: \"star\",\r\n shouldBeVisible: [\"hasContext:isFav\"],\r\n commandAction: {\r\n name: \"search_favorite\",\r\n },\r\n },\r\n {\r\n id: \"search_preview\",\r\n category: \"search\",\r\n name: \"$itemActions:search_preview.name\",\r\n icon: \"eye\",\r\n views: [\"home\"],\r\n commandAction: {\r\n name: \"search_preview\",\r\n },\r\n },\r\n {\r\n id: \"search_popout\",\r\n category: \"search\",\r\n name: \"$itemActions:search_popout.name\",\r\n icon: \"arrow-up-right-from-square\",\r\n views: [\"home\"],\r\n shouldBeVisible: [\"hasContext:searchRequest\"],\r\n commandAction: {\r\n name: \"search_preview\",\r\n props: {\r\n newWindow: true,\r\n },\r\n },\r\n },\r\n {\r\n id: \"doc_subscribe\",\r\n category: \"doc\",\r\n name: \"$itemActions:subscribe.name\",\r\n icon: \"rss\",\r\n views: [\"flat\", \"folder\", \"searchresult\", \"docmodal\", \"document\"],\r\n shouldBeVisible: [\r\n \"isValidItemUri\",\r\n \"!hasContext:isFlatAU\",\r\n \"!hasItemStatus:Subscribed\",\r\n \"isAnyOnlineStatus\",\r\n \"isAnySelection\",\r\n ],\r\n commandAction: {\r\n name: \"subscribe\",\r\n },\r\n },\r\n {\r\n id: \"folder_subscribe\",\r\n category: \"folder\",\r\n name: \"$itemActions:subscribe.name\",\r\n icon: \"rss\",\r\n views: [\"flat\", \"folder\", \"searchresult\", \"minipicker\"],\r\n shouldBeVisible: [\r\n \"isValidItemUri\",\r\n \"!hasContext:isFlatAU\",\r\n \"!hasItemStatus:Subscribed\",\r\n \"isAnyOnlineStatus\",\r\n \"isAnySelection\",\r\n ],\r\n commandAction: {\r\n name: \"subscribe\",\r\n },\r\n },\r\n {\r\n id: \"doc_unsubscribe\",\r\n category: \"doc\",\r\n name: \"$itemActions:unsubscribe.name\",\r\n icon: \"rss\",\r\n views: [\r\n \"flat\",\r\n \"folder\",\r\n \"searchresult\",\r\n \"docmodal\",\r\n \"news\",\r\n \"document\",\r\n ],\r\n shouldBeVisible: [\r\n \"hasItemStatus:Subscribed\",\r\n \"isAnyOnlineStatus\",\r\n \"isAnySelection\",\r\n ],\r\n commandAction: {\r\n name: \"unsubscribe\",\r\n },\r\n },\r\n {\r\n id: \"folder_unsubscribe\",\r\n category: \"folder\",\r\n name: \"$itemActions:unsubscribe.name\",\r\n icon: \"rss\",\r\n views: [\"flat\", \"folder\", \"searchresult\", \"news\"],\r\n shouldBeVisible: [\r\n \"hasItemStatus:Subscribed\",\r\n \"isAnyOnlineStatus\",\r\n \"isAnySelection\",\r\n ],\r\n commandAction: {\r\n name: \"unsubscribe\",\r\n },\r\n },\r\n {\r\n id: \"folder_transfer\",\r\n category: \"folder\",\r\n name: \"$itemActions:transfer.name\",\r\n icon: \"arrow-right-arrow-left\",\r\n views: [\"flat\", \"folder\", \"searchresult\"],\r\n shouldBeVisible: [\"isValidItemUri\"],\r\n commandAction: {\r\n name: \"transfer\",\r\n },\r\n visible: false,\r\n },\r\n {\r\n id: \"folder_move\",\r\n category: \"folder\",\r\n name: \"$itemActions:transfer.move\",\r\n icon: \"arrow-right-arrow-left\",\r\n views: [\"folder\", \"searchresult\"],\r\n shouldBeVisible: [\r\n \"hasContext:isEditAllowed\",\r\n \"isValidItemUri\",\r\n \"!hasContext:isFlatAU\",\r\n \"isAnySelection\",\r\n ],\r\n commandAction: {\r\n name: \"transfer\",\r\n props: {\r\n type: \"move\",\r\n },\r\n },\r\n },\r\n {\r\n id: \"folder_link\",\r\n category: \"folder\",\r\n name: \"$itemActions:transfer.link\",\r\n icon: \"link\",\r\n views: [\"folder\", \"searchresult\"],\r\n shouldBeVisible: [\r\n \"isValidItemUri\",\r\n \"!hasContext:isFlatAU\",\r\n \"isAnySelection\",\r\n ],\r\n commandAction: {\r\n name: \"transfer\",\r\n props: {\r\n type: \"link\",\r\n },\r\n },\r\n },\r\n {\r\n id: \"doc_transfer\",\r\n category: \"doc\",\r\n name: \"$itemActions:transfer.name\",\r\n icon: \"arrow-right-arrow-left\",\r\n views: [\"flat\", \"folder\", \"searchresult\"],\r\n shouldBeVisible: [\"isValidItemUri\"],\r\n commandAction: {\r\n name: \"transfer\",\r\n },\r\n visible: false,\r\n },\r\n {\r\n id: \"doc_move\",\r\n category: \"doc\",\r\n name: \"$itemActions:transfer.move\",\r\n icon: \"arrow-right-arrow-left\",\r\n views: [\"folder\", \"searchresult\", \"docmodal\", \"document\"],\r\n shouldBeVisible: [\r\n \"hasContext:isDocEditAllowed\",\r\n \"isValidItemUri\",\r\n \"!hasContext:isFlatAU\",\r\n \"isAnySelection\",\r\n ],\r\n commandAction: {\r\n name: \"transfer\",\r\n props: {\r\n type: \"move\",\r\n },\r\n },\r\n },\r\n {\r\n id: \"doc_copy\",\r\n category: \"doc\",\r\n name: \"$itemActions:transfer.copy\",\r\n icon: \"fa-regular fa-files\",\r\n views: [\"folder\", \"searchresult\", \"docmodal\", \"document\"],\r\n shouldBeVisible: [\r\n \"isValidItemUri\",\r\n \"!hasContext:isFlatAU\",\r\n \"isAnySelection\",\r\n ],\r\n commandAction: {\r\n name: \"transfer\",\r\n props: {\r\n type: \"copy\",\r\n },\r\n },\r\n },\r\n {\r\n id: \"doc_link\",\r\n category: \"doc\",\r\n name: \"$itemActions:transfer.link\",\r\n icon: \"link\",\r\n views: [\"folder\", \"searchresult\", \"docmodal\", \"document\"],\r\n shouldBeVisible: [\r\n \"isValidItemUri\",\r\n \"!hasContext:isFlatAU\",\r\n \"isAnySelection\",\r\n ],\r\n commandAction: {\r\n name: \"transfer\",\r\n props: {\r\n type: \"link\",\r\n },\r\n },\r\n },\r\n {\r\n id: \"reminder_manage\",\r\n category: \"reminder\",\r\n shouldBeVisible: [\"isValidItemUri\"],\r\n view: {\r\n name: \"itemView_reminder\",\r\n },\r\n commandAction: {\r\n name: \"reminder_manage\",\r\n },\r\n },\r\n {\r\n id: \"reminder_add\",\r\n category: \"reminder\",\r\n name: \"$itemActions:reminder_add.name\",\r\n icon: \"fa-regular fa-clock\",\r\n shouldBeVisible: [\"isValidItemUri\"],\r\n commandAction: {\r\n name: \"reminder_manage\",\r\n },\r\n },\r\n {\r\n id: \"folder_preview\",\r\n category: \"folder\",\r\n name: \"$itemActions:folder_preview.name\",\r\n icon: \"eye\",\r\n views: [\r\n \"searchresult\",\r\n \"news\",\r\n \"home\",\r\n \"wf\",\r\n \"offline_item\",\r\n \"minipicker\",\r\n ],\r\n shouldBeVisible: [\r\n \"isValidItemUri\",\r\n \"!isMiniView\",\r\n \"!hasContext:isFlatAU\",\r\n ],\r\n commandAction: {\r\n name: \"folder_preview\",\r\n },\r\n },\r\n {\r\n id: \"doc_folderPreview\",\r\n category: \"doc\",\r\n name: \"$itemActions:folder_preview.name\",\r\n icon: \"eye\",\r\n views: [\r\n \"searchresult\",\r\n \"news\",\r\n \"home\",\r\n \"document\",\r\n \"wf\",\r\n \"offline_item\",\r\n \"docmodal\",\r\n ],\r\n shouldBeVisible: [\r\n \"isValidItemUri\",\r\n \"!isMiniView\",\r\n \"!hasContext:isFlatAU\",\r\n ],\r\n commandAction: {\r\n name: \"folder_preview\",\r\n },\r\n },\r\n {\r\n id: \"folder_popout\",\r\n category: \"folder\",\r\n name: \"$itemActions:folder_popout.name\",\r\n icon: \"arrow-up-right-from-square\",\r\n views: [\r\n \"searchresult\",\r\n \"news\",\r\n \"home\",\r\n \"document\",\r\n \"wf\",\r\n \"offline_item\",\r\n ],\r\n shouldBeVisible: [\r\n \"isValidItemUri\",\r\n \"isAnyOnlineStatus\",\r\n \"!isMiniView\",\r\n \"!hasContext:isFlatAU\",\r\n ],\r\n commandAction: {\r\n name: \"folder_preview\",\r\n props: {\r\n newWindow: true,\r\n },\r\n },\r\n },\r\n {\r\n id: \"doc_download\",\r\n category: \"doc\",\r\n name: \"$itemActions:doc_download.name\",\r\n icon: \"download\",\r\n shouldBeVisible: [\r\n \"hasContext:isDocDownloadAllowed\",\r\n \"isAnyOnlineStatus\",\r\n \"isAnySelection\",\r\n ],\r\n commandAction: {\r\n name: \"doc_download\",\r\n },\r\n },\r\n {\r\n id: \"doc_downloadZip\",\r\n category: \"doc\",\r\n name: \"$itemActions:doc_downloadZip.name\",\r\n icon: \"fa-regular fa-file-zip\",\r\n shouldBeVisible: [\r\n \"hasContext:isDocDownloadAllowed\",\r\n \"isAnyOnlineStatus\",\r\n \"isMultiSelection\",\r\n ],\r\n commandAction: {\r\n name: \"doc_downloadZip\",\r\n },\r\n },\r\n {\r\n id: \"doc_downloadFilesAPI\",\r\n category: \"doc\",\r\n name: \"$itemActions:doc_downloadFilesAPI.name\",\r\n icon: \"fa-regular fa-folder-open\",\r\n shouldBeVisible: [\r\n \"hasContext:isDocDownloadAllowed\",\r\n \"isAnyOnlineStatus\",\r\n \"isMultiSelection\",\r\n ],\r\n commandAction: {\r\n name: \"doc_downloadFilesAPI\",\r\n },\r\n },\r\n {\r\n id: \"doc_editWebDav\",\r\n category: \"doc\",\r\n name: \"$itemActions:doc_editWebDav.name\",\r\n icon: \"pencil\",\r\n views: [\"folder\", \"document\", \"docmodal\", \"flat\", \"home\"],\r\n shouldBeVisible: [\r\n \"hasContext:isDocEditAllowed\",\r\n \"!hasContext:isLockedForUser\",\r\n \"!hasItemStatus:CloudSync\",\r\n ],\r\n commandAction: {\r\n name: \"doc_editWebDav\",\r\n },\r\n },\r\n {\r\n id: \"doc_editCloud\",\r\n category: \"doc\",\r\n name: \"$itemActions:doc_editCloud.name\",\r\n icon: \"pencil\",\r\n views: [\"folder\", \"document\", \"docmodal\", \"flat\", \"home\"],\r\n shouldBeVisible: [\r\n \"hasContext:isDocEditAllowed\",\r\n \"!hasContext:isLockedForUser\",\r\n \"hasItemStatus:CloudSync\",\r\n ],\r\n commandAction: {\r\n name: \"doc_editCloud\",\r\n props: {\r\n onlineEditor: true,\r\n },\r\n },\r\n },\r\n {\r\n id: \"doc_editCloudLocal\",\r\n category: \"doc\",\r\n name: \"$itemActions:doc_editCloudLocal.name\",\r\n icon: \"pencil\",\r\n views: [\"folder\", \"document\", \"docmodal\", \"flat\", \"home\"],\r\n shouldBeVisible: [\r\n \"hasContext:isDocEditAllowed\",\r\n \"!hasContext:isLockedForUser\",\r\n \"hasItemStatus:CloudSync\",\r\n ],\r\n commandAction: {\r\n name: \"doc_editCloud\",\r\n props: {\r\n onlineEditor: false,\r\n },\r\n },\r\n },\r\n {\r\n id: \"doc_delete\",\r\n category: \"doc\",\r\n name: \"$itemActions:doc_delete.name\",\r\n icon: \"trash-can\",\r\n views: [\"folder\", \"document\", \"docmodal\", \"flat\"],\r\n shouldBeVisible: [\r\n \"isAnyOnlineStatus\",\r\n \"isAnySelection\",\r\n \"hasContext:isDocEditAllowed\",\r\n \"!hasContext:isLockedForUser\",\r\n ],\r\n commandAction: { name: \"doc_delete\" },\r\n },\r\n {\r\n id: \"folder_delete\",\r\n category: \"folder\",\r\n name: \"$itemActions:folder_delete.name\",\r\n icon: \"trash-can\",\r\n views: [\"folder\", \"minipicker\"],\r\n shouldBeVisible: [\r\n \"hasContext:isEditAllowed\",\r\n \"licenseAllowEdit\",\r\n \"isAnyOnlineStatus\",\r\n \"isAnySelection\",\r\n ],\r\n commandAction: { name: \"folder_delete\" },\r\n },\r\n {\r\n id: \"folder_editClassification\",\r\n category: \"folder\",\r\n name: \"$itemActions:folder_editClassification.name\",\r\n icon: \"pen-to-square\",\r\n views: [\"folder\"],\r\n shouldBeVisible: [\r\n \"hasContext:isEditAllowed\",\r\n \"hasContext:isFolderClassificationEditAllowed\",\r\n \"licenseAllowEdit\",\r\n \"isAnyOnlineStatus\",\r\n ],\r\n commandAction: { name: \"folder_editClassification\" },\r\n },\r\n {\r\n id: \"doc_previewAndEditClassification\",\r\n category: \"doc\",\r\n name: \"$itemActions:doc_editClassification.name\",\r\n icon: \"pen-to-square\",\r\n views: [\"flat\", \"folder\", \"searchresult\"],\r\n shouldBeVisible: [\r\n \"hasContext:isDocEditAllowed\",\r\n \"hasContext:isDocClassificationEditAllowed\",\r\n \"!hasContext:isLockedForUser\",\r\n \"licenseAllowEdit\",\r\n \"isAnyOnlineStatus\",\r\n ],\r\n commandAction: {\r\n name: \"doc_preview\",\r\n props: {\r\n triggerEditMode: true,\r\n },\r\n },\r\n },\r\n {\r\n id: \"doc_editClassification\",\r\n category: \"doc\",\r\n name: \"$itemActions:doc_editClassification.name\",\r\n icon: \"pen-to-square\",\r\n views: [\"document\", \"docmodal\"],\r\n shouldBeVisible: [\r\n \"hasContext:isDocEditAllowed\",\r\n \"!hasContext:isLockedForUser\",\r\n \"hasContext:isDocClassificationEditAllowed\",\r\n \"licenseAllowEdit\",\r\n \"isAnyOnlineStatus\",\r\n ],\r\n commandAction: { name: \"doc_editClassification\" },\r\n },\r\n {\r\n id: \"doc_uploadVersion\",\r\n category: \"doc\",\r\n name: \"$itemActions:doc_uploadVersion.name\",\r\n icon: \"upload\",\r\n views: [\"document\", \"docmodal\", \"folder\", \"flat\"],\r\n shouldBeVisible: [\r\n \"hasContext:isDocEditAllowed\",\r\n \"licenseAllowEdit\",\r\n \"!isSyncUpload\",\r\n \"isAnyOnlineStatus\",\r\n \"!hasContext:isLockedForUser\",\r\n ],\r\n commandAction: { name: \"doc_uploadVersion\" },\r\n },\r\n {\r\n id: \"doc_upload\",\r\n category: \"folder\",\r\n name: \"$itemActions:doc_upload.name\",\r\n icon: \"upload\",\r\n views: [\"folder\", \"flat\", \"miniflat\", \"minipicker\"],\r\n shouldBeVisible: [\r\n \"hasContext:isDocAssignmentAllowed\",\r\n \"licenseAllowEdit\",\r\n \"!isSyncUpload\",\r\n \"isAnyOnlineStatus\",\r\n ],\r\n commandAction: {\r\n name: \"itemFlows\",\r\n props: {\r\n direction: \"in\",\r\n flowId: \"doc_upload\",\r\n },\r\n },\r\n },\r\n {\r\n id: \"itemFlows_input\",\r\n category: \"folder\",\r\n name: \"$itemActions:itemFlows_input.name\",\r\n icon: \"circle-plus\",\r\n views: [\"folder\", \"minipicker\"],\r\n shouldBeVisible: [\"isCreateAllowed\", \"isAnyOnlineStatus\"],\r\n commandAction: {\r\n name: \"itemFlows\",\r\n props: {\r\n direction: \"in\",\r\n },\r\n },\r\n },\r\n {\r\n id: \"offline_add\",\r\n icon: \"power-off\",\r\n category: \"folder\",\r\n name: \"$itemActions:offline_add.name\",\r\n shouldBeVisible: [\r\n \"isValidItemUri\",\r\n \"!hasContext:isOffline\",\r\n \"hasFeature:offline\",\r\n \"isAnySelection\",\r\n ],\r\n commandAction: {\r\n name: \"offline_add\",\r\n },\r\n },\r\n {\r\n id: \"offline_del\",\r\n icon: \"power-off\",\r\n category: \"folder\",\r\n name: \"$itemActions:offline_delete.name\",\r\n shouldBeVisible: [\r\n \"hasContext:isOffline\",\r\n \"hasFeature:offline\",\r\n \"isAnyOnlineStatus\",\r\n \"isAnySelection\",\r\n ],\r\n commandAction: {\r\n name: \"offline_delete\",\r\n },\r\n },\r\n {\r\n id: \"offline_syncItem\",\r\n icon: \"cloud-arrow-down\",\r\n category: \"folder\",\r\n name: \"$itemActions:offline_syncItem.name\",\r\n shouldBeVisible: [\"hasContext:isOffline\", \"hasFeature:offline\"],\r\n views: [\"offline_item\"],\r\n commandAction: {\r\n name: \"offline_syncItem\",\r\n },\r\n },\r\n {\r\n id: \"clipboard_copyItemUri\",\r\n category: \"clipboard\",\r\n name: \"$itemActions:clipboard_copyItemUri.name\",\r\n icon: \"fa-regular fa-clipboard\",\r\n views: [\r\n \"flat\",\r\n \"folder\",\r\n \"docmodal\",\r\n \"mailbox\",\r\n \"offline_item\",\r\n \"minipicker\",\r\n ],\r\n shouldBeVisible: [\"isAdmin\", \"isAnyOnlineStatus\"],\r\n commandAction: {\r\n name: \"clipboard_copyItemUri\",\r\n },\r\n },\r\n {\r\n id: \"clipboard_copyItemLink\",\r\n category: \"clipboard\",\r\n name: \"$itemActions:clipboard_copyItemLink.name\",\r\n icon: \"fa-regular fa-clipboard\",\r\n views: [\r\n \"flat\",\r\n \"folder\",\r\n \"docmodal\",\r\n \"mailbox\",\r\n \"offline_item\",\r\n \"minipicker\",\r\n ],\r\n shouldBeVisible: [\"isAnyOnlineStatus\"],\r\n commandAction: {\r\n name: \"clipboard_copyItemLink\",\r\n },\r\n },\r\n {\r\n id: \"wf_report\",\r\n category: \"wf\",\r\n name: \"$itemActions:wf_report.name\",\r\n //desc: \"Displays workflow report(s)\",\r\n icon: \"book\",\r\n // views: [\"document\", \"docmodal\", \"folder\", \"miniflat\"],\r\n shouldBeVisible: [\"isWorkflowEnabled\", \"hasItemStatus:WFReport\"],\r\n commandAction: {\r\n name: \"doc_related\",\r\n props: {\r\n itemLinkType: ItemLinkType.WorkflowReport,\r\n },\r\n },\r\n },\r\n {\r\n id: \"wf_start\",\r\n category: \"wf\",\r\n name: \"$itemActions:wf_start.name\",\r\n //desc: \"Starts a workflow\",\r\n icon: \"fa-regular fa-square-check\",\r\n views: [\r\n \"home\",\r\n \"news\",\r\n \"document\",\r\n \"docmodal\",\r\n \"folder\",\r\n \"miniflat\",\r\n \"minipicker\",\r\n ],\r\n shouldBeVisible: [\"isWorkflowEnabled\"],\r\n commandAction: {\r\n name: \"wf_start\",\r\n },\r\n },\r\n {\r\n id: \"wf_info\",\r\n category: \"wf\",\r\n shouldBeVisible: [\"isValidItemUri\", \"isWorkflowEnabled\"],\r\n views: [\r\n \"home\",\r\n \"folder\",\r\n \"document\",\r\n \"docmodal\",\r\n \"flat\",\r\n \"miniflat\",\r\n \"searchresult\",\r\n \"wf\",\r\n ],\r\n commandAction: {\r\n name: \"link\",\r\n props: {\r\n asModal: true,\r\n docked: true,\r\n },\r\n },\r\n view: {\r\n name: \"itemView_workflow\",\r\n },\r\n },\r\n {\r\n id: \"wf_info_noitemuri\",\r\n category: \"wf\",\r\n shouldBeVisible: [\"!isValidItemUri\", \"isWorkflowEnabled\"],\r\n views: [\"wf\"],\r\n commandAction: {\r\n name: \"link\",\r\n props: {\r\n asModal: true,\r\n docked: true,\r\n },\r\n },\r\n view: {\r\n name: \"itemView_workflow\",\r\n },\r\n },\r\n {\r\n id: \"ip_archive\",\r\n category: \"sync\",\r\n name: \"$itemActions:ip_archive.name\",\r\n // desc: \"Launch inPoint.Sync ArchiveDialog\",\r\n icon: \"upload\",\r\n shouldBeVisible: [\r\n \"isWindows\",\r\n \"isSyncEnabled\",\r\n \"isFolder\",\r\n \"hasContext:isDocAssignmentAllowed\",\r\n ],\r\n commandAction: { name: \"ip_archive\" },\r\n },\r\n {\r\n id: \"ip_browse\",\r\n category: \"sync\",\r\n name: \"$itemActions:ip_browse.name\",\r\n icon: \"eye\",\r\n // desc: \"Browse in inPoint.Client\",\r\n shouldBeVisible: [\"isWindows\", \"isSyncEnabled\", \"isValidItemUri\"],\r\n commandAction: { name: \"ip_browse\" },\r\n },\r\n {\r\n id: \"ip_properties\",\r\n category: \"sync\",\r\n name: \"$itemActions:ip_properties.name\",\r\n // desc: \"Launch inPoint.Sync Properties dialog\",\r\n icon: \"list-check\",\r\n shouldBeVisible: [\r\n \"isWindows\",\r\n \"isSyncEnabled\",\r\n \"hasContext:isDocAssignmentAllowed\",\r\n \"!hasContext:isFlatAU\",\r\n ],\r\n commandAction: { name: \"ip_properties\" },\r\n },\r\n {\r\n id: \"ip_edit\",\r\n category: \"sync\",\r\n name: \"$itemActions:ip_edit.name\",\r\n // desc: \"Edit (in original application) with inPoint.Sync\",\r\n icon: \"pen-to-square\",\r\n shouldBeVisible: [\r\n \"isWindows\",\r\n \"isSyncEnabled\",\r\n \"isDoc\",\r\n \"hasContext:isDocAssignmentAllowed\",\r\n \"hasContext:isDocEditAllowed\",\r\n \"!hasContext:isFlatAU\",\r\n \"!hasContext:isLockedForUser\",\r\n ],\r\n commandAction: { name: \"ip_edit\" },\r\n },\r\n {\r\n id: \"ip_commandAction_itemSendAsEmail\",\r\n category: \"sync\",\r\n name: \"$itemActions:ip_commandAction.itemSendAsEmail\",\r\n icon: \"fa-regular fa-envelope\",\r\n shouldBeVisible: [\r\n \"isAnySelection\",\r\n \"isWindows\",\r\n \"isSyncEnabled\",\r\n \"isDoc\",\r\n \"hasContext:isDocSendByEmailAllowed\",\r\n ],\r\n commandAction: {\r\n name: \"ip_commandAction\",\r\n props: {\r\n commandAction: \"ItemSendAsEmailCommandAction\",\r\n },\r\n },\r\n },\r\n {\r\n id: \"ip_commandAction_itemSendAsEmailLink\",\r\n category: \"sync\",\r\n name: \"$itemActions:ip_commandAction.itemSendAsEmailLink\",\r\n icon: \"fa-regular fa-envelope\",\r\n shouldBeVisible: [\r\n \"isAnySelection\",\r\n \"isWindows\",\r\n \"isSyncEnabled\",\r\n \"isValidItemUri\",\r\n ],\r\n commandAction: {\r\n name: \"ip_commandAction\",\r\n props: {\r\n commandAction: \"ItemSendAsEmailLinkCommandAction\",\r\n },\r\n },\r\n },\r\n // ---- Recycle Bin\r\n {\r\n id: \"doc_previewRecycleBin\",\r\n category: \"recyclebin\",\r\n name: \"$itemActions:doc_preview.name\",\r\n icon: \"eye\",\r\n views: [\"flat\", \"folder\", \"searchresult\", \"news\", \"home\"],\r\n shouldBeVisible: [\"isDoc\", \"isRecycleBin\"],\r\n commandAction: {\r\n name: \"doc_preview\",\r\n },\r\n },\r\n {\r\n id: \"doc_clear\",\r\n category: \"recyclebin\",\r\n name: \"$itemActions:doc_clear.name\",\r\n icon: \"trash-can\",\r\n shouldBeVisible: [\r\n \"isDoc\",\r\n \"hasItemStatus:Deleted\",\r\n \"isRecycleBin\",\r\n \"isAnyOnlineStatus\",\r\n \"isAnySelection\",\r\n ],\r\n commandAction: { name: \"recyclebin_docClear\" },\r\n },\r\n {\r\n id: \"doc_restore\",\r\n category: \"recyclebin\",\r\n name: \"$itemActions:doc_restore.name\",\r\n icon: \"repeat\",\r\n shouldBeVisible: [\r\n \"isDoc\",\r\n \"hasItemStatus:Deleted\",\r\n \"!hasItemStatus:AnyParentDeleted\",\r\n \"isRecycleBin\",\r\n \"isAnySelection\",\r\n ],\r\n commandAction: { name: \"recyclebin_docRestore\" },\r\n },\r\n {\r\n id: \"folder_clear\",\r\n category: \"recyclebin\",\r\n name: \"$itemActions:folder_clear.name\",\r\n icon: \"trash-can\",\r\n shouldBeVisible: [\r\n \"isFolder\",\r\n \"hasItemStatus:Deleted\",\r\n \"isRecycleBin\",\r\n \"isAnyOnlineStatus\",\r\n \"isAnySelection\",\r\n ],\r\n commandAction: { name: \"recyclebin_folderClear\" },\r\n },\r\n {\r\n id: \"folder_restore\",\r\n category: \"recyclebin\",\r\n name: \"$itemActions:folder_restore.name\",\r\n icon: \"repeat\",\r\n shouldBeVisible: [\r\n \"isFolder\",\r\n \"hasItemStatus:Deleted\",\r\n \"!hasItemStatus:AnyParentDeleted\",\r\n \"isRecycleBin\",\r\n \"isAnySelection\",\r\n ],\r\n commandAction: { name: \"recyclebin_folderRestore\" },\r\n },\r\n {\r\n id: \"multiSelection\",\r\n category: \"multiSelection\",\r\n view: {\r\n name: \"itemView_multiSelection\",\r\n },\r\n shouldBeVisible: [\"hasContext:multiSelection\"],\r\n commandAction: {}, //HACK: persist props to itemView\r\n },\r\n ],\r\n});\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"UploadImage_container__3rabK\",\"image\":\"UploadImage_image__21AEd\",\"middle\":\"UploadImage_middle__12lER\",\"ro\":\"UploadImage_ro__2CBTQ\",\"button\":\"UploadImage_button__2D9zY\",\"input\":\"UploadImage_input__14FQD\"};","// @flow\nimport React from \"react\";\nimport ItemActions from \"./ItemActions\";\nimport {\n type ItemActionConfig,\n type ItemActionCategoryConfig,\n} from \"data/types\";\nimport Icons from \"@hs/icons\";\nimport { getLocalizedText } from \"data/utils\";\nimport Divider from \"components/Divider\";\nimport styles from \"./ActionCategory.module.css\";\n\ntype Props = {\n /** current category to render */\n category: ItemActionCategoryConfig,\n /** list of all actions (will be filtered by category.category) */\n actions?: Array,\n /** callback when user clicks an action */\n onAction?: (action: ItemActionConfig) => void,\n /** optional children (if actions not provided) */\n children?: React.Node,\n};\n\n/**\n * renders a category and all it's defined actions\n */\nconst ActionCategory = ({\n category,\n actions,\n onAction,\n children = null,\n}: Props) => {\n const catActions =\n actions && actions.filter((action) => action.category === category.id);\n\n if ((catActions?.length ?? 0) === 0 && typeof onAction === \"function\")\n return children;\n\n const content =\n (catActions?.length ?? 0) > 0 ? (\n \n ) : (\n children\n );\n\n if (category.renderHeader === false) {\n return content;\n } else {\n return (\n \n {getLocalizedText(category.name)}\n {category.icon && (\n \n )}\n \n }\n >\n {content}\n \n );\n }\n};\n\nActionCategory.displayName = \"ActionCategory\";\nexport default ActionCategory;\n","// @flow\r\nimport React from \"react\";\r\nimport Modal from \"components/Modal\";\r\nimport ActionCategory from \"./ActionCategory\";\r\nimport {\r\n type ItemActionConfig,\r\n type ItemActionCategoryConfig,\r\n} from \"data/types\";\r\nimport NoData from \"components/NoData\";\r\nimport Status from \"components/Status\";\r\nimport Constants from \"data/constants\";\r\nimport { useModalPostMessageHandler } from \"hooks\";\r\n\r\ntype Props = {\r\n /** react-modal-promise: whether to show dialog */\r\n open: boolean,\r\n /** react-modal-promise: callback when user closes Dialog */\r\n close: () => void,\r\n /** React Component to render as Title */\r\n title?: React.Node,\r\n /** React Component to render as body */\r\n body?: React.Node,\r\n /** list of action categories */\r\n categories?: Array,\r\n /** CommandActions to render */\r\n actions?: Array,\r\n /** callback when user selects an Action to execute */\r\n onAction: (action: ItemActionConfig) => void,\r\n /** is loading */\r\n isLoading: boolean,\r\n};\r\n\r\n/**\r\n * renders a docked modal as the actionPanel\r\n */\r\nconst ActionPanel = ({\r\n open,\r\n close,\r\n title,\r\n body,\r\n categories,\r\n actions,\r\n onAction,\r\n isLoading,\r\n hasError,\r\n}: Props) => {\r\n useModalPostMessageHandler(close);\r\n return (\r\n \r\n {title && (\r\n \r\n {title}\r\n \r\n )}\r\n \r\n {body}\r\n {isLoading && }\r\n {hasError && }\r\n {!isLoading && (actions?.length ?? 0) === 0 && (\r\n \r\n )}\r\n {!isLoading &&\r\n actions?.length > 0 &&\r\n categories\r\n ?.sort((a, b) => a.order - b.order)\r\n ?.map((category, index) => (\r\n {\r\n if (\r\n action != null &&\r\n typeof onAction === \"function\"\r\n )\r\n onAction(action);\r\n close();\r\n }\r\n }\r\n />\r\n ))}\r\n \r\n \r\n );\r\n};\r\nActionPanel.displayName = \"ActionPanel\";\r\nexport default ActionPanel;\r\n","// @flow\r\nimport React, { useMemo, useCallback } from \"react\";\r\nimport { useAsyncMemo } from \"hooks\";\r\nimport ActionPanel from \"components/ActionPanel\";\r\nimport { createModal } from \"react-modal-promise\";\r\nimport { fetchItemContexts } from \"data/api\";\r\nimport {\r\n type ItemActionConfig,\r\n type ItemActionCategoryConfig,\r\n ItemContextsFlags,\r\n} from \"data/types\";\r\nimport CommandActionHandler from \"components/CommandActions\";\r\nimport { asyncFilter } from \"data/utils\";\r\nimport { mergeItemActionsConfig, shouldRenderItem } from \"./Utils\";\r\nimport { produce } from \"immer\";\r\n\r\nconst getContextProps = async (\r\n contextProps: any,\r\n itemContexts = ItemContextsFlags.ResultFlags |\r\n ItemContextsFlags.Offline |\r\n ItemContextsFlags.Pdf |\r\n ItemContextsFlags.ItemStatus\r\n) => {\r\n const { itemUri, formatId, name, multiple, items, hasWorkflow } =\r\n contextProps;\r\n /* istanbul ignore else */\r\n if (name == null) {\r\n itemContexts |= ItemContextsFlags.WebDavName;\r\n }\r\n /* istanbul ignore else */\r\n if (hasWorkflow == null) {\r\n itemContexts |= ItemContextsFlags.Workflow;\r\n }\r\n const itemUris = multiple ? items.map((i) => i.itemUri) : [itemUri];\r\n let formatIds = multiple ? items.map((i) => i.formatId) : [formatId];\r\n if (formatIds.filter((i) => i != null).length === 0) {\r\n formatIds = null;\r\n }\r\n return await fetchItemContexts(itemUris, formatIds, itemContexts);\r\n};\r\n\r\ntype Props = {\r\n /** react-modal-promise: whether to show dialog */\r\n open: boolean,\r\n /** react-modal-promise: callback when user closes Dialog */\r\n close: () => void,\r\n /** React Component to render as Title */\r\n title?: React.Node,\r\n /** React Component to render as body */\r\n body?: React.Node,\r\n /** any context props passed by caller will be assigned to commandAction props */\r\n contextProps: {\r\n itemUri: string,\r\n formatId: number,\r\n multiple: boolean,\r\n items: Array,\r\n } & Object,\r\n /** Override view context for Action Panel items */\r\n targetView?: string,\r\n};\r\n\r\nexport const ActionPanelContainer = (props: Props) => {\r\n const { contextProps, targetView, ...rest } = props;\r\n\r\n // fetch context and extend contextProps\r\n const allContextProps = useAsyncMemo(async () => {\r\n try {\r\n return {\r\n ...contextProps,\r\n ...(await getContextProps(contextProps)),\r\n };\r\n } catch (e) {\r\n console.error(\r\n `Cannot calculate contextProps: ${e.message}`,\r\n contextProps\r\n );\r\n return {\r\n ...contextProps,\r\n isError: true,\r\n };\r\n }\r\n }, [contextProps]);\r\n\r\n const [itemUri, formatId] = useMemo(() => {\r\n if (allContextProps == null) {\r\n return [null, -1];\r\n }\r\n const { itemUri, folderItemUri, formatId, multiple, items } =\r\n allContextProps;\r\n if (!multiple) {\r\n return [itemUri, formatId];\r\n }\r\n const combinedFormatId = items.every(\r\n (item) => item.formatId === items[0].formatId\r\n )\r\n ? items[0].formatId\r\n : -1;\r\n return [folderItemUri, combinedFormatId];\r\n }, [allContextProps]);\r\n\r\n const { categories: categoriesFromConfig, actions: actionsFromConfig } =\r\n useMemo(\r\n () => mergeItemActionsConfig(itemUri, formatId),\r\n [itemUri, formatId]\r\n );\r\n\r\n const categories: Array = useAsyncMemo(\r\n async () =>\r\n await asyncFilter(\r\n categoriesFromConfig,\r\n (category: ItemActionCategoryConfig) =>\r\n shouldRenderItem(\r\n category,\r\n itemUri,\r\n formatId,\r\n allContextProps,\r\n targetView\r\n )\r\n ),\r\n [categoriesFromConfig, itemUri, formatId, allContextProps, targetView]\r\n );\r\n\r\n const actions: Array = useAsyncMemo(async () => {\r\n const result = produce(\r\n await asyncFilter(actionsFromConfig, (action: ItemActionConfig) =>\r\n shouldRenderItem(\r\n action,\r\n itemUri,\r\n formatId,\r\n allContextProps,\r\n targetView\r\n )\r\n ),\r\n (draft) => {\r\n // HACK itemViews_* use the CommandActionHandler to RENDER before onAction is being called!\r\n draft.forEach(\r\n (action) =>\r\n action.commandAction &&\r\n (action.commandAction.props = Object.assign(\r\n {},\r\n allContextProps,\r\n action.commandAction.props\r\n ))\r\n );\r\n }\r\n );\r\n\r\n return result;\r\n }, [actionsFromConfig, itemUri, formatId, allContextProps, targetView]);\r\n\r\n const onAction = useCallback(\r\n (action: ItemActionConfig) => {\r\n if (action.commandAction == null) {\r\n alert(\r\n `Sorry, no CommandAction defined for action.name='${action.name}'`\r\n );\r\n } else {\r\n CommandActionHandler(\r\n action.commandAction.name,\r\n produce({}, (draft) => {\r\n draft = Object.assign(\r\n draft,\r\n allContextProps,\r\n action.commandAction.props\r\n );\r\n })\r\n );\r\n }\r\n },\r\n [allContextProps]\r\n );\r\n\r\n return (\r\n \r\n );\r\n};\r\n/* istanbul ignore next */\r\nconst MemoActionPanelContainer = React.memo(\r\n ActionPanelContainer,\r\n (prevProps, nextProps) => prevProps.itemUri !== nextProps.itemUri\r\n);\r\nexport const openActionPanel = createModal(MemoActionPanelContainer);\r\n","// @flow\nimport React from \"react\";\nimport { openActionPanel } from \"containers/ActionPanel\";\nimport Icons from \"@hs/icons\";\nimport Breadcrumb from \"components/Breadcrumb\";\nimport Attributes from \"components/Attributes\";\nimport styles from \"./ItemActionPanel.module.css\";\nimport { type BreadcrumbResultDTO } from \"data/types\";\nimport { getFileExtension, getLocalizedText } from \"data/utils\";\nimport ActionCategory from \"components/ActionPanel/ActionCategory\";\nimport loc from \"i18next\";\n\nexport const RowTitle = ({\n title,\n ext,\n icon,\n color,\n}: {\n title?: string,\n ext?: SummaryAttributeValueExtension | string,\n icon?: string,\n color?: string,\n}) => (\n <>\n {(ext || icon) && (\n \n )}\n {title || \"Actions\"}\n \n);\nRowTitle.displayName = \"RowTitle\";\n\nexport const RowBody = ({\n thumbnail,\n breadcrumb,\n attributes,\n}: {\n thumbnail?: React.Element,\n breadcrumb?: BreadcrumbResultDTO,\n attributes?: Array>,\n}) => (\n \n
\n {thumbnail}\n {breadcrumb && (\n \n )}\n {attributes && (\n \n )}\n
\n \n);\nRowBody.displayName = \"RowBody\";\n\ntype Props = {\n /** the name of the item */\n title?: string,\n /** file extension (if document and known) */\n ext?: SummaryAttributeValueExtension | string,\n /** optional icon */\n icon?: string,\n /** optional icon color */\n color?: string,\n /** contextProps to pass to commandActions */\n contextProps: {\n itemUri: string,\n isDoc: boolean,\n formatId: number,\n name?: string,\n ext?: string,\n icon?: string,\n color?: string,\n } & Object,\n /** file thumbnail (if document) */\n thumbnail?: React.Element,\n /** item breadcrumb */\n breadcrumb?: BreadcrumbResultDTO,\n /** item attribute values */\n attributes?: Array>,\n /** Target view (override for current)*/\n targetView?: string,\n};\n\nconst parseName = (name) =>\n typeof name !== \"string\" &&\n name &&\n Object.prototype.hasOwnProperty.call(name, \"value\")\n ? name.value\n : name;\n\nconst parseTitle = (title, parsedName) => {\n let parsedTitleOrName = title || parsedName;\n return `${parsedTitleOrName}`.startsWith(\"$folder:\")\n ? getLocalizedText(parsedTitleOrName)\n : parsedTitleOrName;\n};\n\nexport /**\n * opens an actionPanel for the given itemUri (can be a Document or Folder)\n */\nconst openItemActionPanel = ({\n title,\n ext,\n icon,\n color,\n contextProps,\n thumbnail,\n breadcrumb,\n attributes,\n targetView,\n}: Props) => {\n const parsedName = parseName(contextProps && contextProps.name);\n const parsedTitle = parseTitle(title, parsedName);\n\n openActionPanel({\n title: (\n \n ),\n body: (thumbnail || breadcrumb || attributes) && (\n \n ),\n contextProps,\n targetView,\n });\n};\n","import { useRef, useEffect, useCallback } from \"react\";\n\nconst useAbortController = (\n abortControllerInstance = new AbortController()\n) => {\n const abort = useRef(abortControllerInstance);\n\n // Get AbortController (optional: abort existing)\n const abortController = useCallback((reset = false): AbortController => {\n if (reset) {\n abort.current.abort();\n abort.current = new AbortController();\n }\n return abort.current;\n }, []);\n\n // Abort on unmount\n useEffect(() => {\n function handleUnmount() {\n abort.current.abort();\n }\n return handleUnmount;\n }, [abort]);\n return abortController;\n};\n\nexport { useAbortController };\n","import { useState, useRef, useEffect } from \"react\";\nimport { BroadcastChannel } from \"broadcast-channel\";\n\nexport function useBroadcast(\n channelName: string = \"BROADCAST\",\n initialState: Object | null = { type: \"UNKNOWN\" }\n) {\n let [state, setState] = useState(initialState);\n let channel = useRef(new BroadcastChannel(channelName));\n\n useEffect(() => {\n /* istanbul ignore next */\n if (channel.current) {\n channel.current.onmessage = (event: MessageEvent) =>\n setState(event);\n }\n return () => channel.current && channel.current.close();\n }, [channelName]);\n\n const postMessage = (value: any) =>\n channel.current && channel.current.postMessage(value);\n\n return [state, postMessage];\n}\n","import { useUpdateEffect } from \"hooks\";\nimport { useSelector } from \"react-redux\";\nimport { toastStyled, dismissToast, toastPosition, toastId } from \"data/toast\";\nimport { NotificationStyle } from \"data/types\";\nimport styles from \"./NetworkStatus.module.css\";\nimport * as s from \"data/reducers/selectors\";\nimport loc from \"i18next\";\nimport { offlineQueueStorage } from \"data/storage\";\n\nconst useNetworkStatus = () => {\n const isOnline = useSelector(s.isOnlineSelector);\n\n useUpdateEffect(() => {\n dismissToast(toastId.NetworkStatus);\n if (isOnline) {\n offlineQueueStorage.length().then((count) =>\n toastStyled({\n message:\n count === 0\n ? loc.t(\"common:offline.connected\")\n : loc.t(\"common:offline.connectedSyncing\", {\n count,\n }),\n icon: \"fa-regular fa-check\",\n style: NotificationStyle.Success,\n toastId: toastId.NetworkStatus,\n className: styles.toast,\n position: toastPosition.TOP_CENTER,\n })\n );\n } else {\n toastStyled({\n message: \"$common:offline.lost\",\n icon: \"triangle-exclamation\",\n style: NotificationStyle.Warning,\n toastId: toastId.NetworkStatus,\n className: styles.toast,\n autoClose: false,\n position: toastPosition.TOP_CENTER,\n });\n }\n }, [isOnline]);\n\n return null;\n};\n\nexport { useNetworkStatus };\n","// @flow\r\nimport { useCallback } from \"react\";\r\nimport { useEvent } from \"hooks\";\r\n\r\n// hook to handle message events\r\nexport function usePostMessageHandler(\r\n handlers: Object,\r\n parentWindow = window.parent\r\n) {\r\n // calls the registered handler for a given message type\r\n const handleMessage = useCallback(\r\n (data, source) => {\r\n if (data == null || data.source !== \"inPoint\") return;\r\n var handler = handlers[data.type];\r\n if (handler == null || typeof handler !== \"function\") return;\r\n handler(data.data, source);\r\n },\r\n [handlers]\r\n );\r\n\r\n const onMessage = useCallback(\r\n (e) => {\r\n // some security checks\r\n if (!e.isTrusted || e.data == null) return;\r\n\r\n /* istanbul ignore next */\r\n if (\r\n window !== parentWindow &&\r\n window.location.href !== parentWindow.location.href &&\r\n window.location.origin === parentWindow.location.origin\r\n )\r\n // forward message\r\n parentWindow.postMessage(e.data, \"*\");\r\n // handle\r\n if (Array.isArray(e.data)) {\r\n e.data.forEach((d) => handleMessage(d, e.source));\r\n } else handleMessage(e.data, e.source);\r\n },\r\n [handleMessage, parentWindow]\r\n );\r\n\r\n useEvent(\"message\", onMessage);\r\n}\r\n","import { useMemo } from \"react\";\nimport { usePostMessageHandler } from \"./Handler\";\nimport { ModalAction } from \"./Actions\";\n\nconst useModalPostMessageHandler = (close) =>\n usePostMessageHandler(\n useMemo(\n () => ({\n [ModalAction.Close]: close,\n [ModalAction.CloseLegacy]: close,\n }),\n [close]\n )\n );\n\nexport { useModalPostMessageHandler };\n","// @flow\nimport { useMemo } from \"react\";\nimport { openSearchResultActionPanel } from \"components/SearchResultActionPanel\";\nimport { openGeoPointActionPanel } from \"components/GeoPointActionPanel\";\nimport { openPickerModal } from \"components/PickerModal\";\nimport {\n searchRouteWithItem,\n getRoute,\n folderRoute,\n docRoute,\n flatRoute,\n mailRoute,\n} from \"components/ItemUriLink\";\nimport { check_isView } from \"containers/ActionPanel/Utils\";\nimport CommandActionHandler from \"components/CommandActions\";\nimport { usePostMessageHandler } from \"./Handler\";\nimport { useModalPostMessageHandler } from \"./Modal\";\nimport { DefaultAction } from \"./Actions\";\nimport { postMessageTo } from \"./Utils\";\nimport { toastStyled } from \"data/toast\";\n\nconst handleGeoInfo = (data) => {\n /* istanbul ignore else */\n if (data.row) {\n openSearchResultActionPanel({\n row: {\n ...data.row,\n targetView: \"searchresult\",\n },\n });\n } else if (check_isView({ views: [\"upload\"] })) {\n openGeoPointActionPanel({\n location: data,\n });\n }\n};\n\nconst useDefaultPostMessageHandler = (history) =>\n usePostMessageHandler(\n useMemo(\n () => ({\n [DefaultAction.Browse]: ({\n itemUri,\n mini,\n externalLink,\n isDoc,\n toggles,\n view,\n mark,\n print,\n edit,\n }: {\n itemUri: string,\n mini?: boolean,\n externalLink?: boolean,\n isDoc?: boolean,\n toggles?: string | Array,\n view?: \"doc\" | \"flat\" | \"folder\" | \"mail\",\n mark?: string,\n print?: boolean,\n edit?: boolean,\n }) => {\n let url;\n switch (view) {\n case \"doc\":\n url = docRoute(\n itemUri,\n mini,\n externalLink,\n toggles,\n mark,\n print,\n edit\n );\n break;\n case \"flat\":\n url = flatRoute(\n itemUri,\n mini,\n externalLink,\n toggles\n );\n break;\n case \"folder\":\n url = folderRoute(\n itemUri,\n mini,\n externalLink,\n toggles\n );\n break;\n case \"mail\":\n url = mailRoute(\n itemUri,\n mini,\n externalLink,\n toggles\n );\n break;\n default:\n url = getRoute({\n itemUri,\n isMini: mini,\n isExternalLink: externalLink,\n isDoc,\n toggles,\n });\n break;\n }\n history.push(url);\n },\n [DefaultAction.Search]: (data) =>\n history.push(searchRouteWithItem(/*searchItem*/ data)),\n [DefaultAction.GeoInfo]: handleGeoInfo,\n [DefaultAction.GeoInfoLegacy]: handleGeoInfo,\n [DefaultAction.Exec]: (data) =>\n CommandActionHandler(data.actionId, data.props),\n [DefaultAction.Toast]: toastStyled,\n [DefaultAction.Picker.Open]: async (\n {\n itemUri,\n helpText,\n pickerType,\n selectButton,\n scopeBreadcrumb = false,\n additionalActions = null,\n canChangeSite = true,\n },\n source\n ) => {\n let action = null;\n const onSelect = (eventKey) => (action = eventKey);\n const selectedItemUri = await openPickerModal({\n itemUri,\n pickerType,\n helpText,\n selectButton,\n scopeBreadcrumb,\n additionalActions,\n canChangeSite,\n onSelect,\n });\n if (selectedItemUri) {\n postMessageTo(\n DefaultAction.Picker.Select,\n { itemUri: selectedItemUri, action },\n source\n );\n } else {\n postMessageTo(\n DefaultAction.Picker.Cancel,\n null,\n source\n );\n }\n },\n }),\n [history]\n )\n );\n\nexport {\n usePostMessageHandler,\n useDefaultPostMessageHandler,\n useModalPostMessageHandler,\n};\n","// @flow\nimport React from \"react\";\nimport { openItemActionPanel } from \"components/ItemActionPanel\";\nimport { type MapLocationInfo } from \"data/types\";\nimport { getFileExtension } from \"data/utils\";\n\nexport const openGeoPointActionPanel = ({\n location,\n}: {\n location: MapLocationInfo,\n}) =>\n openItemActionPanel({\n title: location.label,\n ext: location.label.includes(\".\") && getFileExtension(location.label),\n contextProps: {\n itemUri: location.itemUri || \"GEOUPLOAD\",\n ext:\n location.label.includes(\".\") &&\n getFileExtension(location.label),\n },\n thumbnail: location.thumbnail && (\n \n ),\n attributes: [\n [\"Longitude\", String(location.longitude)],\n [\"Latitude\", String(location.latitude)],\n ],\n });\n","import { useCallback } from \"react\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport { setSettingAction } from \"data/actions\";\nimport { settingValueSelector } from \"data/reducers/selectors\";\n\n/** hooks version of containers/SettingValue */\nexport function usePersistSetting({ name, defaultValue, asObject = false }) {\n const dispatch: Dispatch = useDispatch();\n const value: any =\n useSelector((state) => settingValueSelector(name, state)) ??\n defaultValue;\n const setValue = useCallback(\n (value: any) => dispatch(setSettingAction(name, value)),\n [name, dispatch]\n );\n\n return asObject ? { value, setValue } : [value, setValue];\n}\n","import { useRef } from \"react\";\nimport { compose, createStore, applyMiddleware } from \"redux\";\nimport appReducers from \"data/reducers\";\n// responsive\nimport { responsiveStoreEnhancer } from \"redux-responsive\";\n// sagas\nimport createSagaMiddleware from \"redux-saga\";\nimport { localRootSaga } from \"data/sagas/rootSaga\";\n\nconst getStore = (storeName: string = \"LocalStore\") => {\n // create the saga middleware\n const sagaMiddleware = createSagaMiddleware();\n\n // http://redux.js.org/\n const middlewares = [sagaMiddleware];\n /*istanbul ignore next*/\n const composeEnhancers =\n (window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ &&\n window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({\n name: `inPoint.Web ${storeName}`,\n })) ||\n compose;\n const store = createStore(\n appReducers,\n composeEnhancers(\n responsiveStoreEnhancer,\n applyMiddleware(...middlewares)\n )\n );\n\n // then run the rootSaga which forks all the others\n sagaMiddleware.run(localRootSaga);\n\n return store;\n};\n\nconst useLocalStore = (storeName: ?string) => {\n const store = useRef(null);\n /* istanbul ignore else */\n if (store.current == null) {\n store.current = getStore(storeName);\n }\n return store.current;\n};\n\nexport { useLocalStore, getStore };\n","//@flow\nimport { useState, useEffect } from \"react\";\nimport moment from \"moment\";\nimport Constants, { type ConstantsEnum } from \"data/constants\";\n\nconst getMomentLocale = (language: string): string => {\n if (language == null) {\n return \"de\";\n }\n switch (language) {\n case \"en\":\n case \"en-US\":\n return null;\n case \"de-DE\":\n return \"de\";\n case \"zh-Hans\":\n return \"zh-cn\";\n default:\n return language.toLowerCase();\n }\n};\n\nconst useMomentLocale = (language: string): ConstantsEnum => {\n const locale = getMomentLocale(language);\n const [status, setStatus] = useState(Constants.LOADING);\n useEffect(() => {\n if (locale == null || moment.locales().includes(locale)) {\n return setStatus(Constants.OK);\n }\n import(\n `__i18n/moment/${locale}` /* webpackChunkName: \"moment-[request]\" */\n )\n .then(() => setStatus(Constants.OK))\n .catch((e) => {\n console.error(\n \"[useMomentLocale] Cannot load moment.js locale:\",\n e\n );\n setStatus(Constants.ERROR);\n });\n }, [locale]);\n return status;\n};\n\nexport { useMomentLocale, getMomentLocale };\n","import { useState, useRef, useEffect } from \"react\";\nimport {\n createUppy,\n addUppyPlugins,\n getUppyLocale,\n addUppyEvents,\n removeUppyEvents,\n type UppyEvent,\n uppyPendingFilesMetaSelector,\n} from \"data/uppy\";\nimport { useDeepCompareEffect } from \"hooks\";\nimport { useSelector } from \"react-redux\";\n\ntype Props = {\n /** which uppy ID to use (to separate from other upload queues)\n * @default {string} const from data/uppy.js/DEFAULT_UPPY_ID\n */\n uppyId?: string,\n /** optional uppy properties to pass (e.g. maxNumberOfFiles) */\n uppyProps?: Object,\n /** optional list of uppy events to attach to */\n events?: Array,\n /** files to upload */\n files?: Array,\n};\n\nexport function useUppy({ uppyId, uppyProps, events, files }: Props) {\n const [ready, setReady] = useState(false);\n const uppy = useRef();\n useEffect(() => {\n uppy.current = createUppy({\n id: uppyId,\n ...uppyProps,\n });\n uppy.current = addUppyPlugins(uppy.current);\n // cancel all pending uploads in this queue\n uppy.current.cancelAll();\n if (events) addUppyEvents(events, uppy.current);\n getUppyLocale()\n .then((result) => {\n uppy.current.locale = { ...result.i18n };\n })\n .finally(() => setReady(true));\n\n return () => {\n if (events) removeUppyEvents(events, uppy.current);\n uppy.current.close();\n };\n }, [uppyId, uppyProps, events, files]);\n\n useEffect(() => {\n if (!ready || !files?.length || uppy.current == null) return;\n // add optional files to queue\n /* istanbul ignore next */\n try {\n files?.forEach((file) => {\n /**\n * if a immutable object is supplied, we need to open it up,\n * due to the nature of uppy modifying the original object\n */\n uppy.current.addFile({ ...file, meta: { ...file.meta } });\n });\n } catch (e) {\n console.error(\"Cannot add file to uppy queue\", e);\n }\n }, [ready, files]);\n\n return ready ? uppy.current : null;\n}\n\n/**\n * data/uppy/uppyPendingFilesMetaSelector returns a new object on every call\n * this wrapper uses a deep compare to avoid re-renders\n * @returns {Array} array of pending file uploads\n */\nexport function usePendingUploads() {\n const [pendingUploads, setPendingUploads] = useState([]);\n const uppyPendingUploads = useSelector(uppyPendingFilesMetaSelector);\n\n useDeepCompareEffect(() => {\n setPendingUploads(uppyPendingUploads);\n }, [uppyPendingUploads]);\n\n return pendingUploads;\n}\n","//@flow\r\nimport { useMemo, useCallback, useState, useEffect } from \"react\";\r\nimport { createGlobalState } from \"react-use\";\r\nimport { postMessageTo } from \"hooks/PostMessage/Utils\";\r\nimport {\r\n PdfHighlightAction,\r\n type PdfHighlightActionEnum,\r\n} from \"hooks/PostMessage/Actions\";\r\nimport { usePostMessageHandler } from \"hooks/PostMessage/Handler\";\r\nimport {\r\n ActivityType,\r\n ItemNoteType,\r\n type ActivityDTO,\r\n type IPdfShape,\r\n} from \"data/types\";\r\n\r\ntype PdfHighlight = {\r\n $type: ItemNoteTypeEnum,\r\n shapes: Array,\r\n activityId: number,\r\n isReadonly: boolean,\r\n};\r\n\r\nconst usePdfHighlight = createGlobalState(null);\r\n\r\nconst usePdfHighlightActions = () => {\r\n const [target] = usePdfHighlight();\r\n const createPostMessage = useCallback(\r\n (action: PdfHighlightActionEnum) => (payload: any) => {\r\n if (target == null) {\r\n console.warn(`Target is null, ${action} will not be executed!`);\r\n return;\r\n }\r\n postMessageTo(action, payload, target);\r\n },\r\n [target]\r\n );\r\n return useMemo(\r\n () => ({\r\n handleLoad: createPostMessage(PdfHighlightAction.Load),\r\n handleUpsert: createPostMessage(PdfHighlightAction.Upsert),\r\n handleHighlight: createPostMessage(PdfHighlightAction.Highlight),\r\n handleDelete: createPostMessage(PdfHighlightAction.Delete),\r\n handleSelect: createPostMessage(PdfHighlightAction.Select),\r\n }),\r\n [createPostMessage]\r\n );\r\n};\r\n\r\nconst usePdfHighlightActivityList = (\r\n items: Array,\r\n userId: number,\r\n setEdit: (activityId: number) => void,\r\n onAction: (action: string, itemIndex: number) => void,\r\n isReadOnly: boolean = false\r\n) => {\r\n const [highlight, setHighlight] = useState(null);\r\n const actions = usePdfHighlightActions();\r\n\r\n const pdfHighlights: Array = useMemo(\r\n () =>\r\n items\r\n .filter(\r\n (item) =>\r\n item.extras &&\r\n item.extras.$type === ItemNoteType.PdfHighlight\r\n )\r\n .map((item) => ({\r\n activityId: item.id,\r\n ...item.extras,\r\n isReadonly: userId !== item.userId,\r\n })),\r\n [items, userId]\r\n );\r\n\r\n // Handle UI input from PDF\r\n usePostMessageHandler(\r\n useMemo(() => {\r\n const messageHandler = {\r\n [PdfHighlightAction.Load]: () =>\r\n actions.handleLoad(pdfHighlights),\r\n [PdfHighlightAction.Highlight]: (pdfHighlight: PdfHighlight) =>\r\n setHighlight(pdfHighlight.activityId),\r\n };\r\n\r\n if (!isReadOnly) {\r\n messageHandler[PdfHighlightAction.Upsert] = (\r\n pdfHighlight: PdfHighlight\r\n ) => setEdit(pdfHighlight.activityId);\r\n messageHandler[PdfHighlightAction.Delete] = (\r\n pdfHighlight: PdfHighlight\r\n ) =>\r\n onAction(\r\n \"delete_note\",\r\n items.findIndex(\r\n (item) =>\r\n item.what === ActivityType.comment &&\r\n item.id === pdfHighlight.activityId\r\n )\r\n );\r\n }\r\n\r\n return messageHandler;\r\n }, [setEdit, onAction, items, isReadOnly, actions, pdfHighlights])\r\n );\r\n\r\n // Update PDF when items change\r\n useEffect(() => {\r\n actions.handleLoad(pdfHighlights);\r\n return () => actions.handleLoad([]);\r\n }, [actions, pdfHighlights]);\r\n\r\n // Create handleHightlicht Callback Factory for ActivityDTOs\r\n const handleHighlight = useCallback(\r\n (item: ActivityDTO) => {\r\n const targetHighlight =\r\n item &&\r\n item.extras &&\r\n item.extras.$type === ItemNoteType.PdfHighlight\r\n ? item.id\r\n : null;\r\n actions.handleHighlight({ activityId: targetHighlight });\r\n setHighlight(targetHighlight);\r\n },\r\n [actions]\r\n );\r\n\r\n return useMemo(\r\n () => [highlight, handleHighlight],\r\n [highlight, handleHighlight]\r\n );\r\n};\r\n\r\nconst usePdfHighlightInput = (handleNoteExtras, noteRef) => {\r\n usePostMessageHandler(\r\n useMemo(\r\n () => ({\r\n [PdfHighlightAction.Select]: (pdfHighlight: PdfHighlight) => {\r\n /* istanbul ignore else */\r\n if (\r\n pdfHighlight != null &&\r\n noteRef.current &&\r\n noteRef.current.clearableInput\r\n ) {\r\n noteRef.current.clearableInput.scrollIntoView({\r\n block: \"center\",\r\n inline: \"center\",\r\n });\r\n noteRef.current.clearableInput.focus();\r\n }\r\n handleNoteExtras(pdfHighlight);\r\n },\r\n }),\r\n [handleNoteExtras, noteRef]\r\n )\r\n );\r\n return usePdfHighlightActions();\r\n};\r\n\r\nexport {\r\n usePdfHighlight,\r\n usePdfHighlightActions,\r\n usePdfHighlightActivityList,\r\n usePdfHighlightInput,\r\n};\r\n","import React, { useState, useMemo, useCallback, useEffect } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport * as s from \"data/reducers/selectors\";\nimport { createGlobalState } from \"react-use\";\nimport Button from \"react-bootstrap/lib/Button\";\nimport { isFeatureOn, Feature } from \"data/constants\";\nimport Icons from \"@hs/icons\";\nimport loc from \"i18next\";\nimport CommandActionHandler from \"components/CommandActions\";\nimport { toastStyled, dismissToast, toastId } from \"data/toast\";\nimport { NotificationStyle } from \"data/types\";\n\nconst useDismissNetworkToast = createGlobalState(false);\n\nconst useOfflineHandler = ({ itemUri, name, request = null }) => {\n const [error, setError] = useState(null);\n const [dismiss, setDismiss] = useDismissNetworkToast();\n const isOnline = useSelector(s.isOnlineSelector);\n\n useEffect(() => {\n if (isOnline) {\n dismissToast(toastId.NoNetwork);\n setDismiss(false);\n }\n }, [dismiss, setDismiss, isOnline]);\n\n const handleDismissClick = useCallback(\n () => setDismiss(true),\n [setDismiss]\n );\n const handleEnableOffline = useMemo(\n () =>\n /* istanbul ignore else */\n itemUri\n ? () =>\n CommandActionHandler(\"offline_add\", {\n itemUri,\n name: name || loc.t(\"offline.pretty.noname\"),\n })\n : null,\n [itemUri, name]\n );\n\n const details = useMemo(\n () =>\n function OfflineErrorDetails() {\n return (\n <>\n {isFeatureOn(Feature.offline) &&\n typeof handleEnableOffline === \"function\" && (\n \n {\" \"}\n {loc.t(\"offline.pretty.enable\")}\n \n )}\n \n {loc.t(\"offline.pretty.dismiss\")}\n \n \n );\n },\n [handleEnableOffline, handleDismissClick]\n );\n\n const factory = useCallback(\n (fetchRequest) =>\n (...args) =>\n fetchRequest(...args)\n .then((response) => {\n dismissToast(toastId.NoNetwork);\n setDismiss(false);\n setError(null);\n return response;\n })\n .catch((e) => {\n setError(e);\n if (\n e.constructor.name === \"ApiNetworkOfflineError\" &&\n !dismiss\n ) {\n toastStyled({\n icon: \"link-slash\",\n style: NotificationStyle.Warning,\n autoClose: false,\n details,\n toastId: toastId.NoNetwork,\n message: \"$offline.pretty.msg\",\n });\n }\n throw e;\n }),\n [details, dismiss, setDismiss]\n );\n\n return useMemo(\n () => ({\n error,\n factory: request ? undefined : factory,\n request: request ? factory(request) : undefined,\n }),\n [error, factory, request]\n );\n};\n\nexport { useOfflineHandler };\n","import { useState, useCallback, useMemo } from \"react\";\r\nimport { usePostMessageHandler } from \"hooks/PostMessage/Handler\";\r\nimport { postMessageTo } from \"hooks/PostMessage/Utils\";\r\nimport { ArrowNavigationAction } from \"hooks/PostMessage/Actions\";\r\nimport queryString from \"data/queryString\";\r\nimport { get } from \"data/constants\";\r\n\r\nconst useArrowNavigationTransmitter = (\r\n source,\r\n target,\r\n targetData,\r\n setCurrentIndex,\r\n history\r\n) =>\r\n usePostMessageHandler(\r\n useMemo(\r\n () => ({\r\n [ArrowNavigationAction.Ready]: (data) =>\r\n postMessageTo(\r\n ArrowNavigationAction.Load,\r\n targetData,\r\n target\r\n ),\r\n [ArrowNavigationAction.Paginate]: (data) => {\r\n if (source !== data.source) {\r\n return;\r\n }\r\n const search = queryString.parse(window.location.search);\r\n search[data.qsParam] = data.currentIndex;\r\n setCurrentIndex(data.currentIndex);\r\n const a = document.createElement(\"a\"); // Use a tag for Location conversion\r\n a.href = window.location;\r\n // Remove basename from pathname to fix relative browsing\r\n a.pathname = a.pathname.replace(\r\n get(window.CONFIG, [\"host\", \"basename\"], \"\"),\r\n \"\"\r\n );\r\n a.search = queryString.stringify(search);\r\n history.push(a.pathname + a.search);\r\n },\r\n }),\r\n [source, target, targetData, setCurrentIndex, history]\r\n )\r\n );\r\n\r\nconst useArrowNavigationReceiver = ({\r\n handlePagination = null,\r\n handleDeletedWhileOpen = null,\r\n activeRowIndex: currentIndexFromProps = 0,\r\n} = {}) => {\r\n const [postMessageProps, setPostMessageProps] = useState({\r\n rows: [],\r\n currentIndex: currentIndexFromProps,\r\n });\r\n\r\n const { rows, currentIndex, source, qsParam } = postMessageProps;\r\n const [minCount, setMinCount] = useState(0);\r\n const [maxCount, setMaxCount] = useState(rows.length);\r\n\r\n const getActiveRowItemUri = useCallback(\r\n (rowIndex) => {\r\n return rows?.[rowIndex] ?? undefined;\r\n },\r\n [rows]\r\n );\r\n\r\n const isNextDisabled = useMemo(\r\n (): boolean => currentIndex + 1 >= maxCount,\r\n [currentIndex, maxCount]\r\n );\r\n\r\n const isPrevDisabled = useMemo(\r\n (): boolean => currentIndex <= minCount,\r\n [currentIndex, minCount]\r\n );\r\n\r\n const getNext = useCallback(\r\n (index: number): number => {\r\n for (let i = index; i < maxCount; ++i) {\r\n /* istanbul ignore else */\r\n if (rows[i] != null) {\r\n return i;\r\n }\r\n }\r\n return index - 1;\r\n },\r\n [rows, maxCount]\r\n );\r\n\r\n const getPrev = useCallback(\r\n (index: number): number => {\r\n for (let i = index; i >= minCount; --i) {\r\n /* istanbul ignore else */\r\n if (rows[i] != null) {\r\n return i;\r\n }\r\n }\r\n return index + 1;\r\n },\r\n [rows, minCount]\r\n );\r\n\r\n const onPaginate = useCallback(\r\n (index, postMessage = false) => {\r\n const itemUri = rows[index];\r\n if (itemUri == null) {\r\n return (\r\n rows.length > 0 &&\r\n typeof handleDeletedWhileOpen === \"function\" &&\r\n handleDeletedWhileOpen({\r\n itemUri,\r\n rowIndex: index,\r\n isNext: currentIndex < index,\r\n onSetActiveRowIndex: /* istanbul ignore next */ (\r\n index,\r\n isNext\r\n ) => (isNext ? getNext(index) : getPrev(index)),\r\n getActiveRowItemUri,\r\n minCount,\r\n })\r\n );\r\n }\r\n typeof handlePagination === \"function\" &&\r\n handlePagination(rows[index], index);\r\n postMessage &&\r\n postMessageTo(\r\n ArrowNavigationAction.Paginate,\r\n {\r\n source,\r\n qsParam,\r\n currentIndex: index,\r\n },\r\n window.opener /* istanbul ignore next */ || window\r\n );\r\n },\r\n [\r\n handlePagination,\r\n handleDeletedWhileOpen,\r\n currentIndex,\r\n qsParam,\r\n source,\r\n rows,\r\n getActiveRowItemUri,\r\n minCount,\r\n getNext,\r\n getPrev,\r\n ]\r\n );\r\n\r\n const onPrev = useCallback(() => {\r\n /* istanbul ignore if */\r\n if (isPrevDisabled) return;\r\n const prevRowIndex = getPrev(currentIndex - 1);\r\n if (prevRowIndex === currentIndex) {\r\n /* istanbul ignore else */\r\n if (minCount === 0 && minCount !== prevRowIndex)\r\n setMinCount(prevRowIndex);\r\n } else {\r\n setPostMessageProps((prevProps) => ({\r\n ...prevProps,\r\n currentIndex: prevRowIndex,\r\n }));\r\n }\r\n onPaginate(prevRowIndex, true);\r\n }, [getPrev, minCount, currentIndex, isPrevDisabled, onPaginate]);\r\n\r\n const onNext = useCallback(() => {\r\n /* istanbul ignore if */\r\n if (isNextDisabled) return;\r\n const nextRowIndex = getNext(currentIndex + 1);\r\n if (nextRowIndex === currentIndex) {\r\n /* istanbul ignore else */\r\n if (maxCount === rows.length && maxCount !== nextRowIndex + 1)\r\n setMaxCount(nextRowIndex + 1);\r\n } else {\r\n setPostMessageProps((prevProps) => ({\r\n ...prevProps,\r\n currentIndex: nextRowIndex,\r\n }));\r\n }\r\n onPaginate(nextRowIndex, true);\r\n }, [\r\n getNext,\r\n maxCount,\r\n rows.length,\r\n currentIndex,\r\n isNextDisabled,\r\n onPaginate,\r\n ]);\r\n\r\n usePostMessageHandler(\r\n useMemo(\r\n () => ({\r\n [ArrowNavigationAction.Load]: (data) => {\r\n /* istanbul ignore if */\r\n if (source) {\r\n return;\r\n }\r\n setPostMessageProps({\r\n ...data,\r\n rows: data.rows ?? [],\r\n currentIndex: data.currentIndex ?? 0,\r\n });\r\n setMinCount(0);\r\n setMaxCount(data.rows?.length ?? 0);\r\n },\r\n [ArrowNavigationAction.Reload]: (data) => {\r\n /* istanbul ignore next */\r\n if (data.source !== source && !data.newSource) {\r\n return;\r\n }\r\n const rows = data.rows ?? [];\r\n let currentIndex = data.currentIndex ?? 0;\r\n if (currentIndex >= rows.length) {\r\n currentIndex = rows.length - 1;\r\n }\r\n setPostMessageProps((prevProps) => {\r\n /* istanbul ignore else */\r\n if (\r\n prevProps.currentIndex !== currentIndex ||\r\n data.newSource\r\n ) {\r\n onPaginate(currentIndex);\r\n }\r\n return {\r\n ...prevProps,\r\n rows,\r\n currentIndex,\r\n source: data.newSource ?? prevProps.source,\r\n };\r\n });\r\n setMinCount(0);\r\n setMaxCount(data.rows?.length ?? 0);\r\n },\r\n [ArrowNavigationAction.SetIndex]: (data) => {\r\n if (\r\n data.source !== source ||\r\n data.currentIndex === currentIndex\r\n ) {\r\n return;\r\n }\r\n onPaginate(data.currentIndex);\r\n setPostMessageProps((prevProps) => ({\r\n ...prevProps,\r\n currentIndex: data.currentIndex,\r\n }));\r\n },\r\n }),\r\n [source, onPaginate, currentIndex]\r\n )\r\n );\r\n\r\n return useMemo(\r\n () => ({\r\n hasMoreThanOne: rows.length > 1,\r\n activeItemUri: getActiveRowItemUri(currentIndex),\r\n onNext,\r\n onPrev,\r\n isNextDisabled,\r\n isPrevDisabled,\r\n }),\r\n [\r\n rows.length,\r\n currentIndex,\r\n onNext,\r\n onPrev,\r\n isNextDisabled,\r\n isPrevDisabled,\r\n getActiveRowItemUri,\r\n ]\r\n );\r\n};\r\n\r\nexport { useArrowNavigationTransmitter, useArrowNavigationReceiver };\r\n","//@flow\nimport { useCallback, useEffect } from \"react\";\nimport {\n ItemStatuses,\n SpecialFoldersItemURIs,\n type ItemStatusesDTO,\n} from \"data/types\";\nimport { type History } from \"history\";\n\nconst useRecycleBin = (\n itemUriFromProps: string,\n itemStatusFromProps: ItemStatusesDTO = ItemStatuses.Nothing,\n history: History = null\n) => {\n const checkIfRecycledDocuments = useCallback(\n (itemUri: string = itemUriFromProps) =>\n itemUri?.endsWith(SpecialFoldersItemURIs.RecycledDocumentsUri),\n [itemUriFromProps]\n );\n const checkIfDeleted = useCallback(\n (\n itemStatus: ItemStatusesDTO = itemStatusFromProps,\n itemUri: string = itemUriFromProps\n ) =>\n (itemStatus & ItemStatuses.Deleted) > 0 ||\n checkIfRecycledDocuments(itemUri),\n [itemStatusFromProps, itemUriFromProps, checkIfRecycledDocuments]\n );\n const checkIfAnyParentDeleted = useCallback(\n (itemStatus: ItemStatusesDTO = itemStatusFromProps) =>\n (itemStatus & ItemStatuses.AnyParentDeleted) > 0,\n [itemStatusFromProps]\n );\n const checkIfInRecycleBin = useCallback(\n (\n itemStatus: ItemStatusesDTO = itemStatusFromProps,\n itemUri: string = itemUriFromProps\n ) =>\n checkIfDeleted(itemStatus) ||\n checkIfAnyParentDeleted(itemStatus) ||\n itemUri?.endsWith(SpecialFoldersItemURIs.RecycleBinUri),\n [\n itemUriFromProps,\n itemStatusFromProps,\n checkIfDeleted,\n checkIfAnyParentDeleted,\n ]\n );\n useEffect(() => {\n if (history == null) return;\n const { pathname, search, hash } = history.location;\n\n const isRecycleBin = checkIfInRecycleBin();\n if (\n (isRecycleBin &&\n hash !== `#${SpecialFoldersItemURIs.RecycleBinUri}`) ||\n (!isRecycleBin &&\n hash === `#${SpecialFoldersItemURIs.RecycleBinUri}`)\n ) {\n history.replace(\n `${pathname}${search}${\n isRecycleBin\n ? `#${SpecialFoldersItemURIs.RecycleBinUri}`\n : \"\"\n }`\n );\n }\n }, [checkIfInRecycleBin, history]);\n return [\n checkIfRecycledDocuments,\n checkIfDeleted,\n checkIfAnyParentDeleted,\n checkIfInRecycleBin,\n ];\n};\n\nexport { useRecycleBin };\n","import { useCallback } from \"react\";\nimport { type History } from \"history\";\nimport { ViewNameType, type ViewNameTypeEnum } from \"data/types\";\nimport { folderRoute, flatRoute, mailRoute } from \"components/ItemUriLink\";\n\ntype Props = {\n targetViewNameType: ViewNameTypeEnum,\n history: History,\n isMini?: boolean,\n};\n\nconst useViewNameTypeRouting = ({\n targetViewNameType,\n history,\n isMini = false,\n}: Props) => {\n const handleViewNameTypeChange = useCallback(\n (viewNameType, props) => {\n if (props.itemUri == null) return;\n if (targetViewNameType === viewNameType || isMini) return;\n let url = \"\";\n switch (viewNameType) {\n case ViewNameType.flat:\n url = flatRoute(props.itemUri, isMini, true);\n break;\n case ViewNameType.mailbox:\n url = mailRoute(props.itemUri, isMini, true);\n break;\n case ViewNameType.folder:\n url = folderRoute(props.itemUri, isMini, true);\n break;\n default:\n return;\n }\n history.push(url);\n },\n [targetViewNameType, isMini, history]\n );\n return handleViewNameTypeChange;\n};\n\nexport { useViewNameTypeRouting };\n","//@flow\nimport { type FormActionsConfigDTO } from \"data/types\";\n\nexport const getFormActionsConfig = (): FormActionsConfigDTO => [\n {\n id: \"searchForm_operator\",\n icon: \"filter\",\n name: \"$formActions:searchForm_operator.name\",\n description: \"$formActions:searchForm_operator.description\",\n views: [\"search\"],\n shouldBeVisible: [\"hasContext:showSearchOperators\"],\n commandAction: {\n name: \"searchForm_operator\",\n },\n },\n {\n id: \"searchForm_scope\",\n icon: \"fa-regular fa-circle-dot\",\n name: \"$formActions:searchForm_scope.name\",\n description: \"$formActions:searchForm_scope.description\",\n views: [\"search\"],\n shouldBeVisible: [\"hasContext:showSearchScope\"],\n commandAction: {\n name: \"searchForm_scope\",\n },\n },\n {\n id: \"search_scope\",\n icon: \"fa-regular fa-folder\",\n name: \"$formActions:search_scope.name\",\n description: \"$formActions:search_scope.description\",\n views: [\"search_scope\"],\n commandAction: {\n name: \"search_scope\",\n },\n },\n {\n id: \"unlock\",\n icon: \"unlock\",\n name: \"$formActions:unlock.name\",\n views: [\"lock_info\"],\n shouldBeVisible: [\n \"isAnyOnlineStatus\",\n \"hasContext:isDocEditAllowed\",\n \"!hasContext:isLockedForUser\",\n ],\n commandAction: {\n name: \"unlock\",\n },\n },\n {\n id: \"doc_editClassification\",\n icon: \"pencil\",\n name: \"$formActions:doc_editClassification.name\",\n views: [\"document\", \"docmodal\"],\n shouldBeVisible: [\n \"isAnyOnlineStatus\",\n \"!hasContext:isEdit\",\n \"hasContext:isDocEditAllowed\",\n \"hasContext:isDocClassificationEditAllowed\",\n \"licenseAllowEdit\",\n ],\n commandAction: {\n name: \"doc_editClassification\",\n },\n },\n {\n id: \"folder_editClassification\",\n icon: \"pencil\",\n name: \"$formActions:folder_editClassification.name\",\n views: [\"folder\"],\n shouldBeVisible: [\n \"isAnyOnlineStatus\",\n \"!hasContext:isEdit\",\n \"hasContext:isEditAllowed\",\n \"hasContext:isFolderClassificationEditAllowed\",\n \"licenseAllowEdit\",\n ],\n commandAction: {\n name: \"folder_editClassification\",\n },\n },\n {\n id: \"edit_form_clear\",\n name: \"$formActions:form_clear.name\",\n views: [\"folder\", \"document\", \"docmodal\", \"upload\", \"itemflows\"],\n shouldBeVisible: [\n \"isAnyOnlineStatus\",\n \"hasContext:onClear\",\n \"hasContext:isEdit\",\n ],\n commandAction: {\n name: \"form_clear\",\n },\n },\n {\n id: \"edit_form_back\",\n name: \"$formActions:form_back.name\",\n views: [\"folder\", \"document\", \"docmodal\", \"upload\", \"itemflows\"],\n shouldBeVisible: [\n \"isAnyOnlineStatus\",\n \"hasContext:onBack\",\n \"hasContext:isEdit\",\n ],\n commandAction: {\n name: \"form_back\",\n },\n },\n {\n id: \"edit_form_cancel\",\n name: \"$formActions:form_cancel.name\",\n views: [\"folder\", \"document\", \"docmodal\", \"upload\", \"itemflows\"],\n shouldBeVisible: [\n \"isAnyOnlineStatus\",\n \"hasContext:onCancel\",\n \"hasContext:isEdit\",\n ],\n commandAction: {\n name: \"form_cancel\",\n },\n },\n {\n id: \"view_form_clear\",\n name: \"$formActions:form_clear.name\",\n views: [\"archive_target\", \"search\"],\n shouldBeVisible: [\"isAnyOnlineStatus\", \"hasContext:onClear\"],\n commandAction: {\n name: \"form_clear\",\n },\n },\n {\n id: \"view_form_back\",\n name: \"$formActions:form_back.name\",\n views: [\"archive_target\", \"search\"],\n shouldBeVisible: [\"isAnyOnlineStatus\", \"hasContext:onBack\"],\n commandAction: {\n name: \"form_back\",\n },\n },\n {\n id: \"view_form_cancel\",\n name: \"$formActions:form_cancel.name\",\n views: [\"archive_target\", \"search\"],\n shouldBeVisible: [\"isAnyOnlineStatus\", \"hasContext:onCancel\"],\n commandAction: {\n name: \"form_cancel\",\n },\n },\n {\n id: \"searchForm_abort\",\n icon: \"fa-regular fa-ban\",\n name: \"$formActions:searchForm_abort.name\",\n description: \"$formActions:searchForm_abort.description\",\n views: [\"search\"],\n shouldBeVisible: [\"hasContext:isSearching\"],\n commandAction: {\n name: \"searchForm_abort\",\n },\n },\n {\n id: \"wf_info\",\n icon: \"fa-regular fa-square-check\",\n name: \"$formActions:wf_info.name\",\n views: [\"workflow\"],\n commandAction: {\n name: \"wf_info\",\n },\n },\n];\n","import { useMemo, useContext } from \"react\";\nimport unionBy from \"lodash/unionBy\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport { useSelector } from \"react-redux\";\nimport { useAsyncMemo } from \"hooks\";\nimport CommandActionHandler from \"components/CommandActions\";\nimport {\n shouldRenderItem,\n mergePartialConfig,\n} from \"containers/ActionPanel/Utils\";\nimport { getDefaultsConfig } from \"data/constants\";\nimport { ItemContext } from \"data/context\";\nimport { getFormActionsConfig } from \"data/formActions\";\nimport { userFormActionsSelector } from \"data/reducers/selectors\";\nimport { type ItemActionConfig, type FormActionsConfigDTO } from \"data/types\";\nimport { getLocalizedText, asyncFilter } from \"data/utils\";\n\nexport const useFormActionsConfig = (\n itemUri: string,\n formatId: number\n): FormActionsConfigDTO => {\n const userFormActions = useSelector(userFormActionsSelector);\n return useMemo(() => {\n const userActions = cloneDeep(userFormActions.actions);\n // get formActions as defined in appsettings.json (after being checked for security for this user)\n const formActions = cloneDeep(getFormActionsConfig());\n\n // get itemUri specific formActions\n const defaults = getDefaultsConfig(itemUri, formatId);\n if (defaults?.formActions) {\n if (defaults.formActions.replace === true) {\n return (\n mergePartialConfig(\n defaults.formActions.actions,\n formActions\n ) || []\n );\n } else {\n return unionBy(\n defaults.formActions.actions,\n userActions,\n formActions,\n \"id\"\n );\n }\n } else {\n return unionBy(userActions, formActions, \"id\");\n }\n }, [itemUri, formatId, userFormActions]);\n};\n\nexport const useFormActions = (targetView, contextProps) => {\n const itemContext = useContext(ItemContext);\n const { itemUri = \"\", formatId = -1 } = itemContext || {};\n const formActions = useFormActionsConfig(itemUri, formatId);\n const allContextProps = useMemo(\n () => ({ ...contextProps, ...itemContext }),\n [contextProps, itemContext]\n );\n const actions: Array = useAsyncMemo(\n async () => {\n const result = await asyncFilter(\n formActions,\n (action: ItemActionConfig) =>\n shouldRenderItem(\n action,\n itemUri,\n formatId,\n allContextProps,\n targetView\n )\n );\n return result.map((action) => ({\n id: action.id,\n title: getLocalizedText(action.name),\n icon: action.icon,\n description: getLocalizedText(\n action.desc ?? action.description\n ),\n onClick: () => {\n if (action.commandAction == null) {\n console.error(\n `Sorry, no CommandAction defined for action.name='${action.name}'`\n );\n } else {\n CommandActionHandler(\n action.commandAction.name,\n Object.assign(\n {},\n allContextProps,\n action.commandAction.props\n )\n );\n }\n },\n }));\n },\n [formActions, itemUri, formatId, allContextProps, targetView],\n null\n );\n return actions;\n};\n","import { useState, useEffect, useRef } from \"react\";\nimport { useAsync } from \"hooks\";\nimport { isListed } from \"data/utils\";\nimport { fetchItemFlows } from \"data/api\";\nimport { type ItemFlowsConfigDTO } from \"data/types\";\n\ntype Props = {\n /** current folder's itemUri */\n itemUri: string,\n /** optional target itemUri */\n targetItemUri?: string,\n /** flow direction \"in\" vs \"out\" */\n direction?: ItemFlowDirectionEnum,\n /** optional flow.id to pre-select */\n flowId?: string,\n /** optional list of flow.ids to show */\n visibleFlowIds?: Array,\n /** optional category.id to pre-select */\n categoryId?: string,\n /** possibility to opt out, defaults to true */\n canFetch?: boolean,\n};\n\nconst useItemFlows = ({\n itemUri,\n targetItemUri,\n direction,\n flowId,\n visibleFlowIds,\n categoryId,\n canFetch = true,\n}: Props) => {\n const [selectedFlow, setSelectedFlow] = useState(null);\n const [selectedCategory, setSelectedCategory] = useState(null);\n // We use a ref, since might set the selectedFlow in the useAsync...\n const allowFlowIdFromProps = useRef(true);\n // get input item flows\n const state = useAsync(async () => {\n if (!canFetch) return null;\n if (targetItemUri == null && itemUri == null) return null;\n try {\n const cfg: ItemFlowsConfigDTO = await fetchItemFlows(\n targetItemUri || itemUri,\n direction\n );\n // filter requested visible flows\n // PS: yes I know we could filter them on the server-side, but it would not improve performance just reduce packet size\n if (visibleFlowIds) {\n cfg.flows = cfg.flows.filter((f) =>\n isListed(f.id, visibleFlowIds)\n );\n }\n // pre-select a specific flow\n if (cfg.selectFlowId) {\n allowFlowIdFromProps.current = false;\n setSelectedFlow(\n cfg.flows.find((f) => f.id === cfg.selectFlowId)\n );\n } else if (cfg.flows.length === 1) {\n allowFlowIdFromProps.current = false;\n //pre-select if only one flow\n setSelectedFlow(cfg.flows[0]);\n } else {\n allowFlowIdFromProps.current = true;\n }\n return cfg;\n } catch (err) {\n console.warn(\"Error while fetchItemFlows\", err);\n throw err;\n }\n }, [targetItemUri, itemUri, direction, visibleFlowIds, canFetch]);\n\n useEffect(() => {\n if (\n state.loading ||\n state.error ||\n !state.value ||\n !flowId ||\n !allowFlowIdFromProps.current\n )\n return;\n setSelectedFlow(state.value.flows.find((f) => f.id === flowId));\n }, [state.loading, state.error, state.value, flowId]);\n\n useEffect(() => {\n if (state.loading || state.error || !state.value || !categoryId) return;\n setSelectedCategory(\n state.value.categories.find((f) => f.id === categoryId)\n );\n }, [state.loading, state.error, state.value, categoryId]);\n\n return [\n selectedFlow,\n selectedCategory,\n state,\n setSelectedFlow,\n setSelectedCategory,\n ];\n};\n\nexport { useItemFlows };\n","import useAsync from \"react-use/lib/useAsync\";\nimport { getFolderItemUri } from \"data/api\";\n\nconst useFolderItemUri = (itemUri) =>\n useAsync(async () => {\n if (itemUri == null) return null;\n try {\n return await getFolderItemUri(itemUri);\n } catch (e) {\n console.error(\"Cannot fetch folder itemUri\", itemUri, e);\n return itemUri;\n }\n }, [itemUri]);\n\nexport { useFolderItemUri };\n","// @flow\nimport React, { useMemo } from \"react\";\nimport Icons from \"@hs/icons\";\nimport loc from \"i18next\";\nimport queryString from \"data/queryString\";\nimport { getRoute } from \"components/ItemUriLink\";\nimport AttributeLabel from \"components/ExtraAttributes/AttributeLabel\";\nimport ViewerControlBase from \"components/ExtraAttributes/ViewerControl/ViewerControlBase\";\nimport styles from \"./LinkViewer.module.css\";\nimport sharedStyles from \"shared/styles.module.css\";\nimport { getClassNames } from \"data/utils\";\n\ntype Props = {\n /** attribute name */\n name: string,\n /** current value */\n value: string | any,\n /** which link type to create (mailto, tel, ...) set as prefix (if not defined will show localized \"open link\" text */\n linkType?: string,\n /** value width */\n width?: number,\n /** which FontAwesome icon to render */\n icon?: string,\n /** whether icon should be place at beginning or end of text */\n isIconLast?: boolean,\n width?: number,\n className?: string,\n caption?: string,\n /** optional onClick handler */\n onClick?: () => void,\n};\n\ntype ControlledProps = Props & {\n /** label text */\n header?: string,\n /** whether rendered inside a Grid */\n isGridCell: boolean,\n};\n\nconst renderValue = (\n linkType?: string,\n value?: string,\n caption?: string,\n icon?: string,\n isIconLast?: boolean\n) => (\n <>\n {icon && isIconLast === false && (\n <>\n {\" \"}\n \n )}\n {linkType == null && caption == null ? (\n {loc.t(\"plugin:extraAttributes.link_open\")}\n ) : (\n {caption || value}\n )}\n {icon && isIconLast && (\n <>\n {\" \"}\n \n \n )}\n \n);\n\nconst useAnchorProps = (value, linkType, width, isDoc) => {\n // #35977 convert inpoint:browse links\n let href = String(value || \"\");\n let target = \"_blank\";\n\n let comparableValue = String(value || \"\").toLowerCase();\n if (comparableValue.startsWith(\"inpoint:browse\")) {\n const qs = queryString.parse(value.substr(value.indexOf(\"?\")));\n /* istanbul ignore else */\n if (qs[\"uri\"] !== undefined) {\n target = \"_self\";\n href = getRoute({\n itemUri: qs.uri,\n isExternalLink: true,\n isDoc,\n });\n }\n } else if (comparableValue.startsWith(\"pam-item://\")) {\n target = \"_self\";\n href = getRoute({\n itemUri: comparableValue,\n isExternalLink: true,\n isDoc,\n });\n } else if (linkType != null) {\n href = `${linkType}:${href}`;\n }\n let style: CSSStyleDeclaration = useMemo(\n () => ({\n color: \"#337ab7\",\n width: width && width > 0 ? `${width}px` : \"100px\",\n }),\n [width]\n );\n return useMemo(() => ({ href, target, style }), [href, target, style]);\n};\n\nconst LinkViewer = ({\n name,\n value,\n isDoc,\n linkType,\n width,\n icon,\n isIconLast,\n className,\n caption,\n onClick,\n}: Props) => {\n const { style, href, target } = useAnchorProps(\n value,\n linkType,\n width,\n isDoc\n );\n\n // if there's no value for mail fields, don't display the icon or the mailto link\n if (!value && linkType === \"mailto\") {\n return ;\n }\n\n return href.length > 0 ? (\n \n {renderValue(linkType, value, caption, icon, isIconLast)}\n \n ) : (\n \n {loc.t(\"plugin:extraAttributes.link_empty\")}\n \n );\n};\nLinkViewer.displayName = \"LinkViewer\";\n\nconst LinkViewerControl = ({\n isGridCell,\n header,\n ...props\n}: ControlledProps) => {\n if (isGridCell)\n return (\n
\n \n
\n );\n else\n return (\n \n {\" \"}\n \n \n );\n};\n\nLinkViewerControl.displayName = \"LinkViewerControl\";\nLinkViewerControl.defaultProps = {\n isGridCell: false,\n isIconLast: true,\n icon: \"fa-regular fa-arrow-up-right-from-square\",\n};\nexport default LinkViewerControl;\n\nexport { LinkViewer };\n","import React, { PureComponent } from \"react\";\r\nimport { connect, Dispatch } from \"react-redux\";\r\nimport { docThumbnailRequestAction } from \"data/actions\";\r\n// import { fetchThumbnail } from \"data/api\";\r\nimport { Img } from \"react-image\";\r\nimport Icons from \"@hs/icons\";\r\nimport Constants, { type ConstantsEnum } from \"data/constants\";\r\nimport * as s from \"data/reducers/selectors\";\r\nimport styles from \"./Thumbnail.module.css\";\r\n\r\ntype Props = {\r\n /** document's itemUri */\r\n itemUri: string,\r\n /** callback when rendered (and HTML loaded) */\r\n onLoad?: () => void,\r\n /** callback when user clicks the img element */\r\n onClick?: () => void,\r\n // from Redux\r\n /** thumbnail's data base64 encoded */\r\n result?: string,\r\n /** Redux dispatch */\r\n dispatch: Dispatch,\r\n /** thumbnail fetch status */\r\n status: ConstantsEnum,\r\n /** optional style to apply to image itself\r\n * @default {CSSStyleDeclaration} { maxHeight:128, maxWidth:128 }\r\n */\r\n style?: CSSStyleDeclaration,\r\n};\r\n\r\n/**\r\n * Renders one document's Thumbnail\r\n */\r\nexport class Thumbnail extends PureComponent {\r\n componentDidMount() {\r\n /* istabul ignore else */\r\n if (\r\n this.props.itemUri != null &&\r\n this.props.result === undefined &&\r\n this.props.status === Constants.NONE\r\n ) {\r\n this._fetch();\r\n }\r\n }\r\n\r\n _fetch = () => {\r\n const { itemUri, dispatch } = this.props;\r\n dispatch(docThumbnailRequestAction(itemUri));\r\n };\r\n\r\n _onLoad = () => {\r\n /* istanbul ignore else */\r\n if (typeof this.props.onLoad === \"function\") this.props.onLoad();\r\n };\r\n\r\n render() {\r\n if (\r\n this.props.result == null ||\r\n String(this.props.result).length === 0\r\n ) {\r\n if (\r\n [Constants.NONE, Constants.LOADING].includes(this.props.status)\r\n ) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n } else {\r\n return (\r\n }\r\n className={styles.thumbnail}\r\n style={\r\n this.props.style || {\r\n maxWidth: 128,\r\n maxHeight: 128,\r\n }\r\n }\r\n />\r\n );\r\n }\r\n }\r\n}\r\n\r\nconst mapStateToProps = /* istanbul ignore next */ (state, ownProps) => ({\r\n status: s.thumbnailStatusSelector(state, ownProps.itemUri),\r\n result:\r\n ownProps.itemUri == null\r\n ? undefined\r\n : s.thumbnailStatusSelector(state, ownProps.itemUri) ===\r\n Constants.OK\r\n ? s.thumbnailResultSelector(state, ownProps.itemUri)\r\n : undefined,\r\n ...ownProps,\r\n});\r\n\r\nexport default connect(mapStateToProps)(Thumbnail);\r\n","// @flow\nimport React, { PureComponent } from \"react\";\nimport loc from \"i18next\";\nimport { ParseLocation } from \"components/MapViewer/utils\";\nimport GeoPlaceInput from \"components/GeoPlaceInput\";\nimport FormGroup from \"react-bootstrap/lib/FormGroup\";\nimport InputGroup from \"react-bootstrap/lib/InputGroup\";\nimport Icons from \"@hs/icons\";\nimport styles from \"./PlaceInput.module.css\";\n\ntype Props = {\n /** callback when user sets location */\n onChange: (location: Location) => void,\n};\n\n/**\n * MapModal's Places search input\n */\nclass PlaceInput extends PureComponent {\n _onChangePlace = (location: string) => {\n if (typeof this.props.onChange === \"function\") {\n const latlng = ParseLocation(location);\n if (latlng != null) {\n this.props.onChange(latlng);\n }\n }\n };\n\n render = () => (\n \n \n \n \n \n\n \n \n \n );\n}\nexport default PlaceInput;\n","// @flow\nimport React, { PureComponent } from \"react\";\nimport Modal from \"components/Modal\";\nimport Button from \"react-bootstrap/lib/Button\";\nimport {\n type MapLocationInfo,\n type Location,\n type MapEditLocationResult,\n} from \"data/types\";\nimport loc from \"i18next\";\nimport { createModal } from \"react-modal-promise\";\nimport { SupportGeoPlaceInput } from \"components/MapViewer/providerSupport\";\nimport MapViewer from \"components/MapViewer\";\nimport PlaceInput from \"./PlaceInput\";\nimport Icons from \"@hs/icons\";\nimport styles from \"./MapModal.module.css\";\n\ntype Props = {\n /** current itemUri */\n itemUri: string,\n /** react-modal-promise: whether to show dialog */\n open: boolean,\n /** react-modal-promise: callback when user closes Dialog */\n close: () => void,\n /** name of provider to use\n * @default null retrieve default mapProvider from config.general.geo.name\n */\n mapProvider: ?string,\n /** callback when the user clicks the Set button\n * @param {MapEditLocationResult} editLocationResult latitude and longitude (or Radius, or Area) of user editing\n */\n onSet: ?(editLocationResult: MapEditLocationResult) => void,\n /** label to show on Button\n * @default common:map.setPosition\n */\n setButtonLabel?: string,\n /** list of locations (markers / areas) to show on the map */\n locations: ?Array,\n /** whether to render a \"center\" draggable pin marker\n * @default false\n */\n useMarker?: boolean,\n /** the current radius circle (in meters) - used by GeoRadiusInput */\n radius?: number,\n /** whether to show place input box (geocoding) */\n usePlaceInput?: boolean,\n /** optional modal title\n * @default {string} common:map.title\n */\n title?: string,\n};\n\ntype State = {\n viewerLoaded: boolean,\n};\n\nclass MapModal extends PureComponent {\n mapRef: { current: null | MapViewer };\n\n static defaultProps = {\n usePlaceInput: true,\n };\n\n constructor(props: Props) {\n super(props);\n this.mapRef = React.createRef();\n this.state = {\n viewerLoaded: false,\n };\n }\n\n _onSet = () => {\n /* istanbul ignore else */\n if (this.mapRef != null && this.mapRef.current != null) {\n const editLocation = this.mapRef.current.GetEditLocationResult();\n /* istanbul ignore else */\n if (typeof this.props.onSet === \"function\")\n this.props.onSet(editLocation);\n this.props.close();\n }\n };\n\n _onChangeFromPlaceInput = (location: Location) =>\n this.mapRef.current.SetCenterMarker(location);\n\n _showGeoInput = (): boolean =>\n this.props.usePlaceInput === true &&\n SupportGeoPlaceInput() &&\n this.props.useMarker === true &&\n this.props.locations != null &&\n this.props.locations.length > 0 &&\n this.props.locations[0].allowEdit !== false;\n\n _onViewerLoad = (success: boolean) =>\n this.setState({ viewerLoaded: success });\n\n render = () => (\n \n \n \n {\" \"}\n {this.props.title || loc.t(\"common:map.title\")}\n \n \n \n \n \n {this.state.viewerLoaded &&\n typeof this.props.onSet === \"function\" && (\n \n {this._showGeoInput() && (\n \n )}\n \n {this.props.setButtonLabel ||\n loc.t(\"common:map.setPosition\")}\n \n \n )}\n \n );\n}\nMapModal.displayName = \"MapModal\";\nexport default MapModal;\nexport const openMapModal = createModal(MapModal);\n","// @flow\n//#region imports\nimport React, { PureComponent } from \"react\";\nimport { connect, Dispatch } from \"react-redux\";\nimport { compose } from \"redux\";\nimport { fetchBreadcrumb, addFavorite, delFavorite } from \"data/api\";\nimport {\n ServerEventActionType,\n ServerEventItemType,\n type BreadcrumbResultDTO,\n type BreadcrumbPartDTO,\n type SiteTypeEnum,\n} from \"data/types\";\nimport { setCurrentBreadcrumb } from \"data/actions\";\nimport Breadcrumb from \"components/Breadcrumb\";\nimport Constants, { type ConstantsEnum } from \"data/constants\";\nimport Status from \"components/Status\";\nimport GlobalEventsHandler from \"containers/GlobalEventsHandler\";\nimport * as s from \"data/reducers/selectors\";\nimport { toastActionResult } from \"data/toast\";\nimport withOfflineHandler from \"containers/OfflineHandler\";\n//#endregion\n\n//#region flow types\ntype Props = {\n /** itemUri */\n itemUri?: string,\n /** whether marked as favorite */\n isFav: boolean,\n /** whether this item is favorable */\n isFavorable: boolean,\n /** Redux dispatch */\n dispatch: Dispatch,\n /** all part objects making up breadcrumb */\n parts?: Array,\n /** current version */\n version?: number,\n /** siteType */\n siteType?: SiteTypeEnum,\n /** optional custom icon */\n icon?: string,\n /** optional custom icon color*/\n color?: string,\n /** whole breadcrumb in text */\n text?: string,\n /** breadcrumb item name */\n name: string,\n /** current view name */\n viewName: string,\n /** whether user is allowed to navigate through breadcrumb (and hide favorite option) */\n isReadonly: boolean,\n /** whether this updates when globalEvents are received */\n isRefreshing: boolean,\n /** scope breadcrumb to show parts only starting the specified level number */\n scopeFromLevel?: number,\n /** GlobalEventsHandler.refreshId */\n refreshId: number,\n /** optional breadcrumbPart click event instead of history.push */\n onBreadcrumbPartClick?: (itemUri: string) => void,\n};\n\ntype State = {\n status: ConstantsEnum,\n favStatus: ConstantsEnum,\n initialLoading: boolean,\n};\n//#endregion\n\nexport async function toggleFavorite({\n isFav,\n itemUri,\n name,\n logger = toastActionResult,\n}: {\n isFav: boolean,\n itemUri: string,\n name: string,\n logger: () => void,\n}): Promise {\n let success: boolean = false;\n try {\n success = isFav\n ? await delFavorite(itemUri)\n : await addFavorite(itemUri, name);\n } catch (e) {\n // since success is false, we don't need to do anything here\n }\n logger(success, isFav ? \"breadcrumb.delfav\" : \"breadcrumb.addfav\", {\n name,\n });\n return success;\n}\n\nexport class BreadcrumbContainer extends PureComponent {\n _isMounted: boolean;\n abortController: AbortController | null;\n\n state = {\n status: Constants.LOADING,\n favStatus: Constants.LOADING,\n initialLoading: true,\n };\n\n static defaultProps = {\n isFav: false,\n isReadonly: false,\n isRefreshing: true,\n };\n\n componentDidMount = () => {\n this._isMounted = true;\n this._fetch(this.props.itemUri);\n };\n\n componentWillUnmount = () => {\n const { dispatch, viewName } = this.props;\n /* istanbul ignore else */\n if (this.abortController != null) {\n this.abortController.abort();\n }\n dispatch(\n setCurrentBreadcrumb({\n breadcrumb: {},\n viewName,\n })\n );\n this._isMounted = false;\n };\n\n componentDidUpdate(prevProps: Props) {\n /* istanbul ignore else */\n if (\n prevProps.itemUri !== this.props.itemUri ||\n (this.props.isRefreshing === true &&\n prevProps.refreshId !== this.props.refreshId)\n ) {\n this._fetch(this.props.itemUri);\n }\n }\n\n _maybeGetNewAbortController = () => {\n if (this.abortController != null) {\n this.abortController.abort();\n return new AbortController();\n }\n return this.abortController || new AbortController();\n };\n\n _fetch = (itemUri: ?string): void => {\n this.abortController = this._maybeGetNewAbortController();\n const { dispatch, viewName } = this.props;\n if (itemUri != null) {\n this.setState({ status: Constants.LOADING });\n this.props.offlineHandler\n .factory(fetchBreadcrumb)(itemUri, this.abortController.signal)\n .then((breadcrumb: BreadcrumbResultDTO) => {\n this._isMounted &&\n this.setState(\n {\n status: Constants.OK,\n initialLoading: false,\n favStatus: Constants.OK,\n },\n () =>\n dispatch(\n setCurrentBreadcrumb({\n breadcrumb,\n viewName,\n })\n )\n );\n })\n .catch((err) => {\n /* istanbul ignore if */\n if (this._isMounted && err.name === \"AbortError\") {\n this.setState({\n status: Constants.LOADING,\n initialLoading: true,\n });\n } else if (this._isMounted) {\n this.setState({\n status: Constants.ERROR,\n favStatus: Constants.ERROR,\n });\n }\n });\n } else {\n this._isMounted && this.setState({ status: Constants.OK });\n }\n };\n\n favOnClick = (e: SyntheticMouseEvent<*>) => {\n e.preventDefault();\n const { itemUri, name, isFav } = this.props;\n\n /* istanbul ignore next */\n if (itemUri == null) return;\n\n this.setState({ favStatus: Constants.LOADING });\n\n toggleFavorite({ isFav, itemUri, name }).then((success) => {\n this.setState({\n favStatus: success ? Constants.OK : Constants.ERROR,\n });\n });\n };\n\n render() {\n /* istanbul ignore else */\n if (this.props.itemUri) {\n const { initialLoading, status, favStatus } = this.state;\n const {\n text,\n parts,\n version,\n siteType,\n icon,\n color,\n isDoc,\n isFav,\n isReadonly,\n isFavorable,\n scopeFromLevel,\n onBreadcrumbPartClick,\n canChangeSite,\n } = this.props;\n\n /* istanbul ignore else */\n if (initialLoading === true || status === Constants.ERROR)\n return (\n \n );\n\n /* istanbul ignore else */\n if (status !== Constants.ERROR)\n return (\n \n );\n\n /* istanbul ignore next */\n return null;\n }\n\n return null;\n }\n}\n\n// apply Redux Store state to Component Properties\nconst mapStateToProps = /*istanbul ignore next*/ (state, ownProps) => {\n let result = {\n name: s.breadcrumbNameSelector(state, ownProps.viewName),\n ...ownProps,\n };\n if (state.breadcrumb[ownProps.viewName]) {\n const { itemUri, ...rest } = state.breadcrumb[ownProps.viewName];\n result = Object.assign({}, result, rest);\n }\n return result;\n};\n\nexport default compose(\n connect(mapStateToProps),\n GlobalEventsHandler({\n items: [\n ServerEventItemType.document,\n ServerEventItemType.folder,\n ServerEventItemType.favorite,\n ],\n actions: [\n ServerEventActionType.modify,\n ServerEventActionType.edit,\n ServerEventActionType.add,\n ServerEventActionType.delete,\n ServerEventActionType.refresh,\n ],\n }),\n withOfflineHandler\n)(BreadcrumbContainer);\n","import React, { useCallback, useMemo } from \"react\";\nimport FormsyEditorBase from \"./FormsyEditorBase\";\nimport Dropdown from \"@hs/dropdown\";\nimport MenuItem from \"react-bootstrap/lib/MenuItem\";\nimport ButtonGroup from \"react-bootstrap/lib/ButtonGroup\";\nimport Button from \"react-bootstrap/lib/Button\";\nimport Icons from \"@hs/icons\";\nimport { type EnumValue } from \"data/types\";\nimport { getLocalizedText } from \"data/utils\";\n\ntype Props = {\n /** Enum Values */\n enum: Array>,\n /** Is a required field */\n isRequired?: boolean,\n /** Is a read only field */\n isReadonly?: boolean,\n /** whether it is an Enum or and EnumFlag */\n isMulti?: boolean,\n};\n\ntype EnumRendererProps = {\n isValid: boolean,\n enum: Array>,\n value?: int,\n name: string,\n changeValue: () => void,\n};\n\nconst ButtonGroupEnumRenderer = (props: EnumRendererProps) => (\n \n {props.enum.map((enumValue) => (\n props.onChange(enumValue.value)}\n disabled={!!props.isReadonly}\n active={props.isActive(enumValue.value)}\n >\n {enumValue.icon && typeof enumValue.icon === \"string\" ? (\n \n ) : (\n enumValue.icon\n )}{\" \"}\n {getLocalizedText(enumValue.label)}\n \n ))}\n \n);\n\nButtonGroupEnumRenderer.displayName = \"ButtonGroupEnumRenderer\";\n\nconst DropdownEnumRenderer = (props: EnumRendererProps) => (\n \n {props.activeLabels}\n \n {props.enum.map((enumValue, idx) => (\n props.onChange(enumValue.value)}\n active={props.isActive(enumValue.value)}\n >\n {enumValue.icon && typeof enumValue.icon === \"string\" ? (\n \n ) : (\n enumValue.icon\n )}{\" \"}\n {getLocalizedText(enumValue.label)}\n \n ))}\n \n \n);\n\nconst EnumRenderer = {\n ButtonGroup: ButtonGroupEnumRenderer,\n Dropdown: DropdownEnumRenderer,\n};\n\nconst EnumEditorControl = (props: Props) => {\n const isActive = useCallback(\n (enumValue: int) =>\n props.isMulti\n ? (props.value & enumValue) > 0\n : props.value == null\n ? enumValue == null\n : enumValue === props.value,\n [props.isMulti, props.value]\n );\n\n const handleFlagsChange = useCallback(\n (enumValue: int) =>\n (props.value & enumValue) > 0\n ? props.value & ~enumValue\n : props.value | enumValue,\n [props.value]\n );\n\n const handleChange = useCallback(\n (changeValue: () => void, enumValue: int) => {\n const newValue = props.isMulti\n ? handleFlagsChange(enumValue)\n : enumValue;\n changeValue({ currentTarget: { value: newValue } });\n },\n [props.isMulti, handleFlagsChange]\n );\n const activeLabels = useMemo(\n () =>\n props.enum\n .filter((enumValue) =>\n props.isMulti\n ? (props.value & enumValue.value) > 0\n : enumValue.value ===\n props.value /* istanbul ignore next */ ||\n (enumValue.value == null && props.value == null)\n )\n .map((enumValue) => (\n \n {enumValue.icon &&\n typeof enumValue.icon === \"string\" ? (\n \n ) : (\n enumValue.icon\n )}{\" \"}\n {getLocalizedText(enumValue.label)}\n \n )),\n [props.enum, props.value, props.isMulti, props.name]\n );\n const EnumRenderComponent = useMemo(() => {\n if (\n typeof props.component === \"string\" &&\n EnumRenderer.hasOwnProperty(props.component)\n ) {\n return EnumRenderer[props.component];\n }\n if (props.component != null && typeof props.component === \"function\") {\n return props.component;\n }\n return EnumRenderer.ButtonGroup;\n }, [props.component]);\n\n return (\n void,\n isValid: boolean\n ) => (\n \n handleChange(changeValue, enumValue)\n }\n />\n )}\n {...props}\n />\n );\n};\n\nEnumEditorControl.displayName = \"EnumEditorControl\";\nexport default EnumEditorControl;\n","// @flow\nimport React, { useMemo } from \"react\";\nimport AttributeLabel from \"components/ExtraAttributes/AttributeLabel\";\nimport ViewerControlBase from \"components/ExtraAttributes/ViewerControl/ViewerControlBase\";\nimport { getValue } from \"data/utils\";\nimport sharedStyles from \"shared/styles.module.css\";\n\ntype Props = {\n name: string,\n header?: string,\n value: any | string,\n width?: number,\n};\n\nconst StaticViewerControl = ({ name, header, value, width }: Props) => {\n // $FlowFixMe\n let style: CSSStyleDeclaration = {};\n if (width && width > 0) style.width = width * 1.3 + \"px\";\n else style.minWidth = \"100px\";\n\n // replace carriage returns and some basic html safety\n const htmlValue = useMemo(() => {\n const v = getValue(value);\n return (\n (v\n ? String(v)\n .replace(//g, \">\")\n .replace(/\\n/g, \"
\")\n : \"\") + \" \"\n );\n }, [value]);\n\n return (\n \n \n \n \n );\n};\n\nStaticViewerControl.displayName = \"StaticViewerControl\";\nexport default StaticViewerControl;\n","import {\n HttpMethod,\n ContentType,\n CacheStrategy,\n SearchRequestType,\n SearchScope,\n NewFormType,\n ItemFlowTemplateType,\n ItemContextsFlags,\n} from \"data/types\";\nimport type {\n Dictionary,\n ApiMethod,\n UserInfoResultDTO,\n CardItemResultDTO,\n TreeDTO,\n BreadcrumbResultDTO,\n FormResultDTO,\n SearchFormResultDTO,\n DocListFilterRequestDTO,\n DocListSortRequestDTO,\n DocsResultDTO,\n WorkflowDTO,\n WorkflowInfoDTO,\n WorkflowProviderDTO,\n SAYTOptionDTO,\n SearchResultDTO,\n SearchCountResultDTO,\n SearchRequestDTO,\n SearchFilterDTO,\n UserPrincipalDTO,\n GroupPrincipalDTO,\n ExtraAttributesEmbeddedGridDTO,\n SortDirectionEnum,\n ItemLinkTypeEnum,\n ActivitiesDTO,\n NewFormTypeEnum,\n LookupValuesResultDTO,\n FormLookupTypeEnum,\n NewsFeedDTO,\n SubscribeResponseDTO,\n UserSettingsResultDTO,\n SearchFormInfoDTO,\n UserSettingsDTO,\n ItemFlowsConfigDTO,\n ItemFlowDirectionEnum,\n SendNotificationRequestDTO,\n SendDocumentsRequestDTO,\n NewItemResultDTO,\n RasterMapResultDTO,\n ReminderDTO,\n ShareDTO,\n TransferItemRequestDTO,\n // SearchValueTypeEnum\n} from \"data/types\";\n\nimport { getGeoRasterProvider } from \"components/MapViewer/providerSupport\";\n\n/**\n * ApiCatalog defines ALL WebApi methods provided by inPoint.Web.Server.\n *\n * Each method is identified by name (the \"key\"), and the value is the metadata:\n * - url (without the __api/ prefix); e.g. \"/user/cards\"\n * - HTTP method (per default GET)\n *\n * Cache: caching settings for:\n * 1. resilience - unstable network connection\n * Cached by service-worker.custom.js; do not define to use default caching strategy,\n * set to false to always avoid caching (equals to CacheStrategy.NetworkOnly) or define\n * extra properties as such:\n * - strategy: defaults to CacheStrategy.StaleWhileRevalidate\n * Available: None, StaleWhileRevalidate, CacheFirst, NetworkFirst, NetworkOnly, CacheOnly\n *\n * 2. offline items - fully synchronized for full offline work.\n * Handled by ApiManagerMakeAvailableOffline.js, uses following cache settings:\n * - keyParams: per default the URL is used as the CacheKey - here you can\n * optionally choose to omit/add other params\n * - transformer: transform the original body (only JSON) before caching\n * - depsAnalyzer: define which other dependencies exist for the current method\n * (note: you can view the latest dependency tree with CommandAction offline_depsMap)\n *\n * Notes:\n * - resilience is currently only for GET methods\n * - while online the caching is handled by service-worker.js; when offline it's\n * done directly by ApiManager (since Workbox can only check ONE specific Cache\n * and we might have items across multiple ones)\n * - caching of offline items (\"synchronization\") is handled only by ApiManagerMakeAvailableOffline;\n * this includes GET/PUT/POST methods\n * -\n */\n\nexport /* istanbul ignore next*/ const ApiCatalog: Dictionary<\n string,\n ApiMethod\n> = {\n //#region User\n\n /**\n * @returns {UserInfoResultDTO}\n */\n fetchUser: {\n url: \"/user\",\n cache: {\n strategy: CacheStrategy.NetworkFirst,\n },\n },\n\n /**\n * @returns {Array}\n */\n fetchSites: {\n url: \"/user/sites\",\n cache: {\n strategy: CacheStrategy.NetworkFirst,\n },\n },\n\n /**\n * @returns {Array}\n */\n fetchCards: {\n url: \"/user/cards\",\n },\n /**\n * @returns {Array}\n */\n fetchCardsByEntity: {\n url: \"/user/cards\",\n method: HttpMethod.POST,\n offline: {\n storeHelper: \"cardsCards\",\n },\n },\n\n /**\n * @returns {UserSettingsResultDTO}\n */\n fetchUserSettings: {\n url: \"/user/settings\",\n },\n\n /**\n * @param {UserSettingsDTO} settings\n * @returns {boolean}\n */\n saveUserSettings: {\n method: HttpMethod.POST,\n url: \"/user/settings\",\n },\n\n /**\n * @returns {NewsFeedDTO}\n */\n fetchNews: {\n url: \"/user/feed\",\n cache: {\n strategy: CacheStrategy.NetworkFirst,\n },\n },\n\n // ----- favorites\n\n /**\n * @returns {Array}\n */\n fetchFavorites: {\n url: \"/user/fav\",\n cache: {\n strategy: CacheStrategy.NetworkFirst,\n },\n },\n\n /**\n * @param {string} itemUri\n * @param {string} name\n * @returns {boolean}\n */\n addFavorite: {\n method: HttpMethod.PUT,\n url: \"/user/fav\",\n offline: {\n allowEdit: true,\n transformer: () => true,\n },\n },\n\n /**\n * @param {string} itemUri\n * @returns {boolean}\n */\n delFavorite: {\n method: HttpMethod.DELETE,\n url: \"/user/fav\",\n offline: {\n allowEdit: true,\n transformer: () => true,\n },\n },\n\n /**\n * @param {SearchRequestDTO} searchRequest\n * @returns {boolean}\n */\n addSearchFavorite: {\n method: HttpMethod.PUT,\n url: \"/search/fav\",\n },\n\n /**\n * @param {number} linkId\n * @returns {boolean}\n */\n delFavoriteLink: {\n method: HttpMethod.DELETE,\n url: \"/user/fav\",\n offline: {\n allowEdit: true,\n transformer: () => true,\n },\n },\n\n // ----- mails\n\n // TODO move to /item/mail\n /**\n * @param {SendNotificationRequestDTO} request\n * @returns {boolean}\n */\n sendMail: {\n method: HttpMethod.POST,\n url: \"/user/mail\",\n },\n\n // TODO move to /item/mail/doc\n /**\n * @param {SendDocumentsRequestDTO} request\n * @returns {boolean}\n */\n sendMailAttachments: {\n method: HttpMethod.POST,\n url: \"/user/maildoc\",\n },\n //#endregion\n\n //#region Items\n /**\n * @param {string} itemUri\n * @returns {BreadcrumbResultDTO}\n */\n fetchBreadcrumb: {\n url: \"/folder/breadcrumb\",\n },\n\n // ----- Reminders\n /**\n * @param {string} itemUri\n * @returns {Array}\n */\n fetchReminders: {\n url: \"/item/reminders\",\n },\n\n /**\n * @param {ReminderDTO} reminderRequest\n * @returns {number}\n */\n upsertReminder: {\n method: HttpMethod.POST,\n url: \"/item/reminder\",\n },\n\n /**\n * @param {number} reminderId\n * @param {string} itemUri\n * @returns {number}\n */\n deleteReminder: {\n method: HttpMethod.DELETE,\n url: \"/item/reminder\",\n },\n\n // ----- shares\n /**\n * @param {string} itemUri\n * @returns {ShareDTO}\n */\n fetchShare: {\n url: \"/item/share\",\n },\n\n /**\n * @param {ShareDTO} shareRequest\n * @returns {boolean}\n */\n createShare: {\n method: HttpMethod.POST,\n url: \"/item/share\",\n },\n\n /**\n * @param {ShareDTO} shareRequest\n * @returns {boolean}\n */\n updateShare: {\n method: HttpMethod.PUT,\n url: \"/item/share\",\n },\n\n /**\n * @param {string} itemUri\n * @returns {boolean}\n */\n deleteShare: {\n method: HttpMethod.DELETE,\n url: \"/item/share\",\n },\n\n /**\n * @param {Array} itemUris\n * @param {Array} webDavName\n * @returns {Array}\n */\n checkShareName: {\n method: HttpMethod.POST,\n url: \"/item/share/unique\",\n },\n\n /**\n * @param {Array} itemUris\n * @param {Array} formatIds\n * @returns {ShareContextDTO}\n */\n fetchShareContext: {\n method: HttpMethod.POST,\n url: \"/item/share/context\",\n },\n // ----- items\n\n /**\n * @param {string} itemUri\n * @returns {Array}\n */\n fetchActivities: {\n url: \"/item/activity\",\n },\n\n /**\n * @returns {Array}\n */\n fetchOfflineItems: {\n url: \"/offline/all\",\n cache: {\n strategy: CacheStrategy.NetworkFirst,\n },\n },\n\n /**\n * @param {string} itemUri\n * @returns {string} guid or null\n */\n addOfflineItem: {\n method: HttpMethod.POST,\n url: \"/offline\",\n offline: {\n allowEdit: true,\n transformer: () => crypto.randomUUID(), //TODO: Fix for WebKit < 92,\n },\n },\n\n /**\n * @param {string} itemUri\n * @returns {boolean} success\n */\n delOfflineItem: {\n method: HttpMethod.DELETE,\n url: \"/offline\",\n offline: {\n allowEdit: true,\n transformer: () => true,\n },\n },\n\n // called directly by service-worker.custom.js\n // /**\n // * @returns {Array}\n // */\n // fetchOfflinePrecache: {\n // // TODO move fetchOfflinePrecache to /user (or /offline?)\n // url: \"offline/precache\",\n // cache: {\n // strategy: CacheStrategy.NetworkOnly,\n // },\n // },\n\n context: {\n method: HttpMethod.POST,\n url: \"/item/context\",\n cache: {\n strategy: CacheStrategy.NetworkFirst,\n keyParams: (params) => ({\n itemUri: params.itemUris.length === 1 && params.itemUris[0],\n }),\n depsAnalyzer: (data: ItemContextDTO, params: Object) => {\n const itemUri = params.itemUris?.[0];\n const formatId = params.formatIds?.[0];\n const {\n isDoc,\n isPdf,\n canPdf,\n hasPdf,\n isReadonly,\n ext,\n isEditAllowed,\n } = data || {};\n const depsApis = [\n {\n name: \"getFolderItemUri\",\n params: { itemUri },\n },\n ];\n if (isDoc) {\n depsApis.push({\n name: \"fetchDownloadToken\",\n params: {\n itemUri,\n pdf:\n window.CONFIG.general.htmlViewerExtensions.includes(\n String(ext).toLowerCase()\n ) ||\n window.CONFIG.general.imageViewerExtensions.includes(\n String(ext).toLowerCase()\n )\n ? undefined\n : hasPdf || isPdf || canPdf || undefined,\n stream:\n window.CONFIG.general.mediaViewerExtensions.includes(\n String(ext).toLowerCase()\n ) || undefined,\n },\n transformer: (token) => itemUri,\n });\n depsApis.push({\n name: \"fetchThumbnail\",\n params: { itemUri },\n });\n } else if (!isReadonly) {\n depsApis.push({\n name: \"fetchItemFlows\",\n params: {\n dir: \"in\",\n itemUri,\n },\n });\n }\n // TODO #54607 appSettings offline specs - allow editing\n if (isEditAllowed) {\n depsApis.push(\n {\n name: \"fetchNewForm\",\n params: { itemUri },\n },\n {\n name: \"validateForm\",\n params: {\n itemUri,\n isDoc,\n values: {},\n },\n }\n );\n // parse inPoint.Fields\n if (params.fields?.length > 0) {\n for (const field of params.fields) {\n switch (field.format) {\n case \"Text_LookupRep\":\n //lint -fallthrough\n case \"Text_Lookup\":\n depsApis.push({\n name: \"fetchFormLookup\",\n params: {\n filters: [],\n formatId,\n id: field.id,\n name: field.name,\n pageNum: 0,\n isDoc,\n lookupType: 0,\n keyword: \"\",\n itemUri,\n },\n });\n break;\n default:\n break;\n }\n }\n }\n\n // parse ExtraAttributes\n if (params.attributes?.length > 0) {\n for (const ea of params.attributes) {\n switch (ea.format) {\n case \"Lookup_Combo\":\n depsApis.push({\n name: \"fetchFormLookup\",\n params: {\n filters: [],\n formatId,\n id: ea.id,\n name: ea.name,\n pageNum: 0,\n isDoc,\n lookupType: 1,\n keyword: \"\",\n itemUri,\n },\n });\n break;\n default:\n break;\n }\n }\n }\n }\n return depsApis;\n },\n },\n },\n\n /**\n * @param {string} itemUri\n * @param {string} name\n * @returns {boolean}\n */\n subscribe: {\n method: HttpMethod.PUT,\n url: \"/item/subscribe\",\n offline: {\n allowEdit: true,\n transformer: () => true,\n },\n },\n\n // TODO should be /item/subscribe\n /**\n * @param {string} itemUri\n * @returns {SubscribeResponseDTO}\n */\n isSubscribed: {\n url: \"/item/subscribed\",\n },\n\n /**\n * @param {string} itemUri\n * @returns {boolean}\n */\n unsubscribeByItemUri: {\n method: HttpMethod.DELETE,\n url: \"/item/subscribe\",\n offline: {\n allowEdit: true,\n transformer: () => true,\n },\n },\n\n // TODO should be /item/subscribe/{id}\n /**\n * @param {string} itemUri\n * @param {number} linkID\n * @returns {boolean}\n */\n unsubscribeById: {\n method: HttpMethod.DELETE,\n url: \"/item/subscribeById\",\n offline: {\n allowEdit: true,\n transformer: () => true,\n },\n },\n\n /**\n * @param {string} itemUri\n * @returns {boolean}\n */\n delDefiniteItemUri: {\n method: HttpMethod.DELETE,\n url: \"/item/deleteDefinite\",\n offline: {\n allowEdit: true,\n transformer: () => true,\n },\n },\n\n /**\n * @param {string} itemUri\n * @returns {boolean}\n */\n restoreItemUri: {\n method: HttpMethod.PUT,\n url: \"/item/restore\",\n },\n\n /**\n * @param {string} itemUri\n * @returns {FormResultDTO}\n */\n fetchForm: {\n url: \"/item/form\",\n cache: {\n strategy: CacheStrategy.NetworkFirst,\n depsAnalyzer: (data: FormResultDTO, params: Object) => {\n const depsApis = [\n {\n name: \"fetchBreadcrumb\",\n params: { itemUri: params.itemUri },\n },\n {\n name: \"context\",\n params: {\n itemUris: [params.itemUri],\n formatIds: [data.formatId],\n itemContexts: ItemContextsFlags.All,\n fields: data.fields,\n attributes: data.attributes,\n },\n },\n {\n name: \"fetchActivities\",\n params: { itemUri: params.itemUri },\n },\n ];\n\n // parse inPoint.Fields\n if (data.fields && data.fields.length > 0) {\n for (const field of data.fields) {\n switch (field.format) {\n case \"Text_GeoRaster\":\n const mapProvider = getGeoRasterProvider(\n params.itemUri,\n data.formatId\n );\n if (mapProvider == null) {\n console.warn(\n `Text_GeoRaster field ${field.name} - could not find mapProvider for ${params.itemUri}`\n );\n } else {\n depsApis.push({\n name: \"fetchRasterMapLayers\",\n params: {\n itemUri: params.itemUri,\n rasterMapIdSelector:\n mapProvider.rasterMapIdSelector,\n },\n });\n }\n break;\n\n default:\n break;\n }\n }\n }\n\n // parse ExtraAttributes\n if (data.attributes && data.attributes.length > 0) {\n for (const ea of data.attributes) {\n switch (ea.format) {\n case \"SearchResult\":\n // HACK not sure how to discover those dynamically?\n const mapProvider = getGeoRasterProvider(\n params.itemUri,\n data.formatId\n );\n if (mapProvider == null) {\n console.warn(\n `EA.SearchResult attribute ${ea.name} - could not find mapProvider for ${params.itemUri}`\n );\n } else {\n depsApis.push({\n name: \"fetchRasterMapLayers\",\n params: {\n itemUri: params.itemUri,\n rasterMapIdSelector:\n mapProvider.rasterMapIdSelector,\n },\n });\n }\n depsApis.push({\n name: \"fetchSearchResult\",\n params: {\n itemUri: params.itemUri,\n name: ea.name,\n pageNum: 0,\n filters: ea.extra.filters,\n searchType: SearchRequestType.Url,\n scope: SearchScope.CurrentFolder,\n },\n });\n break;\n default:\n break;\n }\n }\n }\n return depsApis;\n },\n },\n },\n\n /**\n * @param {boolean} isNew\n * @param {boolean} isDoc\n * @param {string} itemUri\n * @param {Object} values\n * @returns {Object}\n */\n validateForm: {\n method: HttpMethod.POST,\n url: \"/item/form/validate\",\n cache: {\n strategy: CacheStrategy.NetworkOnly,\n keyParams: (params) => ({\n itemUri: params.itemUri,\n isDoc: params.isDoc,\n }),\n },\n offline: {\n allowEdit: true,\n showToast: false,\n transformer: () => ({}), // return no errors on offline so we can continue\n },\n },\n\n /**\n * @param {string} itemUri folder or document itemUri\n * @returns {string} folder itemUri\n */\n getFolderItemUri: {\n url: \"/item/folderItemUri\",\n },\n\n /**\n * @param {NewFormTypeEnum} formType\n * @param {string} itemUri\n * @returns {FormResultDTO}\n */\n fetchNewForm: {\n url: \"/doc/newform\",\n params: ({ itemUri }) => ({ itemUri }),\n },\n\n /**\n * @param {string} itemUri\n * @returns {boolean}\n */\n delItemUri: {\n method: HttpMethod.DELETE,\n url: \"/item\",\n offline: {\n allowEdit: true,\n transformer: () => true,\n },\n },\n\n /**\n * @param {string} keyword\n * @param {number} pageNum\n * @param {boolean} isDoc\n * @param {number} formatId\n * @param {string} name\n * @param {FormLookupTypeEnum} lookupType\n * @param {number} id\n * @param {Array} filters\n * @param {string} itemUri\n * @returns {LookupValuesResultDTO}\n */\n fetchFormLookup: {\n method: HttpMethod.POST,\n url: \"/item/form/lookup\",\n cache: {\n strategy: CacheStrategy.CacheFirst,\n keyParams: (params) => ({\n formatId: params.formatId,\n name: params.name,\n pageNum: params.pageNum,\n }),\n depsAnalyzer: (data: LookupValuesResultDTO, params: Object) => {\n // TODO #54607 appSettings offline specs\n const allowEdit = true;\n const depsApis = [];\n // recursively load all pages\n // TODO #54607 appSettings offline specs - limit number of lookup pages to cache\n if (allowEdit && data.hasMore) {\n depsApis.push({\n name: \"fetchFormLookup\",\n params: Object.assign({}, params, {\n pageNum: params.pageNum + 1,\n }),\n });\n }\n return depsApis;\n },\n },\n },\n\n /**\n * @param {boolean} isDoc\n * @param {number} formatId\n * @param {string} name\n * @param {FormLookupTypeEnum} lookupType\n * @param {Array} currentLookupValues\n * @param {string} itemUri\n * @returns {Array}\n */\n fetchFormLookupDependencies: {\n method: HttpMethod.POST,\n url: \"/item/form/lookup/dependencies\",\n },\n\n /**\n * @param {string} itemUri\n * @param {string} name\n * @param {string} filter\n * @param {number} pageNum\n * @param {string} sortColumn\n * @param {SortDirectionEnum} sortDirection\n * @returns {ExtraAttributesEmbeddedGridDTO}\n */\n fetchExtraAttributesEmbeddedGrid: {\n url: \"/folder/form/grid\",\n cache: {\n strategy: CacheStrategy.CacheFirst,\n },\n },\n\n /**\n * @param {string} itemUri\n * @param {number} formatId\n * @param {Object} values\n * @returns {boolean}\n */\n saveForm: {\n method: HttpMethod.POST,\n url: \"/item/form\",\n offline: {\n allowEdit: true,\n },\n },\n\n /**\n * @param {string} templateId\n * @param {string} itemUri\n * @param {Object} values\n * @returns {bool}\n */\n saveNewDocFromTemplate: {\n method: HttpMethod.PUT,\n url: \"/doc/doctemplate\",\n offline: {\n allowEdit: true,\n transformer: () => true,\n },\n },\n\n /**\n * @param {string} itemUri\n * @param {number} pageNum\n * @param {DocListSortRequestDTO | Array} sorts\n * @param {Array} filters\n * @param {Array} cols\n * @returns {DocsResultDTO}\n */\n fetchDocs: {\n method: HttpMethod.POST,\n url: \"/folder/docs\",\n params: ({\n itemUri,\n pageNum = null,\n sorts = [],\n filters = [],\n cols,\n }: {\n itemUri: string,\n pageNum?: number,\n sorts?: DocListSortRequestDTO | Array,\n filters?: Array,\n cols?: Array,\n }) => ({\n itemUri,\n pageNum: pageNum ?? 0,\n sorts: sorts != null && !Array.isArray(sorts) ? [sorts] : sorts,\n filters,\n cols,\n }),\n cache: {\n keyParams: (params) => ({\n itemUri: params.itemUri,\n pageNum: params.pageNum,\n }),\n depsAnalyzer: (data: DocsResultDTO, params: Object) => {\n let depsApis = [];\n if (data.rowCount > 0 && data.rows) {\n for (let rowKey of Object.keys(data.rows)) {\n const row = data.rows[rowKey];\n const itemUri = row[row.length - 1];\n depsApis.push({\n name: \"fetchForm\",\n params: { itemUri },\n });\n }\n }\n return depsApis;\n },\n },\n },\n\n /**\n * @param {string} itemUri\n * @param {DocListSortRequestDTO | Array} sorts\n * @param {Array} filters\n * @returns {any}\n */\n fetchDocsCsv: {\n method: HttpMethod.POST,\n contentType: ContentType.BLOB,\n url: \"/folder/docs_csv\",\n params: ({\n itemUri,\n sorts = [],\n filters = [],\n }: {\n itemUri: string,\n sorts?: DocListSortRequestDTO | Array,\n filters?: Array,\n }) => ({\n itemUri,\n sorts: sorts != null && !Array.isArray(sorts) ? [sorts] : sorts,\n filters,\n }),\n },\n\n /**\n * @param {string} itemUri\n * @param {Array} filters\n * @returns {number}\n */\n fetchDocCount: {\n method: HttpMethod.POST,\n url: \"/folder/doccount\",\n },\n\n /**\n * @param {string} itemUri\n * @param {number} version\n * @returns {boolean}\n */\n delDocVersion: {\n method: HttpMethod.DELETE,\n url: \"/doc/version\",\n offline: {\n allowEdit: true,\n transformer: () => true,\n },\n },\n\n /**\n * @param {string} itemUri\n * @param {number} version\n * @returns {boolean}\n */\n restoreDocVersion: {\n method: HttpMethod.PUT,\n url: \"/doc/version\",\n },\n\n /**\n * @param {string} itemUri\n * @returns {string}\n */\n fetchDownloadToken: {\n url: \"/doc/token\",\n cache: {\n strategy: CacheStrategy.None,\n keyParams: ({ itemUri }) => ({\n itemUri,\n }),\n depsAnalyzer: (token: GUID, params: Object) => {\n const { pdf = undefined, stream = undefined, itemUri } = params;\n const depsApis = [];\n depsApis.push({\n name: \"fetchDocument\",\n params: {\n token,\n pdf,\n stream,\n // fake for offline cache to be used only by fetchDocument/cache/keyParams\n itemUri,\n },\n });\n return depsApis;\n },\n },\n },\n\n /**\n * @param {string} token\n * @param {string} uri\n * @param {boolean} inline\n * @param {boolean} pdf\n * @param {boolean} stream\n * NOTE: api.js only returns URL, we return Content for offline caching\n */\n fetchDocument: {\n url: \"/doc/download\",\n cache: {\n strategy: CacheStrategy.None,\n // fake \"itemUri\" as token for offline cache\n keyParams: ({ pdf, stream, itemUri: token }) => {\n const params = { token };\n if (pdf) params.pdf = pdf;\n if (stream) params.stream = stream;\n return params;\n },\n },\n },\n\n /**\n * @param {string} itemUri\n * @returns {string}\n */\n fetchThumbnail: {\n url: \"/doc/thumbnail\",\n cache: {\n strategy: CacheStrategy.CacheFirst,\n },\n },\n\n /**\n * @param {string} itemUri\n * @param {ItemLinkTypeEnum} itemLinkType\n * @param {boolean} getSource\n * @returns {Array}\n */\n fetchRelatedDocs: {\n url: \"/doc/related\",\n },\n\n /**\n * @param {string} itemUri\n * @param {string} webDavName\n * @returns {string}\n */\n getWebDavHttpLink: {\n url: \"/doc/webdav\",\n },\n\n /**\n * @param {string} itemUri\n * @param {string} webDavName\n * @returns {Array}\n */\n getCloudInfo: {\n url: \"/doc/cloudinfo\",\n },\n\n /**\n * @param {string} itemUri\n * @returns {boolean}\n */\n lock: {\n method: HttpMethod.PUT,\n url: \"/item/lock\",\n },\n\n /**\n * @param {string} itemUri\n * @returns {boolean}\n */\n unlock: {\n method: HttpMethod.DELETE,\n url: \"/item/lock\",\n },\n\n // ----- folders\n\n //TODO shouldn't this be in /item or /user?\n /**\n * @param {boolean} offline\n * @returns {Array}\n */\n getArchiveTargets: {\n url: \"/folder/archivetargets\",\n },\n\n /**\n * @param {string} itemUri\n * @param {string} filter\n * @param {boolean} deep\n * @param {boolean} all\n * @returns {TreeDTO}\n */\n fetchTree: {\n url: \"/folder/tree\",\n params: ({ itemUri, filter = \"\", deep = false, all = false }) => ({\n itemUri,\n filter,\n deep,\n all,\n }),\n cache: {\n keyParams: (params) => ({\n itemUri: params.itemUri,\n }),\n depsAnalyzer: (data: TreeDTO, params) => {\n const { itemUri } = params;\n const depsApis = [\n // current details\n {\n name: \"fetchForm\",\n params: { itemUri },\n },\n {\n name: \"fetchDocs\",\n params: { itemUri },\n },\n ];\n\n if (data.totalCount > 0 && data.items) {\n for (const treeNode of data.items) {\n depsApis.push(\n // recursive children\n {\n name: \"fetchTree\",\n params: {\n itemUri: treeNode.itemUri,\n deep: false,\n all: true, // no paging\n },\n }\n );\n }\n }\n return depsApis;\n },\n },\n },\n\n /**\n * @param {string} itemUri\n * @param {number} formatId\n * @param {number} elementType\n * @param {Object} values\n * @returns {NewItemResultDTO}\n */\n createFolder: {\n method: HttpMethod.PUT,\n url: \"/folder/form\",\n offline: {\n allowEdit: true,\n transformer: () => ({ success: true }), // return no errors on offline so we can continue\n // transformer: (params) => ({\n // success: true,\n // itemUri: \"pam-item://FAKEID1\",\n // name: params.values.ip[\"$NAME$\"],\n // formatId: params.formatId,\n // elementType: params.elementType,\n // }),\n },\n },\n\n /**\n * @param {string} template\n * @param {string} itemUri\n * @param {string} targetFolderName\n * @returns {number}\n */\n createFolderFromTemplate: {\n method: HttpMethod.PUT,\n url: \"/folder/template\",\n offline: {\n allowEdit: true,\n transformer: () => ({ success: true }), // return no errors on offline so we can continue\n },\n },\n\n /**\n * @param {number} jobId\n * @returns {string}\n */\n createFolderTemplateGetItemUri: {\n url: \"/folder/templatejob\",\n },\n\n // ----- itemNotes\n\n /**\n * @param {string} itemUri\n * @param {number} noteId\n * @returns {any}\n */\n fetchItemNote: {\n method: HttpMethod.GET,\n url: \"/item/note\",\n },\n\n /**\n * @param {ActivityDTO} activity\n * @returns {any}\n */\n addItemNote: {\n method: HttpMethod.POST,\n url: \"/item/note\",\n offline: {\n allowEdit: true,\n },\n },\n\n /**\n * @param {ActivityDTO} activity\n * @returns {any}\n */\n updateItemNote: {\n method: HttpMethod.PUT,\n url: \"/item/note\",\n offline: {\n allowEdit: true,\n },\n },\n\n /**\n * @param {string} itemUri\n * @param {number} noteId\n * @returns {any}\n */\n deleteItemNote: {\n method: HttpMethod.DELETE,\n url: \"/item/note\",\n offline: {\n allowEdit: true,\n },\n },\n\n // ----- itemFlows\n\n /**\n * @param {string} itemUri\n * @param {ItemFlowDirectionEnum} dir\n * @returns {ItemFlowsConfigDTO}\n */\n fetchItemFlows: {\n url: \"/item/flows\",\n cache: {\n // transformer to remove custom flows using iframes!\n transformer: (data: ItemFlowsConfigDTO) =>\n data.flows &&\n data.flows.length > 0 &&\n data.flows.filter(\n (flow) => flow.commandAction.name !== \"itemFlow_custom\"\n ),\n depsAnalyzer: (data: ItemFlowsConfigDTO, params: Object) => {\n const depsApi = [];\n if (data.flows && data.flows.length > 0) {\n for (const flow of data.flows) {\n // TODO #54607 appSettings flow specs - which itemFlows to allow/pre-cache offline\n // components/CommandActions/itemFlows/Factory.js\n switch (flow.commandAction.name) {\n case \"itemFlow_custom\":\n break;\n case \"itemFlow_folder\":\n depsApi.push({\n name: \"fetchItemFlowForm\",\n params: {\n formType: NewFormType.Folder,\n itemUri: params.itemUri,\n templateType:\n ItemFlowTemplateType.Folder,\n templateId:\n flow.commandAction.props.templateId,\n },\n });\n break;\n case \"itemFlow_folderTemplate\":\n depsApi.push({\n name: \"fetchItemFlowForm\",\n params: {\n formType: NewFormType.Folder,\n itemUri: params.itemUri,\n templateType:\n ItemFlowTemplateType.FolderTemplate,\n templateId:\n flow.commandAction.props.templateId,\n },\n });\n break;\n case \"itemFlow_document\":\n depsApi.push({\n name: \"fetchItemFlowForm\",\n params: {\n formType: NewFormType.Document,\n itemUri: params.itemUri,\n templateType:\n ItemFlowTemplateType.Document,\n templateId:\n flow.commandAction.props.templateId,\n },\n });\n break;\n case \"itemFlow_docTemplate\":\n depsApi.push({\n name: \"fetchItemFlowForm\",\n params: {\n formType: NewFormType.Document,\n itemUri: params.itemUri,\n templateType:\n ItemFlowTemplateType.DocTemplate,\n templateId:\n flow.commandAction.props.templateId,\n },\n });\n break;\n default:\n break;\n }\n }\n }\n return depsApi;\n },\n },\n },\n\n /**\n * @param {NewFormTypeEnum} formType\n * @param {string} itemUri\n * @param {string} templateId\n * @param {string} templateType\n * @returns {FormResultDTO}\n */\n fetchItemFlowForm: {\n url: \"/item/flows/form\",\n },\n\n // ----- search\n /**\n * @returns {Array}\n */\n fetchSearchFormList: {\n url: \"/search/list\",\n },\n\n /**\n * @param {number} id\n * @param {Object} values\n * @returns {SearchFormResultDTO}\n */\n fetchSearchForm: {\n method: HttpMethod.POST,\n url: \"/search/form\",\n },\n\n //#endregion\n\n //#region Workflows\n /**\n * @returns {Array}\n */\n fetchWorkflowProviders: {\n url: \"/workflow/providers\",\n },\n\n /**\n * @returns {Array}\n */\n fetchWorkflowCards: {\n url: \"/workflow/cards\",\n },\n\n /**\n * @param {string} itemUri\n * @returns {Array}\n */\n fetchNewWorkflows: {\n url: \"/workflow/new\",\n },\n\n /**\n * @param {string} provider\n * @param {string} wfID\n * @param {string} itemUri\n * @returns {Array}\n */\n fetchWorkflowInfo: {\n url: \"/workflow/info\",\n },\n //#endregion\n\n //#region Raster maps\n /**\n * @param {string} itemUri\n * @param {string} rasterMapIdSelector\n * @param {boolean} create\n * @returns {RasterMapResultDTO}\n */\n fetchRasterMapLayers: {\n url: \"/map/raster/layers\",\n },\n\n /**\n * @param {RasterMapSaveRequestDTO} map\n * @returns {RasterMapResultDTO}\n */\n saveRasterMapLayers: {\n method: HttpMethod.POST,\n url: \"/map/raster/layers\",\n },\n //#endregion\n\n //#region Search\n /**\n * @param {string} keyword\n * @param {string} itemUri\n * @returns {Array}\n */\n fetchSAYT: {\n url: \"/search/sayt\",\n cache: {\n strategy: CacheStrategy.CacheFirst,\n },\n },\n\n /**\n * @param {SearchRequestDTO} searchRequest\n * @returns {SearchCountResultDTO}\n */\n fetchSearchCount: {\n method: HttpMethod.PUT,\n url: \"/search/count\",\n cache: {\n strategy: CacheStrategy.CacheFirst,\n },\n },\n\n /**\n * @param {SearchRequestDTO} searchRequest\n * @returns {SearchResultDTO}\n */\n fetchSearchResult: {\n method: HttpMethod.PUT,\n url: \"/search\",\n cache: {\n keyParams: (params) => ({\n name: params.name,\n pageNum: params.pageNum,\n itemUri: params.itemUri,\n scope: params.scope,\n searchType: params.searchType,\n filters: JSON.stringify(params.filters),\n sorts: JSON.stringify(params.sorts),\n }),\n },\n },\n /**\n * @param {SearchRequestDTO} searchRequest\n * @returns {boolean}\n */\n addSearchRecent: {\n method: HttpMethod.PUT,\n url: \"/search/recent\",\n },\n\n /**\n * @param {string} provider\n * @param {Array} filters\n * @returns {string}\n */\n fetchSearchSuggestion: {\n method: HttpMethod.PUT,\n url: \"/search/suggestion\",\n },\n\n /**\n * @param {string} keyword\n * @param {boolean} includeUsers\n * @param {boolean} includeGroups\n * @returns {Array}\n */\n fetchSearchPrincipal: {\n url: \"/search/principal\",\n cache: {\n strategy: CacheStrategy.CacheFirst,\n },\n },\n //#endregion\n\n //#region transfer\n /**\n * @param {string} provider\n * @param {TransferItemRequestDTO} transferRequest\n * @returns {bool}\n */\n transfer: {\n method: HttpMethod.POST,\n url: \"/item/transfer\",\n },\n //#endregion\n};\n","import \"whatwg-fetch\";\r\nimport { ApiCatalog } from \"data/ApiCatalog\";\r\nimport {\r\n HttpMethod,\r\n type HttpMethodEnum,\r\n ContentType,\r\n type ContentTypeEnum,\r\n CacheStrategy,\r\n type CacheSettings,\r\n CustomHttpHeader,\r\n} from \"data/types\";\r\nimport { isMiniView } from \"data/constants\";\r\nimport {\r\n HTTP_ERROR_UNAUTHORIZED,\r\n HTTP_ERROR_FORBIDDEN,\r\n HTTP_ERROR_CONFLICT,\r\n notifyOnError,\r\n notifyOnForbidden,\r\n ApiError,\r\n ApiErrorContainer,\r\n ApiNetworkError,\r\n ApiNetworkOfflineError,\r\n ApiConflictError,\r\n ApiForbiddenError,\r\n} from \"data/apiError\";\r\nimport { accessToken, correlationId, isOnline } from \"data/storeHelper\";\r\nimport { signinRedirect } from \"data/loginFlow\";\r\nimport qs from \"data/queryString\";\r\nimport { performanceTester } from \"data/utils\";\r\nimport { JL } from \"jsnlog\";\r\nimport { isLegacyResponseClone } from \"data/bowser\";\r\nimport cloneDeep from \"lodash/cloneDeep\";\r\n\r\n//#region AbortSignal\r\n// https://github.com/flow-typed/flow-typed/issues/1652\r\n// translation of https://dom.spec.whatwg.org/#abortcontroller\r\ndeclare interface AbortSignal extends EventTarget {\r\n +aborted: boolean;\r\n onabort: EventHandler;\r\n}\r\ndeclare class AbortController {\r\n +signal: AbortSignal;\r\n abort: () => void;\r\n}\r\n//#endregion\r\n\r\nexport type ContextRequest = {\r\n name: string,\r\n method: HttpMethodEnum,\r\n contentType: ContentTypeEnum,\r\n urlEnd: string,\r\n params: Object,\r\n cache: CacheSettings,\r\n};\r\n\r\nexport type Context = {\r\n request: ContextRequest,\r\n response?: Response,\r\n url: string,\r\n options: RequestInit,\r\n body?: any,\r\n};\r\n\r\n/**\r\n * Base implementation for API calls\r\n * TODO this is not meant to be used directly - a cache read-through (including offline) descendent WIP\r\n * @export\r\n * @class ApiManager\r\n * @abstract\r\n */\r\nexport default class ApiManagerBase {\r\n constructor() {\r\n this._log = JL(\"ApiManager\");\r\n this.call = this.call.bind(this);\r\n this.BeforeFetch = this.BeforeFetch.bind(this);\r\n this.OnFetch = this.OnFetch.bind(this);\r\n this.AfterFetch = this.AfterFetch.bind(this);\r\n this.CheckLicense = this.CheckLicense.bind(this);\r\n this.DecodeBody = this.DecodeBody.bind(this);\r\n this.CheckCustomError = this.CheckCustomError.bind(this);\r\n this.EOL = this.EOL.bind(this);\r\n }\r\n\r\n /**\r\n * Call an API method\r\n * @param {string} name API method name (from ApiCatalog)\r\n * @param {Object} params optional parameters\r\n * @param {AbortSignal} signal optional AbortSignal\r\n * @returns {Context} decoded response body\r\n * @memberof ApiManager\r\n * @protected\r\n */\r\n _callReturnContext = async (\r\n name: string,\r\n {\r\n params,\r\n signal,\r\n transformer,\r\n }?: {\r\n params?: Object,\r\n signal?: AbortSignal,\r\n transformer?: (data: Object) => Object,\r\n } = {}\r\n ): Promise => {\r\n if (name == null)\r\n throw new ApiError(\"You must provide the API method name!\");\r\n const meta = ApiCatalog[name];\r\n if (meta == null)\r\n throw new ApiError(`Could not find ${name} in ApiCatalog!`);\r\n let context: Context = {\r\n request: {\r\n name,\r\n method: meta.method ?? HttpMethod.GET,\r\n urlEnd: meta.url,\r\n params:\r\n typeof meta.params === \"function\"\r\n ? meta.params(params)\r\n : params,\r\n contentType: meta.contentType ?? ContentType.AUTO,\r\n cache: meta.cache,\r\n offline: meta.offline,\r\n transformer,\r\n signal,\r\n },\r\n };\r\n context = await this._pipeline(context);\r\n return context;\r\n };\r\n\r\n /**\r\n * Call an API method\r\n * @param {string} name API method name (from ApiCatalog)\r\n * @param {Object} params optional parameters\r\n * @param {AbortSignal} signal optional AbortSignal\r\n * @returns {any} decoded response body\r\n * @memberof ApiManager\r\n * @public\r\n */\r\n call = async (name: string, args?: Object = {}): Promise => {\r\n return (await this._callReturnContext(name, args)).body;\r\n };\r\n\r\n /**\r\n * encode request query parameters\r\n * @param {Object} data\r\n * @returns {string} encoded ready to add to URL (without ?)\r\n * @memberof ApiManager\r\n * @private\r\n */\r\n _encodeData = (data: Object): string => {\r\n // prefix ItemUris\r\n if (Object.prototype.hasOwnProperty.call(data, \"itemUri\")) {\r\n let itemUri = data.itemUri;\r\n if (itemUri && !itemUri.startsWith(\"pam-item://\")) {\r\n data.itemUri = \"pam-item://\" + itemUri;\r\n }\r\n }\r\n // stringify skipping empty values\r\n return qs.stringify(data, {\r\n filter: /* istanbul ignore next */ (prefix, value) =>\r\n value == null ? undefined : value,\r\n });\r\n };\r\n\r\n _getFullCacheKey = (context: Context): string => {\r\n if (context.request.cacheKey) {\r\n return `${window.CONFIG.host.basename}${window.CONFIG.general.api}${context.request.urlEnd}${context.request.cacheKey}`;\r\n }\r\n if (context.request.method === HttpMethod.GET) {\r\n return context.url;\r\n } else {\r\n // store api method name in cache URL to cover apis using same URL but different HTTP methods\r\n // e.g. fetchFavorites, addFavorite and delFavorite\r\n return `${context.url}?${this._encodeData({\r\n api: context.request.name,\r\n })}`;\r\n }\r\n };\r\n\r\n /**\r\n * Creates appropriate request HTTP headers\r\n * @param {Context} context query context\r\n * @returns {Headers} Headers collection\r\n * @memberof ApiManager\r\n * @private\r\n */\r\n _getHeaders = (context: Context): Headers => {\r\n const token: string = accessToken();\r\n /* istanbul ignore else */\r\n if (token == null) {\r\n this._log.error(\"No user token available!\");\r\n throw new ApiError(\"No user token available!\");\r\n }\r\n\r\n const headers = new Headers();\r\n headers.append(\"Accept\", \"application/json\"); //application/json -> to avoid OPTIONS pre-flight requests\r\n\r\n // Bearer Authorization header\r\n if (window.CONFIG.auth.useCustomAuthHeader) {\r\n headers.append(CustomHttpHeader.CustomAuthorization, token);\r\n } else {\r\n headers.append(CustomHttpHeader.Authorization, `Bearer ${token}`);\r\n }\r\n headers.append(CustomHttpHeader.CorrelationId, correlationId());\r\n\r\n // add cacheStrategy for our ServiceWorker to process (avoid a back-lookup)\r\n const { cache } = context.request;\r\n if (cache !== false) {\r\n headers.append(\r\n CustomHttpHeader.CacheStrategy,\r\n cache == null || cache === true\r\n ? CacheStrategy.NetworkFirst\r\n : cache.strategy || CacheStrategy.NetworkFirst\r\n );\r\n }\r\n\r\n // encode custom cacheKey for serviceWorker to use when storing in cache\r\n if (\r\n cache != null &&\r\n Object.prototype.hasOwnProperty.call(cache, \"keyParams\")\r\n ) {\r\n context.request.cacheKey = `?${this._encodeData(\r\n cache.keyParams(context.request.params)\r\n )}`;\r\n headers.append(CustomHttpHeader.CacheKey, context.request.cacheKey);\r\n }\r\n\r\n // passthrough original secureParams token\r\n if (window.CONFIG.general.secure_params) {\r\n headers.append(\r\n CustomHttpHeader.SecureParams,\r\n window.CONFIG.general.secure_params\r\n );\r\n }\r\n\r\n // passthrough original /mini view mode\r\n if (isMiniView(window.location)) {\r\n headers.append(CustomHttpHeader.MiniView, \"1\");\r\n }\r\n return headers;\r\n };\r\n\r\n /**\r\n * Handles failed Network requests\r\n * @param {Context} context query context\r\n * @memberof ApiManager\r\n * @private\r\n */\r\n _networkError = (context: Context): void => {\r\n this._log.error(() => ({\r\n msg: `${context.request.name}: OnFetch - Network request failed`,\r\n apiContext: context,\r\n }));\r\n throw new ApiNetworkOfflineError(\"Network request failed\", context);\r\n };\r\n\r\n /**\r\n * First chain method to prepare Request\r\n * @memberof ApiManager\r\n * @param {Context} context query context\r\n * @returns {Promise} current context\r\n * @virtual\r\n */\r\n async BeforeFetch(context: Context): Promise {\r\n this._log.debug(() => ({\r\n msg: `${context.request.name}: BeforeFetch`,\r\n apiContext: context,\r\n }));\r\n const { method, urlEnd, params, signal } = context.request;\r\n\r\n context.url = `${window.CONFIG.host.basename}${window.CONFIG.general.api}${urlEnd}`;\r\n if (\r\n params &&\r\n (method === HttpMethod.GET ||\r\n method === HttpMethod.DELETE ||\r\n method === HttpMethod.HEAD)\r\n ) {\r\n const urlParams = this._encodeData(params);\r\n if (urlParams && urlParams.length > 0) {\r\n context.url += `?${urlParams}`;\r\n }\r\n }\r\n\r\n context.options = {\r\n method,\r\n headers: this._getHeaders(context),\r\n credentials: \"include\",\r\n mode: \"cors\",\r\n body: undefined,\r\n signal,\r\n };\r\n\r\n /* istanbul ignore else */\r\n if (method === HttpMethod.PUT || method === HttpMethod.POST) {\r\n context.options.headers.append(\"Content-Type\", \"application/json\");\r\n context.options.body = JSON.stringify(params);\r\n }\r\n return context;\r\n }\r\n\r\n /**\r\n * Runs actual data fetch\r\n * @param {Context} context query context\r\n * @returns {Promise} current context with fetch .response\r\n * @memberof ApiManager\r\n * @virtual\r\n */\r\n async OnFetch(context: Context): Promise {\r\n this._log.debug(() => ({\r\n msg: `${context.request.name}: OnFetch`,\r\n apiContext: context,\r\n }));\r\n if (false === isOnline()) this._networkError(context);\r\n context.response = await fetch(context.url, context.options).catch(\r\n (e) => {\r\n // Handle Signal AbortErrors\r\n if (e.name === \"AbortError\") {\r\n throw e;\r\n }\r\n // Handle Network Errors\r\n this._networkError(context);\r\n }\r\n );\r\n\r\n return context;\r\n }\r\n\r\n /**\r\n * First response in fetch response chain\r\n * @param {Context} context query context\r\n * @returns {Promise} current context\r\n * @memberof ApiManager\r\n * @virtual\r\n */\r\n async AfterFetch(context: Context): Promise {\r\n this._log.debug(() => ({\r\n msg: `${context.request.name}: AfterFetch`,\r\n apiContext: context,\r\n }));\r\n const { response } = context;\r\n /* istanbul ignore else */\r\n if (!response.ok) {\r\n // NotAuthorized? redirect\r\n if (response.status === HTTP_ERROR_UNAUTHORIZED) {\r\n signinRedirect();\r\n return context;\r\n }\r\n if (response.status === HTTP_ERROR_FORBIDDEN) {\r\n notifyOnForbidden(response);\r\n throw new ApiForbiddenError(response);\r\n }\r\n if (response.status === HTTP_ERROR_CONFLICT) {\r\n throw new ApiConflictError(\r\n response,\r\n await this._getErrorData(response)\r\n );\r\n }\r\n if (response.status !== 500 && response.status !== 408) {\r\n throw new ApiNetworkError(\r\n response,\r\n await this._getErrorData(response)\r\n );\r\n } else {\r\n // API errors also have HTTP 500 but include json for isError description\r\n const contentHeader = response.headers.get(\"content-type\");\r\n if (\r\n contentHeader == null ||\r\n contentHeader.indexOf(\"application/json\") === -1\r\n ) {\r\n // this is a different HTTP 500 not coming from API!\r\n throw new ApiNetworkError(\r\n response,\r\n await this._getErrorData(response)\r\n );\r\n }\r\n }\r\n }\r\n return context;\r\n }\r\n\r\n async _getErrorData(response: Response): Promise {\r\n let result = {};\r\n try {\r\n result = await response.clone().json();\r\n } catch (error) {\r\n /* istanbul ignore next */\r\n this._log.warn(() => ({\r\n msg: \"Could parse response body for additional error data\",\r\n error,\r\n response,\r\n }));\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Validates HTTP header for a valid inPoint license\r\n * @param {Context} context query context\r\n * @returns {Promise} current context\r\n * @memberof ApiManager\r\n * @virtual\r\n */\r\n async CheckLicense(context: Context): Promise {\r\n this._log.debug(() => ({\r\n msg: `${context.request.name}: CheckLicense`,\r\n apiContext: context,\r\n }));\r\n // check license\r\n const lic = context.response.headers.get(\"x-inpoint-license\");\r\n /* istanbul ignore else */\r\n if (lic === null || lic === \"Invalid\") {\r\n // TODO invalid license user notification instead of console error\r\n this._log.warn(\"Invalid inPoint.Web Server License!\");\r\n }\r\n return context;\r\n }\r\n\r\n /**\r\n * Decodes response body based on content-type\r\n * @param {Context} context query context\r\n * @returns {Promise} current context with decoded .body\r\n * @memberof ApiManager\r\n * @virtual\r\n */\r\n async DecodeBody(context: Context): Promise {\r\n this._log.debug(() => ({\r\n msg: `${context.request.name}: DecodeBody`,\r\n apiContext: context,\r\n }));\r\n const { request } = context;\r\n // avoid bodyUsed in case of cache.transformer!\r\n /* istanbul ignore next */\r\n const response = isLegacyResponseClone()\r\n ? cloneDeep(context.response) // Legacy browsers\r\n : context.response.clone(); // Modern browsers\r\n switch (request.contentType) {\r\n case ContentType.NONE:\r\n context.body = null;\r\n break;\r\n case ContentType.TEXT:\r\n context.body = await response.text();\r\n break;\r\n case ContentType.AUTO:\r\n // fall through\r\n case ContentType.JSON:\r\n const contentHeader = response.headers.get(\"content-type\");\r\n if (\r\n contentHeader &&\r\n contentHeader.indexOf(\"application/json\") !== -1\r\n ) {\r\n // checking response header\r\n context.body = await response.json();\r\n } else {\r\n context.body = await response.text();\r\n }\r\n break;\r\n case ContentType.BLOB:\r\n // TODO #40646 only newest fetch-mock supports blobs\r\n context.body =\r\n typeof response.blob === \"function\"\r\n ? await response.blob()\r\n : /* istanbul ignore next */ null;\r\n break;\r\n default:\r\n this._log.error(() => ({\r\n msg: `${context.request.name} ApiCatalog has invalid ContentType: ${context.request.contentType}`,\r\n apiContext: context,\r\n }));\r\n break;\r\n }\r\n return context;\r\n }\r\n\r\n /**\r\n * Check for any custom server errors\r\n * @param {Context} context query context\r\n * @returns {Promise} current context\r\n * @memberof ApiManager\r\n * @virtual\r\n */\r\n async CheckCustomError(context: Context): Promise {\r\n this._log.debug(() => ({\r\n msg: `${context.request.name}: CheckCustomError`,\r\n apiContext: context,\r\n }));\r\n const { request, body } = context;\r\n if (request.contentType !== ContentType.BLOB && body != null) {\r\n /* istanbul ignore else */\r\n if (body.isError === true) {\r\n notifyOnError(body);\r\n throw new ApiErrorContainer(body);\r\n }\r\n }\r\n return context;\r\n }\r\n\r\n /**\r\n * Placeholder event at the End Of line\r\n * @param {Context} context\r\n * @returns {Promise}\r\n * @memberof ApiManager\r\n * @virtual\r\n */\r\n async EOL(context: Context): Promise {\r\n return context;\r\n }\r\n\r\n /**\r\n * Main Worker kicking off pipeline chain\r\n * @memberof ApiManager\r\n * @private\r\n */\r\n _pipeline = async (\r\n context: Context\r\n ): Promise /* istanbul ignore next */ =>\r\n performanceTester(\r\n async () =>\r\n await this.BeforeFetch(context)\r\n .then(this.OnFetch)\r\n .then(this.AfterFetch)\r\n .then(this.CheckLicense)\r\n .then(this.DecodeBody)\r\n .then(this.CheckCustomError)\r\n .then(this.EOL),\r\n (ms) =>\r\n this._log.info(() => ({\r\n msg: `${context.request.name} Done in ${ms}ms`,\r\n apiContext: context,\r\n apiTook: ms,\r\n }))\r\n );\r\n}\r\n","import React from \"react\";\nimport Icons from \"@hs/icons\";\nimport styles from \"./UserGroup.module.css\";\nimport { getClassNames } from \"data/utils\";\n\nconst UserGroup = ({\n className,\n title,\n}: {\n className?: string,\n title?: string,\n}) => (\n \n \n \n);\n\nUserGroup.displayName = \"UserGroup\";\nexport default UserGroup;\n","import React from \"react\";\nimport Avatar from \"./Avatar\";\nimport UserGroup from \"./UserGroup\";\nimport { PrincipalType, type PrincipalTypeEnum } from \"data/types\";\n\nconst PrincipalAvatar = ({\n id,\n className,\n title,\n type = PrincipalType.User,\n}: {\n id?: int,\n className?: string,\n title?: string,\n type: PrincipalTypeEnum,\n}) =>\n type === PrincipalType.User ? (\n \n ) : (\n \n );\n\nPrincipalAvatar.displayName = \"Principal\";\nexport default PrincipalAvatar;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"NativeSelect_wrapper__3wn7x\",\"select\":\"NativeSelect_select__2QXB9\",\"placeholder\":\"NativeSelect_placeholder__3FcY7\",\"icon\":\"NativeSelect_icon__3lgDG\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"group\":\"apiError_group__3VPhR\",\"btn\":\"apiError_btn__2LViM\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"siteSelect\":\"SiteSelect_siteSelect__1fzyF\",\"siteSelectNative\":\"SiteSelect_siteSelectNative__1JZRU\",\"name\":\"SiteSelect_name__3XQ2t\",\"menuitem\":\"SiteSelect_menuitem__ZWTic\",\"button\":\"SiteSelect_button__2tcgk\",\"color\":\"SiteSelect_color__3sxKa\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tree\":\"minipicker_tree__193WF\",\"loading\":\"minipicker_loading__1IMuc\",\"doclist\":\"minipicker_doclist__2Qc_1\",\"filter\":\"minipicker_filter__3oriO\",\"split\":\"minipicker_split__17Dwo\",\"noTree\":\"minipicker_noTree__3yj7_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"viewer\":\"document_viewer__3juQu\",\"right\":\"document_right__3Hbgn\",\"form\":\"document_form__1kLIs\",\"activity\":\"document_activity__XCGi6\",\"filedrop\":\"document_filedrop__2HjZI\",\"split\":\"document_split__2zOZa\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"recentFolder\":\"RecentFolderSelect_recentFolder__2IOx7\",\"recentFolderNative\":\"RecentFolderSelect_recentFolderNative__rAnQe\",\"color\":\"RecentFolderSelect_color__1duyE\",\"text\":\"RecentFolderSelect_text__3Dw2m\",\"menuitem\":\"RecentFolderSelect_menuitem__3CD2N\",\"button\":\"RecentFolderSelect_button__2_Nbo\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"header\":\"Form_header__2xKzd\",\"newDoc_group\":\"Form_newDoc_group__1LDS4\",\"newDoc_checkbox\":\"Form_newDoc_checkbox__2Pi0o\",\"newDoc_label\":\"Form_newDoc_label__1ONxl\"};","import React, { useCallback, useState, useEffect, useMemo } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { usePrevious } from \"hooks\";\nimport { persistTogglesAction } from \"data/actions\";\nimport { getDisplayName } from \"data/constants\";\nimport getToggles from \"data/toggles\";\nimport queryString from \"data/queryString\";\nimport isEqual from \"lodash/isEqual\";\nimport { selectedTogglesSelector } from \"data/reducers/selectors\";\nimport { produce } from \"immer\";\nimport { usePostMessageHandler } from \"hooks\";\nimport { TogglesAction } from \"hooks/PostMessage/Actions\";\nimport { postMessageTo } from \"hooks/PostMessage/Utils\";\n\ntype Props = {\n /** Current URL location */\n location?: Location,\n /** Selected Toggles from props */\n toggles?: Array,\n /** Viewname from props */\n viewName?: string,\n};\n\ntype Config = {\n viewName?: string,\n onInit?: () => void,\n};\n\n// will manage initially loading default localized toggles\n// and changing local state based on selectedToggles\nconst TogglesHandler =\n ({ viewName, onInit }: Config): Node =>\n (WrappedComponent: ReactClass) => {\n const HOC = ({\n toggles: selectedTogglesFromProps,\n viewName: viewNameFromProps,\n location,\n injectedToggles = null,\n ...props\n }: Props) => {\n /* istanbul ignore next */\n const usedViewName = viewName || viewNameFromProps;\n const prevSelectedTogglesFromProps = usePrevious(\n selectedTogglesFromProps\n );\n const togglesFromViewName = useMemo(\n () =>\n produce(getToggles(usedViewName), (draft) => {\n /* istanbul ignore else */\n if (typeof onInit === \"function\") {\n onInit(draft);\n }\n }),\n [usedViewName]\n );\n const [toggles, setToggles] = useState(togglesFromViewName);\n const [persist, setPersist] = useState(true);\n const allowMultiple = useSelector(\n (state) => state.browser.greaterThanOrEqual.medium\n );\n const prevAllowMultiple =\n usePrevious(allowMultiple) ?? allowMultiple;\n const dispatch = useDispatch();\n const selectedTogglesFromStore = useSelector((state) =>\n selectedTogglesSelector(state, usedViewName)\n );\n const prevSelectedTogglesFromStore = usePrevious(\n selectedTogglesFromStore\n );\n const selectedTogglesFromQueryString = useMemo(\n () =>\n queryString\n .parse(location?.search ?? \"\")\n ?.toggles?.split(\",\"),\n [location?.search]\n );\n const prevSelectedTogglesFromQueryString = usePrevious(\n selectedTogglesFromQueryString\n );\n const [selectedToggles, setSelectedToggles] = useState(\n togglesFromViewName.toggles\n .filter((t) => t.isSelected)\n .map((t) => t.value)\n );\n const prevSelectedToggles =\n usePrevious(selectedToggles) || selectedToggles;\n const handleSetToggles = useCallback(\n (togglesFromCallback = null, persist = true) => {\n // console.log(\"aaa\", \"handleSetToggles\", persist);\n const toggles = produce(\n togglesFromCallback ?? togglesFromViewName,\n (draft) => {\n // Ensure to set usedViewname (for toggle selection)\n draft.name = usedViewName;\n }\n );\n setPersist(persist);\n const selectedToggles = toggles.toggles\n .filter((t) => t.isSelected)\n .map((t) => t.value);\n setSelectedToggles(\n selectedToggles.length\n ? selectedToggles\n : [\n toggles.toggles.find((t) => !t.isDisabled)\n ?.value,\n ]\n );\n setToggles(toggles);\n persist &&\n dispatch(\n persistTogglesAction(usedViewName, toggles.toggles)\n );\n },\n [dispatch, usedViewName, togglesFromViewName]\n );\n\n const availableToggles = toggles.toggles\n .filter((t) => !t.isHidden)\n .map((t) => t.value);\n\n // handle selected toggles from store\n useEffect(() => {\n if (selectedTogglesFromStore == null) return;\n if (\n isEqual(selectedToggles, selectedTogglesFromStore) ||\n isEqual(\n prevSelectedTogglesFromStore,\n selectedTogglesFromStore\n )\n )\n return;\n // console.log(\n // \"aaa\",\n // \"selectedTogglesFromStore\",\n // selectedTogglesFromStore\n // );\n if (\n selectedTogglesFromStore.some((t) =>\n availableToggles.includes(t)\n )\n )\n setSelectedToggles(selectedTogglesFromStore);\n else setSelectedToggles([availableToggles[0]]);\n }, [\n selectedToggles,\n prevSelectedTogglesFromStore,\n selectedTogglesFromStore,\n availableToggles,\n ]);\n\n // handle selected toggles from props\n useEffect(() => {\n if (selectedTogglesFromProps == null) return;\n if (\n isEqual(selectedToggles, selectedTogglesFromProps) ||\n isEqual(\n prevSelectedTogglesFromProps,\n selectedTogglesFromProps\n )\n )\n return;\n // console.log(\n // \"aaa\",\n // \"selectedTogglesFromProps\",\n // selectedTogglesFromProps\n // );\n setSelectedToggles(selectedTogglesFromProps);\n }, [\n selectedToggles,\n prevSelectedTogglesFromProps,\n selectedTogglesFromProps,\n ]);\n\n // handle selected toggles from query string\n useEffect(() => {\n if (selectedTogglesFromQueryString == null) return;\n if (\n isEqual(selectedToggles, selectedTogglesFromQueryString) ||\n isEqual(\n prevSelectedTogglesFromQueryString,\n selectedTogglesFromQueryString\n )\n )\n return;\n // console.log(\n // \"aaa\",\n // \"selectedTogglesFromQueryString\",\n // selectedTogglesFromQueryString\n // );\n const validToggles = selectedTogglesFromQueryString.filter(\n (t) => availableToggles.includes(t)\n );\n if (validToggles.length < 1) {\n const msg =\n \"[TogglesHandler] Invalid toggle names provided. Please read the docs to setup properly.\";\n alert(msg);\n console.error(\n msg,\n selectedTogglesFromQueryString,\n \"https://serviceportal.hs.ag/docs/inPoint.Web/docs/feature-integration-miniviews.html#view-toggles\"\n );\n } else {\n if (\n validToggles.length !==\n selectedTogglesFromQueryString.length\n ) {\n console.warn(\n \"[TogglesHandler] Not all provided toggles can be set\",\n \"https://serviceportal.hs.ag/docs/inPoint.Web/docs/feature-integration-miniviews.html#view-toggles\"\n );\n }\n /* istanbul ignore else */ if (\n !isEqual(selectedToggles, validToggles)\n ) {\n setSelectedToggles(validToggles);\n }\n }\n }, [\n selectedToggles,\n prevSelectedTogglesFromQueryString,\n selectedTogglesFromQueryString,\n toggles.toggles,\n availableToggles,\n ]);\n\n const handleToggleChange = useCallback(\n (map) => {\n const togglesBySelected = produce(toggles, (draft) => {\n draft.isMultiple =\n allowMultiple && togglesFromViewName.isMultiple;\n /* istanbul ignore else */ if (\n typeof map === \"function\"\n )\n draft.toggles = draft.toggles.map(map);\n });\n if (!isEqual(toggles, togglesBySelected)) {\n // console.log(\"aaa\", \"handleToggleChange\");\n setToggles(togglesBySelected);\n dispatch(\n persistTogglesAction(\n usedViewName,\n togglesBySelected.toggles\n )\n );\n }\n },\n [\n toggles,\n usedViewName,\n dispatch,\n allowMultiple,\n togglesFromViewName.isMultiple,\n ]\n );\n\n useEffect(() => {\n if (allowMultiple === prevAllowMultiple) return;\n const isMultiple =\n togglesFromViewName.isMultiple && allowMultiple;\n // console.log(\"aaa\", \"allowMultiple changed\", allowMultiple);\n let hasSelection = false;\n handleToggleChange((toggle) => {\n toggle.isSelected =\n toggle.isSelected &&\n (isMultiple || (!isMultiple && !hasSelection));\n if (toggle.isSelected) {\n hasSelection = true;\n }\n return toggle;\n });\n }, [\n handleToggleChange,\n allowMultiple,\n prevAllowMultiple,\n togglesFromViewName.isMultiple,\n ]);\n\n // Effect to fix selected toggles\n useEffect(() => {\n if (isEqual(prevSelectedToggles, selectedToggles)) return;\n if (!persist) {\n setPersist(true);\n return;\n }\n // console.log(\n // \"aaa\",\n // \"selectedToggles effect\",\n // selectedToggles,\n // persist\n // );\n handleToggleChange((toggle) => {\n toggle.isSelected = selectedToggles.includes(toggle.value);\n return toggle;\n });\n }, [\n persist,\n prevSelectedToggles,\n selectedToggles,\n handleToggleChange,\n ]);\n\n // PostMessage\n usePostMessageHandler(\n useMemo(\n () => ({\n [TogglesAction.Get]: (data, source) => {\n postMessageTo(\n TogglesAction.Set,\n toggles.toggles,\n source\n );\n },\n [TogglesAction.Set]: ({\n toggles: maybeAllToggles,\n persist,\n }) => {\n handleSetToggles(\n produce(toggles, (draft) => {\n draft.toggles = draft.toggles.map(\n (toggle) => ({\n ...toggle,\n ...maybeAllToggles.find(\n (t) => t.value === toggle.value\n ),\n })\n );\n }),\n persist\n );\n },\n }),\n [toggles, handleSetToggles]\n )\n );\n\n return (\n \n );\n };\n HOC.displayName = `TogglesHandler(${getDisplayName(WrappedComponent)})`;\n return HOC;\n };\n\nexport default TogglesHandler;\n","// @flow\nimport React, {\n useRef,\n useEffect,\n useCallback,\n type ComponentType,\n} from \"react\";\nimport { useEffectOnce, usePrevious } from \"hooks\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport isEqual from \"lodash/isEqual\";\nimport Split from \"split.js\";\nimport panesDefaultState from \"data/panes\";\nimport { getDisplayName } from \"data/constants\";\nimport { setSplitPanesAction, persistSplitPanesAction } from \"data/actions\";\nimport { panesViewSelector } from \"data/reducers/selectors\";\n\ntype Props = {\n viewName?: string,\n};\n\ntype Config = {\n viewName?: string,\n paneIds: Array,\n toggleIds: Array,\n direction?: string,\n};\n\nconst SplitPanes =\n ({ viewName, paneIds, toggleIds, direction = \"vertical\" }: Config) =>\n (WrappedComponent: ComponentType) => {\n const HOC = ({\n viewName: viewNameFromProps,\n selectedToggles,\n ...props\n }: Props) => {\n const split1 = useRef();\n const split2 = useRef();\n /* istanbul ignore next */\n const usedViewName = viewName || viewNameFromProps;\n const panes = useSelector((state) =>\n panesViewSelector(state, usedViewName)\n );\n const prevPanes = usePrevious(panes);\n const prevSelectedToggles = usePrevious(selectedToggles);\n const dispatch = useDispatch();\n const handleDispatch = useCallback(\n ({\n persist,\n ...action\n }: {\n persist: boolean,\n view: string,\n name: number,\n dimensions: Array,\n }) =>\n dispatch(\n persist\n ? persistSplitPanesAction(action)\n : setSplitPanesAction(action)\n ),\n [dispatch]\n );\n\n const setSplitSizes = useCallback(\n (paneIdx: number, dimensions: Array) => {\n /* istanbul ignore else */\n if (paneIdx === 0) {\n split1.current?.setSizes(dimensions);\n } else if (paneIdx === 1) {\n split2.current?.setSizes(dimensions);\n } else {\n alert(\"Unknown paneIdx=\" + paneIdx);\n }\n },\n []\n );\n useEffectOnce(() => {\n let paneIdx = 0;\n split1.current = Split(\n [paneIds[paneIdx++], paneIds[paneIdx++]],\n {\n sizes: panes[0],\n direction:\n paneIds.length === 2\n ? direction /*\"vertical\"*/\n : \"horizontal\",\n minSize: 0,\n gutterSize: 10,\n onDragEnd: () => {\n // adjust toggles based on panes' dimensions\n const dimensions = split1.current.getSizes();\n\n handleDispatch({\n persist: true,\n view: usedViewName,\n name: 0,\n dimensions,\n });\n },\n\n elementStyle: /* istanbul ignore next */ (\n dimension,\n size,\n gutterSize\n ) => {\n return {\n \"flex-basis\":\n \"calc(\" +\n size +\n \"% - \" +\n gutterSize +\n \"px)\",\n };\n },\n gutterStyle: /* istanbul ignore next */ (\n dimension,\n gutterSize\n ) => {\n return { \"flex-basis\": gutterSize + \"px\" };\n },\n }\n );\n\n if (paneIdx < paneIds.length) {\n split2.current = Split(\n [paneIds[paneIdx++], paneIds[paneIdx++]],\n {\n sizes: panes[1],\n minSize: 0,\n gutterSize: 10,\n direction: \"vertical\",\n onDragEnd: () => {\n handleDispatch({\n persist: true,\n view: usedViewName,\n name: 1,\n dimensions: split2.current.getSizes(),\n });\n },\n elementStyle: /* istanbul ignore next */ (\n dimension,\n size,\n gutterSize\n ) => {\n return {\n \"flex-basis\":\n \"calc(\" +\n size +\n \"% - \" +\n gutterSize +\n \"px)\",\n };\n },\n gutterStyle: /* istanbul ignore next */ (\n dimension,\n gutterSize\n ) => {\n return { \"flex-basis\": gutterSize + \"px\" };\n },\n }\n );\n }\n });\n useEffect(() => {\n if (isEqual(prevPanes, panes)) return;\n //console.log(\"[SplitPanes]\", \"panes\", ...panes);\n if (paneIds.length === 2) {\n split1.current.setSizes(panes[0]);\n } else {\n split1.current.setSizes(panes[0]);\n split2.current.setSizes(panes[1]);\n }\n }, [panes, prevPanes]);\n useEffect(() => {\n if (selectedToggles == null) return;\n /* istanbul ignore if */\n if (isEqual(prevSelectedToggles, selectedToggles)) return;\n if (paneIds.length === 2) {\n let master = panes[0].some((p) => !p)\n ? panesDefaultState[usedViewName][0].slice(0)\n : panes[0].slice(0);\n if (!selectedToggles.includes(toggleIds[0])) {\n master = [0, 100];\n } else if (!selectedToggles.includes(toggleIds[1])) {\n master = [100, 0];\n }\n if (!isEqual(master, panes[0])) {\n // console.log(\"[SplitPanes]\", \"master\", master);\n split1.current.setSizes(master);\n handleDispatch({\n persist: prevSelectedToggles != null,\n view: usedViewName,\n name: 0,\n dimensions: master,\n });\n }\n } else {\n let master = panes[0].some((p) => !p)\n ? panesDefaultState[usedViewName][0].slice(0)\n : panes[0].slice(0);\n\n if (!selectedToggles.includes(toggleIds[0])) {\n master = [0, 100];\n }\n\n let slave = panes[1].some((p) => !p)\n ? panesDefaultState[usedViewName][1].slice(0)\n : panes[1].slice(0);\n if (!selectedToggles.includes(toggleIds[1])) slave[0] = 0;\n if (!selectedToggles.includes(toggleIds[2])) slave[1] = 0;\n if (\n !selectedToggles.includes(toggleIds[1]) &&\n !selectedToggles.includes(toggleIds[2]) &&\n selectedToggles.includes(toggleIds[0])\n ) {\n master = [100, 0];\n }\n if (\n selectedToggles.includes(toggleIds[1]) &&\n !selectedToggles.includes(toggleIds[2])\n ) {\n slave[0] = 100;\n } else if (\n !selectedToggles.includes(toggleIds[1]) &&\n selectedToggles.includes(toggleIds[2])\n ) {\n slave[1] = 100;\n }\n if (!isEqual(master, panes[0])) {\n // console.log(\"[SplitPanes]\", \"master\", master);\n split1.current.setSizes(master);\n handleDispatch({\n persist: prevSelectedToggles != null,\n view: usedViewName,\n name: 0,\n dimensions: master,\n });\n }\n if (!isEqual(slave, panes[1])) {\n // console.log(\"[SplitPanes]\", \"slave\", slave);\n split2.current.setSizes(slave);\n handleDispatch({\n persist: prevSelectedToggles != null, //Do not persist initial set of toggles\n view: usedViewName,\n name: 1,\n dimensions: slave,\n });\n }\n }\n }, [\n handleDispatch,\n selectedToggles,\n prevSelectedToggles,\n usedViewName,\n panes,\n ]);\n return (\n \n );\n };\n HOC.displayName = `SplitPanes(${getDisplayName(WrappedComponent)})`;\n return HOC;\n };\n\nexport default SplitPanes;\n","// @flow\nimport React from \"react\";\nimport ModalBootstrap from \"react-bootstrap/lib/Modal\";\nimport Form from \"react-bootstrap/lib/Form\";\nimport { isHandheld, isIOS } from \"data/bowser\";\nimport debounce from \"lodash/debounce\";\nimport styles from \"./Modal.module.css\";\nimport { History } from \"history\";\nimport { withRouter } from \"react-router\";\nimport queryString from \"data/queryString\";\nimport sharedStyles from \"shared/styles.module.css\";\nimport { getClassNames } from \"data/utils\";\n\nconst ModalHeader = (props) => ;\nconst ModalTitle = (props) => ;\nconst ModalBody = (props) => ;\nconst ModalFooter = (props) => ;\n\nexport const ModalSize = {\n Large: \"large\",\n Medium: undefined,\n Small: \"small\",\n};\n\ntype ModalSizeEnum = $Values;\n\ntype Props = {\n history: History,\n show: boolean,\n onHide: () => void,\n onKeyPress: () => void,\n style?: CSSStyleDeclaration,\n /** width of Dialog box to render */\n size?: ModalSizeEnum,\n /** height in pixels of header\n * @default 42 */\n headerSize?: number,\n /** height in pixels of footer\n * @default 0\n */\n footerSize?: number,\n /** whether to scroll modal contents\n * @default false\n */\n scroll?: boolean,\n /** whether modal should take fullscreen height (true) or max-height (false)\n * @default false\n */\n fullscreen?: boolean,\n /** whether modal should open docked to the right (true) or centered (false)\n * @default false\n */\n docked?: boolean,\n /** whether modal should enforce focus state (set to false if portal is used within modal)\n * @default true\n */\n enforceFocus?: boolean,\n /** optional CSS class to apply to Modal dialog */\n dialogClassName?: string,\n /** optional string to help test engines target this component */\n dataTest?: string,\n};\n\ntype State = {\n vh: number,\n fs: boolean,\n closeRequested: boolean,\n};\n\n/**\n * wrapper around Modal which will dynamically calculate viewport height\n */\nexport class Modal extends React.PureComponent {\n Header: ModalHeader;\n Title: ModalTitle;\n Body: ModalBody;\n Footer: ModalFooter;\n\n static defaultProps = {\n size: ModalSize.Large,\n headerSize: 42,\n footerSize: 0,\n scroll: false,\n fullscreen: false,\n enforceFocus: true,\n };\n\n constructor(props: Props) {\n super(props);\n const fs = this._shouldFullscreen();\n this.state = {\n vh: this._getHeight(fs),\n fs,\n closeRequested: false,\n location: props.history.location,\n };\n }\n\n componentDidMount = () => {\n this.historyUnlisten = this.props.history.listen((location, action) => {\n // Compare search parameter to distinguish if modal should be closed: Do not close Modal on e.g. pagination\n const _search = queryString.parse(this.state.location.search);\n const search = queryString.parse(location.search);\n const closeRequested = search.uri !== _search.uri;\n this.setState({\n location,\n closeRequested,\n });\n });\n window.addEventListener(\"resize\", this._onResizeDebounced, {\n capture: false,\n passive: true,\n });\n };\n\n componentWillUnmount = () => {\n if (this.historyUnlisten) this.historyUnlisten();\n window.removeEventListener(\"resize\", this._onResizeDebounced);\n };\n\n componentDidUpdate(prevProps: Props) {\n /* istanbul ignore else */\n if (this.props.show !== prevProps.show && this.props.show === true)\n this._onResize();\n }\n\n _onResize = () => {\n const fs = this._shouldFullscreen();\n this.setState({\n vh: this._getHeight(\n /*istanbul ignore next*/ fs || this.props.docked\n ),\n fs,\n });\n };\n\n _onResizeDebounced = debounce(this._onResize, 400);\n\n _shouldFullscreen = () => isHandheld() || this._getWidth() <= 768;\n\n _getWidth = () =>\n isIOS() ? document.documentElement.clientWidth : window.innerWidth;\n\n _getHeight = (fs: boolean) => {\n const height = isIOS()\n ? document.documentElement.clientHeight\n : window.innerHeight;\n const margin = fs ? 0 : 31;\n return (\n height - this.props.headerSize - this.props.footerSize - margin * 2\n );\n };\n\n _renderChildren = (children) =>\n React.Children.map(children, (child, index) =>\n this._renderChild(child)\n );\n\n _renderChild = (child) => {\n /* istanbul ignore else */\n if (child != null) {\n if (child.type === ModalBody) {\n return React.cloneElement(child, {\n style: {\n height: this.props.fullscreen\n ? this.state.vh\n : undefined,\n maxHeight: this.props.fullscreen\n ? undefined\n : this.state.vh,\n overflowY:\n this.props.scroll === true ? \"auto\" : \"hidden\",\n },\n });\n } else if (child.type === ModalHeader) {\n return React.cloneElement(child, {\n style: {\n height: this.props.headerSize,\n },\n });\n } else if (\n child.type === Form &&\n React.Children.count(child.props.children) > 0\n ) {\n return React.cloneElement(\n child,\n {},\n this._renderChildren(child.props.children)\n );\n } else {\n return React.cloneElement(child, {});\n }\n }\n };\n render() {\n const {\n show,\n onHide,\n onKeyPress,\n dialogClassName,\n backdropClassName,\n style,\n } = this.props;\n return (\n \n {this._renderChildren(this.props.children)}\n \n );\n }\n}\n\nModal.Header = ModalHeader;\nModal.Title = ModalTitle;\nModal.Body = ModalBody;\nModal.Footer = ModalFooter;\nexport default withRouter(Modal);\n","import actionTypes from \"data/actions/actionTypes\";\nimport Constants from \"data/constants\";\nimport { produce } from \"immer\";\n\nconst initialState = {\n cards: [],\n providers: null,\n status: Constants.NONE,\n};\n\nconst workflowReducer = (state = initialState, action) =>\n produce(state, (draft) => {\n switch (action.type) {\n case actionTypes.WF_PROVIDERS_FETCH_REQUESTED:\n case actionTypes.WF_PROVIDERS_FETCH_RESULT:\n case actionTypes.WF_FETCH_REQUESTED:\n case actionTypes.WF_FETCH_RESULT:\n return { ...draft, ...action.payload };\n /* istanbul ignore next */\n case actionTypes.PERSIST_PURGE:\n return initialState;\n default:\n return draft;\n }\n });\n\nexport default workflowReducer;\n\nexport const workflowStatusSelector = (state: Object) => state.workflow.status;\nexport const workflowCardsSelector = (state: Object) => state.workflow.cards;\nexport const workflowProvidersSelector = (state: Object) =>\n state.workflow.providers;\nexport const workflowPendingCountSelector = (state: Object) =>\n (state.workflow.status === Constants.OK ||\n state.workflow.status === Constants.REFRESH) &&\n state.workflow.cards\n ? state.workflow.cards.filter(\n (card) => card.extras.toggle === \"pending\"\n ).length\n : -1;\n","import actionTypes from \"../actions/actionTypes\";\n\nexport const initialState = {\n initialized: false,\n updated: false,\n failed: false,\n registration: null,\n};\n\nconst serviceWorkerReducer = (state = initialState, action) => {\n switch (action.type) {\n case actionTypes.SW_INIT:\n return {\n ...state,\n initialized:\n action.payload.registration != null &&\n action.payload.error == null,\n failed:\n action.payload.registration == null &&\n action.payload.error != null,\n ...action.payload,\n };\n case actionTypes.SW_UPDATE:\n return {\n ...state,\n updated: !state.updated,\n ...action.payload,\n };\n /* istanbul ignore next */\n case actionTypes.PERSIST_PURGE:\n return initialState;\n default:\n return state;\n }\n};\n\nexport default serviceWorkerReducer;\n\nexport const isSwInitializedSelector = (state: Object): boolean =>\n state.sw.initialized === true;\nexport const isSwFailedSelector = (state: Object): boolean =>\n state.sw.failed === true;\nexport const isSwUpdatedSelector = (state: Object): boolean =>\n state.sw.updated === true;\nexport const swRegistrationSelector = (\n state: Object\n): ServiceWorkerRegistration | null => state.sw.registration;\n","// @flow\nimport React from \"react\";\nimport Button from \"react-bootstrap/lib/Button\";\nimport Icons from \"@hs/icons\";\nimport loc from \"i18next\";\n\ntype Props = {\n /** callback when user clicks on More... Button */\n onClick?: () => void,\n /** optional CSS Class to apply */\n className?: string,\n /** whether to render the button in a disabled state */\n disabled?: boolean,\n /** additional css styling */\n style?: CSStyleDefinition,\n /** Integration Test identifier */\n dataTest?: string,\n};\n\nconst ActionsButton = ({\n onClick,\n className,\n disabled,\n style = { color: \"black\" },\n dataTest = \"actionsButton\",\n ...props\n}: Props) => (\n \n \n \n);\nActionsButton.displayName = \"ActionsButton\";\nexport default ActionsButton;\n","import React from \"react\";\nimport FormsyEditorBase from \"./FormsyEditorBase\";\nimport MaskedInput from \"@hs/masked-input\";\nimport { getClassNames } from \"data/utils\";\nimport IMask from \"imask\";\nimport loc from \"i18next\";\n\nconst TextEditorControl = (props) => (\n (\n \n )}\n {...props}\n validations={{\n ...props.validations,\n notEmptyMask: /*istanbul ignore next*/ (values, value) => {\n if (!props.isRequired || !props.mask) return true;\n const rawValue = IMask.pipe(\n value,\n {\n mask: props.mask,\n definitions: {\n \"#\": /[0-9]/,\n \"&\": /./,\n A: /[0-9a-zA-Z]/,\n a: /[0-9a-zA-Z]/,\n 9: /[0-9]/,\n C: /./,\n \"?\": /./,\n n: /[0-9]/,\n },\n },\n IMask.PIPE_TYPE.MASKED,\n IMask.PIPE_TYPE.UNMASKED\n );\n return String(rawValue) !== \"\";\n },\n }}\n validationErrors={{\n ...props.validationErrors,\n notEmptyMask: loc.t(\"common:validation.required\"),\n }}\n />\n);\nTextEditorControl.displayName = \"TextEditorControl\";\nexport default TextEditorControl;\n","import React, {\n useMemo,\n useContext,\n useState,\n useCallback,\n useEffect,\n} from \"react\";\nimport { useAsync, usePrevious } from \"hooks\";\nimport { fetchItemContext } from \"data/api\";\nimport { ItemContextKeyEnum } from \"data/types\";\nimport { getDisplayName } from \"data/constants\";\nimport { ItemContext } from \"data/context\";\n\ntype Config = {\n asProps?: boolean | Array,\n};\n\ntype Props = {\n itemUri: string,\n refreshId: ?number,\n};\n\nconst withItemContext =\n ({ asProps }: ?Config = {}) =>\n (WrappedComponent: ComponentType) => {\n const HOC = (props: Props) => {\n const parentContext = useContext(ItemContext);\n const itemUri = props.itemUri;\n const [refreshId, setRefreshId] = useState(props.refreshId || 0);\n const prevRefreshId = usePrevious(refreshId) ?? refreshId;\n\n // #region Nested context update by refreshId\n // Update refreshId if the nested child's itemContext refreshId prop changes\n\n const baseRefreshContext = useCallback(\n (newRefreshId) => {\n /* istanbul ignore if*/\n if (refreshId === newRefreshId) {\n return;\n }\n setRefreshId(newRefreshId);\n },\n [refreshId]\n );\n\n // get the parentContext's refreshContext,\n // if parentContext is available and itemUris match,\n // otherwise set it\n const refreshContext =\n parentContext?.itemUri === itemUri\n ? parentContext?.refreshContext ?? baseRefreshContext\n : baseRefreshContext;\n\n useEffect(() => {\n setRefreshId(props.refreshId);\n }, [props.refreshId]);\n\n // if the refreshId changed, update the parent itemContext's refreshId as well\n useEffect(() => {\n if (prevRefreshId === refreshId) {\n return;\n }\n refreshContext(refreshId);\n }, [refreshId, prevRefreshId, refreshContext]);\n // #endregion\n\n const [itemContext, setItemContext] = useState({});\n\n useAsync(async () => {\n if (!itemUri) return setItemContext({});\n if (parentContext?.itemUri === itemUri)\n return setItemContext(parentContext);\n setItemContext({ itemUri });\n let c = {};\n try {\n c = await fetchItemContext(itemUri);\n c.itemUri = itemUri;\n } catch (e) {\n console.error(e);\n }\n setItemContext(c);\n }, [parentContext, itemUri, refreshId]);\n\n const itemContextWithExtras = useMemo(\n () => ({\n ...itemContext,\n itemUri,\n refreshContext,\n }),\n [itemContext, itemUri, refreshContext]\n );\n\n const itemContextAsProps = useMemo(() => {\n if (asProps === true) {\n return itemContextWithExtras;\n }\n const props = {};\n if (!asProps) return props;\n asProps.forEach((key: ItemContextKeyEnum) => {\n props[key] = itemContextWithExtras?.[key];\n });\n return props;\n }, [itemContextWithExtras]);\n\n return (\n \n \n \n );\n };\n HOC.displayName = `withItemContext(${getDisplayName(\n WrappedComponent\n )})`;\n return HOC;\n };\n\nexport default withItemContext;\n","// this file defines default split panes proportions\n\nconst panesDefaultState = {\n minipicker: [/*leftSplit:*/ [25, 75]],\n folder: [\n /*leftSplit:*/ [25, 75],\n /*rightSplit:*/ [50, 50],\n ],\n mailbox: [\n /*leftSplit:*/ [25, 75],\n /*rightSplit:*/ [60, 40],\n ],\n document: [\n /*leftSplit:*/ [70, 30],\n [60, 40],\n ],\n docmodal: [\n /*leftSplit:*/ [70, 30],\n [60, 40],\n ],\n miniflat: [/*topSplit:*/ [60, 40]],\n upload: [/*leftSplit*/ [30, 70]],\n search: [\n /*leftSplit*/ [20, 70],\n /*rightSplit:*/ [40, 60],\n ],\n itemflows: [/*leftSplit*/ [35, 65]],\n};\n\nexport default panesDefaultState;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"label\":\"AttributeLabel_label__1Rp17\",\"text\":\"AttributeLabel_text__3PmQz\",\"checkbox\":\"AttributeLabel_checkbox__2dkUV\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"table\":\"RowResultByLayout_table__1dG2X\",\"row\":\"RowResultByLayout_row__2_oTT\",\"cell\":\"RowResultByLayout_cell__28nnu\",\"icon\":\"RowResultByLayout_icon__1N6Jt\",\"lastcell\":\"RowResultByLayout_lastcell__u2vNi\"};","// @flow\nimport React, { useCallback, useState, useRef } from \"react\";\nimport { useUpdateEffect, useToggle } from \"hooks\";\nimport Icons from \"@hs/icons\";\nimport ClearableInput from \"@hs/clearable-input\";\nimport styles from \"./Rename.module.css\";\n\ntype Props = {\n /** controlled input text value */\n name: string,\n /** controller input onChange event */\n onChange: Function,\n /** optional title (tooltip) */\n title?: string,\n};\n\nconst Rename = ({ name: nameFromProps, onChange, title }: Props) => {\n const inputRef = useRef();\n const [editing, toggleEditing] = useToggle();\n const [name, handleChange] = useState(nameFromProps);\n useUpdateEffect(() => {\n handleChange(nameFromProps);\n }, [nameFromProps]);\n\n const handleBlur = useCallback(\n (e) => {\n handleChange(nameFromProps);\n toggleEditing();\n },\n [nameFromProps, toggleEditing]\n );\n\n const handleEnter = useCallback(\n (e) => {\n onChange(name);\n inputRef.current?.blur();\n },\n [name, onChange]\n );\n if (editing) {\n return (\n (inputRef.current = ref)\n }\n autoFocus={true}\n className={`${styles.input} form-control`}\n type=\"text\"\n value={name}\n onBlur={handleBlur}\n onEnter={handleEnter}\n onChange={handleChange}\n />\n );\n }\n return (\n
\n {nameFromProps}\n \n
\n );\n};\n\nexport default Rename;\n","// @flow\nimport React from \"react\";\nimport Breadcrumb from \"react-bootstrap/lib/Breadcrumb\";\nimport loc from \"i18next\";\nimport Status from \"components/Status\";\nimport Rename from \"components/Rename\";\nimport SearchParam from \"components/SearchParam\";\nimport styles from \"./Searchcrumb.module.css\";\n\ntype Props = {\n /** name of search item */\n name: ?string,\n /** search params */\n params: Array,\n /** whether this is a favorite */\n isFav: boolean,\n /** whether user is allowed to rename searchcrumb (and hide favorite option) */\n isReadonly: boolean,\n /** favorite add/remove fetch status */\n favStatus: string,\n /** callback when favorite icon is clicked */\n favOnClick?: () => void,\n /** callback when user renamed favorite\n * @param {string} name new name\n */\n onRename: ?(name: string) => void,\n /** CSS styles to apply */\n style?: StyleSheet | Object,\n /** className to apply */\n className?: string,\n};\n\nconst Searchcrumb = ({\n name,\n params,\n isFav = false,\n isReadonly = false,\n favStatus,\n favOnClick,\n onRename,\n style,\n className,\n}: Props) => (\n \n {typeof favOnClick === \"function\" &&\n !isReadonly &&\n (isFav ? (\n \n \n \n ) : (\n \n \n \n ))}{\" \"}\n \n {isReadonly === true && (\n \n {loc.t(\"search.searchcrumb\")}\n \n )}\n {isReadonly === false && (\n \n {loc.t(\"search.searchcrumb\")}\n \n )}\n \n {name && String(name).length > 0 && (\n \n {typeof onRename === \"function\" && !isReadonly ? (\n \n ) : (\n name\n )}\n \n )}\n {params?.length > 0 && (\n \n {params.map((param, i) => (\n \n ))}\n \n )}\n \n);\nSearchcrumb.displayName = \"Searchcrumb\";\nexport default Searchcrumb;\n","// @flow\nimport React, { PureComponent } from \"react\";\nimport { connect, Dispatch } from \"react-redux\";\nimport { addSearchFavorite, delFavoriteLink } from \"data/api\";\nimport { renameSearchFavoriteAction } from \"data/actions\";\nimport {\n type SearchRequestDTO,\n type SearchItemDTO,\n SearchRequestType,\n} from \"data/types\";\nimport Searchcrumb from \"components/Searchcrumb\";\nimport Constants, { type ConstantsEnum } from \"data/constants\";\nimport Status from \"components/Status\";\nimport { toastActionResult } from \"data/toast\";\nimport {\n getLocalizedSearchLabel,\n getParamsFromSearchText,\n} from \"components/SearchParam/utils\";\nimport history from \"data/history\";\nimport queryString from \"data/queryString\";\nimport * as s from \"data/reducers/selectors\";\n\ntype Props = {\n /** searchItem object (not executed yet) */\n searchItem: ?SearchItemDTO,\n /** search Request object (executed query) */\n searchRequest: SearchRequestDTO,\n /** whether user is allowed to rename searchcrumb (and hide favorite option) */\n isReadonly: boolean,\n /** Redux dispatch */\n dispatch: Dispatch,\n};\n\ntype State = {\n status: ConstantsEnum,\n isFav: boolean,\n favStatus: ConstantsEnum,\n name: string,\n linkId: number,\n params: Array,\n};\n\nexport class SearchcrumbContainer extends PureComponent {\n favOnClick: Function;\n\n constructor(props: Props) {\n super(props);\n this.state = {\n status: Constants.LOADING,\n isFav: false,\n favStatus: Constants.LOADING,\n name: \"\",\n linkId: -1,\n params: this._getParams(),\n };\n this.favOnClick = this.favOnClick.bind(this);\n }\n\n componentDidUpdate(prevProps: Props) {\n /* istanbul ignore else */\n if (prevProps.searchRequest !== this.props.searchRequest) {\n this._parse(this.props.searchRequest);\n }\n }\n\n _getParams = () => {\n const { param, filters } = queryString.parse(history.location.search);\n const filtersAsParams = (filters ? JSON.parse(filters) : []).map(\n (filter) => `${filter.name}=${filter.value}`\n );\n return (Array.isArray(param) ? param : param ? [param] : []).concat(\n filtersAsParams\n );\n };\n\n _parse = (searchRequest: SearchRequestDTO): void => {\n if (searchRequest) {\n const params = this._getParams()\n .concat(searchRequest.params ?? [])\n .concat(getParamsFromSearchText(searchRequest?.searchText));\n this.setState({\n status: Constants.OK,\n isFav:\n searchRequest.isCustom === false &&\n searchRequest.searchType === SearchRequestType.Favorite,\n favStatus: Constants.OK,\n name: getLocalizedSearchLabel(searchRequest.name, params),\n params,\n linkId: searchRequest.id,\n });\n } else {\n this.setState({ status: Constants.OK, params: this._getParams() });\n }\n };\n\n async favOnClick(e: SyntheticEvent) {\n e.preventDefault();\n const { searchRequest } = this.props;\n const { name, isFav, linkId } = this.state;\n\n this.setState({ favStatus: Constants.LOADING });\n\n try {\n const success = isFav\n ? await delFavoriteLink(linkId)\n : await addSearchFavorite(searchRequest);\n\n toastActionResult(\n success,\n isFav ? \"breadcrumb.delfav\" : \"breadcrumb.addfav\",\n { name }\n );\n\n if (success) {\n this.setState({\n isFav: !isFav,\n favStatus: Constants.OK,\n });\n } else {\n this.setState({\n favStatus: Constants.ERROR,\n });\n }\n } catch (err) {\n this.setState({\n favStatus: Constants.ERROR,\n });\n }\n }\n\n favOnRename = (name: string) =>\n this.props.dispatch(renameSearchFavoriteAction({ name }));\n\n render() {\n const { searchRequest, searchItem, isReadonly } = this.props;\n if (searchRequest != null && searchItem != null) {\n const { name, status, isFav, favStatus, params } = this.state;\n if (status === Constants.OK)\n return (\n \n );\n\n return ;\n } else if (searchItem != null) {\n return (\n \n );\n } else {\n return (\n \n );\n }\n }\n}\n\nconst mapStateToProps = /* istanbul ignore next */ (state, ownProps) => ({\n searchRequest: s.searchRequestSelector(state),\n ...ownProps,\n});\n\nexport default connect(mapStateToProps)(SearchcrumbContainer);\n","import React from \"react\";\nimport BreadcrumbContainer from \"containers/Breadcrumb\";\nimport SearchcrumbContainer from \"containers/Searchcrumb\";\nimport { check_isSpecialFolder } from \"containers/ActionPanel/ShouldBeVisible\";\nimport Icons from \"@hs/icons\";\nimport { type SearchItemDTO } from \"data/types\";\nimport loc from \"i18next\";\n\nexport const CustomBreadcrumb = ({\n name,\n icon,\n}: {\n /** text to show */\n name: string,\n /** icon to show (FontAwesome) */\n icon: string,\n}) => (\n
\n \n {\" \" + name}\n
\n);\nCustomBreadcrumb.displayName = \"CustomBreadcrumb\";\n\ntype Props = {\n /** itemUri */\n itemUri: ?string,\n /** current view name */\n viewName: string,\n /** optional used searchItem */\n searchItem?: SearchItemDTO,\n /** whether user is allowed to navigate through breadcrumb (and hide favorite option) */\n isReadonly: boolean,\n /** scope breadcrumb to show parts only starting the specified level number */\n scopeFromLevel?: number,\n /** optional breadcrumbPart click event instead of history.push */\n onBreadcrumbPartClick?: (itemUri: string) => void,\n};\n\nexport const CrumbSelector = ({\n itemUri,\n viewName,\n searchItem,\n isDoc = false,\n isReadonly = false,\n isRecycleBin = false,\n scopeFromLevel = 0,\n onBreadcrumbPartClick,\n canChangeSite = false,\n}: Props) => {\n if (searchItem != null)\n return (\n \n );\n else if (\n itemUri == null //home baby\n )\n return null;\n else if (itemUri === \"search\")\n return (\n \n );\n else if (itemUri === \"news\")\n return ;\n else if (itemUri === \"upload\")\n return (\n \n );\n else if (\n String(itemUri).startsWith(\"pam-item://\") ||\n check_isSpecialFolder({ itemUri })\n ) {\n const isFavorable = !(\n check_isSpecialFolder({ itemUri }) || isRecycleBin\n );\n return (\n \n );\n } else {\n return null;\n }\n};\nCrumbSelector.displayName = \"CrumbSelector\";\nexport default CrumbSelector;\n","// @flow\nimport React, { useCallback } from \"react\";\nimport styles from \"./Button.module.css\";\nimport CountBadge from \"components/CountBadge\";\nimport Button from \"react-bootstrap/lib/Button\";\nimport Icons from \"@hs/icons\";\nimport { type ToggleItemDTO } from \"data/types\";\nimport Constants from \"data/constants\";\nimport { getClassNames, getLocalizedText } from \"data/utils\";\n\ntype Props = {\n name: string,\n isMultiple: boolean,\n item: ToggleItemDTO,\n onClick: Function,\n};\n\nconst ToggleBarButton = ({ item, index, isMultiple, onClick }: Props) => {\n const handleClick = useCallback(\n () => !item.isDisabled && onClick(item, isMultiple),\n [item, isMultiple, onClick]\n );\n const title = getLocalizedText(item.text);\n return (\n !item.isHidden && (\n \n {item.icon && (\n \n )}\n \n {title}\n \n {item.count > 0 && (\n \n )}\n {item.status != null && (\n \n )}\n \n )\n );\n};\nToggleBarButton.displayName = \"ToggleBar.Button\";\n\nexport default ToggleBarButton;\n","// @flow\nimport React from \"react\";\nimport styles from \"./ToggleBar.module.css\";\nimport Button from \"./Button\";\nimport ButtonGroup from \"react-bootstrap/lib/ButtonGroup\";\nimport { type ToggleItemDTO } from \"data/types\";\n\ntype Props = {\n name: string,\n isMultiple: boolean,\n toggles: Array,\n onClick: Function,\n};\n\nconst ToggleBar = ({ name, toggles, ...props }: Props) => (\n \n {toggles.map((item: ToggleItemDTO, index: number) => (\n \n ))}\n \n);\n\nexport default ToggleBar;\n","import React, { useCallback } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport ToggleBar from \"components/ToggleBar\";\nimport { persistTogglesAction } from \"data/actions\";\nimport { produce } from \"immer\";\n\nconst ToggleBarContainer = ({\n isMultiple,\n name,\n toggles: togglesFromProps,\n}) => {\n const dispatch = useDispatch();\n // enrich toggles with data from store and fix multiple selection issues\n const toggles = useSelector((state) =>\n produce(togglesFromProps, (draft) => {\n const togglesFromStore = state.toggles[name];\n draft = draft.map((toggle) => {\n toggle.count = togglesFromStore?.counts?.[toggle.value] ?? 0;\n toggle.status =\n togglesFromStore?.status?.[toggle.value] ?? null;\n return toggle;\n });\n })\n );\n const handleClick = useCallback(\n (item) => {\n const newToggles = produce(toggles, (draft) => {\n draft = draft.map((toggle) => {\n if (!isMultiple) toggle.isSelected = false;\n if (toggle.value === item.value) {\n toggle.isSelected = !toggle.isSelected;\n }\n return toggle;\n });\n // if none selected preselect first one\n /* istanbul ignore else */\n if (draft.filter((toggle) => toggle.isSelected).length === 0) {\n draft[0].isSelected = true;\n }\n });\n dispatch(persistTogglesAction(name, newToggles));\n },\n [name, toggles, isMultiple, dispatch]\n );\n\n return (\n \n );\n};\n\nexport default ToggleBarContainer;\n","// @flow\nimport React, { type Node } from \"react\";\nimport \"./index.css\";\n// local components\nimport CrumbSelector from \"./CrumbSelector\";\nimport ToggleBarContainer from \"containers/ToggleBar\";\nimport ActionsMenu from \"components/ActionsMenu\";\nimport ActionsButton from \"components/ActionPanel/ActionsButton\";\nimport Pane from \"components/SplitPanes/Pane\";\nimport { openItemActionPanel } from \"components/ItemActionPanel\";\nimport { type ToggleDTO, type SearchItemDTO } from \"data/types\";\nimport { usePendingOfflineChanges } from \"./usePendingOfflineChanges\";\n\ntype Props = {\n /** toggles definition */\n toggles: ?ToggleDTO,\n /** React children */\n children?: Node,\n /** optional control to show at the beginning of topbar */\n topRowBefore?: Node,\n /** optional control to show at the end of topbar */\n topRowEnd?: Node,\n /** optional CSS class to apply */\n className?: string,\n /** current itemUri */\n itemUri?: ?string, //TODO remove MainLayout.ItemUri since it should be included in contextProps\n /** any contextProps to pass to actions */\n contextProps?: Object,\n /** optional used searchItem */\n searchItem?: SearchItemDTO,\n /** view name */\n name: string,\n /** callback when user selects action from ActionsMenu\n * @param {string} actionId which action has been selected by the user\n */\n onAction?: (actionId: string) => void,\n /** callback to decide whether specified action should be visible\n * @param {object} action action object for which to decide visibility\n * @returns {boolean} true if should be visible, false to not render\n */\n onActionShouldBeVisible?: (action: { id: string }) => boolean,\n /** scope breadcrumbs to recyclebin; default: false */\n breadcrumbIsRecycleBin?: boolean,\n /** whether user is allowed to navigate through breadcrumb (and hide favorite option); default: false */\n breadcrumbReadonly?: boolean,\n /** scope breadcrumb to show parts only starting the specified level number */\n breadcrumbScopeFromLevel?: number,\n /** optional breadcrumbPart click event instead of history.push */\n onBreadcrumbPartClick?: (itemUri: string) => void,\n /** whether to disable the whole actionsMenu; default: false */\n actionsDisabled?: boolean,\n /** whether root of breadcrumb can be changed */\n breadcrumbCanChangeSite?: boolean,\n};\n\nconst MainLayout = ({\n toggles,\n children,\n topRowClassName = \"\",\n topRowBefore,\n topRowEnd,\n id,\n className,\n itemUri,\n contextProps,\n searchItem,\n name,\n onAction,\n onActionShouldBeVisible,\n breadcrumbIsRecycleBin = false,\n breadcrumbReadonly = false,\n breadcrumbScopeFromLevel,\n onBreadcrumbPartClick,\n actionsDisabled = false,\n breadcrumbCanChangeSite = false,\n}: Props) => {\n usePendingOfflineChanges(itemUri);\n return (\n
\n \n {topRowBefore}\n
\n \n
\n\n {toggles && }\n\n {contextProps && (\n \n openItemActionPanel({ contextProps })\n }\n className=\"ab\"\n dataTest=\"openItemActionPanelButton\"\n />\n )}\n {onAction && name && (\n \n )}\n {topRowEnd}\n
\n \n {children}\n \n
\n );\n};\nMainLayout.displayName = \"MainLayout\";\nexport default MainLayout;\n","import { useEffect } from \"react\";\nimport { toastTypes, toastStyled } from \"data/toast\";\nimport { anyPendingChanges } from \"data/offline/offlineQueue\";\nimport { isFeatureOn, Feature } from \"data/constants\";\n\nexport function usePendingOfflineChanges(itemUri: string) {\n useEffect(() => {\n if (itemUri != null && isFeatureOn(Feature.offline)) {\n anyPendingChanges(itemUri).then((result) => {\n if (result === true) {\n toastStyled(toastTypes.offlinePendingChanges);\n }\n });\n }\n }, [itemUri]);\n}\n","//@flow\nimport React, {\n useState,\n useCallback,\n useMemo,\n useRef,\n useEffect,\n useContext,\n} from \"react\";\nimport { MultiSelectionContext } from \"data/context\";\nimport { createPortal } from \"react-dom\";\nimport { getDisplayName } from \"data/constants\";\nimport ActionsButton from \"components/ActionPanel/ActionsButton\";\nimport styles from \"./StickyToggle.module.css\";\nimport { isHandheld } from \"data/bowser\";\n\ntype Config = {\n // Whether to render a DIV tag (e.g. if the wrapped component does not support a ref or mouse events)\n renderDiv: boolean,\n usePortal: boolean,\n portalTargetSelector: string,\n portalTargetSelectionMethod: \"pop\" | \"shift\",\n //\n getStyle: ({\n node: React.DOMElement,\n isActive: boolean,\n isHovered: boolean,\n }) => CSStyleDefinition,\n rowIndexProp: number,\n isActiveProp: string,\n isHoveredProp: string,\n // props name for onClick callback of ActionsButton\n actionsHandlerProp: string,\n // props name for disabled boolean of ActionsButton\n actionsDisabledProp: string,\n // Callback to check if item should be rendered at all; defaults to true\n shouldRender: () => boolean,\n};\n\nconst DEFAULT_CONFIG = {\n renderDiv: true,\n usePortal: true,\n portalTargetSelector: \"#root\",\n portalTargetSelectionMethod: \"pop\",\n getStyle: /* istanbul ignore next*/ ({ node }) => ({\n position: \"absolute\",\n transform: \"translateX(-100%)\",\n zIndex: 99,\n top: node?.getBoundingClientRect().y,\n left: window.innerWidth,\n }),\n rowIndexProp: \"index\",\n isActiveProp: \"isActive\",\n isHoveredProp: \"isHovered\",\n actionsHandlerProp: \"onMoreClick\",\n actionsDisabledProp: \"actionsDisabled\",\n shouldRender: () => true,\n};\n\ntype Props = {\n style?: CSStyleDefinition,\n onMoreClick: () => void,\n};\n\nconst withStickyToggle =\n ({\n renderDiv = DEFAULT_CONFIG.renderDiv,\n usePortal = DEFAULT_CONFIG.usePortal,\n portalTargetSelector = DEFAULT_CONFIG.portalTargetSelector,\n portalTargetSelectionMethod = DEFAULT_CONFIG.portalTargetSelectionMethod,\n getStyle = DEFAULT_CONFIG.getStyle,\n rowIndexProp = DEFAULT_CONFIG.rowIndexProp,\n isActiveProp = DEFAULT_CONFIG.isActiveProp,\n isHoveredProp = DEFAULT_CONFIG.isHoveredProp,\n actionsHandlerProp = DEFAULT_CONFIG.actionsHandlerProp,\n actionsDisabledProp = DEFAULT_CONFIG.actionsDisabledProp,\n shouldRender = DEFAULT_CONFIG.shouldRender,\n }: Config = DEFAULT_CONFIG) =>\n (WrappedComponent: ComponentType) => {\n const HOC = ({\n style,\n onMouseEnter,\n onMouseLeave,\n ...props\n }: Props) => {\n /* istanbul ignore next */\n const { multiple, isSelected } = useContext(\n MultiSelectionContext\n ) || {\n multiple: false,\n isSelected: (index: number) => false,\n };\n const divRef = useRef(null);\n const actionsHandler = props[actionsHandlerProp];\n const actionsDisabled = props[actionsDisabledProp];\n const isActive = multiple\n ? isSelected(props[rowIndexProp])\n : props[isActiveProp];\n const isHovered = props[isHoveredProp];\n const [show, setShow] = useState(isHandheld());\n const handleMouseEnter = useCallback(\n (...p) => {\n setShow(true);\n /* istanbul ignore else */\n if (typeof onMouseEnter === \"function\") {\n onMouseEnter(...p);\n }\n },\n [onMouseEnter]\n );\n\n const handleMouseLeave = useCallback(\n (...p) => {\n setShow(isHandheld());\n /* istanbul ignore else */\n if (typeof onMouseLeave === \"function\") {\n onMouseLeave(...p);\n }\n },\n [onMouseLeave]\n );\n\n const handleClick = useCallback(\n (...p) => {\n const [event] = p;\n event.stopPropagation();\n /* istanbul ignore else */\n if (typeof actionsHandler === \"function\") {\n actionsHandler(...p);\n }\n },\n [actionsHandler]\n );\n const wrapperProps = useMemo(\n () => ({\n divRef: renderDiv ? null : divRef,\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n }),\n [handleMouseEnter, handleMouseLeave]\n );\n\n const calculatedStyle = Object.assign(\n getStyle({\n node: divRef.current,\n isActive,\n isHovered,\n }),\n {\n opacity: show ? 1 : 0,\n },\n style\n );\n\n // Get Target from DOM\n const getPortalTarget = useCallback(\n () =>\n [...document.querySelectorAll(portalTargetSelector)]?.[\n portalTargetSelectionMethod\n ](),\n []\n );\n\n // Handle Portal Target (if DOM is not rendered yet)\n const [portalTarget, setPortalTarget] = useState(getPortalTarget());\n useEffect(() => {\n /* istanbul ignore next */\n if (portalTarget == null) {\n setPortalTarget(getPortalTarget);\n }\n }, [portalTarget, getPortalTarget]);\n\n return (\n <>\n \n {renderDiv && (\n \n )}\n {shouldRender(props) &&\n show &&\n typeof actionsHandler === \"function\" &&\n (usePortal ? (\n /*istanbul ignore next */ portalTarget &&\n createPortal(\n ,\n portalTarget\n )\n ) : (\n \n ))}\n \n );\n };\n HOC.displayName = `withStickyToggle(${getDisplayName(\n WrappedComponent\n )})`;\n return HOC;\n };\n\nexport default withStickyToggle;\n","// @flow\nimport React from \"react\";\nimport AttributeLabel from \"components/ExtraAttributes/AttributeLabel\";\nimport ViewerControlBase from \"components/ExtraAttributes/ViewerControl/ViewerControlBase\";\n\ntype Props = {\n name: string,\n header?: string,\n value?: any | string,\n width?: number,\n height?: number,\n className?: string,\n};\n\nexport const defaultFallbackImage =\n \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=\";\n\nconst ImageViewerControl = ({\n name,\n header,\n value,\n width,\n height,\n className,\n}: Props) => {\n const heightStyle = height == null || height === 0 ? \"auto\" : `${height}px`;\n const widthStyle = width == null || width === 0 ? \"auto\" : `${width}px`;\n const parsedValue = value\n ? Object.prototype.hasOwnProperty.call(value, \"src\")\n ? value.src\n : value\n : defaultFallbackImage;\n return (\n \n {\" \"}\n \n \n );\n};\nImageViewerControl.displayName = \"ImageViewerControl\";\nexport default ImageViewerControl;\n","import actionTypes from \"data/actions/actionTypes\";\nimport Constants from \"data/constants\";\nimport { type docsLayoutState } from \"./types\";\n\nexport const initialState: docsLayoutState = {\n status: Constants.NONE,\n};\n\nconst docsReducer = (state: docsLayoutState = initialState, action) => {\n switch (action.type) {\n case actionTypes.CURRENTITEM_SET:\n if (\n action.payload.name !== \"docmodal\" &&\n action.payload.name !== \"itemflows\" &&\n action.payload.itemUri !== state.itemUri\n )\n return { ...initialState };\n else return state;\n\n case actionTypes.DOCS_LAYOUT_REQUEST:\n case actionTypes.DOCS_LAYOUT_SET:\n return {\n ...state,\n ...action.payload,\n };\n\n /* istanbul ignore next */\n case actionTypes.PERSIST_PURGE:\n return initialState;\n default:\n return state;\n }\n};\n\nexport default docsReducer;\n\nexport const docsLayoutStatusSelector = (state: Object) =>\n state.docsLayout.status;\nexport const docsLayoutFiltersSelector = (state: Object) =>\n state.docsLayout.filters;\nexport const docsLayoutSortsSelector = (state: Object) =>\n state.docsLayout.sorts;\n","import actionTypes from \"../actions/actionTypes\";\nimport { ListViewMode } from \"data/types\";\nimport bowser from \"data/bowser\";\n\nexport const initialState = {\n mini: false,\n // set default based on target device\n docListViewMode: null,\n};\n\nconst settingsReducer = (state = initialState, action) => {\n switch (action.type) {\n case actionTypes.SETTINGS_SIDEBAR_MINI:\n return { ...state, ...action.payload };\n case actionTypes.SETTINGS_DOCLIST_VIEWMODE:\n return { ...state, docListViewMode: action.payload.viewMode };\n case actionTypes.SETTINGS_SET:\n return { ...state, [action.payload.name]: action.payload.value };\n\n /* istanbul ignore next */\n case actionTypes.PERSIST_PURGE:\n return initialState;\n default:\n return state;\n }\n};\n\nexport default settingsReducer;\n\nexport const sidebarMiniSelector = (state: Object) => state.settings.mini;\nexport const docListViewModeSelector = (state: Object) =>\n state.settings.docListViewMode == null\n ? bowser.is(\"mobile\") || bowser.is(\"tablet\")\n ? ListViewMode.List\n : ListViewMode.Grid\n : state.settings.docListViewMode;\nexport const settingValueSelector = (name: string, state: Object) =>\n state.settings[name];\n","import actionTypes from \"data/actions/actionTypes\";\nimport Constants from \"data/constants\";\n\nconst initialState = {\n name: \"\",\n itemUri: \"\",\n status: Constants.LOADING,\n};\n\nconst currentItemReducer = (state = initialState, action) => {\n switch (action.type) {\n case actionTypes.CURRENTITEM_BAK:\n return {\n ...state,\n saved: state,\n };\n case actionTypes.CURRENTITEM_RESTORE:\n return {\n ...state,\n ...state.saved,\n saved: undefined,\n };\n case actionTypes.CURRENTITEM_SET:\n const { name, itemUri } = state;\n // we reset the state.current to remove any extra values\n return {\n name,\n itemUri,\n status: Constants.LOADING,\n saved: state.saved,\n ...action.payload,\n };\n case actionTypes.CURRENTITEM_LOADED:\n return { ...state, ...action.payload };\n\n /*case actionTypes.SPLITPANES_SET:\n return {\n ...state,\n [action.payload.name]: action.payload.dimensions\n };*/\n\n /* istanbul ignore next */\n case actionTypes.PERSIST_PURGE:\n return initialState;\n default:\n return state;\n }\n};\n\nexport default currentItemReducer;\n\nexport const currentItemUriSelector = (state: Object) => state.current.itemUri;\nexport const currentNameSelector = (state: Object) => state.current.name;\nexport const currentStatusSelector = (state: Object) => state.current.status;\n","import actionTypes from \"data/actions/actionTypes\";\nimport Constants from \"data/constants\";\nimport { type searchFormListResultState } from \"./types\";\n\nexport const initialState: searchFormListResultState = {\n status: Constants.NONE,\n result: [],\n};\n\nconst searchFormsReducer = (\n state: searchResultState = initialState,\n action\n) => {\n switch (action.type) {\n case actionTypes.SEARCH_FORM_LIST_FETCH_REQUEST:\n case actionTypes.SEARCH_FORM_LIST_FETCH_RESULT:\n return {\n ...state,\n ...action.payload,\n };\n /* istanbul ignore next */\n case actionTypes.PERSIST_PURGE:\n return initialState;\n default:\n return state;\n }\n};\n\nexport default searchFormsReducer;\n\nexport const searchFormListStatusSelector = (state: Object) =>\n state.searchForms.status;\nexport const searchFormListResultSelector = (state: Object) =>\n state.searchForms.result;\nexport const searchFormListCountSelector = (state: Object) =>\n state.searchForms.status === Constants.OK\n ? state.searchForms.result.length\n : -1;\n","import actionTypes from \"../actions/actionTypes\";\nimport {\n OfflineSyncStatus,\n type OfflineSyncStatusEnum,\n type OfflineItemStatus,\n} from \"data/types\";\nimport { produce } from \"immer\";\n\nexport const initialState = {\n status: OfflineSyncStatus.Unknown,\n message: null,\n items: {},\n};\n\nconst offlineReducer = (state = initialState, action) => {\n const { payload } = action;\n const { item } = payload || {};\n\n switch (action.type) {\n case actionTypes.OFFLINE_SYNC_STARTED:\n //lint -fallthrough\n case actionTypes.OFFLINE_SYNC_DONE:\n return {\n ...state,\n ...payload,\n };\n\n case actionTypes.OFFLINEITEM_SYNC_STATUS:\n return {\n ...state,\n message: payload.message,\n items: produce(state.items, (draft) => {\n draft[item.id] = Object.assign({}, item, {\n message: payload.message,\n status: payload.status,\n at: action.receivedAt,\n took: payload.took,\n });\n }),\n };\n\n case actionTypes.OFFLINEITEM_REMOVE:\n return {\n ...state,\n items: produce(state.items, (draft) => {\n delete draft[item.id];\n }),\n };\n\n case actionTypes.OFFLINEITEM_DEPSMAP_RESULT:\n return {\n ...state,\n items: produce(state.items, (draft) => {\n draft[item.id] = Object.assign({}, item, {\n depsMap: payload.depsMap,\n });\n }),\n };\n\n /* istanbul ignore next */\n case actionTypes.PERSIST_PURGE:\n return initialState;\n default:\n return state;\n }\n};\n\nexport default offlineReducer;\n\nexport const offlineSyncStatusSelector = (\n state: Object\n): OfflineSyncStatusEnum => state.offline.status;\nexport const offlineItemsSelector = (state: Object) =>\n state.offline.items /* istanbul ignore next */ || {};\nexport const offlineItemDepsMapSelector = (\n state: Object,\n item: OfflineItemStatus\n) => state.offline.items[item.id].depsMap;\n","//@flow\nimport React from \"react\";\nimport { useMomentLocale } from \"hooks\";\nimport { userLanguage } from \"data/storeHelper\";\nimport { getDisplayName } from \"data/constants\";\nimport Status from \"components/Status\";\nimport Constants from \"data/constants\";\n\nconst Moment = (WrappedComponent: ComponentType) => {\n function MomentLocale(props: any) {\n const status = useMomentLocale(userLanguage());\n return status === Constants.OK ? (\n \n ) : (\n \n );\n }\n MomentLocale.displayName = `MomentLocale(${getDisplayName(\n WrappedComponent\n )})`;\n return MomentLocale;\n};\n\nexport default Moment;\n","// @flow\nimport React, { PureComponent, type ElementRef } from \"react\";\nimport styles from \"components/NativeSelect/NativeSelect.module.css\";\nimport { components } from \"react-select\";\nconst { DownChevron } = components;\n\ntype Props = {\n /** control id */\n id?: string,\n /** current selected value */\n value?: ?Object | ?Array,\n /** defaultValue for initial rendering */\n defaultValue?: Object | ?Array,\n /** placeholder text to show when nothing is rendered */\n placeholder?: string,\n /** callback when user selects a value\n * @param {Object} option new option selected\n */\n onChange?: (option: Object) => void,\n /** React.createRef reference */\n selectRef?: ElementRef<*>,\n /** CSS Classname to apply to wrapper */\n wrapperClassName?: string,\n /** CSS Classname to apply */\n className?: string,\n /** @see options property name used to show to the user */\n labelKey?: string,\n /** @see options property name used to store value reference */\n valueKey?: string,\n /** list of options to display */\n options?: Array,\n /** whether the SELECT tag should be disabled */\n disabled?: boolean,\n /** whether to allow multiple selection */\n isMultiple?: boolean,\n};\n\ntype State = {\n selected: ?Object | ?Array,\n};\n\n// based on: https://github.com/JaniAnttonen/react-select-native/blob/master/src/index.js\nexport default class NativeSelect extends PureComponent {\n static defaultProps = {\n labelKey: \"label\",\n valueKey: \"value\",\n };\n\n constructor(props: Props) {\n super(props);\n this.state = {\n selected: props.value || props.defaultValue,\n };\n }\n\n _onChange = (e: SyntheticInputEvent<*>) => {\n e.preventDefault();\n let selected = null;\n if (this.props.isMultiple) {\n selected = [...e.currentTarget.options]\n .filter((so) => so.selected && so.value.length > 0)\n .map(\n (so) =>\n this.props.options &&\n this.props.options.find(\n (o) => o[this.props.valueKey] === so.value\n )\n );\n } else {\n const value = e.currentTarget.value;\n selected =\n this.props.options &&\n this.props.options.find(\n (o) => String(o[this.props.valueKey]) === value\n );\n }\n /* istanbul ignore else */\n if (selected != null) {\n /* istanbul ignore else */\n if (typeof this.props.onChange === \"function\")\n this.props.onChange(selected);\n this.setState({\n selected,\n });\n }\n };\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n /* istanbul ignore else */\n if (prevProps.value !== this.props.value) {\n this.setState({\n selected: this.props.value,\n });\n }\n }\n\n _getValue = () => {\n if (this.state.selected == null) return undefined;\n if (this.props.isMultiple) {\n return this.state.selected.map((o) => o[this.props.valueKey]);\n } else {\n return this.state.selected[this.props.valueKey];\n }\n };\n\n render = () => (\n \n \n {this.props.placeholder && (\n \n )}\n {this.props.options &&\n this.props.options.map((option, index) => (\n \n {option[this.props.labelKey]}\n \n ))}\n \n \n \n );\n}\n","// @flow\nimport React, { PureComponent } from \"react\";\nimport { Manager } from \"react-popper\";\nimport FormsyEditorBase from \"./FormsyEditorBase\";\nimport moment from \"moment\";\nimport Moment from \"containers/Moment\";\nimport DayPickerInput from \"components/DayPickerInput\";\nimport { DateTimeFormat, type DateTimeFormatValues } from \"data/types\";\nimport { userLanguage } from \"data/storeHelper\";\nimport ClearableInput from \"@hs/clearable-input\";\n\ntype Props = {\n /** Field name */\n name: string,\n /** Field value */\n value: ?string,\n /** whether this field is required */\n isRequired: boolean,\n /** whether this field is readonly */\n isReadonly: boolean,\n /** how to render component */\n type: DateTimeFormatValues,\n};\n\ntype State = {\n day: Date,\n time: Date,\n dateValue: string,\n timeValue: string,\n};\n\nexport class DateEditorControl extends PureComponent {\n format: string;\n\n static defaultProps = {\n value: \"\",\n isRequired: false,\n isReadonly: false,\n type: DateTimeFormat.Date,\n };\n\n constructor(props: Props) {\n super(props);\n // set user's locale for parsing/formatting\n moment.locale(userLanguage());\n // full date&time format\n this.format = this._getFormat(props);\n // parse pristine value or set NOW\n if (props.value != null && String(props.value).length > 0) {\n const dt = moment(props.value, this.format);\n this.state = {\n day: dt.toDate(),\n time: dt.toDate(),\n dateValue: this.getValueAsDate(props.value),\n timeValue: this.getValueAsDate(\n props.value,\n moment.HTML5_FMT[\n props.type.toLowerCase().includes(\"long\")\n ? \"TIME_SECONDS\"\n : \"TIME\"\n ]\n ),\n };\n } else {\n this.state = { day: new Date(), time: new Date() };\n }\n }\n\n componentDidUpdate(prevProps: Props) {\n if (\n prevProps.value !== this.props.value &&\n !this.props.value?.startsWith(\"__INVALID__\")\n ) {\n const dt = moment(this.props.value, this.format);\n this.setState({\n day: dt.toDate(),\n time: dt.toDate(),\n dateValue: this.getValueAsDate(this.props.value),\n timeValue: this.getValueAsDate(\n this.props.value,\n moment.HTML5_FMT[\n this.props.type.toLowerCase().includes(\"long\")\n ? \"TIME_SECONDS\"\n : \"TIME\"\n ]\n ),\n });\n }\n }\n\n _getFormat = (props) => {\n switch (props.type) {\n case DateTimeFormat.Time:\n return moment.localeData().longDateFormat(\"LT\");\n case DateTimeFormat.LongTime:\n return moment.localeData().longDateFormat(\"LTS\");\n case DateTimeFormat.DateTime:\n return `${moment.localeData().longDateFormat(\"L\")} ${moment\n .localeData()\n .longDateFormat(\"LT\")}`;\n case DateTimeFormat.DateLongTime:\n return `${moment.localeData().longDateFormat(\"L\")} ${moment\n .localeData()\n .longDateFormat(\"LTS\")}`;\n case DateTimeFormat.Date:\n return moment.localeData().longDateFormat(\"L\");\n case DateTimeFormat.JsonDate:\n return `YYYY-MM-DD[T]00:00:00.000`;\n case DateTimeFormat.JsonDateEnd:\n return `YYYY-MM-DD[T]23:59:59.000`;\n case DateTimeFormat.JsonDateTime:\n return `YYYY-MM-DD[T]HH:mm:ss.SSS`;\n default:\n console.error(\n \"Wrong DateTimeFormat provided. Defaulting to DatetimeFormat.Date\"\n );\n return moment.localeData().longDateFormat(\"L\");\n }\n };\n\n _getDate = () => {\n const { day, time } = this.state;\n const m = moment(time)._isValid\n ? moment(\n // only consider the time for the date if it is valid\n new Date(\n day.getFullYear(),\n day.getMonth(),\n day.getDate(),\n time.getHours(),\n time.getMinutes(),\n time.getSeconds()\n )\n )\n : /* istanbul ignore next */\n moment(\n new Date(day.getFullYear(), day.getMonth(), day.getDate())\n );\n return m.format(this.format);\n };\n\n _onDayChange = (\n day: ?Date,\n dayPickerInput: DayPickerInput,\n changeValue: Function,\n inputValue: ?Date,\n isValueEmpty: boolean = false\n ) => {\n // this callback is called before the setState is finished,\n // so when the user picks a value from the date picker\n // we have to directly pass it to the function\n // otherwise we can use the value in the input field\n\n const value =\n inputValue ||\n dayPickerInput?._ref?.value ||\n dayPickerInput?.state?.value;\n\n if (day != null) {\n this.setState(\n {\n day,\n dateValue: this.getValueAsDate(day, undefined, \"L\"),\n },\n () =>\n changeValue({\n currentTarget: {\n value:\n !this.shouldRenderTime() ||\n this.getValueAsDate(this.state.timeValue) !== \"\"\n ? this._getDate()\n : this.invalidate(this.state.dateValue),\n },\n })\n );\n } else {\n this.setState((prevState) => {\n const dateValue = this.invalidate(value);\n const nextState = {\n dateValue,\n timeValue: prevState.timeValue,\n };\n // Clear was pressed\n if (\n prevState.dateValue === value ||\n prevState.dateValue === dateValue ||\n value === \"\" ||\n isValueEmpty\n ) {\n nextState.dateValue = this.shouldRenderTime()\n ? this.invalidate()\n : null;\n if (prevState.timeValue === \"__INVALID__\")\n nextState.timeValue = null;\n if (nextState.timeValue == null) nextState.dateValue = null;\n }\n changeValue({\n currentTarget: {\n value: nextState.dateValue,\n },\n });\n return nextState;\n });\n }\n };\n\n _onTimeChange = (event: SyntheticInputEvent<*>, changeValue: Function) => {\n const value = event.currentTarget.value;\n const time = moment(value, \"LTS\").toDate();\n if (\n value?.trim().length > 0 &&\n !isNaN(time) &&\n (!this.shouldRenderSeconds() || value.match(/:/g).length === 2) //HACK: do validate long time correctly\n ) {\n this.setState({ time, timeValue: value }, () =>\n changeValue({\n currentTarget: {\n value:\n !this.shouldRenderDate() ||\n this.getValueAsDate(this.state.dateValue) !== \"\"\n ? this._getDate()\n : this.invalidate(value),\n },\n })\n );\n } else {\n this.setState((prevState) => {\n const timeValue = this.invalidate(value);\n const nextState = {\n timeValue,\n dateValue: prevState.dateValue,\n };\n // Clear was pressed\n if (value === \"\") {\n nextState.timeValue = this.shouldRenderDate()\n ? this.invalidate()\n : null;\n // Handle date with time invalidation\n if (prevState.dateValue === \"__INVALID__\")\n nextState.dateValue = null;\n if (nextState.dateValue == null) nextState.timeValue = null;\n }\n changeValue({\n currentTarget: {\n value: nextState.timeValue,\n },\n });\n return nextState;\n });\n }\n };\n\n shouldRenderDate = () => this.props.type.toLowerCase().includes(\"date\");\n shouldRenderTime = () => this.props.type.toLowerCase().includes(\"time\");\n shouldRenderSeconds = () => this.props.type.toLowerCase().includes(\"long\");\n\n invalidate = (value: string = \"\"): string => `__INVALID__${value}`;\n\n /* istanbul ignore next */\n getValueAsDate = (\n value: ?string,\n format: string = \"L\",\n valueFormat: string = this.format\n ) =>\n value &&\n String(value).length > 0 &&\n !String(value).startsWith(\"__INVALID__\")\n ? moment(value, valueFormat).format(format)\n : \"\";\n\n getValidValue = (value: ?string): any =>\n value && typeof value === \"string\"\n ? value.replace(\"__INVALID__\", \"\")\n : value;\n\n render = () => (\n void,\n isValid: boolean\n ) => (\n \n {this.shouldRenderDate() && (\n \n this._onDayChange(\n day,\n dayPickerInput,\n changeValue,\n inputValue,\n isValueEmpty\n )\n }\n placeholder={moment\n .localeData()\n .longDateFormat(\"L\")}\n format={moment.localeData().longDateFormat(\"L\")}\n />\n )}\n {this.shouldRenderTime() && (\n \n this._onTimeChange(event, changeValue)\n }\n style={{\n flexGrow: 0,\n }}\n className=\"TimePickerInput form-control\"\n />\n )}\n \n )}\n {...this.props}\n />\n );\n}\n\nexport default Moment(DateEditorControl);\n","// @flow\nimport React from \"react\";\nimport Avatar from \"components/User/Avatar\";\nimport AttributeLabel from \"components/ExtraAttributes/AttributeLabel\";\nimport ViewerControlBase from \"components/ExtraAttributes/ViewerControl/ViewerControlBase\";\nimport sharedStyles from \"shared/styles.module.css\";\n\ntype Props = {\n header?: string,\n value: any | string,\n userid: number,\n width?: number,\n};\n\nconst UserIdViewerControl = ({ header, value, userid, width }: Props) => {\n return (\n \n {\" \"}\n \n \n \n {value}\n \n \n \n \n );\n};\n\nUserIdViewerControl.displayName = \"UserIdViewerControl\";\nexport default UserIdViewerControl;\n","import { type FormFieldDTO } from \"data/types\";\nimport {\n type FormResultDTO,\n type DocFormResultDTO,\n type FormFieldInfo,\n} from \"data/types\";\n\nimport StaticViewerControl from \"components/ExtraAttributes/ViewerControl/StaticViewerControl\";\nimport UserIdViewerControl from \"components/ExtraAttributes/ViewerControl/UserIdViewerControl\";\nimport ImageViewerControl from \"components/ExtraAttributes/ViewerControl/ImageViewerControl\";\nimport LocationViewerControl from \"components/ExtraAttributes/ViewerControl/LocationViewerControl\";\nimport GeoRasterViewerControl from \"components/ExtraAttributes/ViewerControl/GeoRasterViewerControl\";\nimport EmailViewerControl from \"components/ExtraAttributes/ViewerControl/EmailViewerControl\";\nimport TelViewerControl from \"components/ExtraAttributes/ViewerControl/TelViewerControl\";\nimport LinkViewerControl from \"components/ExtraAttributes/ViewerControl/LinkViewerControl\";\nimport SummaryAttributeViewerControl from \"components/ExtraAttributes/ViewerControl/SummaryAttributeViewerControl\";\n\nconst findCustomField = (\n fields: Array,\n name: string\n): ?FormFieldDTO => {\n return fields.find((f) => f.format === name && f.name === name);\n};\n\nexport const getFields = (\n form: FormResultDTO | DocFormResultDTO,\n itemUri: string\n): ?Array => {\n return form?.fields?.map((field) =>\n getFieldType(itemUri, form.formatId, field, form.fields)\n );\n};\n\nconst getFieldType = (\n itemUri: string,\n formatId: number,\n field: FormFieldDTO,\n fields: Array\n): ?FormFieldInfo => {\n const header = field.header || field.name;\n\n if (field.extra?.summary)\n return {\n Component: SummaryAttributeViewerControl,\n props: {\n name: field.name,\n header,\n values: field.extra?.summary,\n },\n };\n\n switch (field.format) {\n case undefined:\n return null;\n\n case \"Image\":\n return {\n Component: ImageViewerControl,\n props: {\n name: header,\n header,\n value: field.value,\n },\n };\n\n case \"CreatorName\":\n const creatorIdField = findCustomField(fields, \"CreatorId\");\n /* istanbul ignore next */\n if (creatorIdField === undefined) return null;\n return {\n Component: UserIdViewerControl,\n props: {\n header,\n value: field.value,\n userid: parseInt(creatorIdField.value, 10),\n width: field.width,\n },\n };\n\n case \"ModifiedName\":\n const modifiedIdField = findCustomField(fields, \"ModifiedId\");\n /* istanbul ignore next */\n if (modifiedIdField === undefined) return null;\n return {\n Component: UserIdViewerControl,\n props: {\n header,\n value: field.value,\n userid: parseInt(modifiedIdField.value, 10),\n width: field.width,\n },\n };\n\n case \"CreatorId\":\n case \"ModifiedId\":\n // those will not be rendered since they are internally created\n /* istanbul ignore next */\n if (field.format === field.name) return null;\n else\n return {\n Component: StaticViewerControl,\n props: {\n name: field.name,\n header,\n value: field.value,\n width: field.width,\n },\n };\n\n case \"Text_GeoPoint\":\n case \"Text_GeoArea\":\n return {\n Component: LocationViewerControl,\n props: {\n name: field.name,\n header,\n value: field.value,\n width: field.width,\n marker: field.extra && field.extra.marker,\n },\n };\n\n case \"Text_GeoRaster\":\n return {\n Component: GeoRasterViewerControl,\n props: {\n itemUri,\n formatId,\n name: field.name,\n header,\n value: field.value,\n width: field.width,\n marker: field.extra && field.extra.marker,\n },\n };\n\n case \"Text_Lookup\":\n case \"Text_LookupRep\":\n const value =\n field.value == null || field.value.T == null\n ? null\n : field.value.T;\n return {\n Component: StaticViewerControl,\n props: {\n name: field.name,\n header,\n value,\n width: field.width,\n },\n };\n\n case \"Text_TelNumber\":\n return {\n Component: TelViewerControl,\n props: {\n name: field.name,\n header,\n value: field.value,\n isGridCell: false,\n },\n };\n\n case \"Text_EMail\":\n return {\n Component: EmailViewerControl,\n props: {\n name: field.name,\n header,\n value: field.value,\n isGridCell: false,\n },\n };\n\n case \"Text_Link\":\n return {\n Component: LinkViewerControl,\n props: {\n name: field.name,\n header,\n value: field.value,\n isGridCell: false,\n },\n };\n case \"WebDavName\":\n if (field.extra && field.extra.hidden) {\n return null;\n }\n //fall through\n default:\n return {\n Component: StaticViewerControl,\n props: {\n name: field.name,\n header,\n value: field.value,\n width: field.width,\n },\n };\n }\n};\n","// @flow\nimport React, { useMemo, memo } from \"react\";\nimport Form from \"react-bootstrap/lib/Form\";\nimport Row from \"react-bootstrap/lib/Row\";\nimport \"./index.css\";\nimport EAForm from \"components/ExtraAttributes/EAForm\";\nimport NoData from \"components/NoData\";\nimport LocalContactInfo from \"components/LocalContactInfo\";\nimport { type FormResultDTO, type DocFormResultDTO } from \"data/types\";\nimport { LabelSizeContext } from \"data/context\";\nimport { getClassNames } from \"data/utils\";\nimport { getFields } from \"./utils\";\n\ntype Props = {\n form: FormResultDTO | DocFormResultDTO,\n itemUri: string,\n isNoDataError: boolean,\n};\n\nconst MyForm = ({ form, itemUri, isNoDataError }: Props) => {\n const fields = useMemo(() => getFields(form, itemUri), [form, itemUri]);\n const fieldsLength = useMemo(\n () => fields?.filter((field) => field).length,\n [fields]\n );\n\n const hasEA = useMemo(() => form?.attributes != null, [form]);\n return (\n e.preventDefault()}\n data-test=\"form\"\n >\n \n {form?.fields != null &&\n fieldsLength > 0 &&\n fields.map(\n (field, index) =>\n field && (\n \n \n \n )\n )}\n {hasEA && (\n \n )}\n {(form?.fields === null || fieldsLength === 0) &&\n form?.attributes === null && (\n \n {isNoDataError && }\n \n )}\n \n \n );\n};\n\nconst MemoizedForm = memo(MyForm);\n\nexport default MemoizedForm;\n","import React from \"react\";\nimport FormsyEditorBase from \"./FormsyEditorBase\";\n\nconst HiddenEditorControl = (props) => (\n (\n \n )}\n {...props}\n />\n);\nHiddenEditorControl.displayName = \"HiddenEditorControl\";\nexport default HiddenEditorControl;\n","// @flow\r\nimport React from \"react\";\r\nimport TextEditorControl from \"components/ExtraAttributes/EditorControl/TextEditorControl\";\r\nimport HiddenEditorControl from \"components/ExtraAttributes/EditorControl/HiddenEditorControl\";\r\nimport MemoEditorControl from \"components/ExtraAttributes/EditorControl/MemoEditorControl\";\r\nimport NumberEditorControl from \"components/ExtraAttributes/EditorControl/NumberEditorControl\";\r\nimport LookupEditorControl from \"components/ExtraAttributes/EditorControl/LookupEditorControl\";\r\nimport StaticViewerControl from \"components/ExtraAttributes/ViewerControl/StaticViewerControl\";\r\nimport UserIdViewerControl from \"components/ExtraAttributes/ViewerControl/UserIdViewerControl\";\r\nimport ImageEditorControl from \"components/ExtraAttributes/EditorControl/ImageEditorControl\";\r\nimport DateEditorControl from \"components/ExtraAttributes/EditorControl/DateEditorControl\";\r\nimport GeoPointEditorControl from \"components/ExtraAttributes/EditorControl/LoadableGeoPointEditorControl\";\r\nimport GeoAreaEditorControl from \"components/ExtraAttributes/EditorControl/GeoAreaEditorControl\";\r\nimport GeoRasterEditorControl from \"components/ExtraAttributes/EditorControl/GeoRasterEditorControl\";\r\nimport SummaryAttributeViewerControl from \"components/ExtraAttributes/ViewerControl/SummaryAttributeViewerControl\";\r\nimport { type FormFieldDTO, FormLookupType } from \"data/types\";\r\nimport loc from \"i18next\";\r\nimport {\r\n GeoPointValidationRegex,\r\n GeoAreaValidationRegex,\r\n} from \"components/MapViewer/utils\";\r\nimport { DateTimeFormat } from \"data/types\";\r\n\r\nfunction findCustomField(\r\n fields: Array,\r\n name: string\r\n): FormFieldDTO | void {\r\n return fields.find((f) => f.format === name && f.name === name);\r\n /*for (var i = 0; i < fields.length; i++) {\r\n if (fields[i].format === name && fields[i].name === name)\r\n return fields[i];\r\n }\r\n return undefined;*/\r\n}\r\n\r\nfunction getValidationErrors(field: FormFieldDTO, customErrors?: Object) {\r\n let validationErrors = customErrors || {};\r\n if (field.req)\r\n validationErrors.isDefaultRequiredValue = loc.t(\r\n \"common:validation.required\"\r\n );\r\n return validationErrors;\r\n}\r\n\r\nconst FieldEdit = ({\r\n isDoc,\r\n itemUri,\r\n formatId,\r\n field,\r\n fields,\r\n onChange,\r\n}: {\r\n isDoc: boolean,\r\n itemUri: string,\r\n formatId: number,\r\n field: FormFieldDTO,\r\n fields: Array,\r\n onChange: Function,\r\n}) => {\r\n const formPrefix = \"ip.\";\r\n const header = field.header || field.name;\r\n if (field.ro && field.extra?.summary)\r\n return (\r\n \r\n );\r\n //console.dir(formAttribute);\r\n switch (field.format) {\r\n case \"None\":\r\n case undefined:\r\n return null;\r\n\r\n case \"Image\":\r\n return (\r\n \r\n );\r\n\r\n case \"CreatorName\":\r\n const creatorIdField = findCustomField(fields, \"CreatorId\");\r\n /* istanbul ignore if */\r\n if (creatorIdField === undefined) return null;\r\n return (\r\n \r\n );\r\n\r\n case \"ModifiedName\":\r\n const modifiedIdField = findCustomField(fields, \"ModifiedId\");\r\n /* istanbul ignore if */\r\n if (modifiedIdField === undefined) return null;\r\n return (\r\n \r\n );\r\n\r\n case \"CreatorId\":\r\n case \"ModifiedId\":\r\n // those will not be rendered since they are internally created\r\n if (field.format === field.name) return null;\r\n else\r\n return (\r\n \r\n );\r\n\r\n case \"Date_Time\":\r\n case \"Date_Date\":\r\n if (field.ro) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n\r\n case \"Text_Lookup\":\r\n case \"Text_LookupRep\":\r\n const value =\r\n field.value == null || field.value.T == null\r\n ? null\r\n : field.value;\r\n return (\r\n \r\n );\r\n\r\n case \"Number_IntegerNumber\":\r\n return (\r\n \r\n );\r\n\r\n case \"Number_DecimalNumberOneDecimal\":\r\n return (\r\n \r\n );\r\n\r\n case \"Number_DecimalNumberTwoDecimal\":\r\n return (\r\n \r\n );\r\n\r\n case \"Number_DecimalNumberThreeDecimal\":\r\n return (\r\n \r\n );\r\n\r\n case \"Number_CurrencyEuroTwoDecimal\":\r\n return (\r\n \r\n );\r\n\r\n case \"Number_CurrencyDollarTwoDecimal\":\r\n return (\r\n \r\n );\r\n\r\n case \"Number_CurrencyEuroThreeDecimal\":\r\n return (\r\n \r\n );\r\n\r\n case \"Number_CurrencyDollarThreeDecimal\":\r\n return (\r\n \r\n );\r\n\r\n case \"WebDavName\":\r\n // Render hidden field, in case WebDavName is hidden\r\n if (field.extra && field.extra.hidden === true) {\r\n return (\r\n \r\n );\r\n }\r\n return (\r\n \r\n );\r\n\r\n case \"Text_TelNumber\":\r\n return (\r\n \r\n );\r\n\r\n case \"Text_Text\":\r\n return (\r\n \r\n );\r\n\r\n case \"Text_EMail\":\r\n return (\r\n \r\n );\r\n\r\n case \"Text_GeoPoint\":\r\n return (\r\n \r\n );\r\n\r\n case \"Text_GeoArea\":\r\n return (\r\n \r\n );\r\n\r\n case \"Text_GeoRaster\":\r\n return (\r\n \r\n );\r\n case \"Text_Link\":\r\n return (\r\n \r\n );\r\n\r\n default:\r\n return (\r\n \r\n );\r\n }\r\n};\r\n\r\nexport default FieldEdit;\r\n","// @flow\nimport React, { useEffect, useState, useCallback } from \"react\";\nimport { withRouter, Prompt } from \"react-router\";\n\ntype Props = { isDirty: boolean, message: ?string | ?boolean };\n\nconst NavigationBlock = ({ isDirty, message, history }: Props) => {\n const [shouldDisplayPrompt, setShouldDisplayPrompt] = useState(true);\n const [keepDirty, setKeepDirty] = useState(false);\n\n const handleNavigation = useCallback(() => {\n if (isDirty) {\n // if the user wants to stay on the page, keep the prompt\n if (keepDirty) {\n setKeepDirty(false);\n return;\n }\n // don't show the prompt more than one times\n setShouldDisplayPrompt(false);\n }\n }, [isDirty, setShouldDisplayPrompt, keepDirty, setKeepDirty]);\n\n useEffect(() => {\n const unlisten = history.listen(() => {\n handleNavigation();\n });\n\n return () => {\n unlisten();\n };\n }, [handleNavigation, history]);\n\n useEffect(() => {\n if (isDirty === true) {\n window.onbeforeunload = /* istanbul ignore next */ () => message;\n } else {\n window.onbeforeunload = undefined;\n }\n\n return () => {\n window.onbeforeunload = undefined;\n };\n }, [isDirty, message]);\n\n if (message == null) return null;\n return (\n {\n /* istanbul ignore else */\n if (navAction === \"POP\") {\n setKeepDirty(true);\n }\n return message;\n }}\n />\n );\n};\n\nexport default withRouter(NavigationBlock);\n","// @flow\nimport React, { PureComponent, type Children } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { connect, Dispatch } from \"react-redux\";\nimport Formsy from \"formsy-react\";\nimport Row from \"react-bootstrap/lib/Row\";\nimport ButtonToolbar from \"react-bootstrap/lib/ButtonToolbar\";\nimport Button from \"react-bootstrap/lib/Button\";\nimport FieldEdit from \"./FieldEdit\";\nimport \"components/Form/index.css\";\nimport EAForm from \"components/ExtraAttributes/EAForm\";\nimport NoData from \"components/NoData\";\nimport LocalContactInfo from \"components/LocalContactInfo\";\nimport loc from \"i18next\";\nimport { produce } from \"immer\";\nimport { addValidationRule } from \"formsy-react\";\nimport { extraAttributesSetField } from \"data/actions\";\nimport NavigationBlock from \"components/NavigationBlock\";\nimport { type FormResultDTO, type DocFormResultDTO } from \"data/types\";\nimport isEmpty from \"lodash/isEmpty\";\nimport Icons from \"@hs/icons\";\nimport { LabelSizeContext } from \"data/context\";\nimport { getClassNames } from \"data/utils\";\n\ntype Props = {\n /** Redux dispatch */\n dispatch: Dispatch,\n /** the Form itself */\n form: FormResultDTO | DocFormResultDTO,\n /** itemUri of Folder or Document */\n itemUri: string,\n /** callback for Cancel button */\n onCancel?: () => void,\n /** callback for Save button\n * @param {Object} model model to save\n * @returns {boolean} true is success\n */\n onSave: (model: Object) => boolean,\n /**\n * handler to validate model\n * @param {Object} model the current form (changed) values\n * @returns {Object} validation errors e.g. {field:msg,field:msg,...}\n */\n onValidate: (model: Object) => Object,\n /** save button label\n * @default common:save\n */\n saveLabel?: string,\n /** saving button label\n * @default common:savingLabel\n */\n savingLabel?: string,\n /** if NOT null will prompt user upon navigating away */\n confirmLabel?: boolean,\n /** should the save button be enabled */\n isFormButtonEnabled?: boolean,\n /** whether to include all or only changed fields\n * @default false\n */\n onSaveReturnAllFields?: boolean,\n /** defaultValues to set\n * Note: $NAME$ is special - see {@link _prepForm}\n * @example {\"$NAME$\"\":\"test.docx\"}\n */\n defaultValues?: Object,\n /** optional DOM ref to render ButtonToolbar onto (otherwise will render as child of form) */\n buttonToolbarPortal?: React.DOMElement,\n};\n\ntype State = {\n canSubmit: boolean,\n changed: Object,\n form: FormResultDTO | DocFormResultDTO,\n validationErrors: Object,\n isSubmitting: boolean,\n isValidating: boolean,\n};\n\nexport class MyFormEdit extends PureComponent {\n constructor(props: Props, children: any) {\n super(props);\n this._formsyRef = React.createRef();\n this.state = {\n canSubmit: false,\n isSubmitting: false,\n isValidating: false,\n validationErrors: {},\n ...this._prepForm(props.form),\n };\n this._setupValidations();\n }\n\n componentDidUpdate(prevProps: Props) {\n if (this.props.form !== prevProps.form) {\n this.setState((state) => ({\n ...this._prepForm(this.props.form, state.changed),\n }));\n }\n if (this.props.defaultValues !== prevProps.defaultValues) {\n this.setState((state) => ({\n ...this._prepForm(this.props.form, state.changed),\n }));\n }\n }\n\n /**\n * returns immutable form & changeLog with applied props.defaultValues\n * Note: $NAME$ is special\n * @param {FormResultDTO} form the current form\n * @memberof MyFormEdit\n */\n _prepForm = (form: FormResultDTO | DocFormResultDTO, changed = {}) => {\n const { defaultValues } = this.props;\n return produce({ form, changed }, (draft) => {\n if (defaultValues == null || form == null) {\n return;\n }\n Object.keys(defaultValues).forEach((defaultValueKey) => {\n if (defaultValueKey.startsWith(\"ea.\")) {\n /* istanbul ignore next */\n if (form.attributes == null) {\n console.warn(\n `Requested setting DefaultValue for ${defaultValueKey} but there are no ExtraAttributes defined here!`\n );\n return null;\n }\n const defaultAttributeKey = defaultValueKey.substr(3);\n let idx = form.attributes.findIndex(\n (attribute) => attribute.name === defaultAttributeKey\n );\n if (idx === -1) {\n console.warn(\n `Requested setting DefaultValue for ${defaultValueKey} but it was not found!`\n );\n return;\n }\n /* istanbul ignore else */\n if (draft.changed.ea == null) draft.changed.ea = {};\n // update changeLog (dot notation)\n draft.changed.ea[form.attributes[idx].name] =\n defaultValues[defaultValueKey];\n // update form (to immediately show value)\n draft.form.attributes[idx].value =\n defaultValues[defaultValueKey];\n } else {\n const defaultFieldKey = defaultValueKey.startsWith(\"ip.\")\n ? defaultValueKey.substr(3)\n : defaultValueKey;\n // find field by field name (commonName)\n let idx = form.fields.findIndex(\n (field) => field.name === defaultFieldKey\n );\n if (idx === -1) {\n console.warn(\n `Requested setting DefaultValue for ${defaultValueKey} but it was not found!`\n );\n return;\n }\n /* istanbul ignore else */\n if (draft.changed.ip == null) draft.changed.ip = {};\n // update changeLog (dot notation)\n draft.changed.ip[form.fields[idx].name] =\n defaultValues[defaultValueKey];\n // update form (to immediately show value)\n draft.form.fields[idx].value =\n defaultValues[defaultValueKey];\n }\n });\n });\n };\n\n /* istanbul ignore next */ _setupValidations = () => {\n // setup our custom validation rules used by Field/AttributeEdit components\n addValidationRule(\"isRange\", (values, value, range) => {\n // empty value need no validation - is required needs additional isRequired validation\n if (value == null) return true;\n return value >= range.min && value <= range.max;\n });\n\n addValidationRule(\"isFilename\", (values, value) => {\n // rules: https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file\n var rg1 = /^[^\\\\/:*?\"<>|]+$/; // forbidden characters \\ / : * ? \" < > |\n var rg2 = /^\\./; // cannot start with dot (.)\n var rg3 = /^(aux|nul|prn|con|lpt[1-9]|com[1-9])(\\.|$)/i; // forbidden file names\n return rg1.test(value) && !rg2.test(value) && !rg3.test(value);\n });\n\n addValidationRule(\"isPathname\", (values, value) => {\n var rg1 = /^[^\\\\/:*?\"<>|]+$/; // forbidden characters \\ / : * ? \" < > |\n return rg1.test(value);\n });\n\n addValidationRule(\n \"isNotInvalid\",\n (values, value) =>\n value == null || !String(value).startsWith(\"__INVALID__\")\n );\n };\n\n _onInvalid = () => this.setState({ canSubmit: false });\n\n _onValid = () => this.setState({ canSubmit: true });\n\n _onSubmit = async (\n model: Object,\n resetForm?: boolean,\n invalidateForm?: () => void,\n cancelEditMode?: boolean = true\n ) => {\n try {\n this.setState({ isValidating: true });\n const validationErrors = await this.props.onValidate(model);\n if (!isEmpty(validationErrors)) {\n invalidateForm && invalidateForm(validationErrors);\n this.setState({ isValidating: false });\n } else {\n this.setState({ isValidating: false, isSubmitting: true });\n const result = await this.props.onSave(\n this.props.onSaveReturnAllFields === true\n ? model\n : this.state.changed,\n cancelEditMode\n );\n if (false === result) {\n this.setState({ isSubmitting: false });\n }\n }\n } catch (e) {\n /* istanbul ignore else */\n if (e.code !== 20)\n //AbortController aborted\n this.setState({ isValidating: false, isSubmitting: false });\n }\n };\n\n /**\n * On every change will update changeLog and fire a Redux action\n * @param {string} name the field's name (dot notation e.g. ip.WebDavName)\n * @param {any} value the field's value\n * @memberof MyFormEdit\n */\n _onFieldChange = (name: string, value: any): void => {\n const [type, commonName] = name.split(\".\", 2);\n\n // is it an inPoint field?\n const valueType = type === \"ip\" ? \"fields\" : \"attributes\";\n const idx = this.state.form[valueType].findIndex(\n (a) => a.name === commonName\n );\n\n let nextState;\n // Allow fast (= multiple) field changes of state (e.g. Lookup Extras)\n this.setState(\n (prevState) => {\n nextState = produce(prevState, (draft) => {\n if (idx !== -1) draft.form[valueType][idx].value = value;\n // only submit current field if submitOnChange is true\n if (draft.form[valueType][idx]?.extra?.submitOnChange) {\n draft.changed = {};\n }\n (draft.changed[type] ??= {})[commonName] = value;\n });\n return nextState;\n },\n () => {\n this.props.dispatch(\n extraAttributesSetField(type, commonName, value)\n );\n // handle submitOnChange, if defined\n this.state.form[valueType][idx]?.extra?.submitOnChange &&\n this._onSubmit(\n nextState.changed,\n false,\n (e) => {\n // do something on error\n console.error(e);\n },\n false\n );\n }\n );\n };\n\n _isDirty = (): boolean => {\n /* istanbul ignore if */\n if (this.state.changed == null) return false;\n return Object.keys(this.state.changed).length > 0;\n };\n\n _getSaveButtonLabel = (): React.Element => {\n const { isValidating, isSubmitting } = this.state;\n\n if (isValidating === true) {\n return (\n <>\n {loc.t(\"validating\")}\n \n \n );\n }\n\n if (isSubmitting === true) {\n return (\n <>\n {this.props.savingLabel || loc.t(\"saving\")}\n \n \n );\n }\n\n return this.props.saveLabel || loc.t(\"save\");\n };\n\n _formsySubmit = () => this._formsyRef.current.submit();\n\n render() {\n const { itemUri, saveLabel, confirmLabel } = this.props;\n const {\n form,\n validationErrors,\n canSubmit,\n isSubmitting,\n isValidating,\n } = this.state;\n const hasEA = form && form.attributes != null;\n const toolbar = (\n \n \n {this._getSaveButtonLabel()}\n \n \n );\n return (\n \n \n \n {form &&\n form.fields !== null &&\n form.fields.map((field, index) => (\n \n \n \n ))}\n {form && form.attributes !== null && (\n \n )}\n {form &&\n form.fields === null &&\n form.attributes === null && (\n \n \n \n )}\n {this.props.buttonToolbarPortal == null && toolbar}\n \n {this.props.buttonToolbarPortal &&\n ReactDOM.createPortal(\n toolbar,\n this.props.buttonToolbarPortal\n )}\n \n );\n }\n}\n\nexport default connect()(MyFormEdit);\n","import React, { useCallback } from \"react\";\nimport { getLocalizedText } from \"data/utils\";\n\nconst style = {\n height: \"15px\",\n width: \"15px\",\n padding: 0,\n verticalAlign: \"top\",\n marginBottom: 0,\n marginLeft: \".5em\",\n};\n\nconst input = {\n margin: 0,\n height: \"15px\",\n width: \"15px\",\n cursor: \"pointer\",\n};\n\nconst stopPropagation = (e) => {\n e.stopPropagation();\n};\n\nconst Checkbox = ({\n className,\n handleToggle,\n name,\n isSelected,\n label,\n}: Props) => {\n const handleChange = useCallback(\n (e) => {\n handleToggle(name);\n },\n [handleToggle, name]\n );\n const checked = isSelected(name);\n return (\n \n \n \n );\n};\n\nCheckbox.displayName = \"RememberValues.Checkbox\";\n\nexport default Checkbox;\n","import React, { useCallback } from \"react\";\nimport FormGroup from \"react-bootstrap/lib/FormGroup\";\nimport FormControl from \"react-bootstrap/lib/FormControl\";\nimport ControlLabel from \"react-bootstrap/lib/ControlLabel\";\nimport { getLocalizedText } from \"data/utils\";\n\nconst Control = ({ classNames = [], remember, setRemember }) => {\n const [group, checkbox, label] = classNames;\n const handleRememberValues = useCallback(\n (e: SyntheticEvent) => {\n setRemember(!remember);\n },\n [setRemember, remember]\n );\n return (\n \n \n \n {getLocalizedText(\"$upload:rememberValues.control\")}\n \n \n );\n};\n\nControl.displayName = \"RememberValues.Control\";\n\nexport default Control;\n","import React, { useState, useCallback, useMemo, useEffect } from \"react\";\nimport { getDisplayName } from \"data/constants\";\nimport { usePersistSetting, usePrevious } from \"hooks\";\nimport { produce } from \"immer\";\nimport { RememberValuesContext } from \"data/context\";\nimport {\n type NewFormTypeEnum,\n type DocumentFormDTO,\n NewFormType,\n} from \"data/types\";\nimport { cacheStorage } from \"data/storage\";\nimport Checkbox from \"./Checkbox\";\nimport Control from \"./Control\";\n\ntype Props = {\n newFormType: NewFormTypeEnum,\n form: DocumentFormDTO,\n};\n\nconst withRememberValues = (WrappedComponent: ComponentType) => {\n const HOC = (props: Props) => {\n const [remember, setRemember] = usePersistSetting({\n name: \"rememberValues\",\n defaultValue: false,\n });\n const isNewDocument = props.newFormType === NewFormType.Document;\n const computedRemember = remember && isNewDocument;\n\n const [selected, setSelected] = useState({});\n const [remembered, setRemembered] = useState({});\n const [availableValues, setAvailableValues] = useState({});\n const formatId = `${props.form?.formatId ?? \"\"}`;\n const prevFormatId = usePrevious(formatId);\n\n // load values from cache when remember is enabled\n useEffect(() => {\n (async () => {\n if (remember) {\n const valuesString = await cacheStorage.getItem(formatId);\n if (valuesString) {\n const values = JSON.parse(valuesString);\n setRemembered(values);\n setSelected(values);\n }\n } else {\n await cacheStorage.removeItem(formatId);\n }\n })();\n }, [remember, formatId]);\n\n // save values to cache when remember is enabled\n useEffect(() => {\n (async () => {\n if (computedRemember) {\n await cacheStorage.setItem(\n formatId,\n JSON.stringify(selected)\n );\n }\n })();\n }, [computedRemember, formatId, selected]);\n\n // update available values when form changes\n useEffect(() => {\n if (prevFormatId === formatId) return;\n if (props.form) {\n const values = produce({}, (draft) => {\n const mapFormDefaultValues = (item, prefix) =>\n (draft[`${prefix}.${item.name}`] = item.defaultValue);\n props.form.fields?.forEach((item) =>\n mapFormDefaultValues(item, \"ip\")\n );\n props.form.attributes?.forEach((item) =>\n mapFormDefaultValues(item, \"ea\")\n );\n });\n setAvailableValues(values);\n }\n }, [prevFormatId, formatId, props.form]);\n\n // update selected values when available values change\n useEffect(() => {\n setSelected((selected) =>\n produce(selected, (draft) => {\n Object.keys(draft).forEach((key) => {\n /* istanbul ignore else */\n if (availableValues.hasOwnProperty(key)) {\n draft[key] = availableValues[key];\n }\n });\n })\n );\n }, [availableValues]);\n\n // update selected values when model changes\n const handleToggle = useCallback(\n (name) =>\n setSelected((selected) =>\n produce(selected, (draft) => {\n if (draft.hasOwnProperty(name)) {\n draft[name] = null;\n delete draft[name];\n } else {\n draft[name] = availableValues[name];\n }\n })\n ),\n [availableValues]\n );\n\n // check if value is selected\n const isSelected = useCallback(\n (name) => selected.hasOwnProperty(name),\n [selected]\n );\n\n // update available values when model changes\n const updateAvailableValues = useCallback(\n (model) => {\n isNewDocument &&\n setAvailableValues((availableValues) =>\n produce(availableValues, (draft) => {\n Object.keys(model).forEach((type) => {\n Object.keys(model[type]).forEach((name) => {\n const value = model[type][name];\n draft[`${type}.${name}`] = value;\n });\n });\n })\n );\n },\n [isNewDocument]\n );\n\n const defaultValues = useMemo(\n () =>\n computedRemember\n ? produce(props.defaultValues || {}, (draft) => {\n Object.keys(remembered).forEach((name) => {\n draft[name] = remembered[name];\n });\n })\n : props.defaultValues,\n [computedRemember, props.defaultValues, remembered]\n );\n\n // render individual checkbox\n const renderCheckbox = useCallback(\n (name, label, className) =>\n isNewDocument &&\n name &&\n name !== \"ip.$NAME$\" && (\n \n ),\n [isNewDocument, handleToggle, isSelected]\n );\n\n // render control\n const renderControl = useCallback(\n (classNames = []) =>\n isNewDocument && (\n \n ),\n [isNewDocument, remember, setRemember]\n );\n\n // create context\n const context = useMemo(\n () => ({\n remember: computedRemember,\n selected,\n renderCheckbox,\n }),\n [computedRemember, selected, renderCheckbox]\n );\n\n // create additional props\n const additionalProps = useMemo(\n () => ({\n renderControl,\n updateAvailableValues,\n }),\n [renderControl, updateAvailableValues]\n );\n\n return (\n \n \n \n );\n };\n HOC.displayName = `withRememberValues(${getDisplayName(WrappedComponent)})`;\n return HOC;\n};\n\nexport default withRememberValues;\n","import React, { useCallback } from \"react\";\nimport FormGroup from \"react-bootstrap/lib/FormGroup\";\nimport FormControl from \"react-bootstrap/lib/FormControl\";\nimport ControlLabel from \"react-bootstrap/lib/ControlLabel\";\nimport { getLocalizedText } from \"data/utils\";\n\nconst Control = ({ classNames = [], keep, setKeep }) => {\n const [group, checkbox, label] = classNames;\n const handleKeepFilename = useCallback(\n (e: SyntheticEvent) => {\n setKeep(!keep);\n },\n [setKeep, keep]\n );\n return (\n \n \n \n {getLocalizedText(\"$upload:keepFilename\")}\n \n \n );\n};\n\nControl.displayName = \"KeepFilename.Control\";\n\nexport default Control;\n","import React, { useState, useCallback, useMemo, useEffect } from \"react\";\nimport { getDisplayName } from \"data/constants\";\nimport { usePersistSetting } from \"hooks\";\nimport { produce } from \"immer\";\nimport {\n type NewFormTypeEnum,\n type DocumentFormDTO,\n NewFormType,\n} from \"data/types\";\nimport { getLocalizedText } from \"data/utils\";\nimport Control from \"./Control\";\n\ntype Props = {\n newFormType: NewFormTypeEnum,\n form: DocumentFormDTO,\n};\n\nexport type WebDavNameProps = {\n ignore: boolean,\n renderControl: (Array) => any,\n};\n\nconst withWebDavName = (WrappedComponent: ComponentType) => {\n const HOC = (props: Props) => {\n const [keep, setKeep] = usePersistSetting({\n name: \"keepFilename\",\n defaultValue: true,\n });\n const isNewDocument = props.newFormType === NewFormType.Document;\n const computedKeep = keep && isNewDocument;\n const [form, setForm] = useState(props.form);\n\n useEffect(() => {\n setForm(props.form);\n }, [props.form]);\n\n useEffect(() => {\n if (!isNewDocument) {\n return;\n }\n setForm((form) =>\n produce(form, (draft) => {\n const idx =\n draft?.fields?.findIndex(\n (f) =>\n f.format === \"WebDavName\" && f.name === \"$NAME$\"\n ) ?? -1;\n /* istanbul ignore else */\n if (idx > -1) {\n draft.fields[idx].ro = computedKeep;\n }\n })\n );\n }, [isNewDocument, computedKeep]);\n\n // render control\n const renderControl = useCallback(\n (classNames = []) =>\n isNewDocument && (\n \n ),\n [isNewDocument, keep, setKeep]\n );\n\n const isWebDavNameHidden =\n props.newFormType != null &&\n (form?.fields?.some(\n (f) =>\n f.format === \"WebDavName\" &&\n f.name === \"$NAME$\" &&\n f.extra &&\n f.extra.hidden\n ) ??\n false);\n\n const ignoreWebDavName = computedKeep || isWebDavNameHidden;\n\n const defaultValues = useMemo(() => {\n if (!isWebDavNameHidden) {\n return props.defaultValues;\n }\n return produce(props.defaultValues || {}, (draft: ?Object) => {\n /* istanbul ignore else */\n if (!draft[\"$NAME$\"]) {\n draft[\"$NAME$\"] = getLocalizedText(\"$common:new_folder\");\n }\n return draft;\n });\n }, [isWebDavNameHidden, props.defaultValues]);\n\n // create additional props\n const additionalProps = useMemo(\n () => ({\n renderControl,\n ignore: ignoreWebDavName,\n }),\n [renderControl, ignoreWebDavName]\n );\n\n return (\n \n );\n };\n HOC.displayName = `withWebDavName(${getDisplayName(WrappedComponent)})`;\n return HOC;\n};\n\nexport default withWebDavName;\n","// @flow\nimport React, { PureComponent } from \"react\";\nimport { connect, Dispatch } from \"react-redux\";\nimport { compose } from \"redux\";\nimport { fetchForm, fetchNewForm, saveForm, validateForm } from \"data/api\";\nimport { togglesUpdateCounterAction } from \"data/actions\";\nimport {\n ServerEventActionType,\n ServerEventItemType,\n type ServerEventMessage,\n type NewFormTypeEnum,\n NewFormType,\n type FormResultDTO,\n type DocFormResultDTO,\n type ApiError,\n} from \"data/types\";\nimport { getLocalizedText } from \"data/utils\";\nimport Form from \"components/Form\";\nimport FormEdit from \"components/FormEdit\";\nimport * as s from \"data/reducers/selectors\";\nimport Constants, {\n type ConstantsEnum,\n isFeatureOn,\n Feature,\n} from \"data/constants\";\nimport Status from \"components/Status\";\nimport loc from \"i18next\";\nimport { toastActionResult } from \"data/toast\";\nimport isEmpty from \"lodash/isEmpty\";\nimport GlobalEventsHandler from \"containers/GlobalEventsHandler\";\nimport { openConflictModal } from \"components/ConflictModal\";\nimport { produce } from \"immer\";\nimport withOfflineHandler from \"containers/OfflineHandler\";\nimport withRememberValues from \"containers/RememberValues\";\nimport withWebDavName, { type WebDavNameProps } from \"containers/WebDavName\";\nimport FormBarFactory from \"components/FormBar/Factory\";\nimport styles from \"./Form.module.css\";\n\ntype Props = {\n form?: FormResultDTO | DocFormResultDTO,\n /** the current itemUri */\n itemUri: string,\n /** the current viewName */\n viewName: string,\n /** whether we are now editing */\n isEditMode: boolean,\n /** callback when cancelling edit mode */\n onCancel: () => void,\n /** callback when saving a new item\n * @async\n * @param {object} model the form's values\n * @param {boolean?} keepOriginalFilename whether to use the actual filename or the user input\n * @returns {boolean} true if success, false otherwise\n */\n onSaveNew: (\n model: Object,\n keepOriginalFilename?: boolean,\n formatId: number\n ) => Promise,\n /** callback when the form definition has been loaded from server\n * @param {FormResultDTO | DocFormResultDTO} form the form definition\n */\n onFormLoad: (form: FormResultDTO | DocFormResultDTO) => void,\n /** which new item to create (Folder or Document) */\n newFormType: NewFormTypeEnum,\n /** pass-through save button label */\n saveLabel?: string,\n /** pass-through saving label */\n savingLabel?: string,\n /** pass-through to FormBarFactory */\n defaultFormTitle?: string,\n /** pass-through to FormBarFactory */\n defaultFormIcon?: string,\n /** whether to enable save form button */\n isFormButtonEnabled?: boolean,\n /** whether an internet connection is detected */\n isOnline?: boolen,\n /** whether offline feature is enabled */\n isOfflineAllowed?: boolean,\n /** whether to return ALL form fields or only changeLog */\n onSaveReturnAllFields?: boolean,\n /** defaultValues to preset on the form, accepts any {field:value} or {attribute:value} (no prefixes) */\n defaultValues?: Object,\n /** Redux dispatch */\n dispatch: Dispatch,\n /** GlobalEventsHandler.refreshId */\n refreshId: number,\n /** GlobalEventsHandler.refreshEvent */\n refreshEvent: ?ServerEventMessage,\n /** whether to show FormBarFactory */\n showHeader?: boolean,\n /** optional DOM ref to render ButtonToolbar onto (otherwise will render as child of form) */\n buttonToolbarPortal?: React.DOMElement,\n /** whether no data is intentional or an error */\n isNoDataError?: boolean,\n /** persisted bool if original filename should be kept */\n webDavName: WebDavNameProps,\n};\n\ntype State = {\n form?: FormResultDTO | DocFormResultDTO,\n status: ConstantsEnum,\n};\n\nexport class FormContainer extends PureComponent {\n abortController: AbortController | null;\n _isMounted: boolean;\n _formsyRef: Formsy | null;\n\n static defaultProps = {\n isEditMode: false,\n isFormButtonEnabled: true,\n isOnline: true,\n isOfflineAllowed: false,\n showHeader: true,\n };\n\n constructor(props: Props) {\n super(props);\n this.state = {\n form: undefined,\n status: Constants.LOADING,\n };\n }\n\n componentDidMount = () => {\n this._isMounted = true;\n this._fetch(this.props.itemUri);\n };\n\n componentWillUnmount() {\n this._isMounted = false;\n /* istanbul ignore else */\n if (this.abortController != null) {\n this.abortController.abort();\n }\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n /* istanbul ignore else */\n if (\n prevProps.itemUri !== this.props.itemUri ||\n prevProps.refreshId !== this.props.refreshId ||\n prevProps.form !== this.props.form\n ) {\n this.setState({\n status: Constants.LOADING,\n });\n this._fetch(this.props.itemUri);\n return;\n }\n }\n\n /**\n * @async\n * @summary will fetch the appropriate form (new/edit) from the server\n * @param {string} paramUri - the itemUri of the item\n * @memberof FormContainer\n */\n _fetch = async (paramUri: string) => {\n this._updateToggleLoading(true);\n try {\n let form = this.props.form;\n if (form == null) {\n if (this.props.newFormType != null) {\n form = await this.props.offlineHandler.factory(\n fetchNewForm\n )(this.props.newFormType, paramUri);\n } else {\n form = await this.props.offlineHandler.factory(fetchForm)(\n paramUri\n );\n }\n if (typeof this.props.onFormLoad === \"function\")\n this.props.onFormLoad(form);\n }\n /* istanbul ignore else */\n if (\n form != null &&\n this.props.itemUri === paramUri &&\n this._isMounted\n ) {\n this.setState({\n status: Constants.OK,\n form,\n });\n }\n } catch (e) {\n /* istanbul ignore else */\n if (e.constructor.name !== \"ApiForbiddenError\") {\n console.error(e);\n }\n try {\n this.setState({ status: Constants.ERROR });\n } catch (e2) {}\n } finally {\n this._updateToggleLoading(false);\n }\n };\n\n _updateToggleLoading = (loading?: boolean) => {\n const { viewName, dispatch } = this.props;\n dispatch(\n togglesUpdateCounterAction({\n name: viewName,\n counts: { form: 0 },\n status: {\n form: loading === true ? Constants.LOADING : null,\n },\n })\n );\n };\n\n /**\n * Will validate the model against the server\n * @async\n * @param {Object} model contains current changed fields & attributes\n * @returns {Object} containing all localized validation errors per field e.g. {fieldName:error, fieldName:error...}\n * @memberof FormContainer\n */\n _onValidate = async (model: Object): Object => {\n this.abortController = new AbortController();\n const validationErrors = await validateForm(\n this.props.newFormType != null, //isNew\n this.props.form?.isDoc ?? this.state.form?.isDoc,\n this.props.itemUri,\n !(this.props.webDavName?.ignore ?? false),\n model,\n this.abortController.signal\n );\n // localize error messages\n const locErrors = {};\n if (!isEmpty(validationErrors)) {\n Object.keys(validationErrors).forEach(\n (k) => (locErrors[k] = getLocalizedText(validationErrors[k]))\n );\n }\n return locErrors;\n };\n\n /**\n * Will submit the form to the server\n * @returns {boolean} true if success, false otherwise\n * @async\n * @param {Object} model - contains current changed fields & attributes\n * @memberof FormContainer\n */\n _onSave = async (\n model: Object,\n cancelEditMode: boolean = true\n ): boolean => {\n try {\n let response: boolean | null | ApiError = null;\n if (this.props.newFormType != null) {\n this.props.rememberValues?.updateAvailableValues(model);\n return await this.props.onSaveNew(\n model,\n this.props.webDavName?.ignore ?? false,\n this.state.form.formatId\n );\n } else {\n response = await saveForm(\n this.props.itemUri,\n this.state.form.formatId,\n model,\n this.state.form.etag\n );\n }\n /* istanbul ignore else */\n if (response != null) {\n if (response === false || response.isError) {\n toastActionResult(\n false,\n `${this.props.viewName}:edit_form`\n );\n } else {\n toastActionResult(true, `${this.props.viewName}:edit_form`);\n cancelEditMode && this.props.onCancel();\n return true;\n }\n }\n } catch (e) {\n if (e.data && e.constructor.name === \"ApiConflictError\") {\n const doOverwrite = await openConflictModal(e.data.extra.name);\n if (doOverwrite) {\n this.setState({\n form: produce(\n this.state.form,\n (draft: FormResultDTO) => {\n draft.etag = e.data.extra.currentEtag;\n }\n ),\n });\n return await this._onSave(model);\n } else {\n cancelEditMode && this.props.onCancel();\n }\n } else {\n //this.setState({ status: Constants.ERROR });\n toastActionResult(false, `${this.props.viewName}:edit_form`);\n }\n }\n return false;\n };\n\n renderNewDocument = () => {\n if (this.props.newFormType !== NewFormType.Document) {\n return null;\n }\n return (\n <>\n {this.props.webDavName?.renderControl([\n styles.newDoc_group,\n styles.newDoc_checkbox,\n styles.newDoc_label,\n ])}\n {this.props.rememberValues?.renderControl([\n styles.newDoc_group,\n styles.newDoc_checkbox,\n styles.newDoc_label,\n ])}\n \n );\n };\n\n getFormBarViewNames = () =>\n this.props.showHeader ? [this.props.viewName] : [];\n\n render() {\n const {\n buttonToolbarPortal,\n defaultValues,\n isEditMode,\n isFormButtonEnabled,\n isNoDataError,\n isOfflineAllowed,\n isOnline,\n itemUri,\n newFormType,\n offlineHandler,\n onBack,\n onCancel,\n onSaveReturnAllFields,\n saveLabel,\n savingLabel,\n } = this.props;\n const { status, form } = this.state;\n let adjustedItemUri = itemUri;\n //TODO: Move to Server\n if (newFormType === NewFormType.Document) {\n adjustedItemUri +=\n \"@eid=00000000|000|000|0000000000000000000000000\";\n }\n if (status === Constants.OK) {\n return (\n <>\n \n {window.CONFIG.licenseAllowEdit && isEditMode ? (\n \n ) : (\n \n )}\n \n );\n } else\n return (\n \n );\n }\n}\n\nconst mapStateToProps = /* istanbul ignore next */ (state, ownProps) => ({\n isOnline: s.isOnlineSelector(state),\n isOfflineAllowed: isFeatureOn(Feature.offline),\n ...ownProps,\n});\n\nexport default compose(\n connect(mapStateToProps),\n withOfflineHandler,\n withRememberValues,\n withWebDavName,\n GlobalEventsHandler({\n actions: [\n ServerEventActionType.modify,\n ServerEventActionType.edit,\n ServerEventActionType.refresh,\n ],\n items: [ServerEventItemType.document, ServerEventItemType.folder],\n })\n)(FormContainer);\n","import React from \"react\";\nimport styles from \"./SummaryAttribute.module.css\";\nimport { type SummaryAttributeDTO } from \"data/types\";\nimport ValueFactory from \"./ValueFactory\";\n\nconst SummaryAttribute = ({\n attribute,\n useDefaultStyle = false,\n}: {\n attribute: SummaryAttributeDTO,\n useDefaultStyle: boolean,\n}) => {\n /* istanbul ignore if */\n if (attribute == null || attribute.value == null) return null;\n return (\n \n \n {attribute.caption}\n {\" \"}\n \n \n );\n};\nSummaryAttribute.displayName = \"SummaryAttribute\";\nexport default SummaryAttribute;\n","import React from \"react\";\nimport { type SummaryAttributeDTO } from \"data/types\";\nimport SimpleAttribute from \"./SimpleAttribute\";\nimport SummaryAttribute from \"./SummaryAttribute\";\n\nexport const AttributeFactory = ({\n attribute,\n useDefaultStyle,\n}: {\n attribute: SummaryAttributeDTO | Array,\n useDefaultStyle?: boolean,\n}) => {\n return Array.isArray(attribute) ? (\n \n ) : (\n \n );\n};\nAttributeFactory.displayName = \"AttributeFactory\";\n\nconst Attributes = ({\n attributes,\n className,\n style,\n useDefaultStyle = true,\n}: {\n attributes: Array>,\n className?: string,\n style?: CSStyleDefinition,\n useDefaultStyle?: boolean,\n}) => (\n
\n {attributes.map((attribute, index) => (\n \n ))}\n
\n);\nAttributes.displayName = \"Attributes\";\nexport default Attributes;\n","// @flow\r\nimport getPkce from \"oauth-pkce\";\r\nimport { Location } from \"history\";\r\nimport qs from \"data/queryString\";\r\nimport { persistor } from \"data/storeHelper\";\r\nimport localForage from \"localforage\";\r\n\r\n/* istanbul ignore next */\r\n/**\r\n * create a valid GUID\r\n *\r\n * @returns {string} random guid\r\n */\r\nfunction randomGuid(): string {\r\n var guidHolder = \"xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx\";\r\n var hex = \"0123456789abcdef\";\r\n var r = 0;\r\n var guidResponse = \"\";\r\n for (var i = 0; i < guidHolder.length; i++) {\r\n if (guidHolder[i] !== \"-\" && guidHolder[i] !== \"4\") {\r\n // each x and y needs to be random\r\n r = (Math.random() * 16) | 0;\r\n }\r\n\r\n if (guidHolder[i] === \"x\") {\r\n guidResponse += hex[r];\r\n } else if (guidHolder[i] === \"y\") {\r\n // clock-seq-and-reserved first hex is filtered and remaining hex values are random\r\n r &= 0x3; // bit and with 0011 to set pos 2 to zero ?0??\r\n r |= 0x8; // set pos 3 to 1 as 1???\r\n guidResponse += hex[r];\r\n } else {\r\n guidResponse += guidHolder[i];\r\n }\r\n }\r\n return guidResponse;\r\n}\r\n// export as function for test mocking\r\nconst functions = {\r\n randomGuid,\r\n};\r\nexport { functions };\r\n\r\n/**\r\n * creates a URL to request authentication from identityServer\r\n *\r\n * @export\r\n * @param {Object} state can include a \"from\" property to specify the return route after login (used by {@link getAuthCallback})\r\n * @returns absolute url to identity login process\r\n */\r\nexport function getAuthUrl(\r\n state?: { from: string },\r\n code?: { code_verifier: string, code_challenge: string }\r\n): string {\r\n const params = {\r\n client_id: window.CONFIG.auth.clientId,\r\n redirect_uri: window.CONFIG.auth.redirectUrl,\r\n response_type: `${window.CONFIG.auth.responseType || \"id_token token\"}${\r\n code ? \" code\" : \"\"\r\n }`,\r\n scope: `${window.CONFIG.auth.scope || \"openid\"} offline_access`,\r\n state: /* istanbul ignore next */ state\r\n ? JSON.stringify(state)\r\n : undefined,\r\n\r\n nonce: functions.randomGuid(),\r\n // https://github.com/IdentityModel/oidc-client-js/issues/624\r\n // https://stackoverflow.com/a/23945116/1069189\r\n resource: window.CONFIG.auth.resource,\r\n //login_hint: pre-fill username on login form\r\n ...code,\r\n };\r\n if (window.CONFIG.auth.forceLogin === true) {\r\n params.prompt = window.CONFIG.auth.forceLoginPrompt || \"login\";\r\n }\r\n // http://docs.identityserver.io/en/release/endpoints/authorize.html\r\n return window.CONFIG.auth.authorizeEndpoint + \"?\" + qs.stringify(params);\r\n}\r\n\r\nexport async function getToken(params): string {\r\n const body = new URLSearchParams(params).toString();\r\n const response = await fetch(window.CONFIG.auth.tokenEndpoint, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/x-www-form-urlencoded\",\r\n },\r\n body,\r\n });\r\n return response.json();\r\n}\r\n\r\nexport type authInfo = {\r\n /** identity refresh_token */\r\n refresh_token: string,\r\n /** identity id_token */\r\n id_token: string,\r\n /** identity access_token */\r\n access_token: string,\r\n /** which route should the user land at */\r\n state: { from: string },\r\n /** ticks until tokens expire (absolute value, not related to token itself) */\r\n expires_in: number,\r\n};\r\n\r\n/**\r\n * parses the hash part of the url to retrieve identity authentication tokens - id_token, access_token, etc...\r\n * will also parse the state originally passed by {@link getAuthUrl}\r\n * @export\r\n * @param {Location} urlLocation\r\n * @returns object with all parsed identity values\r\n */\r\nexport function getAuthCallback(urlLocation: Location): authInfo {\r\n const search = urlLocation.hash.substring(1);\r\n const qr = qs.parse(search);\r\n /* istanbul ignore next */\r\n if (qr.error != null) {\r\n alert(qr.error_description);\r\n return null;\r\n }\r\n // parse expiresIn, default to 1 hour\r\n const expires_in = qr.expires_in ? parseInt(qr.expires_in, 10) : 73360;\r\n // parse JWT to get expiration date\r\n const parsed = parseJwt(qr.access_token || qr.id_token);\r\n const expires_on =\r\n (parsed?.exp ? parsed.exp * 1000 : null) ??\r\n Date.now() + 1000 * expires_in;\r\n\r\n return {\r\n code: qr.code,\r\n id_token: qr.id_token,\r\n access_token: qr.access_token || qr.id_token,\r\n state: /* istanbul ignore next */ qr.state\r\n ? JSON.parse(qr.state)\r\n : { from: \"/\" },\r\n expires_in,\r\n expires_on,\r\n };\r\n}\r\n\r\nfunction parseJwt(token) {\r\n /* istanbul ignore next */\r\n const split = token?.split(\".\") ?? [];\r\n if (split.length < 2) {\r\n return null;\r\n }\r\n const base64Url = split[1];\r\n const base64 = base64Url.replace(/-/g, \"+\").replace(/_/g, \"/\");\r\n const jsonPayload = decodeURIComponent(\r\n window\r\n .atob(base64)\r\n .split(\"\")\r\n .map(function (c) {\r\n return \"%\" + (\"00\" + c.charCodeAt(0).toString(16)).slice(-2);\r\n })\r\n .join(\"\")\r\n );\r\n\r\n return JSON.parse(jsonPayload);\r\n}\r\n\r\n/**\r\n * will sign-out the current user invaliding the stored tokens and forwarding to the identity/EndSession Endpoint\r\n *\r\n * @export\r\n * @param {string} idToken\r\n */\r\nexport const signout = (idToken: string): Promise => {\r\n // #43383 clear all persisted data\r\n persistor.pause();\r\n persistor.flush().then(() => {\r\n persistor.purge().then(() =>\r\n window.location.assign(\r\n window.CONFIG.auth.endSessionEndpoint +\r\n \"?\" +\r\n qs.stringify({\r\n // by passing the original id_token the user gets a prompt to return to logoutRedirectUrl\r\n id_token_hint: idToken,\r\n // this must be the same as the Identity/Config.ClientStore.logoutRedirectUrl otherwise it wont work!\r\n post_logout_redirect_uri:\r\n window.CONFIG.auth.logoutRedirectUrl,\r\n })\r\n )\r\n );\r\n });\r\n};\r\n\r\n/**\r\n * will return the current location pathname + search values but remove any basename from the route\r\n *\r\n * @export\r\n * @returns relative url of current route (without basename)\r\n */\r\nexport function signinFromLocation(): string {\r\n return (window.location.pathname + window.location.search).replace(\r\n window.CONFIG.host.basename,\r\n \"\"\r\n );\r\n}\r\n\r\n/**\r\n * will redirect user after successful login to his original requested route\r\n *\r\n * @export\r\n */\r\nexport function signinRedirect(): void {\r\n getPkce(43, async (error, { verifier, challenge }) => {\r\n /* istanbul ignore if */\r\n if (!!error) {\r\n console.error(error);\r\n }\r\n await localForage.setItem(\"code_verifier\", verifier);\r\n window.location.assign(\r\n getAuthUrl(\r\n {\r\n from: signinFromLocation(),\r\n },\r\n /* istanbul ignore next */\r\n window.CONFIG.auth.tokenEndpoint\r\n ? {\r\n code_challenge_method: \"S256\",\r\n code_challenge: challenge,\r\n }\r\n : undefined\r\n )\r\n );\r\n });\r\n}\r\n","import React, { useState, useCallback, useMemo, useRef } from \"react\";\nimport FormsyEditorBase from \"./FormsyEditorBase\";\nimport Mark from \"@hs/mark\";\nimport PrincipalAvatar from \"components/User/PrincipalAvatar\";\nimport loc from \"i18next\";\nimport { fetchSearchPrincipal } from \"data/api\";\nimport {\n PrincipalType,\n type UserPrincipalDTO,\n type GroupPrincipalDTO,\n type ApiError,\n} from \"data/types\";\nimport { closeMenuOnScroll } from \"data/utils\";\nimport Async from \"react-select/async\";\nimport AsyncCreatable from \"react-select/async-creatable\";\nimport { components } from \"react-select\";\nimport { validationRules } from \"formsy-react\";\nimport styles from \"./PrincipalEditorControl.module.css\";\nimport { useAbortController } from \"hooks\";\n\nconst { Option } = components;\n\ntype Props = {\n /** Allows to create new User */\n createUser?: boolean,\n /** Allows to create new Group */\n createGroup?: boolean,\n /** Handle Users */\n includeUsers?: boolean,\n /** Handle UserGroups */\n includeGroups?: boolean,\n /** Is a required field */\n isRequired?: boolean,\n /** Can multiple Users be selected */\n isMulti?: boolean,\n /** Can input be cleared */\n isClearable?: boolean,\n /** New UserId reference */\n newUserIdRef?: { current?: int },\n /** Focus the control when it is mounted */\n autoFocus?: boolean,\n /** Name of the input field */\n name: string,\n};\n\nconst PrincipalEditorControl = (props: Props) => {\n const localNewUserIdRef = useRef(0);\n const abortController = useAbortController();\n const {\n isMulti = false,\n createUser = false,\n createGroup = false,\n includeUsers = true,\n includeGroups = false,\n newUserIdRef = localNewUserIdRef,\n } = props;\n const [keyword, setKeyword] = useState(\"\");\n\n const getNewId = useCallback(() => {\n newUserIdRef.current -= 1;\n return newUserIdRef.current;\n }, [newUserIdRef]);\n\n const types = useMemo(() => {\n const types = [];\n /* istanbul ignore else */\n if (includeUsers)\n types.push(loc.t(`principal.type.user${isMulti ? \"s\" : \"\"}`));\n /* istanbul ignore else */\n if (includeGroups)\n types.push(loc.t(`principal.type.group${isMulti ? \"s\" : \"\"}`));\n return types.join(\n isMulti ? loc.t(\"principal.type.and\") : loc.t(\"principal.type.or\")\n );\n }, [includeUsers, includeGroups, isMulti]);\n\n const Component = useMemo(\n () => (createUser || createGroup ? AsyncCreatable : Async),\n [createUser, createGroup]\n );\n const componentProps = useMemo(\n () =>\n createUser || createGroup\n ? {\n createOptionPosition: \"first\",\n isValidNewOption: (\n inputValue: string,\n selectValue?: Array = [],\n selectOptions?: Array = []\n ) =>\n inputValue &&\n selectOptions.find(\n (principal) =>\n principal &&\n principal.email &&\n principal.email.toLowerCase() ===\n inputValue.toLowerCase()\n ) == null &&\n createUser &&\n validationRules.isEmail(selectValue, inputValue),\n getNewOptionData: (\n inputValue: string,\n optionLabel: React.Node\n ): any => {\n const isEmail = validationRules.isEmail(\n undefined,\n inputValue\n );\n return {\n id: getNewId(),\n $type: isEmail\n ? PrincipalType.User\n : PrincipalType.Group,\n displayName: inputValue,\n email: isEmail ? inputValue : undefined,\n };\n },\n }\n : {},\n [createUser, createGroup, getNewId]\n );\n\n const handleInputChange = useCallback((keyword: string) => {\n setKeyword(keyword);\n return keyword;\n }, []);\n\n const handleSearchAsYouType = useCallback(\n (\n keyword: string\n ): Promise> => {\n if (keyword.length > 0) {\n return fetchSearchPrincipal(\n keyword,\n !!includeUsers,\n !!includeGroups,\n /* !! Do NOT abort multiple calls, since Async react-select, caches responses !! */\n abortController().signal\n )\n .catch((err: ApiError) => {\n return [];\n })\n .then((options) => options);\n } else {\n // TODO return previously used emails\n return Promise.resolve([]);\n }\n },\n [includeUsers, includeGroups, abortController]\n );\n const optionRenderer = useCallback(\n (props) =>\n Option && (\n \n ),\n [keyword]\n );\n return (\n void,\n isValid: boolean\n ) => (\n ({\n ...provided,\n width: \"100%\",\n minWidth: 191,\n }),\n control: /* istanbul ignore next */ (\n provided,\n state\n ) => ({\n ...provided,\n minHeight: 34,\n borderColor: isValid\n ? provided.borderColor\n : \"#a94442\",\n borderRadius: 0,\n }),\n menu: /* istanbul ignore next */ (provided, state) => ({\n ...provided,\n borderRadius: 0,\n marginTop: 0,\n }),\n menuPortal: /* istanbul ignore next */ (\n provided,\n state\n ) => ({\n ...provided,\n zIndex: 9999,\n }),\n valueContainer: /* istanbul ignore next */ (\n provided,\n state\n ) => ({\n ...provided,\n padding: \"0px 6px\",\n minHeight: 34,\n }),\n input: /* istanbul ignore next */ (\n provided,\n state\n ) => ({\n ...provided,\n margin: 0,\n padding: 0,\n }),\n dropdownIndicator: /* istanbul ignore next */ (\n provided,\n state\n ) => ({\n ...provided,\n padding: 4,\n }),\n clearIndicator: /* istanbul ignore next */ (\n provided,\n state\n ) => ({\n ...provided,\n padding: 4,\n }),\n option: /* istanbul ignore next */ (\n provided,\n state\n ) => {\n let style = {\n ...provided,\n display: \"flex\",\n width: \"100%\",\n alignItems: \"center\",\n };\n /* istanbul ignore next */\n if (state.isFocused) {\n return Object.assign({}, style, {\n boxShadow: \"none\",\n background: \"#f5f5f5\",\n textShadow: \"none\",\n cursor: \"pointer\",\n // border: \"1px solid #f5f5f5\"\n });\n }\n return style;\n },\n }}\n components={{\n Option: optionRenderer,\n }}\n // async loading\n cacheOptions={true}\n loadOptions={handleSearchAsYouType}\n // options\n getOptionLabel={\n /* istanbul ignore next */\n (option: UserPrincipalDTO | GroupPrincipalDTO) =>\n option.displayName\n }\n getOptionValue={\n /* istanbul ignore next */\n (option: UserPrincipalDTO | GroupPrincipalDTO) =>\n option.id\n }\n defaultOptions={true}\n isMulti={props.isMulti || false}\n // behaviour\n isClearable={props.isClearable || false}\n openMenuOnFocus={true}\n // localizations\n aria-label={loc.t(\"principal.search.prompt\", { types })}\n loadingMessage={\n /* istanbul ignore next */\n () => loc.t(\"principal.search.loading\")\n }\n placeholder={loc.t(\"principal.placeholder\", { types })}\n noOptionsMessage={\n /* istanbul ignore next */\n () => loc.t(\"principal.search.prompt\", { types })\n }\n // selection\n onInputChange={handleInputChange}\n onChange={(value) =>\n changeValue({\n currentTarget: {\n value:\n Array.isArray(value) && !value.length\n ? null\n : value,\n },\n })\n }\n menuPortalTarget={document.body}\n menuPlacement=\"auto\"\n closeMenuOnScroll={closeMenuOnScroll}\n value={props.value}\n autoFocus={props.autoFocus}\n {...componentProps}\n />\n )}\n {...props}\n />\n );\n};\n\nPrincipalEditorControl.displayName = \"PrincipalEditorControl\";\nexport default PrincipalEditorControl;\n","import React, { useMemo } from \"react\";\nimport ClearableInput from \"@hs/clearable-input\";\nimport FormsyEditorBase from \"./FormsyEditorBase\";\n\nconst MemoEditorControl = (props) => {\n const style = useMemo(\n () => ({\n width: \"100%\",\n borderRadius: 0,\n resize: \"none\",\n overflow: \"auto\",\n paddingTop: 6,\n paddingLeft: 9,\n paddingBottom: 6,\n border: \"1px solid #cccccc\",\n boxShadow: \"inset 0 1px 1px rgb(0 0 0 / 8%)\",\n minHeight: props.height || 32,\n }),\n [props.height]\n );\n return (\n (\n \n )}\n {...props}\n />\n );\n};\nMemoEditorControl.displayName = \"MemoEditorControl\";\nexport default MemoEditorControl;\n","// @flow\nimport React from \"react\";\nimport { getLocalizedText } from \"data/utils\";\nimport SearchBucket, { getSelected } from \"./\";\nimport {\n SORT_BUCKET_NAME,\n type SearchBucketDTO,\n type SearchBucketValueDTO,\n} from \"data/types\";\nimport styles from \"./SearchBucket.module.css\";\nimport moment from \"moment\";\n\ntype Props = {\n item: SearchBucketDTO,\n};\n\nconst findBucketValue = (\n item: SearchBucketDTO,\n value: number | string | null\n): ?SearchBucketValueDTO => {\n const idx = item.buckets.findIndex((b) => b.value === value);\n if (idx === -1) {\n return null;\n } else {\n return item.buckets[idx];\n }\n};\n\nconst parseSelectedValue = (selected: Array): string => {\n const selectedValue = getSelected(selected);\n return Array.isArray(selectedValue)\n ? selectedValue\n .filter((v) => !!v)\n .map((value) =>\n // if it's a date...\n moment(value, \"YYYY-MM-DDTHH:mm:ss.SSSZ\", true).isValid()\n ? // ... format it properly\n moment(value).format(\n moment.localeData().longDateFormat(\"L\")\n )\n : value\n )\n .join(\"-\")\n : selectedValue;\n};\n\nconst Name = ({ item }: Props) => {\n const selectedValue = parseSelectedValue(item.selected);\n const caption = getLocalizedText(item.caption || item.name);\n\n // nothing yet selected, show the searchBucketName (localized)\n if (selectedValue == null) {\n return {caption};\n } else {\n // we have a value\n\n // find localized caption of selected value\n const bucket = findBucketValue(item, selectedValue);\n if (bucket == null) {\n // we could not find it (should not really happen)\n return (\n \n {selectedValue\n ? `${getLocalizedText(item.caption)}: ${selectedValue}`\n : getLocalizedText(item.caption)}\n \n );\n } else {\n // should we show the searchBucketName (or save screenspace)?\n // note: custom handling of known searchBuckets\n if (\n item.name === \"Dateityp\" ||\n item.name === \"ItemType\" ||\n item.hideName === true\n ) {\n // no, just the selected value\n return (\n \n \n {getLocalizedText(\n String(bucket.caption || bucket.value)\n )}\n \n );\n } else {\n // yes show it all (otherwise wont be clear)\n return (\n \n {item.name === SORT_BUCKET_NAME ? (\n <>\n {/**/}\n {getLocalizedText(item.caption)}:{\" \"}\n \n ) : (\n getLocalizedText(caption) + \": \"\n )}\n \n {getLocalizedText(\n String(bucket.caption || bucket.value)\n )}\n \n );\n }\n }\n }\n};\nName.displayName = \"FilterBar.SearchBucket.Name\";\n\nexport default Name;\n","// @flow\nimport React from \"react\";\nimport MenuItem from \"react-bootstrap/lib/MenuItem\";\nimport { type SearchBucketDTO } from \"data/types\";\n\ntype Props = { item: SearchBucketDTO };\n\nconst Header = ({ item }: Props) => (\n {item.caption || item.name}\n);\n\nHeader.displayName = \"FilterBar.SearchBucket.Header\";\n\nexport default Header;\n","// @flow\nimport React from \"react\";\nimport MenuItem from \"react-bootstrap/lib/MenuItem\";\nimport loc from \"i18next\";\nimport { type SearchBucketDTO } from \"data/types\";\n\ntype Props = {\n item: SearchBucketDTO,\n onSelect: (name: string, value: Object) => void,\n};\n\nconst AllItem = ({ item, onSelect }: Props) => (\n \n onSelect({\n name: item.name,\n value: \"__ALL__\",\n })\n }\n >\n {loc.t(\"common:filter.AllCaption\")}\n \n);\n\nAllItem.displayName = \"FilterBar.SearchBucket.AllItem\";\n\nexport default AllItem;\n","// @flow\nimport React, { useCallback } from \"react\";\nimport MenuItemUI from \"react-bootstrap/lib/MenuItem\";\nimport SearchBucket from \"./\";\nimport CountBadge from \"components/CountBadge\";\nimport { getLocalizedText } from \"data/utils\";\nimport { type SearchBucketValueDTO } from \"data/types\";\nimport styles from \"./SearchBucket.module.css\";\n\ntype Props = {\n name: string,\n selected: Array,\n item: SearchBucketValueDTO,\n onSelect: (name: string, value: Object) => void,\n};\n\nconst MenuItem = ({ name, selected, item, onSelect }: Props) => {\n const handleSelect = useCallback(\n () => onSelect({ name, value: item.value, valueType: item.valueType }),\n [onSelect, name, item]\n );\n return (\n \n {item.count > 0 && (\n \n \n \n )}\n \n \n {getLocalizedText(item.caption || item.value)}\n \n \n );\n};\n\nMenuItem.displayName = \"FilterBar.SearchBucket.MenuItem\";\n\nexport default MenuItem;\n","// @flow\nimport React from \"react\";\nimport ButtonUI from \"react-bootstrap/lib/Button\";\nimport SearchBucket from \"./\";\nimport { type SearchBucketDTO } from \"data/types\";\n\ntype Props = {\n item: SearchBucketDTO,\n selected: Array,\n onSelect: (name: string, value: Object) => void,\n};\n\nconst Button = ({ item, selected, onSelect }: Props) => (\n \n onSelect({\n name: item.name,\n value: null,\n })\n }\n bsSize=\"small\"\n style={{\n fontWeight: selected.length > 0 ? \"bold\" : \"normal\",\n fontStyle: selected.length > 0 ? \"normal\" : \"italic\",\n }}\n >\n \n \n);\n\nButton.displayName = \"FilterBar.SearchBucket.Button\";\n\nexport default Button;\n","// @flow\nimport React from \"react\";\nimport Icons from \"@hs/icons\";\n\ntype Props = {\n /** commonName */\n name: string,\n /** field's value */\n value: number | string | null,\n /** CSS class to apply to icon */\n className?: string,\n};\n\n// gets a bucket's value's icon\nconst Icon = ({ name, value, className }: Props) => {\n /* istanbul ignore next */\n if (value === null) return null;\n // note: custom handling of known searchBuckets\n if (name === \"Dateityp\") {\n return ;\n } /* istanbul ignore else */ else if (name === \"ItemType\") {\n if (value === \"Document\")\n return (\n \n );\n /* istanbul ignore else */ else if (value === \"Folder\")\n return (\n \n );\n }\n return null;\n};\nIcon.displayName = \"FilterBar.SearchBucket.Icon\";\nexport default Icon;\n","// @flow\nimport React from \"react\";\nimport Dropdown from \"@hs/dropdown\";\nimport bowser from \"data/bowser\";\nimport Name from \"./Name\";\nimport Header from \"./Header\";\nimport AllItem from \"./AllItem\";\nimport MenuItem from \"./MenuItem\";\nimport Button from \"./Button\";\nimport Icon from \"./Icon\";\nimport { SORT_BUCKET_NAME, type SearchBucketDTO } from \"data/types\";\n\nexport const getSelected = (\n selected: Array\n): string | number | null =>\n selected != null &&\n Array.isArray(selected) &&\n selected.length > 0 &&\n selected[0] != null &&\n String(selected[0]).length > 0\n ? selected[0]\n : null;\n\ntype Props = {\n item: SearchBucketDTO,\n i: number,\n onSelect: (name: string, value: Object) => void,\n isDisabled: boolean,\n};\n\nconst SearchBucket = ({ item, i, onSelect, isDisabled }: Props) => {\n const selected: Array = item.selected || [];\n\n // custom button without menu\n /* istanbul ignore else */\n if (item.buckets.length === 0) {\n if (item.hideMenu === true) {\n return (\n \n );\n } else return null;\n }\n\n return (\n \n 0 ? \"bold\" : \"normal\",\n fontStyle: selected.length > 0 ? \"normal\" : \"italic\",\n }}\n >\n \n \n \n {bowser.is(\"mobile\") && }\n {getSelected(selected) != null &&\n item.name !== SORT_BUCKET_NAME &&\n item.hideAllReset !== true && (\n \n )}\n {item.buckets.map((bucket, i) => (\n \n ))}\n \n \n );\n};\nSearchBucket.displayName = \"FilterBar.SearchBucket\";\nSearchBucket.Name = Name;\nSearchBucket.Header = Header;\nSearchBucket.AllItem = AllItem;\nSearchBucket.MenuItem = MenuItem;\nSearchBucket.Button = Button;\nSearchBucket.Icon = Icon;\n\nexport default SearchBucket;\n","import store from \"data/store\";\r\nimport * as s from \"data/reducers/selectors\";\r\nimport { persistor } from \"data/store\";\r\nimport { SiteType, GridListConstant } from \"data/types\";\r\n\r\nexport const isOnline = () => s.isOnlineSelector(store.getState());\r\n\r\nexport const cardsCards = () => s.cardsCardsSelector(store.getState());\r\n\r\nexport const docsItemUri = () => s.docsItemUriSelector(store.getState());\r\n\r\nexport const currentItemUri = () => s.currentItemUriSelector(store.getState());\r\n\r\nexport const accessToken = () => s.loginAccessTokenSelector(store.getState());\r\n\r\nexport const correlationId = () =>\r\n s.userCorrelationIdSelector(store.getState());\r\n\r\nexport const sitesSelector = () => s.userSitesSelector(store.getState());\r\n\r\nexport const globalSitesAreaSelector = () =>\r\n sitesSelector().find(\r\n (s) =>\r\n s.siteType === SiteType.GlobalSites && s.webDavName === \"GLOBALSITE\"\r\n );\r\n\r\nexport const userLanguage = (defaultLocale = undefined) =>\r\n s.userLanguageSelector(store.getState()) ?? defaultLocale;\r\n\r\nexport const userId = () => s.userIdSelector(store.getState());\r\n\r\nexport const userName = () => s.userNameSelector(store.getState());\r\n\r\nexport const settingValue = (name) =>\r\n s.settingValueSelector(name, store.getState());\r\n\r\nexport const swRegistrationSelector = () =>\r\n s.swRegistrationSelector(store.getState());\r\n\r\nexport const dispatch = (action) => store.dispatch(action);\r\n\r\nexport const getNotification = (notificationId) =>\r\n s.notificationSelector(store.getState(), notificationId)?.[0] || {};\r\n\r\nexport const getFirstItemUri = () => {\r\n const state = store.getState();\r\n const rows = s.docsRowsSelector(state);\r\n const cols = s.docsColsSelector(state);\r\n const itemUriColIndex =\r\n cols?.findIndex?.((col) => col.name === GridListConstant.ItemUri) ?? 0;\r\n return rows?.[0]?.[itemUriColIndex];\r\n};\r\n\r\nexport { persistor };\r\n","// @flow\nimport React from \"react\";\nimport { get } from \"data/constants\";\nimport Button from \"react-bootstrap/lib/Button\";\nimport loc from \"i18next\";\nimport styles from \"./LocalContactInfo.module.css\";\nimport globalloc from \"data/i18n.global\";\n\nconst LocalContactInfo = () => {\n const localContactInfo = get(\n window.CONFIG,\n [\"general\", \"localContactInfo\"],\n null\n );\n if (localContactInfo == null) {\n return null;\n }\n const { email, text = \"\", url } = localContactInfo;\n return (\n
\n {text}\n {(email || url) && (\n
\n {email && (\n
\n {loc.t(\"localContactInfo:email\") ||\n /* istanbul ignore next */ globalloc\n .localContactInfo.email}\n \n {email}\n \n
\n )}\n {url && (\n
\n {loc.t(\"localContactInfo:url\") ||\n /* istanbul ignore next */ globalloc\n .localContactInfo.url}\n \n {url}\n \n
\n )}\n
\n )}\n
\n );\n};\n\nLocalContactInfo.displayName = \"LocalContactInfo\";\nexport default LocalContactInfo;\n","// @flow\nimport React from \"react\";\nimport Button from \"react-bootstrap/lib/Button\";\nimport HelpBlock from \"react-bootstrap/lib/HelpBlock\";\nimport Icons from \"@hs/icons\";\nimport { getLocalizedText } from \"data/utils\";\nimport { type ItemActionConfig } from \"data/types\";\nimport styles from \"./ItemAction.module.css\";\n\nconst ItemAction = ({\n action,\n onAction,\n}: {\n action: ItemActionConfig,\n onAction: (action: ItemActionConfig) => void,\n}) => (\n
\n onAction(action)}\n className={styles.button}\n >\n {\" \"}\n {getLocalizedText(action.name) || \"N/A\"}\n \n {action.desc && (\n \n {getLocalizedText(action.desc)}\n \n )}\n
\n);\nItemAction.displayName = \"ActionPanel.ItemAction\";\nexport default ItemAction;\n","// @flow\nimport React, { useMemo, useCallback } from \"react\";\nimport Icons from \"@hs/icons\";\nimport {\n GridListConstant,\n DocListColumnType,\n type DocColumnResultDTO,\n type DocListLayout,\n} from \"data/types\";\nimport ValueFactory from \"components/Attributes/SummaryAttribute/ValueFactory\";\nimport styles from \"./RowResultByLayout.module.css\";\nimport { getClassNames } from \"data/utils\";\n\ntype Props = {\n /** CSS styles to apply */\n style?: StyleSheet,\n /** the row object */\n row: Object,\n /** row index */\n index: number,\n /** requested layout */\n layout?: DocListLayout,\n /** all the columns */\n cols: Array,\n /** whether row should be marked as selected */\n isSelected: boolean,\n /** callback when user single clicks the whole row\n * @param {SyntheticMouseEvent} e HTML click event\n * @param {string} itemUri the row's itemUri\n * @param {number} index the row's index\n */\n onSingleClick?: (\n e: SyntheticMouseEvent,\n itemUri: string,\n index: number\n ) => void,\n};\n\n/**\n * Render one document row in \"Simple\" layout mode\n */\nconst RowResultByLayout = ({\n style,\n row,\n index,\n layout,\n cols,\n isSelected,\n onSingleClick,\n}: Props) => {\n const itemUri = useMemo(() => row[row.length - 1], [row]);\n // map requested columns (layout.cols) to existing ones (cols)\n const colIndexes = useMemo(() => {\n let result = [];\n if (layout && layout.cols) {\n layout.cols.forEach((colName) => {\n const colIdx = cols.findIndex((col) => col.name === colName);\n /* istanbul ignore if */\n if (colIdx === -1) {\n console.warn(\n \"RowResultByLayout: Cannot find column named: \" +\n colName\n );\n } else {\n result.push(colIdx);\n }\n });\n } else {\n // show a reasonable default - icon, name\n const extensionColIndex = cols.findIndex(\n (col) => col.name === GridListConstant.ExtensionIcon\n );\n if (extensionColIndex !== -1) result.push(extensionColIndex);\n let nameColIndex = cols.findIndex(\n (col) => col.type === DocListColumnType.WebDavName\n );\n // FlatAUs do not have any Name columns\n if (nameColIndex === -1) nameColIndex = 0;\n result.push(nameColIndex);\n }\n return result;\n }, [layout, cols]);\n const _onSingleClick = useCallback(\n (e: SyntheticMouseEvent<*>) => {\n e.stopPropagation();\n\n /* istanbul ignore else */\n if (typeof onSingleClick === \"function\")\n onSingleClick(e, itemUri, index);\n },\n [onSingleClick, itemUri, index]\n );\n\n return (\n \n {colIndexes.map((colIndex, colNameIndex) => {\n switch (cols[colIndex].name) {\n case GridListConstant.ExtensionIcon:\n return (\n \n \n \n );\n default:\n let value = row[colIndex];\n if (\n Object.prototype.hasOwnProperty.call(value, \"$type\")\n ) {\n value = (\n \n );\n }\n return (\n 2\n ? styles.lastcell\n : \"\"\n )}\n style={{\n width: cols[colIndex].width,\n textAlign: [\n \"LongValue\",\n \"IntValue\",\n ].includes(cols[colIndex].type)\n ? \"right\"\n : \"left\",\n }}\n >\n {value}\n \n );\n }\n })}\n \n );\n};\n\nRowResultByLayout.displayName = \"DocListSimple.RowResultByLayout\";\nRowResultByLayout.defaultProps = {\n isSelected: false,\n};\nexport default RowResultByLayout;\n","import React from \"react\";\nimport Icons from \"@hs/icons\";\nimport Thumbnail from \"components/DocListSimple/Thumbnail\";\nimport NoData from \"components/NoData\";\nimport styles from \"./itemView_docListGallery.module.css\";\nimport { useSwipeable } from \"react-swipeable\";\n\nconst Thumbs = ({ result, onClick }) =>\n Object.keys(result.rows).map((key, index) => {\n const name = result.rows[key][1]; //hopefully it's always at that position ;)\n const itemUri = result.rows[key][result.cols.length - 1];\n return (\n onClick(itemUri)}\n >\n \n \n );\n });\nThumbs.displayName = \"ItemView_DocListGallery.Thumbs\";\n\nconst ItemView_DocListGallery = ({ result, onClick }) => {\n const stripRef = React.useRef();\n const goLeft = /*istanbul ignore next*/ () =>\n (stripRef.current.scrollLeft -= 80);\n const goRight = /*istanbul ignore next*/ () =>\n (stripRef.current.scrollLeft += 80);\n const handlers = useSwipeable({\n onSwipeLeft: goLeft,\n onSwipeRight: goRight,\n });\n\n if (result && result.rows && result.rowCount > 0) {\n return (\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n );\n }\n\n return ;\n};\nItemView_DocListGallery.displayName = \"ItemViews.DocListGallery\";\nexport default ItemView_DocListGallery;\n","import React, { useState } from \"react\";\nimport { useAsync } from \"hooks\";\nimport Constants from \"data/constants\";\nimport { fetchDocs } from \"data/api\";\nimport Status from \"components/Status\";\nimport CountBadge from \"components/CountBadge\";\nimport ViewModes from \"components/FilterBar/ViewModes\";\nimport {\n ListViewMode,\n type ItemActionViewConfig,\n type ItemActionConfig,\n} from \"data/types\";\nimport styles from \"./itemView_docList.module.css\";\nimport DocListSimple from \"components/DocListSimple\";\nimport RowResultByLayout from \"components/DocListSimple/RowResultByLayout\";\nimport Divider from \"components/Divider\";\nimport ItemViewDocListGallery from \"./itemView_docListGallery\";\n\ntype ItemActionViewDocListConfig = ItemActionViewConfig & {\n viewMode?: ListViewModeEnum,\n layout?: DocListLayout,\n};\n\n/**\n * shows a doclist view for a folder\n *\n * @param {{ itemUri: string }} { itemUri }\n */\nconst ItemView_DocList = ({\n itemUri,\n action,\n view,\n onItemUriAction,\n}: {\n itemUri: string,\n action: ItemActionConfig,\n view: ItemActionViewDocListConfig,\n onItemUriAction: (itemUri: string) => void,\n}) => {\n const [viewMode, setViewMode] = useState(\n view.viewMode || ListViewMode.List\n );\n\n // get documents\n const state = useAsync(async () => {\n try {\n const docs = await fetchDocs(\n itemUri,\n 0,\n view.layout && view.layout.sorts,\n view.layout && view.layout.filters,\n view.layout && view.layout.cols\n );\n return docs;\n } catch (err) {\n console.warn(\"Error while fetchDocs\", err);\n throw err;\n }\n }, [itemUri]);\n\n if (state.loading || state.error) {\n return (\n \n
\n {view.header}{\" \"}\n {state.loading && (\n \n )}\n {state.error && (\n \n )}\n
\n \n }\n />\n );\n } else {\n return (\n \n
\n {view.header}\n \n
\n {state.value.rowCount > 0 && (\n \n setViewMode(viewMode)\n }\n />\n )}\n \n }\n >\n <>\n {viewMode === ListViewMode.List && (\n
\n \n console.warn(\n \"Paging is not supported for the ItemView_DocList!\"\n )\n }\n setSorting={\n /* istanbul ignore next */ () =>\n console.warn(\n \"Setting Sorting is not supported for the ItemView_DocList!\"\n )\n }\n layout={view.layout}\n requestShowFilter={\n /* istanbul ignore next */ () =>\n console.warn(\n \"Setting Filters is not supported for the ItemView_DocList!\"\n )\n }\n showThumbnails={false}\n showFilterbar={false} // cannot use Filters/Sorting due to centralized Redux store\n onSingleClick={\n /* istanbul ignore next */ (\n e,\n itemUri,\n index\n ) => onItemUriAction(itemUri)\n }\n />\n
\n )}\n {viewMode === ListViewMode.Thumbnails && (\n \n onItemUriAction(itemUri)\n }\n />\n )}\n \n \n );\n }\n};\n\nexport default ItemView_DocList;\n","import React from \"react\";\nimport Activities from \"containers/Activities\";\nimport { type ItemActionViewConfig, type ItemActionConfig } from \"data/types\";\n\ntype ItemActionViewActivityListConfig = ItemActionViewConfig & {\n /** whether this item is a Document or Folder */\n isDoc?: boolean,\n /** whether to allow adding notes\n * @default {boolean} false\n */\n showAddNote?: boolean,\n /** whether to show notes (comment) entries\n * @default {boolean} true\n */\n showNotes?: boolean,\n /** whether to show history entries\n * @default {boolean} false\n */\n showHistory?: boolean,\n /** whether to show retention info\n * @default {boolean} false\n */\n showRetentionInfo?: boolean,\n};\n\n/**\n * shows the ActivityList\n *\n * @param {{ itemUri: string }} { itemUri }\n * @param {{ formatId: number }} { formatId }\n * @param {{ action: ItemActionConfig }} { action }\n * @param {{ view: ItemActionViewActivityListConfig }} { view }\n * @param {{ onItemUriAction: (itemUri: string) => void }} { onItemUriAction }\n */\nconst ItemView_ActivityList = ({\n itemUri,\n formatId,\n action,\n view,\n onItemUriAction,\n}: {\n itemUri: string,\n formatId: number,\n action: ItemActionConfig,\n view: ItemActionViewActivityListConfig,\n onItemUriAction: (itemUri: string) => void,\n}) => (\n \n);\n\nItemView_ActivityList.displayName = \"ItemViews.ActivityList\";\nexport default ItemView_ActivityList;\n","import React, { useCallback } from \"react\";\nimport { getLocalizedText } from \"data/utils\";\nimport Icons from \"@hs/icons\";\nimport { type EnumValue } from \"data/types\";\n\ntype Props = {\n enum: Array>,\n value: T,\n name: string,\n label: string,\n isMulti: boolean,\n className: string,\n};\n\nconst EnumIcon = ({\n name,\n label,\n enum: enumValues,\n className,\n isMulti,\n value,\n}: Props) => {\n const renderEnumValue = useCallback(\n (enumValue: EnumValue) =>\n enumValue &&\n enumValue.icon && (\n \n {typeof enumValue.icon === \"string\" ? (\n \n ) : (\n enumValue.icon\n )}\n \n ),\n [name, label]\n );\n return value ? (\n \n {isMulti\n ? enumValues\n .filter((e) => (value & e.value) > 0)\n .map((e) => renderEnumValue(e))\n : renderEnumValue(enumValues.find((e) => e.value === value))}\n \n ) : null;\n};\n\nEnumIcon.displayName = \"EnumIcon\";\nexport default EnumIcon;\n","import React, { useMemo } from \"react\";\nimport Icons from \"@hs/icons\";\nimport Button from \"react-bootstrap/lib/Button\";\nimport PrincipalAvatar from \"components/User/PrincipalAvatar\";\nimport HelpBlock from \"react-bootstrap/lib/HelpBlock\";\nimport loc from \"i18next\";\nimport styles from \"./ReminderItem.module.css\";\nimport EnumIcon from \"./EnumIcon\";\nimport {\n LocalDateStringOption,\n CustomActionState,\n ReminderTypeFlags,\n ReminderTypeFlagsEnumValues,\n ReminderPriority,\n ReminderPriorityEnumValues,\n} from \"data/types\";\nimport { toastStyled, toastTypes } from \"data/toast\";\nimport { userLanguage } from \"data/storeHelper\";\n\ntype Props = {\n reminder: ReminderDTO,\n isEditAllowed: boolean,\n onEdit: () => void,\n onDelete: () => void,\n className: string,\n};\n\nconst ReminderItem = ({\n reminder: { customAction, ...reminder },\n isEditAllowed,\n onEdit,\n onDelete,\n className = \"\",\n}: Props) => {\n const reminderTypeEnumValues = useMemo(\n () =>\n customAction == null\n ? ReminderTypeFlagsEnumValues\n : ReminderTypeFlagsEnumValues.concat({\n value: ReminderTypeFlags.CustomAction,\n label:\n customAction.displayName ||\n \"$reminder:type.customAction\",\n icon: (\n \n customAction.error &&\n toastStyled({\n message: customAction.error,\n ...toastTypes.failure,\n })\n }\n className={`${styles.customAction}${\n customAction.state === CustomActionState.Error\n ? ` ${styles.error}`\n : \"\"\n }`}\n />\n ),\n }),\n [customAction]\n );\n return (\n \n {reminder.priority !== ReminderPriority.Normal && (\n \n )}\n \n {new Date(reminder.date).toLocaleDateString(\n userLanguage(),\n LocalDateStringOption.DateTime\n )}\n \n \n {reminder.recipient && (\n \n \n \n )}\n {reminder.reason}\n \n \n \n \n \n \n \n \n \n );\n};\n\nReminderItem.displayName = \"ReminderItem\";\nexport default ReminderItem;\n","import React, { useCallback, useState } from \"react\";\nimport { useAsync, useAbortController } from \"hooks\";\nimport { fetchReminders, deleteReminder } from \"data/api\";\nimport Constants from \"data/constants\";\nimport Status from \"components/Status\";\nimport ReminderItem from \"components/Reminder/ReminderItem\";\nimport {\n ReminderTypeFlags,\n LocalDateStringOption,\n type ItemActionViewConfig,\n type ItemActionConfig,\n} from \"data/types\";\nimport { toastActionResult } from \"data/toast\";\nimport { openConfirmModal } from \"components/ConfirmModal\";\nimport loc from \"i18next\";\nimport { userLanguage } from \"data/storeHelper\";\nimport CommandActionHandler from \"components/CommandActions\";\n\ntype Props = {\n onClick: (props: Object) => void,\n itemUri: string,\n action: ItemActionConfig,\n view: ItemActionViewConfig,\n};\n\nfunction getLocContextFor(reminder) {\n return {\n date: new Date(reminder.date).toLocaleDateString(\n userLanguage(),\n LocalDateStringOption.DateTime\n ),\n user: reminder.recipient.displayName,\n };\n}\n\nconst ItemView_Reminder = ({ onClick, itemUri, action }: Props) => {\n const [reminders, setReminders] = useState(null);\n const abortController = useAbortController();\n\n const handleDelete = useCallback(\n (reminder) => {\n const locContext = getLocContextFor(reminder);\n openConfirmModal({\n body: loc.t(\"reminder:action_delete.confirmBody\", locContext),\n confirmButton: loc.t(\"reminder:action_delete.confirmYes\"),\n }).then((confirmed) => {\n /* istanbul ignore else */\n if (confirmed === true) {\n deleteReminder(\n reminder.id,\n itemUri,\n abortController(true).signal\n )\n .then((success) => {\n if (success) {\n const _reminders = reminders.filter(\n (r) => r.id !== reminder.id\n );\n setReminders(_reminders);\n }\n toastActionResult(\n success === true,\n \"reminder:action_delete\",\n locContext\n );\n return success;\n })\n .catch((error) => {\n console.error(error);\n toastActionResult(\n false,\n \"reminder:action_delete\",\n locContext\n );\n });\n }\n });\n },\n [reminders, abortController, itemUri]\n );\n\n const handleSave = useCallback(\n (reminder, id) => {\n /* istanbul ignore else */\n if (id > 0) {\n const _reminder = {\n ...reminder,\n creator: { ...reminder.creator },\n recipient: { ...reminder.recipient },\n id,\n };\n const _reminders = [...reminders];\n const idx = _reminders.findIndex((r) => r.id === id);\n if (idx > -1) {\n _reminders.splice(idx, 1, reminder);\n } else {\n _reminders.push(_reminder);\n }\n setReminders(_reminders);\n }\n },\n [reminders]\n );\n\n const handleEdit = useCallback(\n (reminder) =>\n CommandActionHandler(action.commandAction.name, {\n ...action.commandAction.props,\n reminder,\n onSave: handleSave,\n }),\n [handleSave, action.commandAction.name, action.commandAction.props]\n );\n\n const handleReadOnly = useCallback(\n (reminder, type) =>\n toastActionResult(\n false,\n `reminder:action_readonly_${type}`,\n getLocContextFor(reminder)\n ),\n []\n );\n\n const state = useAsync(async () => {\n try {\n const reminders = await fetchReminders(\n itemUri,\n abortController(true).signal\n );\n setReminders(reminders);\n } catch (e) {\n console.error(e);\n throw e;\n }\n });\n if (state.loading || state.error) {\n return (\n \n );\n }\n const isLoaded =\n !(state.loading || state.error) && Array.isArray(reminders);\n const hasReminders = isLoaded && reminders.length > 0;\n if (!hasReminders) {\n return
;\n }\n return reminders.map((r) => (\n \n r.isReadOnly ? handleReadOnly(r, \"edit\") : handleEdit(r)\n }\n isEditAllowed={!r.isReadOnly}\n onDelete={() =>\n r.isReadOnly ? handleReadOnly(r, \"delete\") : handleDelete(r)\n }\n />\n ));\n};\n\nItemView_Reminder.displayName = \"ItemViews.Reminder\";\nexport default ItemView_Reminder;\n","import React, { useCallback, useMemo } from \"react\";\nimport ItemActions from \"components/ActionPanel/ItemActions\";\nimport { connect, type Dispatch } from \"react-redux\";\nimport { resetDocFilters, setDocFilterByRef } from \"data/actions\";\nimport * as s from \"data/reducers/selectors\";\nimport {\n GetDefaults,\n GetFilterValueAsString,\n} from \"components/DocListFilterModal/Utils\";\nimport { getLocalizedText } from \"data/utils\";\n\nimport {\n DocListColumnType,\n DocListFilterOperators,\n type DocListFilterRequestDTO,\n} from \"data/types\";\n\ntype Props = {\n onClick: (props: Object) => void,\n itemUri: string,\n action: ItemActionConfig,\n view: ItemActionViewConfig,\n filters: Array,\n dispatch: Dispatch,\n};\n\ntype DocListClickContext = {\n rowIndex: number,\n columnIndex: number,\n itemUri: string,\n};\n\nconst Icons = {\n filterByValue: \"filter\",\n filterAddValue: \"filter\",\n filterRemove: \"eraser\",\n reset: \"xmark\",\n};\n\nconst getActionArgs = (\n actionId: string,\n context: DocListClickContext,\n cols,\n filters,\n rows\n): {} | { col: string, operator: string, value: string } => {\n if (\n actionId === \"reset\" ||\n context.columnIndex == null ||\n context.rowIndex == null ||\n cols == null ||\n cols[context.columnIndex] == null ||\n filters == null\n ) {\n return {};\n }\n\n // find filter reference\n const filter = filters.find(\n (f) => f.name === cols[context.columnIndex].name\n );\n\n /* istanbul ignore if */\n if (filter == null) {\n return {};\n }\n\n // replace \"None\" with \"Equal\"\n let opType = filter.operator;\n // those operators are not supported - will be replaced (if chosen) in _setDocFilter()\n /* istanbul ignore if */\n if (\n [\n DocListFilterOperators.None,\n DocListFilterOperators.Between,\n DocListFilterOperators.NotBetween,\n ].includes(opType)\n )\n opType = DocListFilterOperators.Equals;\n /* istanbul ignore if */\n if ([DocListFilterOperators.DoesNotContain].includes(opType))\n opType = DocListFilterOperators.NotEquals;\n\n // arguments used in i18n.json which are then shown in ContextMenu\n return {\n col: cols[context.columnIndex].caption,\n opType,\n operator: getLocalizedText(\"$folder:action_filter.operators.\" + opType),\n value: GetFilterValueAsString(\n rows[context.rowIndex][context.columnIndex]\n ),\n };\n};\n\nexport const showAction = (\n actionId: string,\n context: DocListClickContext,\n cols,\n filters,\n rows\n): boolean => {\n if (\n context.columnIndex == null ||\n context.rowIndex == null ||\n cols == null ||\n rows == null\n )\n return false;\n\n // always allow resetting filters\n if (actionId === \"reset\") return true;\n\n const col = cols[context.columnIndex];\n\n // no sorting/filtering allowed?\n /* istanbul ignore else */\n if (!col.canSort) return false;\n\n // find filter reference\n const filter = filters.find((f) => f.name === col.name);\n // can we actually have a filter for it?\n /* istanbul ignore else */\n if (filter == null) return false;\n\n // filter already set?\n // TODO filterRemove always displayed!\n const isFilterSet = String(filter.values[0]).length > 0;\n // show filterRemove, but hide the filterAdd options\n if (isFilterSet && actionId === \"filterRemove\") {\n return true;\n } else if (actionId === \"filterRemove\") return false;\n\n // no support for some column types\n /* istanbul ignore else */\n if (\n [\n DocListColumnType.DateTimeValue,\n DocListColumnType.ObjectValue,\n DocListColumnType.DateTimeOffsetValue,\n ].includes(col.type)\n )\n return false;\n\n // check empty value\n /* istanbul ignore if */\n if (\n rows[context.rowIndex] == null ||\n rows[context.rowIndex][context.columnIndex] == null\n )\n return false;\n const value = GetFilterValueAsString(\n rows[context.rowIndex][context.columnIndex]\n );\n /* istanbul ignore if */\n if (String(value).length === 0) return false;\n return true;\n};\n\nexport const ItemView_Filter = ({\n view,\n itemUri,\n columnIndex,\n rowIndex,\n filters,\n cols,\n rows,\n dispatch,\n onAction,\n}: Props) => {\n const context = useMemo(\n (): DocListClickContext => ({\n rowIndex,\n columnIndex,\n itemUri,\n }),\n [rowIndex, columnIndex, itemUri]\n );\n\n const actions = useMemo(\n () =>\n view.actions\n .filter((action) =>\n showAction(action, context, cols, filters, rows)\n )\n .map((action) => ({\n id: action,\n name: getLocalizedText(\n `$doclist_context:actions.${action}`,\n getActionArgs(action, context, cols, filters, rows)\n ),\n icon: Icons[action],\n })),\n [view.actions, context, cols, rows, filters]\n );\n\n const onActionClick = useCallback(\n (action) => {\n switch (action.id) {\n case \"filterByValue\":\n dispatch(setDocFilterByRef(context, true));\n break;\n case \"filterAddValue\":\n dispatch(setDocFilterByRef(context, false));\n break;\n case \"filterRemove\":\n dispatch(\n setDocFilterByRef(\n {\n columnIndex: columnIndex,\n rowIndex: -1, //clear values of this filter\n },\n false\n )\n );\n break;\n case \"reset\":\n dispatch(resetDocFilters());\n break;\n default:\n console.warn(\n `Unknown ActionId ${action.id} will be ignored`\n );\n }\n onAction();\n },\n [dispatch, context, columnIndex, onAction]\n );\n if (rowIndex == null || columnIndex == null || cols == null || rows == null)\n return null;\n return ;\n};\nItemView_Filter.displayName = \"ItemViews.Filter\";\n\n//#region redux\nconst mapStateToProps = /* istanbul ignore next */ (state, ownProps) => {\n let filters = s.docsLayoutFiltersSelector(state);\n const cols = s.docsColsSelector(state);\n const formatId = s.breadcrumbFormatIdSelector(\n state,\n s.currentNameSelector(state)\n );\n /* istanbul ignore else */\n if (filters == null || filters.length === 0) {\n /* istanbul ignore else */\n if (cols != null) {\n filters = GetDefaults(ownProps.itemUri, formatId, cols).filters;\n }\n }\n return {\n filters,\n cols,\n rows: s.docsRowsSelector(state),\n ...ownProps,\n };\n};\n//#endregion\n\nexport default connect(mapStateToProps)(ItemView_Filter);\n","import { useMemo, useCallback } from \"react\";\nimport isEqual from \"lodash/isEqual\";\nimport ItemActions from \"components/ActionPanel/ItemActions\";\nimport { getLocalizedText } from \"data/utils\";\n\nconst Icons = {\n enable: \"toggle-on\",\n disable: \"toggle-off\",\n invert: \"shuffle\",\n selectAll: \"check-double\",\n deselectAll: \"times\",\n};\n\nexport const ItemView_MultiSelection = ({\n multiSelection,\n onAction,\n}: Props) => {\n const {\n multiple,\n enable,\n disable,\n actions: handler,\n activeRows,\n availableRows,\n } = multiSelection || {};\n const actions = useMemo(() => {\n const actions = [];\n if (multiple) {\n actions.push([\"disable\", disable]);\n actions.push([\"invert\", handler.handleInvert]);\n /* istanbul ignore else */\n if (!isEqual(activeRows, availableRows)) {\n actions.push([\"selectAll\", handler.handleSelectAll]);\n }\n /* istanbul ignore else */\n if (Object.keys(activeRows).length > 0) {\n actions.push([\"deselectAll\", handler.handleDeselectAll]);\n }\n } else {\n actions.push([\"enable\", enable]);\n }\n\n return actions.map(([id, action]) => ({\n id,\n name: getLocalizedText(`$multiselection:${id}`),\n icon: Icons[id],\n action,\n }));\n }, [disable, enable, multiple, handler, activeRows, availableRows]);\n\n const onActionClick = useCallback(\n (action) => {\n action.action();\n onAction();\n },\n [onAction]\n );\n if (multiSelection == null) return null;\n return ;\n};\nItemView_MultiSelection.displayName = \"ItemViews.MultiSelection\";\n\nexport default ItemView_MultiSelection;\n","import React from \"react\";\nimport CommandActionHandler from \"components/CommandActions\";\nimport { type ItemActionConfig } from \"data/types\";\n\nimport ItemView_DocList from \"./itemView_docList\";\nimport ItemView_ActivityList from \"./itemView_activityList\";\nimport ItemView_Workflow from \"./itemView_workflow\";\nimport ItemView_Reminder from \"./itemView_reminder\";\nimport ItemView_Filter from \"./itemView_filter\";\nimport ItemView_MultiSelection from \"./itemView_multiSelection\";\n\nconst viewMappings = {\n itemView_docList: ItemView_DocList,\n itemView_activityList: ItemView_ActivityList,\n itemView_workflow: ItemView_Workflow,\n itemView_reminder: ItemView_Reminder,\n itemView_filter: ItemView_Filter,\n itemView_multiSelection: ItemView_MultiSelection,\n};\n\nconst Factory = ({\n action,\n onAction,\n}: {\n action: ItemActionConfig,\n onAction: () => void,\n}) => {\n const componentClass = viewMappings[action.view && action.view.name];\n if (componentClass == null) {\n alert(\n `CommandAction ${action.id} defines an unknown view named ${action.view.name}`\n );\n return null;\n } else {\n let props = { onAction };\n if (\n action.commandAction != null &&\n action.commandAction.props != null\n ) {\n props = Object.assign(props, action.commandAction.props, {\n action: action,\n view: action.view,\n onItemUriAction: (itemUri: string) =>\n CommandActionHandler(\n action.commandAction.name,\n Object.assign({}, action.commandAction.props, {\n itemUri,\n })\n ),\n onClick: (props: Object) =>\n CommandActionHandler(\n action.commandAction.name,\n Object.assign({}, action.commandAction.props, props)\n ),\n });\n } else {\n console.warn(\n `Since action ${action.id} has a view defined ${action.view.name} but no CommandAction defined, no contextProps will be passed on!`\n );\n }\n return React.createElement(componentClass, props);\n }\n};\nFactory.displayName = \"itemViews.Factory\";\nexport default Factory;\n","// @flow\nimport React from \"react\";\nimport Row from \"react-bootstrap/lib/Row\";\nimport ItemAction from \"./ItemAction\";\nimport { type ItemActionConfig } from \"data/types\";\nimport styles from \"./ItemActions.module.css\";\nimport ItemViewFactory from \"components/CommandActions/itemViews/Factory\";\n\ntype Props = {\n /** list of actions to render\n * @type {Array}\n */\n actions: Array,\n /** callback when user runs an action\n * @param {ItemActionConfig} action which action to execute\n */\n onAction: (action: ItemActionConfig) => void,\n};\n\n/**\n * will render a list of itemActions\n */\nconst ItemActions = ({ actions, onAction }: Props) => (\n
\n {actions.map((action: ItemActionConfig, index: number) => (\n \n {action.view ? (\n \n ) : (\n \n )}\n \n ))}\n
\n);\nItemActions.displayName = \"ActionPanel.ItemActions\";\nexport default ItemActions;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"main\":\"Divider_main__bPfiD\",\"textNoHR\":\"Divider_textNoHR__2Zgbo\",\"text\":\"Divider_text__20CvV\",\"icon\":\"Divider_icon__1NQGi\",\"hr\":\"Divider_hr__98RAJ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"strip\":\"itemView_docListGallery_strip__2gPpM\",\"stripInner\":\"itemView_docListGallery_stripInner__1sQTy\",\"thumb\":\"itemView_docListGallery_thumb__2vB-w\",\"nav\":\"itemView_docListGallery_nav__20h1C\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"icon\":\"LockInfo_icon__miP0D\",\"pulse\":\"LockInfo_pulse__1kC-k\",\"unlock\":\"LockInfo_unlock__34SIo\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"top\":\"itemView_workflow_top___CY33\",\"progressBadge\":\"itemView_workflow_progressBadge__2Atpi\",\"wrapper\":\"itemView_workflow_wrapper__nfgH4\",\"actions\":\"itemView_workflow_actions__3_5me\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"SharePrincipal_wrapper__2xzQt\",\"empty\":\"SharePrincipal_empty__2y9BE\",\"row\":\"SharePrincipal_row__36t1C\",\"toolbar\":\"SharePrincipal_toolbar__2JiHI\",\"noBorder\":\"SharePrincipal_noBorder__3hPh5\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"GeoRasterInput_container__1a5g4\",\"inputGroup\":\"GeoRasterInput_inputGroup__3yxK5\",\"buttonsWrapper\":\"GeoRasterInput_buttonsWrapper__1duSy\",\"iconWrapper\":\"GeoRasterInput_iconWrapper__1hLr4\",\"button\":\"GeoRasterInput_button__3NHjt\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"LockInfo_wrapper__2VzoT\",\"aside\":\"LockInfo_aside__TrmP1\",\"avatar\":\"LockInfo_avatar__1uP5x\",\"show\":\"LockInfo_show__1en7j\",\"fadeIn\":\"LockInfo_fadeIn__1KvRB\",\"hide\":\"LockInfo_hide__3Lpts\",\"fadeOut\":\"LockInfo_fadeOut__8JonZ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"SearchScope_wrapper__2lxW5\",\"radio\":\"SearchScope_radio__1NHqF\",\"radio-inline\":\"SearchScope_radio-inline__AAIo7\",\"checkbox\":\"SearchScope_checkbox__1ftQm\",\"checkbox-inline\":\"SearchScope_checkbox-inline__ar-d0\",\"aside\":\"SearchScope_aside__3_fVU\",\"show\":\"SearchScope_show__BOD9T\",\"fadeIn\":\"SearchScope_fadeIn__3jhbw\",\"hide\":\"SearchScope_hide__MP2aV\",\"fadeOut\":\"SearchScope_fadeOut__3gi8N\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"layerContainer\":\"RasterLayer_layerContainer__2ilJQ\",\"arrows\":\"RasterLayer_arrows__jvd97\",\"thumb\":\"RasterLayer_thumb__jbtQN\",\"name\":\"RasterLayer_name__1GZh5\",\"btnDelete\":\"RasterLayer_btnDelete__267PZ\"};","// @flow\n\nimport {\n type ExtraAttributesEmbeddedGridDTO,\n type ExtraAttributeEmbeddedGridColumnDTO,\n type ExtraAttributeDataAuditLogDTO,\n} from \"data/types\";\n\n/**\n * returns the default values for a given grid\n *\n * @param {string} gridName grid name (identifier)\n * @param {any} attributes form attributes\n * @param {string} seqId seqId\n * @returns {Array} default value of related grid row\n */\nexport const getGridRowDefaultValues = (\n gridName: string,\n attributes: any,\n seqId: string | number\n): Array => {\n const grid = getGrid(attributes, gridName);\n const [isNew] = parseSeqId(seqId);\n if (isNew) {\n return grid.columns.map((col, index) =>\n grid.seqIdColumn === index\n ? `${seqId}`\n : attributes.find((attribute) => attribute.name === col.name)\n .value\n );\n }\n return grid.rows.find((row) => row[grid.seqIdColumn] === `${seqId}`);\n};\n\n/**\n * returns isNew and corresponding row index/seqId\n *\n * @param {string | number} seqId seqId to parse\n * @returns {Array} array containing a bool flag \"isNew\" and the designated seqId (isNew = false) or new row index (isNew = true)\n */\nexport const parseSeqId = (seqId: string | number): Array => {\n seqId = parseInt(seqId, 10);\n return [seqId < 0, seqId < 0 ? convertSeqIdToIndex(seqId) : seqId];\n};\n\n/**\n * converts a row index into a seqId\n *\n * @param {number} index row index to convert to seqId\n * @returns {number} seqId\n */\nexport const convertIndexToSeqId = (index: number) => (index + 1) * -1;\n\n/**\n * converts a seqId into a row index\n *\n * @param {number} seqId seqId to convert to row index\n * @returns {number} row index\n */\nexport const convertSeqIdToIndex = (seqId: number) => seqId * -1 - 1;\n\n/**\n * returns Embedded Grid DTO from form attributes by given gridName\n *\n * @param {Array} attributes form attributes\n * @param {string} gridName grid name with form type prefix\n * @returns {ExtraAttributesEmbeddedGridDTO} Embedded Grid DTO\n */\nexport const getGrid = (\n attributes: Array,\n gridName: string\n): ExtraAttributesEmbeddedGridDTO => {\n return attributes.find(\n (attribute) => attribute.name === gridName.split(\".\")[1]\n ).value;\n};\n\n/**\n * maps a grid row to given ExtraAttributeEmbeddedGridColumnDTO names\n *\n * @param {Array} row given row\n * @param {Array} columns grid columns\n * @returns {Object} row values by column name\n */\nexport const mapGridRowToColumns = (\n row: Array,\n columns: Array\n): Object => {\n const result = {};\n columns.forEach(\n (col: ExtraAttributeEmbeddedGridColumnDTO, index: number) => {\n result[col.name] = row[index];\n }\n );\n return result;\n};\n\n/**\n * checks if row is deleted in given auditLog\n *\n * @param {?ExtraAttributeDataAuditLogDTO} auditLog auditLog to check\n * @param {string} seqId row identifier\n * @returns {bool} flag if row by seqId has changed or is new\n */\nexport const isGridRowDeleted = (\n auditLog: ?ExtraAttributeDataAuditLogDTO,\n seqId: string\n): boolean =>\n auditLog &&\n auditLog.deletedIds &&\n auditLog.deletedIds.includes(parseInt(seqId, 10));\n\n/**\n * checks if row is updated changed in given auditLog\n *\n * @param {?ExtraAttributeDataAuditLogDTO} auditLog auditLog to check\n * @param {string} seqId row identifier\n * @returns {bool} flag if row by seqId has changed or is new\n */\nexport const isGridRowUpdated = (\n auditLog: ?ExtraAttributeDataAuditLogDTO,\n seqId: string\n): boolean =>\n auditLog &&\n ((auditLog.updatedRows &&\n Object.prototype.hasOwnProperty.call(auditLog.updatedRows, seqId)) ||\n parseInt(seqId, 10) < 0);\n","//@flow\nimport React from \"react\";\nimport Status from \"./index\";\nimport Constants, { type ConstantsEnum } from \"data/constants\";\nimport styles from \"./Overlay.module.css\";\n\ntype Props = { status: ConstantsEnum, message: string };\nconst Overlay = ({ status, message }: Props) =>\n status !== Constants.OK ? (\n
\n \n
\n ) : null;\nOverlay.displayName = \"Status.Overlay\";\n\nexport default Overlay;\n","// @flow\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport Icons from \"@hs/icons\";\nimport Constants from \"data/constants\";\nimport styles from \"./Status.module.css\";\nimport Overlay from \"./Overlay\";\nimport loc from \"i18next\";\n\n// central UI for status icon\nconst Status = ({\n status,\n ok,\n okStyle,\n inline = false,\n message = \"\",\n error = null,\n}: {\n status: string,\n ok?: string,\n okStyle?: StyleSheet,\n inline?: boolean,\n message: ?string,\n error?: Error,\n}) => {\n switch (status) {\n case Constants.REFRESH:\n case Constants.LOADING:\n return inline ? (\n \n ) : (\n
\n \n
\n );\n case Constants.OK:\n return ok ? (\n \n ) : null;\n case Constants.ERROR:\n if (\n error != null &&\n error.constructor.name === \"ApiNetworkOfflineError\"\n ) {\n return inline ? (\n \n ) : (\n
\n {loc.t(\"offline.pretty.msg\")}\n
\n );\n }\n //fallthrough\n default:\n return inline ? (\n \n ) : (\n
\n \n {message && (\n <>\n
\n {message}\n \n )}\n
\n );\n }\n};\n\nStatus.Overlay = Overlay;\n\nStatus.propTypes = {\n status: PropTypes.oneOf([\n Constants.NONE,\n Constants.LOADING,\n Constants.ERROR,\n Constants.OK,\n Constants.REFRESH,\n ]).isRequired,\n ok: PropTypes.string,\n okStyle: PropTypes.object,\n inline: PropTypes.bool,\n message: PropTypes.string,\n};\n\nexport default Status;\n","export const PickerAction = {\n Open: \"picker.open\",\n Select: \"picker.select\",\n Cancel: \"picker.cancel\",\n};\n\nexport const DefaultAction = {\n Browse: \"browse\",\n Search: \"search\",\n GeoInfo: \"geo.info\",\n GeoInfoLegacy: \"geo-info\",\n Exec: \"exec\",\n Picker: PickerAction,\n};\n","export const CustomUploadAction = {\n Ready: \"custom.upload.ready\",\n Language: \"custom.upload.language\",\n File: \"custom.upload.file\",\n};\n","export const ArrowNavigationAction = {\r\n Ready: \"mini.doc.ready\",\r\n Load: \"mini.doc.load\",\r\n Reload: \"mini.doc.reload\",\r\n Paginate: \"mini.doc.paginate\",\r\n SetIndex: \"mini.doc.setIndex\",\r\n};\r\n","export const PdfHighlightAction = {\n Load: \"pdf.highlight.load\",\n Upsert: \"pdf.highlight.upsert\",\n Highlight: \"pdf.highlight.highlight\",\n Delete: \"pdf.highlight.delete\",\n Select: \"pdf.highlight.select\",\n};\n","export const PdfSignatureAction = \"pdf.signature\";\n","export const PdfPrintAction = \"pdf.print\";\n","export const ModalAction = {\n Close: \"modal.close\",\n CloseLegacy: \"close-modal\", //Legacy notation, keep for\n};\n","export const NotificationAction = {\n Show: \"notification.center.show\",\n Hide: \"notification.center.hide\",\n Clear: \"notification.clear\",\n Status: \"notification.status\",\n Upsert: \"notification.upsert\",\n Delete: \"notification.delete\",\n Toast: \"notification.toast\",\n};\n","export const PrintAction = {\n Ready: \"print.ready\",\n Failed: \"print.failed\",\n Prepare: \"print.prepare\",\n Print: \"print.trigger\",\n};\n","export const TogglesAction = {\n Get: \"toggles.get\",\n Set: \"toggles.set\",\n};\n","export const ItemAction = {\n Created: \"item.created\",\n Modified: \"item.modified\",\n Deleted: \"item.deleted\",\n};\n","import { DefaultAction, PickerAction } from \"./Default\";\nimport { CustomUploadAction } from \"./CustomUpload\";\nimport { ArrowNavigationAction } from \"./ArrowNavigation\";\nimport { PdfHighlightAction } from \"./PdfHighlight\";\nimport { PdfSignatureAction } from \"./PdfSignature\";\nimport { PdfPrintAction } from \"./PdfPrint\";\nimport { ModalAction } from \"./Modal\";\nimport { NotificationAction } from \"./Notification\";\nimport { PrintAction } from \"./Print\";\nimport { TogglesAction } from \"./Toggles\";\nimport { ItemAction } from \"./Item\";\nimport { HtmlViewerAction } from \"@hs/html-viewer\";\n\nDefaultAction.Toast = NotificationAction.Toast;\n\nexport {\n DefaultAction,\n PickerAction,\n CustomUploadAction,\n ArrowNavigationAction,\n PdfHighlightAction,\n PdfSignatureAction,\n PdfPrintAction,\n ModalAction,\n NotificationAction,\n PrintAction,\n TogglesAction,\n ItemAction,\n HtmlViewerAction,\n};\n\nexport type DefaultActionEnum = $Values;\nexport type PickerActionEnum = $Values;\nexport type CustomUploadActionEnum = $Values;\nexport type PdfHighlightActionEnum = $Values;\nexport type ArrowNavigationActionEnum = $Values;\nexport type ModalActionEnum = $Values;\nexport type NotificationActionEnum = $Values;\nexport type PrintActionEnum = $Values;\nexport type TogglesActionEnum = $Values;\nexport type ItemActionEnum = $Values;\nexport type HtmlViewerActionEnum = $Values;\n","import actionTypes from \"data/actions/actionTypes\";\nimport { produce } from \"immer\";\n\n// state.toggles {}\n// ._selected[] of string toggle.value\n// .counts {} of string toggle.value=toggle.count\n\nexport function getSelected(toggles) {\n let result = [];\n toggles\n .filter((toggle) => toggle.isSelected)\n .forEach((toggle) => result.push(toggle.value));\n return result;\n}\n\nconst togglesReducer = (state = {}, action) =>\n produce(state, (draft) => {\n const { name, toggles, counts, status } = action?.payload || {};\n switch (action.type) {\n case actionTypes.TOGGLES_PERSIST: {\n /* istanbul ignore else */\n if (draft[name] == null) {\n draft[name] = {};\n }\n draft[name].persisted = true;\n }\n // eslint-disable-next-line no-fallthrough\n case actionTypes.TOGGLES_CHANGE: {\n if (draft[name] == null) {\n draft[name] = {};\n }\n draft[name]._selected = getSelected(toggles);\n break;\n }\n case actionTypes.TOGGLES_UPDATECOUNTER: {\n if (draft[name] == null) {\n draft[name] = {};\n }\n if (draft[name].counts == null) {\n draft[name].counts = {};\n }\n if (status != null && draft[name].status == null) {\n draft[name].status = {};\n }\n Object.keys(action.payload.counts).forEach((key) => {\n draft[name].counts[key] = counts[key];\n if (status != null) {\n draft[name].status[key] = status[key];\n }\n });\n break;\n }\n /* istanbul ignore next */\n case actionTypes.PERSIST_PURGE:\n return {};\n default:\n return draft;\n }\n });\n\nexport default togglesReducer;\n\nexport const selectedTogglesSelector = (state: Object, viewName: string) =>\n state.toggles?.[viewName]?.[\"_selected\"] ?? undefined; // used by TogglesHandler to load initialState\nexport const togglesPersistedSelector = (state: Object, viewName: string) =>\n state.toggles?.[viewName]?.[\"persisted\"] ?? false; // used by currentItemSaga to load initialState\n","import actionTypes from \"data/actions/actionTypes\";\nimport Constants from \"data/constants\";\nimport { produce } from \"immer\";\n\nconst initialState = {\n cards: [],\n status: Constants.NONE,\n};\n\nconst cardsReducer = (state = initialState, action) =>\n produce(state, (draft) => {\n const { payload, type } = action;\n switch (type) {\n case actionTypes.CARDS_FETCH_ENTITY_REQUESTED:\n draft.status = payload.status;\n break;\n case actionTypes.CARDS_FETCH_REQUESTED:\n case actionTypes.CARDS_FETCH_RESULT:\n return { ...state, ...payload };\n case actionTypes.CARDS_FETCH_ENTITY_RESULT:\n const { status, cards, cardTypes, cardItemTypes } = payload;\n const cardsToAdd = cards.filter(\n (card) =>\n !(draft.cards || []).find(\n (oldCard) => oldCard.id === card.id\n )\n );\n const cardsToUpdate = (draft.cards || [])\n .map(\n (oldCard) =>\n cards.find((card) => oldCard.id === card.id) ??\n ((cardTypes?.includes(oldCard.type) ?? true) &&\n (cardItemTypes?.includes(oldCard.itemtype) ?? true)\n ? null\n : oldCard)\n )\n .filter((card) => !!card);\n draft.status = status;\n draft.cards = [...cardsToAdd, ...cardsToUpdate];\n break;\n /* istanbul ignore next */\n case actionTypes.PERSIST_PURGE:\n return initialState;\n default:\n return state;\n }\n });\n\nexport default cardsReducer;\n\nexport const cardsStatusSelector = (state: Object) => state.cards.status;\nexport const cardsCardsSelector = (state: Object) => state.cards.cards;\n","import actionTypes from \"data/actions/actionTypes\";\nimport Constants from \"data/constants\";\nimport { produce } from \"immer\";\n\nconst initialState = {};\n\nconst thumbnailsReducer = (state = initialState, action) => {\n switch (action.type) {\n case actionTypes.CURRENTITEM_SET:\n /* istanbul ignore next */\n if (\n action.payload.name !== \"docmodal\" &&\n action.payload.name !== \"itemflows\" &&\n action.payload.itemUri !== state.itemUri\n )\n return { ...initialState };\n else return state;\n\n case actionTypes.DOCS_THUMBNAIL_REQUEST:\n return produce(state, (draft) => {\n draft[action.payload.itemUri] = {\n status: Constants.LOADING,\n };\n });\n\n case actionTypes.DOCS_THUMBNAIL_RESULT:\n return produce(state, (draft) => {\n draft[action.payload.itemUri] = {\n status: action.payload.status,\n result: action.payload.result,\n };\n });\n\n /* istanbul ignore next */\n case actionTypes.PERSIST_PURGE:\n return initialState;\n default:\n return state;\n }\n};\n\nexport default thumbnailsReducer;\n\nexport const thumbnailStatusSelector = (state: Object, itemUri: string) =>\n state.thumbnails[itemUri] != null\n ? state.thumbnails[itemUri].status\n : Constants.NONE;\nexport const thumbnailResultSelector = (state: Object, itemUri: string) =>\n state.thumbnails[itemUri] != null\n ? state.thumbnails[itemUri].result\n : undefined;\n","import actionTypes from \"data/actions/actionTypes\";\nimport Constants from \"data/constants\";\n\nconst initialState = {\n favorites: [],\n status: Constants.NONE,\n};\n\nconst favoritesReducer = (state = initialState, action) => {\n switch (action.type) {\n case actionTypes.FAVORITES_FETCH_REQUEST:\n return { ...state, ...action.payload };\n case actionTypes.FAVORITES_FETCH_RESULT:\n return { ...state, ...action.payload };\n\n // first time loaded as part of the User object\n case actionTypes.USER_FETCH_RESULT:\n return {\n ...state,\n status: Constants.OK,\n favorites: action.payload.favorites,\n };\n\n /* istanbul ignore next */\n case actionTypes.PERSIST_PURGE:\n return initialState;\n default:\n return state;\n }\n};\n\nexport default favoritesReducer;\n\nexport const favoritesStatusSelector = (state: Object) =>\n state.favorites.status;\nexport const favoritesFavoritesSelector = (state: Object) =>\n state.favorites.favorites;\n","import actionTypes from \"../actions/actionTypes\";\nimport { type CommandActionRequestDTO } from \"data/types\";\nimport { produce } from \"immer\";\n\nexport const initialState: Array = [];\n\nconst commandActionReducer = (state = initialState, action) =>\n produce(state, (draft) => {\n const { payload, type } = action;\n const i = state.findIndex((i) => i.guid === payload?.guid);\n\n switch (type) {\n case actionTypes.COMMANDACTION_REQUEST:\n draft.push(payload);\n break;\n case actionTypes.COMMANDACTION_REMOVE:\n if (i > -1) draft.splice(i, 1);\n else\n console.warn(\n `Not found. Cannot delete CommandAction ${payload.guid}`\n );\n break;\n case actionTypes.COMMANDACTION_LOG:\n if (i > -1) {\n if (!Array.isArray(draft[i].log)) draft[i].log = [];\n draft[i].log.unshift(payload.log);\n } else\n console.warn(\n `Not found. Cannot log to CommandAction ${payload.guid}`\n );\n break;\n case actionTypes.COMMANDACTION_STATUS:\n if (i > -1)\n draft[i].status = payload.replace\n ? payload.status\n : draft[i].status | payload.status;\n else\n console.warn(\n `Not found. Cannot update status on CommandAction ${payload.guid}`\n );\n break;\n case actionTypes.COMMANDACTION_ITEM_STATUS:\n if (i === -1) {\n console.warn(\n `GUID not found. Cannot update item status on CommandAction ${payload.guid}`\n );\n return;\n }\n const j = draft[i].items.findIndex(\n (i) =>\n i.itemUri === payload?.itemUri ||\n (i.itemUri == null && payload?.itemUri == null)\n );\n if (j > -1) {\n draft[i].items[j].status = payload.status;\n } else\n console.warn(\n `Item not found. Cannot update item status on CommandAction ${payload.guid}`\n );\n break;\n /* istanbul ignore next */\n case actionTypes.PERSIST_PURGE:\n return initialState;\n default:\n break;\n }\n });\n\nexport default commandActionReducer;\n\nexport const commandActionRequestSelector = (\n state: Any,\n guid: GUID = null\n): Array =>\n state.commandAction?.filter((i) => guid == null || i.guid === guid) ?? [];\n\nexport const commandActionRequestItemSelector = (\n state: Any,\n guid: GUID,\n itemUri: string = null\n): Array =>\n commandActionRequestSelector(state, guid)?.[0]?.items?.filter(\n (i) => itemUri == null || i.itemUri === itemUri\n ) ?? [];\n","// @flow\nimport React, { useEffect, useMemo } from \"react\";\nimport { isFeatureOn, Feature } from \"data/constants\";\nimport { Dashboard } from \"@uppy/react\";\nimport \"@uppy/core/dist/style.min.css\";\nimport \"@uppy/dashboard/dist/style.min.css\";\nimport \"@uppy/drag-drop/dist/style.min.css\";\nimport \"@uppy/status-bar/dist/style.min.css\";\nimport \"@uppy/webcam/dist/style.min.css\";\nimport \"./index.css\";\n\ntype Props = {\n /** uppy instance reference */\n uppy: Object,\n /** whether to immediately open File Browse dialog */\n openBrowseDialog?: boolean,\n /** whether to immediately open Camera dialog */\n openCamera?: boolean,\n /** callback when user wants to add a file\n * set to replace uppy's dashboard addFilePanel\n */\n onAddFile?: () => void,\n};\n\nconst UploadSelection = ({\n uppy,\n openBrowseDialog,\n openCamera,\n onAddFile,\n}: Props) => {\n useEffect(() => {\n const plugin = uppy.getPlugin(\"react:Dashboard\");\n /* istanbul ignore else */\n if (plugin) plugin.hideAllPanels();\n if (openBrowseDialog === true) {\n // browse\n var e = document.getElementsByClassName(\"uppy-Dashboard-input\");\n /* istanbul ignore else */\n if (e.length === 1) e[0].click();\n } else if (openCamera === true) {\n /* istanbul ignore else */\n if (plugin) plugin.showPanel(\"Webcam\");\n }\n if (plugin && onAddFile)\n plugin.toggleAddFilesPanel = onAddFile.bind(this);\n }, [uppy, openBrowseDialog, openCamera, onAddFile]);\n\n const plugins = useMemo(() => {\n const plugins = [\"Webcam\"];\n /* istanbul ignore next */\n if (isFeatureOn(Feature.uppyLexmark)) {\n plugins.push(\"Lexmark\");\n }\n return plugins;\n }, []);\n\n return (\n \n );\n};\nexport default UploadSelection;\n","// @flow\nimport React from \"react\";\nimport Icons from \"@hs/icons\";\nimport loc from \"i18next\";\nimport styles from \"./LockInfo.module.css\";\n\nexport const LockInfoOn = ({ date }) => (\n
\n \n {loc.t(\"common:act.changes_locked\", { date })}\n
\n);\n\nexport const UnlockedOn = ({ date }) => (\n
\n \n {loc.t(\"common:act.changes_unlocked\", { date })}\n
\n);\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"title\":\"ItemActionPanel_title__3xKil\",\"icon\":\"ItemActionPanel_icon__2pJM7\",\"wrapper\":\"ItemActionPanel_wrapper__1Wsxv\",\"bc\":\"ItemActionPanel_bc__3rbA-\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"filter\":\"TreeFilter_filter__nmE69\",\"toggleGroup\":\"TreeFilter_toggleGroup__3y1jK\",\"si\":\"TreeFilter_si__HWo-O\",\"buttonDeep\":\"TreeFilter_buttonDeep__EqZpA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"list\":\"ExternalUser_list__3MyIf\",\"label\":\"ExternalUser_label__1SAIl\",\"name\":\"ExternalUser_name__3MJqW\",\"action\":\"ExternalUser_action__ULTs0\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"LocalContactInfo_wrapper__2fqCp\",\"actions\":\"LocalContactInfo_actions__3qo-A\",\"btn\":\"LocalContactInfo_btn__3RVwf\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"inputGroup\":\"GeoAreaInput_inputGroup__3SKXn\",\"buttonsWrapper\":\"GeoAreaInput_buttonsWrapper__3_XFG\",\"iconWrapper\":\"GeoAreaInput_iconWrapper__2_968\",\"button\":\"GeoAreaInput_button__PfwfE\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"Workflow_wrapper__2Ve0s\",\"aside\":\"Workflow_aside__2ZYQa\",\"show\":\"Workflow_show__gYs1u\",\"fadeIn\":\"Workflow_fadeIn__3oP8a\",\"hide\":\"Workflow_hide__3Lsr-\",\"fadeOut\":\"Workflow_fadeOut__1lVXM\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"close\":\"FormModal_close__2qKWP\",\"formmodal\":\"FormModal_formmodal__nKPGO\",\"notAuthorizedWrapper\":\"FormModal_notAuthorizedWrapper__22m8U\",\"notAuthorizedIcon\":\"FormModal_notAuthorizedIcon__2Lb9B\"};","// @flow\nimport React, { PureComponent, type Node } from \"react\";\nimport uppy from \"data/uppy\";\nimport { toastActionResult } from \"data/toast\";\nimport { getClassNames } from \"data/utils\";\nimport isDragDropSupported from \"@uppy/utils/lib/isDragDropSupported\";\nimport getDroppedFiles from \"@uppy/utils/lib/getDroppedFiles\";\nimport \"./index.css\";\n\nexport type DroppedFile = {\n source: string,\n name: string,\n type: string,\n data: Object,\n};\n\ntype Props = {\n /** whether to allow dropping file on these children */\n allowDrop: boolean,\n /** called after files have been dropped\n * @param {Array} files dropped files ready for uppy - only if @see {addFilesToUppy} is false!\n */\n onDrop: (files: Array) => void,\n /** React node(s) to render */\n children: ?Node,\n /** HTML id attribute */\n id: ?string,\n /** HTML style attribute */\n style: ?string,\n /** HTML class attribute */\n className: ?string,\n /** Component to apply the FileDropHandler (must be HTML Tag string or Component that forwards the filedrop ref ) */\n component: ?string | PureComponent,\n /** whether to automatically add files to global uppy instance */\n addFilesToUppy?: boolean,\n /** message to show while user is dragging over the targetEl dropzone */\n dragOverText?: string,\n /** relative path */\n relativePath?: string,\n};\n\ntype State = {\n isDragover: boolean,\n isDrop: boolean,\n};\n\n/**\n * This will watch @see {targetEl} as a dropzone and process the files (by adding them to uppy)\n * and finally calling the onDrop callback\n * @export\n */\nexport default class FileDropHandler extends PureComponent {\n _dropzone: ?React$ElementRef;\n _timeout: ?TimeoutID;\n _isMounted: boolean;\n\n static defaultProps = {\n addFilesToUppy: false,\n relativePath: null,\n };\n\n constructor(props) {\n super(props);\n this._dropzone = React.createRef();\n this.state = {\n isDragover: false,\n };\n }\n\n componentDidMount = () => {\n this._isMounted = true;\n this._registerHandler();\n };\n\n componentWillUnmount = () => {\n this._isMounted = false;\n this._unregisterHandler();\n };\n\n componentDidUpdate(prevProps: Props) {\n // allowDrop changed\n /* istanbul ignore else */\n if (prevProps.allowDrop !== this.props.allowDrop) {\n if (this.props.allowDrop === false) {\n this._unregisterHandler();\n } else {\n this._registerHandler();\n }\n }\n }\n\n _registerHandler = () => {\n if (this.props.allowDrop !== true || !isDragDropSupported()) {\n return;\n }\n this._dropzone.current.addEventListener(\"drop\", this.onDrop);\n this._dropzone.current.addEventListener(\"dragover\", this.onDragOver);\n this._dropzone.current.addEventListener(\"dragleave\", this.onDragLeave);\n };\n\n _unregisterHandler = () => {\n this._dropzone.current.removeEventListener(\"drop\", this.onDrop);\n this._dropzone.current.removeEventListener(\"dragover\", this.onDragOver);\n this._dropzone.current.removeEventListener(\n \"dragleave\",\n this.onDragLeave\n );\n clearTimeout(this._timeout);\n };\n\n onDrop = (event) => {\n event.preventDefault();\n event.stopPropagation();\n event.dataTransfer.dropEffect = \"copy\";\n\n if (!this.isFileDrag(event)) {\n toastActionResult(false, \"action_drop\");\n return;\n }\n\n getDroppedFiles(event.dataTransfer).then((files) => {\n let addedCount = 0;\n const filesDTO = files.map((data) => {\n const fileDTO = {\n source: \"FileDropHandler\",\n name: data.name,\n type: data.type,\n data,\n meta: {\n name: data.name,\n relativePath: this.props.relativePath,\n },\n };\n\n /* istanbul ignore else */\n if (this.props.addFilesToUppy)\n try {\n uppy.addFile(fileDTO);\n addedCount++;\n } catch (err) {\n /* istanbul ignore next */\n if (!err.isRestriction) {\n uppy.log(err);\n }\n }\n else addedCount++;\n return fileDTO;\n });\n // only continue if any pending uploads remain\n /* istanbul ignore else */\n if (addedCount > 0) {\n /* istanbul ignore else */\n if (typeof this.props.onDrop === \"function\") {\n this.props.onDrop(filesDTO);\n }\n }\n this.onDragLeave(event);\n });\n };\n\n isFileDrag = (event) =>\n event &&\n event.dataTransfer &&\n event.dataTransfer.types &&\n [...event.dataTransfer.types].includes(\"Files\");\n\n onDragOver = (event) => {\n event.preventDefault();\n event.stopPropagation();\n /* istanbul ignore else */\n if (this._isMounted && this.isFileDrag(event))\n this.setState({\n isDragover: true,\n });\n clearTimeout(this._timeout);\n };\n\n onDragLeave = (event) => {\n event.preventDefault();\n event.stopPropagation();\n this._timeout = setTimeout(this._timedDragLeave, 100);\n };\n\n /** Delays firing of dragleave on child dragenter */\n _timedDragLeave = () =>\n this._isMounted && this.setState({ isDragover: false });\n\n render = () => {\n const {\n style,\n id,\n component: DropHandler = \"div\",\n dragOverText,\n children = null,\n relativePath,\n ...props\n } = this.props;\n let {\n className = \"\",\n allowDrop,\n onDrop,\n addFilesToUppy,\n ...componentProps\n } = props;\n className = getClassNames(\n className,\n this.state.isDragover ? \"drag\" : \"\"\n );\n return (\n \n {this.state.isDragover && (\n {this.props.dragOverText}\n )}\n {children}\n \n );\n };\n}\n","import React, { useEffect } from \"react\";\nimport { usePrevious } from \"hooks\";\nimport withItemContext from \"containers/ItemContext\";\n\ntype Props = {\n itemUri: string,\n // provide effects\n effects: any,\n children: any,\n};\n\nexport const ItemContextProvider = ({ children, effects, ...props }: Props) => {\n const prevProps = usePrevious(props);\n useEffect(() => {\n if (!prevProps || !effects) return;\n Object.keys(effects).forEach((key) => {\n const prevProp = prevProps[key];\n const prop = props[key];\n if (prevProp === prop) return;\n effects[key](prop, props);\n });\n }, [prevProps, props, effects]);\n return typeof children === \"function\" ? (\n <>{children(props)}\n ) : children ? (\n <>{children}\n ) : null;\n};\n\nexport default withItemContext({ asProps: true })(ItemContextProvider);\n","import { isHandheld } from \"data/bowser\";\n\nconst GridList = ({ node, isActive, isHovered }) => {\n const config = {\n outer: \".ReactVirtualized__Grid\",\n inner: \".ReactVirtualized__Grid__innerScrollContainer\",\n };\n const outer = node?.closest(config.outer);\n const inner = node?.closest(config.inner);\n const rect = {\n current: node?.getBoundingClientRect(),\n outer: outer?.getBoundingClientRect(),\n inner: inner?.getBoundingClientRect(),\n };\n const rgb = isActive\n ? \"0,152,170\"\n : isHovered\n ? \"245,245,245\"\n : \"255,255,255\";\n const borderColor = isActive\n ? `rgb(${rgb})`\n : isHovered\n ? \"#ededed\"\n : \"#ededed\";\n const scrollbarWidth = !isHandheld() ? 17 : 0;\n const scrollbarHeight =\n !isHandheld() && rect.outer?.width < rect.inner?.width ? 16 : 0;\n const style = {\n position: \"absolute\",\n transform: \"translateX(-100%)\",\n zIndex: 99,\n // Scroll container\n top: rect.current?.y + 1 - (rect.outer?.y - outer?.scrollTop),\n left:\n rect.outer?.width < rect.inner?.width + scrollbarWidth\n ? rect.outer?.width +\n outer?.scrollLeft -\n (rect.outer?.height - scrollbarHeight < rect.inner?.height\n ? scrollbarWidth\n : 0)\n : rect.inner?.width,\n // Root\n // top: rect.current?.y + 1,\n // left:\n // rect.outer?.x +\n // (rect.outer?.width < rect.inner?.width\n // ? rect.outer?.width -\n // (rect.outer?.height < rect.inner?.height && !isHandheld()\n // ? 17\n // : 0)\n // : rect.inner?.width),\n minHeight: 40,\n color: isActive ? \"white\" : \"black\",\n // Box Layout\n /*minWidth: 37,\n background: `rgb(${rgb})`,\n borderLeft: `1px solid ${borderColor}`,\n borderBottom: `1px solid ${borderColor}`,*/\n // Gradient Layout\n minWidth: 42,\n justifyContent: \"flex-end\",\n background: `linear-gradient(90deg, rgba(${rgb},0) 0%, rgba(${rgb},1) 50%)`,\n };\n if (isHandheld()) {\n style.transform = \"translate(-100%, -1px) translateX(-1px)\";\n style.minWidth = undefined;\n style.background = `rgb(${rgb})`;\n style.borderLeft = `1px solid ${borderColor}`;\n style.borderBottom = `1px solid ${borderColor}`;\n style.minHeight = 42;\n }\n return style;\n};\n\nconst List = ({ node, isActive, isHovered }) => {\n return {\n position: \"absolute\",\n transform: \"translateX(-100%)\",\n zIndex: 99,\n top: 1,\n left: \"100%\",\n color: isActive ? \"white\" : \"black\",\n minHeight: 32,\n };\n};\n\nconst StickyToggleStyle = {\n List,\n GridList,\n};\nexport default StickyToggleStyle;\n","export const removeSpaces = (text) => {\n return typeof text === \"string\" ? text.replace(/ /g, \"\") : text;\n};\n","// @flow\nimport React, { useCallback, useContext } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { LinkContainer } from \"react-router-bootstrap\";\nimport Breadcrumb from \"react-bootstrap/lib/Breadcrumb\";\nimport { getRoute } from \"components/ItemUriLink\";\nimport Icons from \"@hs/icons\";\nimport loc from \"i18next\";\nimport { getLocalizedText } from \"data/utils\";\nimport { MultiSelectionContext } from \"data/context\";\n\n/* istanbul ignore next */\nfunction partTitle(\n text: string,\n itemUri: string,\n isLast: boolean,\n bctext: string,\n isDoc: boolean\n): string {\n return isDoc && isLast\n ? loc.t(\"breadcrumb.titleDoc\", { text })\n : isLast\n ? bctext\n : loc.t(\"breadcrumb.title\", { text });\n}\n\ntype Props = {\n /** Breadcrumb as Text (shown in Tooltip) */\n bctext?: string,\n /** font-awesome icon to display before text */\n symbolName?: string,\n /** part name */\n text: string,\n /** part itemUri */\n itemUri: string,\n /** whether this is the last part */\n isLast: boolean,\n /** CSS styles to apply */\n style?: StyleSheet,\n /** CSS classname to apply */\n className?: string,\n /** part index */\n index: number,\n /** calback when width of part has been measured\n * @param {number} index index of part\n * @param {number} width pixel width of rendered part\n */\n onMeasured?: (index: number, width: number) => void,\n /** whether part should be rendered as readonly (no navigation) */\n isReadonly: boolean,\n /** optional onClick instead of using history.push */\n onClick?: (itemUri: string) => void,\n /** optional isDoc flag, defaults to false */\n isDoc?: boolean,\n};\n\nexport const BreadcrumbPart = ({\n bctext,\n symbolName,\n text,\n itemUri,\n isLast,\n style,\n className,\n index,\n onMeasured,\n isReadonly,\n onClick,\n isDoc = false,\n}: Props) => {\n /* istanbul ignore next */\n const { disable } = useContext(MultiSelectionContext) || {};\n const measureWidth = useCallback(\n (ref: Breadcrumb.Item) => {\n const bi: Breadcrumb.Item = ReactDOM.findDOMNode(ref);\n /* istanbul ignore else */\n if (bi != null && onMeasured) onMeasured(index, bi.clientWidth + 4);\n },\n [index, onMeasured]\n );\n const onPartClick = useCallback(\n (e, itemUri: string) => {\n // no link on last part\n if (isLast) {\n e.preventDefault();\n return;\n }\n // if onclick defined avoid history.push\n if (typeof onClick === \"function\") {\n e.preventDefault();\n onClick(itemUri);\n }\n // always disable multiselection on click\n if (typeof disable === \"function\") disable();\n // use history.push to load itemUri\n return null;\n },\n [onClick, isLast, disable]\n );\n\n const localizedText = text.startsWith(\"$folder:\")\n ? getLocalizedText(text)\n : text;\n\n return (\n ref && measureWidth(ref)}\n active={isLast || isReadonly}\n style={style}\n className={className}\n data-test={`breadCrumb${isReadonly ? \"Disabled\" : \"Enabled\"}`}\n >\n {isReadonly ? (\n \n {symbolName ? (\n \n ) : (\n localizedText\n )}\n \n ) : (\n onPartClick(e, itemUri)}\n >\n \n {symbolName ? (\n \n ) : (\n localizedText\n )}\n \n \n )}\n \n );\n};\n\nBreadcrumbPart.displayName = \"BreadcrumbPart\";\nexport default BreadcrumbPart;\n","// @flow\nimport React from \"react\";\nimport Status from \"components/Status\";\nimport loc from \"i18next\";\n\ntype Props = {\n /** whether marked as favorite */\n isFav?: boolean,\n /** fetch processing status */\n favStatus?: string,\n /** callback when favorite icon clicked */\n onClick: () => void,\n};\n\nconst BreadcrumbFavorite = ({ isFav, favStatus, onClick }: Props) => {\n if (isFav) {\n return (\n \n \n \n );\n } else {\n return (\n \n \n \n );\n }\n};\nBreadcrumbFavorite.displayName = \"BreadcrumbFavorite\";\n\nexport default BreadcrumbFavorite;\n","// @flow\nimport React, { useState, useCallback } from \"react\";\nimport BreadcrumbPart from \"./BreadcrumbPart\";\nimport BreadcrumbFavorite from \"./BreadcrumbFavorite\";\nimport SiteSelect from \"components/SiteSelect\";\nimport { type SiteTypeEnum, type BreadcrumbPartDTO } from \"data/types\";\nimport {\n maybeHandleSiteName,\n maybeLocalizeBreadcrumb,\n getClassNames,\n} from \"data/utils\";\nimport \"./index.css\";\nimport loc from \"i18next\";\nimport Icons from \"@hs/icons\";\nimport Badge from \"react-bootstrap/lib/Badge\";\nimport styles from \"./Breadcrumb.module.css\";\n\ntype Props = {\n /** whole breadcrumb in text */\n text?: string,\n /** siteType */\n siteType?: SiteTypeEnum,\n /** optional custom icon */\n icon?: string,\n /** optional custom icon color*/\n color?: string,\n /** all part objects making up breadcrumb */\n parts: Array,\n /** current version */\n version?: number,\n /** whether marked as favorite */\n isFav?: boolean,\n /** whether this item is favorable */\n isFavorable?: boolean,\n /** fetch processing status */\n favStatus?: string,\n /** callback when favorite icon clicked */\n favOnClick?: () => void,\n /** optional additional CSS style */\n style?: StyleSheet,\n /** optional additional CSS class to apply */\n className?: string,\n /** whether last breadcrumb part should be active */\n leafActive?: boolean,\n /** callback when UI measured length of rendered breadcrumb */\n onMeasured: Function,\n /** which parts in the breadcrumb to show (depending on rendering size and screen width) */\n showParts: Array,\n /** how many parts of the breadcrumb are actually hidden (depending on rendering size and screen width) */\n hiddenCount: number,\n /** whether user is allowed to navigate through breadcrumb (and hide favorite option) */\n isReadonly: boolean,\n /** scope breadcrumb to show parts only starting the specified level number */\n scopeFromLevel: number,\n /** optional breadcrumbPart click event instead of history.push */\n onPartClick?: (itemUri: string) => void,\n};\n\nconst MyBreadcrumb = React.forwardRef(\n (\n {\n text,\n siteType,\n icon,\n color,\n isDoc,\n parts,\n version,\n isFav = false,\n favStatus,\n favOnClick,\n style,\n className,\n leafActive = false,\n onMeasured,\n showParts,\n hiddenCount,\n isReadonly = false,\n isFavorable = true,\n canChangeSite,\n scopeFromLevel = -1,\n onPartClick,\n }: Props,\n ref\n ) => {\n const [showChangeSiteType, setShowChangeSiteType] = useState(false);\n const toggleChangeSiteType = useCallback(\n () => canChangeSite && setShowChangeSiteType((show) => !show),\n [canChangeSite]\n );\n const handleSiteChange = useCallback(\n (itemUri) => {\n /* istanbul ignore else */\n if (typeof onPartClick === \"function\") onPartClick(itemUri);\n setShowChangeSiteType(false);\n },\n [onPartClick]\n );\n return (\n \n {siteType &&\n // !isReadonly &&\n isFavorable &&\n scopeFromLevel <= 0 &&\n typeof favOnClick === \"function\" && (\n \n )}\n {parts &&\n ((hiddenCount > 0 &&\n parts.length > 1 &&\n hiddenCount < showParts.length - 1) ||\n parts.length === 1 ||\n hiddenCount === 0) &&\n siteType &&\n \" \"}\n {parts &&\n ((hiddenCount > 0 &&\n parts.length > 1 &&\n hiddenCount < showParts.length - 1) ||\n parts.length === 1 ||\n hiddenCount === 0 ||\n isReadonly) &&\n siteType &&\n !showChangeSiteType && (\n \n )}{\" \"}\n {parts &&\n siteType &&\n parts.length === 1 &&\n !showChangeSiteType && (\n \n )}\n {parts && showChangeSiteType && (\n \n )}\n {parts &&\n parts.length > 1 &&\n !isReadonly &&\n hiddenCount > 0 &&\n (hiddenCount === showParts.length - 1 ||\n (scopeFromLevel > 0 &&\n hiddenCount ===\n showParts.length - scopeFromLevel - 1)) && (\n \n )}\n {parts &&\n parts.length > 1 &&\n hiddenCount > 0 &&\n hiddenCount < showParts.length - 1 && (\n \n ...\n \n )}\n {parts &&\n parts.length > 1 &&\n parts.map((part, index) => {\n if (index === 0 && showChangeSiteType) return null;\n if (showParts.length > 0 && !showParts[index])\n return null;\n if (index < scopeFromLevel) return null;\n return (\n \n );\n })}\n {parts && parts.length > 1 && version > 0 && (\n \n {loc.t(\"common:version.text\", { version })}\n \n )}\n \n );\n }\n);\n\nMyBreadcrumb.displayName = \"MyBreadcrumb\";\nexport default MyBreadcrumb;\n","// @flow\nimport React from \"react\";\nimport Breadcrumb from \"./Breadcrumb\";\nimport { type BreadcrumbPartDTO, type SiteTypeEnum } from \"data/types\";\nimport noop from \"lodash/noop\";\nimport Measure from \"react-measure\";\nimport throttle from \"lodash/debounce\";\n\ntype Props = {\n /** width in pixel */\n knownWidth?: number,\n /** breadcrumb leaf name */\n text?: string,\n /** siteType */\n siteType?: SiteTypeEnum,\n /** all parts making up the breadcrumb */\n parts: Array,\n /** whether user is allowed to navigate the breadcrumb parts */\n isReadonly?: boolean,\n /** current version */\n version?: number,\n /** optional breadcrumbPart click event instead of history.push */\n onPartClick?: (itemUri: string) => void,\n};\n\ntype State = {\n width: number,\n parts: Array,\n showParts: Array,\n hiddenCount: number,\n calculated: boolean,\n};\n\n/**\n * Default Breadcrumb gap size .35em => approx. 4px\n */\nexport const BREADCRUMB_GAP = 4;\n\n/**\n * Calculated offset\n *\n * Favorite Icon 17.7px\n * Site Icon 15px\n * Elipsis Truncation 11.92px\n * and their gap ()\n */\nexport const BREADCRUMB_OFFSET = 17.7 + 15 + 11.92 + 3 * BREADCRUMB_GAP;\n\nclass ResponsiveBreadcrumb extends React.PureComponent {\n _isMounted: boolean;\n\n constructor(props: Props) {\n super(props);\n this._isMounted = false;\n this.state = {\n width: props.knownWidth || 0,\n parts: [],\n showParts: [],\n hiddenCount: 0,\n calculated: false,\n };\n }\n\n _onMeasured = (index: number, width: number) => {\n const { parts, showParts } = this.state;\n parts[index] = width;\n showParts[index] = true;\n this.setState({ parts, showParts });\n };\n\n __calcVisible = (knownState: State) => {\n if (knownState.width === 0) return;\n const { parts, width } = knownState;\n if (parts.length === 0) return;\n\n let showParts = [],\n hiddenCount = 0;\n parts.reduceRight((previousValue, currentValue, index) => {\n const result = previousValue + currentValue;\n showParts[index] =\n index === parts.length - 1 ||\n result <= width - BREADCRUMB_OFFSET;\n if (!showParts[index]) hiddenCount++;\n return result;\n }, 0);\n\n /* istanbul ignore else */\n if (this._isMounted)\n this.setState({ showParts, hiddenCount, calculated: true });\n };\n\n _calcVisible = throttle(this.__calcVisible, 200, {\n leading: false,\n trailing: true,\n });\n\n componentDidMount() {\n this._isMounted = true;\n this._calcVisible(this.state);\n }\n\n componentWillUnmount = () => (this._isMounted = false);\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n if (prevProps.parts !== this.props.parts) {\n this.setState(\n {\n parts: [],\n showParts: [],\n hiddenCount: 0,\n calculated: false,\n },\n () => this._calcVisible(this.state)\n );\n }\n\n if (prevState.width === this.state.width && this.state.calculated)\n return;\n this._calcVisible(this.state);\n }\n\n render() {\n if (this.props.knownWidth !== undefined)\n return (\n \n );\n\n return (\n \n this.setState({ width: bounds.width })\n }\n >\n {({ measureRef }) => (\n \n )}\n \n );\n }\n}\n\nexport default ResponsiveBreadcrumb;\n","import Bowser from \"bowser\";\n\nconst bowser = Bowser.getParser(window.navigator.userAgent);\nexport default bowser;\n\nexport /**\n * @returns {boolean} true if browser cannot clone fetch responses\n * @url https://developer.mozilla.org/en-US/docs/Web/API/Response/clone#browser_compatibility\n */\n/* istanbul ignore next */\nconst isLegacyResponseClone = () =>\n bowser.satisfies({\n chrome: \"<42\",\n });\n\nexport /**\n * @returns {boolean} true if mobile or tablet device\n *\n */\nconst isHandheld = () => bowser.is(\"mobile\") || bowser.is(\"tablet\");\n\nexport /**\n * @returns {boolean} true if iOS\n *\n */\nconst isIOS = () => bowser.is(\"iOS\");\n\nexport /**\n * @returns {boolean} true if Windows\n *\n */\nconst isWindows = () => bowser.is(\"Windows\");\n\nexport /**\n * @returns {boolean} true if Safari\n *\n */\nconst isSafari = () => bowser.is(\"Safari\");\n\nexport /* istanbul ignore next */ const hasConsole = () =>\n bowser.is(Bowser.BROWSER_MAP.edge) ||\n bowser.is(Bowser.BROWSER_MAP.chrome) ||\n bowser.is(Bowser.BROWSER_MAP.firefox) ||\n bowser.is(Bowser.BROWSER_MAP.opera) ||\n bowser.is(Bowser.BROWSER_MAP.electron) ||\n bowser.is(Bowser.BROWSER_MAP.safari);\n","import React from \"react\";\r\n\r\nexport const PaneSizeContext = React.createContext();\r\nPaneSizeContext.displayName = \"PaneSize\";\r\n\r\nexport const LabelSizeContext = React.createContext();\r\nLabelSizeContext.displayName = \"LabelSize\";\r\n\r\nexport const CurrentItemContext = React.createContext();\r\nCurrentItemContext.displayName = \"CurrentItem\";\r\n\r\nexport const MultiSelectionContext = React.createContext();\r\nMultiSelectionContext.displayName = \"MultiSelection\";\r\n\r\nexport const ItemContext = React.createContext();\r\nItemContext.displayName = \"ItemContext\";\r\n\r\nexport const RememberValuesContext = React.createContext();\r\nRememberValuesContext.displayName = \"RememberValues\";\r\n\r\nexport const ArrowNavigationContext = React.createContext();\r\nArrowNavigationContext.displayName = \"ArrowNavigation\";\r\n","// @flow\nimport React, { useCallback, useContext, useState, useEffect } from \"react\";\nimport { MultiSelectionContext } from \"data/context\";\nimport noop from \"lodash/noop\";\nimport { isHandheld } from \"data/bowser\";\n\ntype Props = {\n /** which HTML element to use to wrap the children */\n componentClass: string,\n /** callback when user wants to see the ContextMenu */\n onContextMenu: () => void,\n /** React children to render */\n children?: Node,\n};\n\n/**\n * wrapper to add context menu event handling\n */\nconst EventHandler = ({\n componentClass = \"div\",\n onContextMenu = noop,\n children,\n onTouchEnd,\n onTouchStart,\n onTouchMove,\n onMouseDown,\n onMouseLeave,\n onMouseUp,\n rowIndex,\n columnIndex,\n ...rest\n}: Props) => {\n /* istanbul ignore next */\n const {\n handler,\n multiple,\n actions: { handleAdd },\n } = useContext(MultiSelectionContext) || {\n handler: {},\n multiple: false,\n actions: { handleAdd: (index: number) => null },\n };\n\n // Auto toggle row on initial MultiSelection\n const [autoToggleRow, setAutoToggleRow] = useState(false);\n\n useEffect(() => {\n setAutoToggleRow(multiple);\n }, [multiple]);\n\n const handleTouchStart = useCallback(\n (e) => {\n /* istanbul ignore else */\n if (handler.onTouchStart) handler.onTouchStart(e);\n /* istanbul ignore else */\n if (onTouchStart) onTouchStart(e);\n if (multiple) setAutoToggleRow(false);\n },\n [handler, onTouchStart, multiple]\n );\n\n const handleTouchMove = useCallback(\n (e) => {\n /* istanbul ignore else */\n if (handler.onTouchMove) handler.onTouchMove(e);\n /* istanbul ignore else */\n if (onTouchMove) onTouchMove(e);\n },\n [handler, onTouchMove]\n );\n\n const handleTouchEnd = useCallback(\n (e) => {\n /* istanbul ignore else */\n if (handler.onTouchEnd) handler.onTouchEnd(e);\n /* istanbul ignore else */\n if (onTouchEnd) onTouchEnd(e);\n /* istanbul ignore else */\n if (autoToggleRow) {\n setAutoToggleRow(false);\n handleAdd(rowIndex);\n }\n },\n [handler, onTouchEnd, autoToggleRow, handleAdd, rowIndex]\n );\n\n const handleMouseDown = useCallback(\n (e) => {\n /* istanbul ignore else */\n if (handler.onMouseDown) handler.onMouseDown(e);\n /* istanbul ignore else */\n if (onMouseDown) onMouseDown(e);\n },\n [handler, onMouseDown]\n );\n\n const handleMouseLeave = useCallback(\n (e) => {\n /* istanbul ignore else */\n if (handler.onMouseLeave) handler.onMouseLeave(e);\n /* istanbul ignore else */\n if (onMouseLeave) onMouseLeave(e);\n },\n [handler, onMouseLeave]\n );\n\n const handleMouseUp = useCallback(\n (e) => {\n /* istanbul ignore else */\n if (handler.onMouseUp) handler.onMouseUp(e);\n /* istanbul ignore else */\n if (onMouseUp) onMouseUp(e);\n },\n [handler, onMouseUp]\n );\n\n return React.createElement(\n componentClass,\n {\n ...rest,\n onTouchStart: handleTouchStart,\n onTouchMove: handleTouchMove,\n onTouchEnd: handleTouchEnd,\n onMouseDown: handleMouseDown,\n onMouseLeave: handleMouseLeave,\n onMouseUp: handleMouseUp,\n onContextMenu: isHandheld() ? null : onContextMenu,\n },\n children\n );\n};\n\nexport default EventHandler;\n","// @flow\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport ReactDOMServer from \"react-dom/server\";\nimport {\n ViewNameType,\n type SidebarItemDTO,\n type SearchItemDTO,\n type SearchScopeEnum,\n type SearchFilterDTO,\n type SearchNodeTypeEnum,\n type ISearchText,\n} from \"data/types\";\nimport queryString from \"data/queryString\";\nimport * as cfg from \"data/storeHelper\";\nimport { isMiniView, isSecureParams, get } from \"data/constants\";\n\nexport const inPointAction = {\n browse: \"browse\",\n preview: \"preview\",\n properties: \"properties\",\n edit: \"edit\",\n archive: \"archive\",\n commandAction: \"commandaction\",\n};\nexport type inPointActionsEnum = $Keys;\n\nexport /**\n * creates an inPoint:uri link (for use with inPoint.Sync)\n *\n * @param {inPointActionsEnum} action type of action\n * @param {string?} itemUri itemUri\n * @returns {string} link\n */\nconst inPointActionLink = (\n action: inPointActionsEnum,\n itemUri?: string,\n itemUris?: Array,\n additionalProps?: any = {}\n): string =>\n `inpoint:${action}?${queryString.stringify({\n ...additionalProps,\n uri: itemUri,\n uris: itemUris,\n sp: get(window.CONFIG, [\"general\", \"secure_params\"], undefined),\n })}`;\n\nconst ClientLink = ({\n action,\n name,\n itemUri,\n}: {\n action: inPointActionsEnum,\n name: string,\n itemUri: string,\n}) => (\n \n {name}\n \n);\nClientLink.displayName = \"ClientLink\";\n\nexport /**\n * returns an HTML rendered link to open an inPoint:uri (for use with inPoint.Sync)\n *\n * @param {string} name text to display as link name\n * @param {string} itemUri itemUri\n * @param {inPointActionsEnum} action inPoint.Client action\n * @returns {string} HTML rendering of link\n */\nconst getClientLinkHtml = (\n name: string,\n itemUri: string,\n action: inPointActionsEnum\n): string => {\n const link = ;\n return ReactDOMServer.renderToStaticMarkup(link);\n};\n\nexport /**\n * converts an itemUri to a Web short itemUri (no protocol prefix)\n *\n * @param {string} itemUri\n * @returns {string}\n */\nconst shortItemUri = (itemUri: string): string =>\n itemUri.substring(\n itemUri.indexOf(\"pam-item://\") === -1 ? 0 : \"pam-item://\".length\n );\n\n// export /** returns an itemUri with a specific document's version */\n// const docItemUriWithVersion = (itemUri: string, version?: number) =>\n// version && version > 0 ? `${itemUri}@version=${version}` : itemUri;\n\nexport /**\n * returns route to open a document\n *\n * @param {string} itemUri itemUri\n * @param {boolean} [mini] whether docRoute should be opened in mini mode\n * @param {boolean} [externalLink] whether link will be used for external new browser\n * @param {string | Array} [toggles] toggles to select\n * @param {?string} [mark] terms to highlight (if PDF)\n * @param {boolean} [print] toggle print dialog (if PDF)\n * @returns {string} doc route link\n */\nconst docRoute = (\n itemUri: string,\n mini?: boolean,\n externalLink?: boolean,\n toggles?: string | Array,\n mark?: string,\n print?: boolean,\n edit?: boolean\n): string =>\n (externalLink === true\n ? get(window.CONFIG, [\"host\", \"basename\"], \"\")\n : \"\") +\n (mini === true ? \"/mini\" : \"\") +\n \"/doc?\" +\n queryString.stringify({\n uri: shortItemUri(itemUri),\n sp: get(window.CONFIG, [\"general\", \"secure_params\"], undefined),\n toggles:\n toggles != null && Array.isArray(toggles)\n ? toggles.join(\",\")\n : toggles,\n mark,\n print,\n edit,\n });\n\nexport /**\n * converts a searchItem object into a searchRoute\n *\n * @param {SearchItemDTO} searchItem searchItem object to convert\n * @returns {string} search route link\n */\nconst searchRouteWithItem = (searchItem: SearchItemDTO): string => {\n let qs = {};\n Object.keys(searchItem).forEach((k) => {\n if ((searchItem[k] && searchItem[k] !== null) || searchItem[k] === 0)\n switch (k) {\n case \"sorts\":\n //TODO: Allow multiple sorts\n const sort = searchItem[k][0];\n Object.keys(sort).forEach(\n (sortKey) => (qs[`sorts.${sortKey}`] = sort[sortKey])\n );\n break;\n default:\n qs[k] = searchItem[k];\n break;\n }\n });\n return \"/searchResult?\" + queryString.stringify(qs);\n};\n\nexport /**\n * returns route to start a fulltext search with keyword\n *\n * @param {string} keyword keyword to use for search\n * @returns {string} search route link\n */\nconst searchRouteWithKeyword = (keyword: string): string =>\n \"/searchResult?\" +\n queryString.stringify({\n searchText: keyword,\n });\n\nexport /**\n * returns route to start a fulltext search with keyword scoped to itemUri\n *\n * @param {string} keyword keyword to use for search\n * @param {string} itemUri itemUri to limit scope (CurrentFolder)\n * @param {SearchScopeEnum} [scope] optional search scope (AllSites, AllFolders, CurrentFolder)\n * @param {Array} [filters] optional search filters\n * @param {Array} [sorts] optional search sorts\n * @param {SearchNodeTypeEnum} [nodeType] optional search NodeType\n * @returns {string} search route link\n */\nconst searchRouteWithKeywordAndMore = (\n keyword: string | ISearchText,\n itemUri: string,\n scope?: SearchScopeEnum,\n filters?: Array,\n sorts?: Array,\n nodeType?: SearchNodeTypeEnum\n): string =>\n \"/searchResult?\" +\n queryString.stringify({\n searchText:\n typeof keyword === \"string\" || !keyword\n ? keyword\n : JSON.stringify(keyword),\n itemUri,\n scope,\n filters:\n filters && filters.length > 0 ? JSON.stringify(filters) : undefined,\n sorts: sorts && sorts.length > 0 ? JSON.stringify(sorts) : undefined,\n nodeType,\n });\n\nexport /**\n * returns a folder route\n *\n * @param {string} itemUri folder's itemUri\n * @param {boolean} [mini] whether route should be opened in mini mode\n * @param {boolean} [externalLink] whether link will be used for external new browser\n * @param {string | Array} [toggles] toggles to select\n * @returns {string} folder route link\n */\nconst folderRoute = (\n itemUri: string,\n mini?: boolean,\n externalLink?: boolean,\n toggles?: string | Array\n): string =>\n (externalLink === true\n ? get(window.CONFIG, [\"host\", \"basename\"], \"\")\n : \"\") +\n (mini === true ? \"/mini\" : \"\") +\n \"/folder?\" +\n queryString.stringify({\n uri: shortItemUri(itemUri),\n sp: get(window.CONFIG, [\"general\", \"secure_params\"], undefined),\n toggles:\n toggles != null && Array.isArray(toggles)\n ? toggles.join(\",\")\n : toggles,\n });\n\nexport /**\n * returns a route for flat view\n *\n * @param {string} itemUri folder's itemUri\n * @param {boolean} [mini] whether route should be opened in mini mode\n * @param {boolean} [externalLink] whether link will be used for external new browser\n * @param {string | Array} [toggles] toggles to select\n * @returns {string} flat route link\n */\nconst flatRoute = (\n itemUri: string,\n mini?: boolean,\n externalLink?: boolean,\n toggles?: string | Array\n): string =>\n (externalLink === true\n ? get(window.CONFIG, [\"host\", \"basename\"], \"\")\n : \"\") +\n (mini === true ? \"/mini\" : \"\") +\n \"/flat?\" +\n queryString.stringify({\n uri: shortItemUri(itemUri),\n sp: get(window.CONFIG, [\"general\", \"secure_params\"], undefined),\n toggles:\n toggles != null && Array.isArray(toggles)\n ? toggles.join(\",\")\n : toggles,\n });\n\nexport /**\n * returns a route for mail view\n *\n * @param {string} itemUri folder's itemUri\n * @param {boolean} [mini] whether route should be opened in mini mode\n * @param {boolean} [externalLink] whether link will be used for external new browser\n * @param {string | Array} [toggles] toggles to select\n * @returns {string} mail route link\n */\nconst mailRoute = (\n itemUri: string,\n mini?: boolean,\n externalLink?: boolean,\n toggles?: string | Array\n): string =>\n (externalLink === true\n ? get(window.CONFIG, [\"host\", \"basename\"], \"\")\n : \"\") +\n (mini === true ? \"/mini\" : \"\") +\n (mini === true ? \"/flat?\" : \"/mail?\") + // There is currently NO mini view for mail so we use flat\n queryString.stringify({\n uri: shortItemUri(itemUri),\n sp: get(window.CONFIG, [\"general\", \"secure_params\"], undefined),\n toggles:\n toggles != null && Array.isArray(toggles)\n ? toggles.join(\",\")\n : toggles,\n });\n\nconst viewNameTypeRouteMapping = {\n [ViewNameType.folder]: folderRoute,\n [ViewNameType.mailbox]: mailRoute,\n [ViewNameType.flat]: flatRoute,\n};\n\nexport /**\n * dynamically figures out which route (and view) to use.\n * if no sites configuration available, will always return a folder route link\n * @param {{string}} itemUri item's itemURi\n * @param {{boolean}} [isDoc] whether item is a document or folder, defaults to folder (false)\n * @param {{boolean}} [isMini] whether route should be opened in mini mode\n * @param {{boolean}} [isExternalLink] whether link will be used for external new browser\n * @param {{string | Array}} [toggles] whether link will be used for external new browser\n * @returns {string} route link\n */\nconst getRoute = ({\n itemUri,\n isDoc = false,\n isMini = null,\n isExternalLink = false,\n toggles = null,\n}: {\n itemUri: string,\n isDoc?: boolean,\n isMini?: boolean,\n isExternalLink?: boolean,\n toggles?: string | Array,\n}): string => {\n // no mini parameter passed on? figure it out\n /* istanbul ignore else */\n if (isMini == null) {\n isMini = isMiniView(window.location);\n }\n\n const props = [itemUri, isMini, isExternalLink, toggles];\n\n if (isDoc === true) return docRoute(...props);\n\n const sites = cfg.sitesSelector();\n if (sites != null) {\n // sites sorted by itemUri.length descending\n const sitesOrdered = sites\n .slice(0)\n .sort(\n (a: SidebarItemDTO, b: SidebarItemDTO) =>\n b.itemUri.length - a.itemUri.length\n );\n // do we have an exact match?\n const orderedIndex = sitesOrdered.findIndex(\n (orderedSite) => orderedSite.itemUri === itemUri\n );\n // ...then take it\n if (orderedIndex !== -1) {\n return viewNameTypeRouteMapping[\n sitesOrdered[orderedIndex].viewName\n ](...props);\n } else {\n // find closest neighbour\n const orderedIndex2 = sitesOrdered.findIndex(\n (orderedSite) => itemUri.indexOf(orderedSite.itemUri) === 0\n );\n if (orderedIndex2 !== -1) {\n return viewNameTypeRouteMapping[\n sitesOrdered[orderedIndex2].viewName\n ](...props);\n }\n }\n }\n //if uri does not exist at all in our sidebar\n return folderRoute(...props);\n};\n\n/**\n * React component to render an HTML tag with a link\n *\n * @param {{ name: string, itemUri: string }} { name, itemUri }\n * @returns HTML component\n */\nconst BrowserLink = ({\n name,\n itemUri,\n isDoc,\n}: {\n name: string,\n itemUri: string,\n isDoc?: boolean,\n}) => (\n \n {name}\n \n);\nBrowserLink.displayName = \"BrowserLink\";\n\nexport /**\n * returns an HTML rendered link to open an inPoint.Web route link\n *\n * @param {string} name text to display as link name\n * @param {string} itemUri itemUri\n * @param {?boolean} itemUri itemUri\n * @returns {string} HTML rendering of link\n */\nconst getBrowserLinkHtml = (\n name: string,\n itemUri: string,\n isDoc: ?boolean\n): string => {\n const link = ;\n return ReactDOMServer.renderToStaticMarkup(link);\n};\n\nexport const BrowserDragLink = ({\n className,\n itemUri,\n children,\n}: {\n className: ?string,\n itemUri: string,\n children: any,\n}) =>\n isSecureParams(window.location) ? (\n {children}\n ) : (\n e.preventDefault()}\n >\n {children}\n \n );\nBrowserDragLink.displayName = \"BrowserDragLink\";\nBrowserDragLink.propTypes = {\n itemUri: PropTypes.string.isRequired,\n};\n","import React from \"react\";\nimport AttributeLabel from \"components/ExtraAttributes/AttributeLabel\";\nimport ViewerControlBase from \"components/ExtraAttributes/ViewerControl/ViewerControlBase\";\nimport ValueFactory from \"components/Attributes/SummaryAttribute/ValueFactory\";\nimport styles from \"./SummaryAttributeViewerControl.module.css\";\nimport sharedStyles from \"shared/styles.module.css\";\nimport { getClassNames } from \"data/utils\";\n\nconst SummaryAttributeViewerControl = ({ header, name, values }) => (\n \n \n \n {values?.map((value, i) => (\n \n ))}\n
\n \n);\n\nSummaryAttributeViewerControl.displayName = \"SummaryAttributeViewerControl\";\nexport default SummaryAttributeViewerControl;\n","import actionTypes from \"../actions/actionTypes\";\nimport { produce } from \"immer\";\nimport panesDefaultState from \"../panes.js\";\n\nconst panesReducer = (state = panesDefaultState, action) => {\n switch (action.type) {\n case actionTypes.SPLITPANES_PERSIST:\n case actionTypes.SPLITPANES_SET:\n return produce(state, (draft) => {\n if (draft[action.payload.view] == null)\n draft[action.payload.view] = {};\n draft[action.payload.view][action.payload.name] =\n action.payload.dimensions;\n });\n /* istanbul ignore next */\n case actionTypes.PERSIST_PURGE:\n return panesDefaultState;\n default:\n return state;\n }\n};\n\nexport default panesReducer;\n\nexport const panesViewSelector = (state: Object, viewName: string) =>\n state.panes[viewName];\n","import actionTypes from \"data/actions/actionTypes\";\nimport Constants from \"data/constants\";\n\nconst initialState = {\n options: undefined,\n status: Constants.LOADING,\n};\n\nconst globalSearchReducer = (state = initialState, action) => {\n switch (action.type) {\n case actionTypes.GLOBALDEFAULTSEARCH_FETCH_RESULT:\n return { ...state, ...action.payload };\n /* istanbul ignore next */\n case actionTypes.PERSIST_PURGE:\n return initialState;\n default:\n return state;\n }\n};\n\nexport default globalSearchReducer;\n\nexport const globalSearchOptionsSelector = (state: Object) =>\n state.globalSearch.status === Constants.OK\n ? state.globalSearch.options\n : undefined;\n","import actionTypes from \"data/actions/actionTypes\";\n\nconst globalEventsReducer = (state = {}, action) => {\n switch (action.type) {\n case actionTypes.GLOBALEVENTS_SERVER:\n return { ...state, ...action.payload, id: action.receivedAt };\n\n /* istanbul ignore next */\n case actionTypes.PERSIST_PURGE:\n return {};\n default:\n return state;\n }\n};\n\nexport default globalEventsReducer;\n\nexport const globalEventsSelector = (state: Object) => state.globalEvents;\n// export const serverEventsTypeSelector = (state: Object) =>\n// state.serverEvents.type;\n// export const serverEventsItemUriSelector = (state: Object) =>\n// state.serverEvents.itemUri;\n","import actionTypes from \"../actions/actionTypes\";\nimport {\n NotificationStatusFlag,\n PriorityType,\n NotificationStyle,\n type NotificationDTO,\n} from \"data/types\";\nimport { produce } from \"immer\";\n\nexport const initialState: Array = [];\n\nconst notificationReducer = (state = initialState, action) =>\n produce(state, (draft) => {\n const { payload, type } = action;\n const i = state.findIndex(\n (i) => i.notificationId === payload?.notificationId\n );\n\n switch (type) {\n case actionTypes.NOTIFICATION_UPSERT:\n if (i === -1)\n draft.unshift({\n notificationId:\n payload?.notificationId ??\n window.crypto.randomUUID(),\n message: payload?.message,\n status: payload?.status ?? NotificationStatusFlag.New,\n priority:\n payload?.priority ?? PriorityType.Intermediate,\n style: payload?.style ?? NotificationStyle.Default,\n icon: payload?.icon,\n Component: payload?.Component,\n toast: payload?.toast ?? false,\n timestamp: payload?.timestamp ?? Date.now(),\n });\n else draft[i] = { ...draft[i], ...payload };\n break;\n case actionTypes.NOTIFICATION_DEL:\n if (i > -1) draft.splice(i, 1);\n else\n console.warn(\n `Not found. Cannot delete Notification ${payload.notificationId}`\n );\n break;\n case actionTypes.NOTIFICATION_STATUS:\n if (i === -1)\n draft.forEach((item, i) => {\n draft[i].status = payload.replace\n ? payload.status\n : draft[i].status | payload.status;\n });\n else\n draft[i].status = payload.replace\n ? payload.status\n : draft[i].status | payload.status;\n break;\n case actionTypes.NOTIFICATION_CLEAR:\n return payload == null\n ? initialState\n : draft.filter(\n (item) =>\n (payload.priority == null ||\n payload.priority !== item.priority) &&\n (payload.style == null ||\n payload.style !== item.style) &&\n (payload.status == null ||\n payload.status !== item.status)\n );\n /* istanbul ignore next */\n case actionTypes.PERSIST_PURGE:\n return initialState;\n default:\n break;\n }\n });\n\nexport default notificationReducer;\n\nexport const notificationSelector = (\n state: Any,\n notificationId: NotificationId = null\n): Array =>\n state.notification\n ?.filter(\n (i) => notificationId == null || i.notificationId === notificationId\n )\n ?.sort((a, b) =>\n a.timestamp > b.timestamp ? -1 : a.timestamp < b.timestamp ? 1 : 0\n ) ?? [];\n","// @flow\nimport React from \"react\";\nimport loc from \"i18next\";\nimport Button from \"react-bootstrap/lib/Button\";\nimport Icons from \"@hs/icons\";\nimport CommandActionHandler from \"./index\";\nimport { getClassNames } from \"data/utils\";\nimport { ItemFlowDirection } from \"data/types\";\nimport styles from \"./CommandActionButton.module.css\";\n\n/**\n * Create itemAction localization identifier for CommandAction Button\n *\n * @param {action: string } {itemUri} CommandAction identifier string\n * @param {props?: any } {props} optional commandAction properties\n *\n */\nconst getItemActionLocalizationIdentifier = (\n action: string,\n props?: any\n): string => {\n switch (action) {\n case \"itemFlows\":\n let locId = `${action}_${\n props?.direction === ItemFlowDirection.out ? \"output\" : \"input\"\n }`;\n return props?.categoryId !== \"all\"\n ? `${locId}.${props.categoryId}`\n : locId;\n default:\n return action;\n }\n};\n\nconst CommandActionButton = ({\n className,\n action,\n icon,\n props,\n actionPrefix = \"itemActions\",\n bsStyle = \"link\",\n}: {\n className?: string,\n action: string,\n icon?: string,\n props?: any,\n actionPrefix?: string,\n bsStyle?: string,\n}) => {\n const label = loc.t(\n `${actionPrefix}:${getItemActionLocalizationIdentifier(\n action,\n props\n )}.name`\n );\n return (\n CommandActionHandler(action, props)}\n >\n {icon && }\n {label}\n \n );\n};\nCommandActionButton.displayName = \"CommandActionButton\";\nexport default CommandActionButton;\n","/* istanbul ignore file */\n\nimport Loader from \"components/Loader\";\nimport { LoadingType } from \"data/types\";\n\nexport default Loader(\n {\n loader: () =>\n import(\"./index\" /* webpackChunkName: \"component-EAForm\" */),\n },\n LoadingType.Status\n);\n","// @flow\nimport React from \"react\";\nimport Modal from \"components/Modal\";\n// import Button from \"react-bootstrap/lib/Button\";\nimport { createModal } from \"react-modal-promise\";\nimport Icons from \"@hs/icons\";\nimport { useModalPostMessageHandler } from \"hooks\";\nimport LoadingIframe from \"components/LoadingIframe\";\n\ntype Props = {\n /** react-modal-promise: whether to show dialog */\n open: boolean,\n /** react-modal-promise: callback when user closes Dialog */\n close: () => void,\n /** url to open in modal */\n url: string,\n /** iframe name */\n name?: string,\n /** whether to open Modal in Docked mode */\n docked?: boolean,\n};\n\nexport const ExternalLinkModal = ({\n open,\n close,\n url,\n name,\n docked,\n}: Props) => {\n useModalPostMessageHandler(close);\n\n return (\n \n \n \n {\" \"}\n {name || url}\n \n \n \n \n \n \n );\n};\n\nexport const openExternalLinkModal = createModal(ExternalLinkModal);\n","// @flow\r\nimport React, { useState, useCallback, useRef } from \"react\";\r\nimport { usePdfHighlightInput } from \"hooks\";\r\nimport FormGroup from \"react-bootstrap/lib/FormGroup\";\r\nimport Button from \"react-bootstrap/lib/Button\";\r\nimport ClearableInput from \"@hs/clearable-input\";\r\nimport Avatar from \"components/User/Avatar\";\r\nimport loc from \"i18next\";\r\nimport styles from \"./NoteInput.module.css\";\r\nimport { ActivityType, ItemNoteType, type ActivityDTO } from \"data/types\";\r\nimport { getClassNames } from \"data/utils\";\r\n\r\ntype Props = {\r\n /** callback when user wants to add note\r\n * @param {ActivityDTO} activity new note to add\r\n */\r\n onEnter: (activity: ActivityDTO) => void,\r\n /** optional callback when user aborts note\r\n * @param {SyntheticMouseEvent<*>} e mouse event\r\n */\r\n onAbort?: (e: SyntheticMouseEvent<*>) => void,\r\n /** current userId */\r\n userId: number,\r\n /** optional: initial values */\r\n activity?: ActivityDTO,\r\n};\r\n\r\nexport const getNoteType = (type: string): string => {\r\n switch (type) {\r\n case ItemNoteType.PdfHighlight:\r\n return type.toLowerCase();\r\n default:\r\n if (type != null)\r\n console.info(\r\n `Unknown ItemNoteType: ${type}, fallback to default.`\r\n );\r\n return \"note\";\r\n }\r\n};\r\n\r\nconst NoteInput = ({\r\n onEnter,\r\n onAbort,\r\n userId,\r\n activity = { what: ActivityType.comment, extras: null, text: \"\" },\r\n}: Props) => {\r\n const noteRef = useRef(null);\r\n const [value, setValue] = useState(activity.text);\r\n const [noteExtras, setNoteExtras] = useState(activity.extras);\r\n\r\n const handleNoteExtras = useCallback(\r\n (extras) =>\r\n setNoteExtras(\r\n extras != null\r\n ? /* istanbul ignore next */ extras\r\n : activity.extras\r\n ),\r\n [activity.extras]\r\n );\r\n\r\n const { handleHighlight, handleSelect } = usePdfHighlightInput(\r\n handleNoteExtras,\r\n noteRef\r\n );\r\n\r\n const handleEnter = useCallback(\r\n (text: string) => {\r\n onEnter({\r\n ...activity,\r\n text,\r\n extras: noteExtras,\r\n }).then((result) => {\r\n /* istanbul ignore else */\r\n if (result) {\r\n handleHighlight(null);\r\n setValue(\"\");\r\n handleSelect();\r\n }\r\n });\r\n },\r\n [onEnter, noteExtras, activity, handleHighlight, handleSelect]\r\n );\r\n\r\n const handleAbort = useCallback(\r\n (e) => {\r\n typeof onAbort === \"function\" && onAbort(e);\r\n setNoteExtras(activity.extras);\r\n setValue(\"\");\r\n handleSelect();\r\n },\r\n [onAbort, activity.extras, handleSelect]\r\n );\r\n\r\n return (\r\n
\r\n \r\n {userId && }\r\n \r\n (noteRef.current = ref)\r\n }\r\n onChange={setValue}\r\n onEnter={handleEnter}\r\n value={value}\r\n className={getClassNames(\"form-control\", styles.noteInput)}\r\n />\r\n \r\n {((activity.extras == null && noteExtras != null) ||\r\n activity.text !== \"\" ||\r\n activity.extras != null ||\r\n value !== activity.text) && (\r\n \r\n )}\r\n
\r\n );\r\n};\r\nNoteInput.displayName = \"NoteInput\";\r\nexport default NoteInput;\r\n","// @flow\nimport React from \"react\";\nimport { type RetentionInfoDTO, RetentionType } from \"data/types\";\nimport Alert from \"react-bootstrap/lib/Alert\";\nimport loc from \"i18next\";\nimport Icons from \"@hs/icons\";\n\ntype Props = {\n /** info object for Retention */\n info: ?RetentionInfoDTO,\n /** optional custom CSS class to apply */\n className?: string,\n};\n\nconst RetentionInfo = ({ info, className }: Props) => {\n // no message if default\n if (info == null || info.type === RetentionType.Default) return null;\n return (\n \n {\" \"}\n {info.label == null ? (\n loc.t(`docactivity:retention.${info.type}`, {\n months: info.months,\n })\n ) : (\n \n )}\n \n );\n};\nRetentionInfo.displayName = \"RetentionInfo\";\nexport default RetentionInfo;\n","// @flow\nimport React, { useCallback, useEffect, useRef } from \"react\";\nimport Icons from \"@hs/icons\";\nimport Button from \"react-bootstrap/lib/Button\";\nimport NoteInput, { getNoteType } from \"components/NoteInput\";\nimport {\n type ActivityDTO,\n type ActivityFieldDTO,\n ActivityType,\n ItemNoteType,\n ItemNoteTypeIcon,\n RetentionType,\n} from \"data/types\";\nimport Avatar from \"components/User/Avatar\";\nimport Table from \"react-bootstrap/lib/Table\";\nimport loc from \"i18next\";\nimport Badge from \"react-bootstrap/lib/Badge\";\nimport styles from \"./Activity.module.css\";\nimport RetentionInfo from \"./RetentionInfo\";\nimport ActionsMenu from \"components/ActionsMenu\";\nimport { LockInfoOn, UnlockedOn } from \"components/LockInfo\";\nimport { getClassNames } from \"data/utils\";\n\ntype Props = {\n /** activity to render */\n activity: ActivityDTO,\n /** current user's id */\n userId: number,\n /** whether to show activities details\n * @default {boolean} false\n */\n showDetails?: boolean,\n /** whether to show the Actions menu\n * @default {boolean} false\n */\n showActions?: boolean,\n /** whether to render in edit state\n * @default {boolean} false\n */\n isEdit: boolean,\n /** set items edit state\n * @param {boolean} isEdit new isEdit state\n */\n isHighlighted: boolean,\n /** callback when user chooses an action\n * @param {boolean} false\n */\n isSelected?: boolean,\n /** whether this activity is the last version available\n * @default {boolean} false\n */\n isLastVersion?: boolean,\n /** callback when user chooses an action\n * @param {string} actionId action identifier\n * @param {?any} payload optional payload\n */\n onAction: (actionId: string, payload: ?any) => void,\n /** what action menu to display\n * @default {string} docactivity_context\n */\n actionMenu: string,\n /** whether Activity is read-only */\n isReadOnly?: boolean,\n};\n\nconst getCommentIconString = (activity) => {\n if (\n activity?.extras?.$type == null ||\n !Object.prototype.hasOwnProperty.call(\n ItemNoteTypeIcon,\n activity.extras.$type\n )\n )\n return ItemNoteTypeIcon[ItemNoteType.Default];\n return ItemNoteTypeIcon[activity.extras.$type];\n};\n\n/** Renders a list of activities */\nconst Activity = ({\n activity,\n userId,\n showDetails,\n showActions,\n isEdit,\n isHighlighted,\n isSelected,\n isLastVersion,\n onAction,\n actionMenu,\n isReadOnly,\n}: Props) => {\n const renderWhatIcon = useCallback(() => {\n switch (activity.what) {\n case ActivityType.create:\n return ;\n case ActivityType.modifyContent:\n case ActivityType.modifyField:\n return ;\n case ActivityType.delete:\n return ;\n case ActivityType.comment:\n return (\n \n onAction(\"filter_note\")\n }\n name={getCommentIconString(activity)}\n title={loc.t(\"activity:note.filter\")}\n />\n );\n default:\n return null;\n }\n }, [activity, onAction]);\n\n const renderWhat = useCallback((): string => {\n switch (activity.what) {\n case ActivityType.create:\n case ActivityType.modifyContent:\n case ActivityType.modifyField:\n case ActivityType.comment:\n case ActivityType.delete:\n return loc.t(`common:act.changes_${activity.what}`, {\n date: activity.on,\n });\n case ActivityType.locked:\n return ;\n case ActivityType.unlocked:\n return ;\n default:\n return \"unknown what=\" + activity.what;\n }\n }, [activity]);\n\n const renderChange = useCallback(\n (change: ActivityFieldDTO, index: number) => (\n \n {change.caption}\n {change.newVal}\n {change.oldVal}\n \n ),\n []\n );\n\n const renderChanges = useCallback(\n () => (\n
\n \n \n \n \n \n \n \n \n \n {activity.changes.map((change, index) =>\n renderChange(change, index)\n )}\n \n
 {loc.t(\"common:act.changes_newVal\")}{loc.t(\"common:act.changes_oldVal\")}
\n
\n ),\n [activity, renderChange]\n );\n\n const activityRef = useRef(null);\n useEffect(() => {\n /* istanbul ignore else */\n if (isHighlighted && activityRef.current) {\n activityRef.current.scrollIntoView({\n block: \"center\",\n inline: \"center\",\n });\n }\n }, [isHighlighted]);\n\n const handleEnter: (activity: ActivityDTO) => Promise =\n useCallback(\n (activity: ActivityDTO) =>\n onAction(\"update_note\", activity).then(\n (result) => result && onAction(\"edit_note\", false)\n ),\n [onAction]\n );\n\n const handleAbort: (e: SyntheticMouseEvent<*>) => void = useCallback(\n (e) => e.stopPropagation() || onAction(\"edit_note\", false),\n [onAction]\n );\n\n const renderText = useCallback(() => {\n switch (activity.what) {\n case ActivityType.create:\n case ActivityType.modifyContent:\n case ActivityType.modifyField:\n if (activity.changes == null || activity.changes.length === 0)\n return null;\n return renderChanges();\n case ActivityType.comment:\n if (isEdit) {\n return (\n \n );\n } else {\n return

{activity.text}

;\n }\n case ActivityType.locked:\n case ActivityType.unlocked:\n return null;\n default:\n return \"unknown what=\" + activity.what;\n }\n }, [activity, isEdit, handleEnter, renderChanges, handleAbort]);\n\n const onShouldBeVisible = (action: { id: string }): boolean =>\n !(\n isLastVersion === true &&\n [\"sep\", \"restore\", \"delete\"].includes(action.id)\n );\n\n return (\n \n (!isEdit || (isEdit && !isHighlighted)) &&\n onAction(\"highlight_note\")\n }\n >\n
\n \n {activity.userName}\n {/* */}\n {renderWhatIcon()}\n {showActions &&\n [\n ActivityType.create,\n ActivityType.modifyContent,\n ActivityType.modifyField,\n ].includes(activity.what) && (\n \n \n {loc.t(\"common:version.text\", {\n version: activity.id,\n })}\n \n \n }\n name={actionMenu}\n className={styles.actions}\n onAction={onAction}\n onShouldBeVisible={onShouldBeVisible}\n />\n )}\n {activity.userId === userId &&\n activity.what === ActivityType.comment && (\n \n {!isEdit && !isReadOnly && (\n \n ((isEdit ||\n (!isEdit && isHighlighted)) &&\n e.stopPropagation()) ||\n onAction(\"edit_note\", true)\n }\n >\n \n \n )}\n {isEdit && (\n \n (isEdit && e.stopPropagation()) ||\n onAction(\"delete_note\")\n }\n >\n \n \n )}\n \n )}\n\n
{renderWhat()}
\n {activity.retention != null &&\n activity.retention.type !== RetentionType.Default && (\n \n )}\n
\n \n {renderText(activity)}\n \n \n );\n};\nActivity.displayName = \"Activity\";\nActivity.defaultProps = {\n showDetails: false,\n showActions: false,\n isSelected: false,\n actionMenu: \"docactivity_context\",\n};\nexport default Activity;\n","// @flow\nimport React, { useState, useCallback, useEffect } from \"react\";\nimport { usePdfHighlightActivityList } from \"hooks\";\nimport {\n type ActivityDTO,\n ActivityType,\n ItemNoteType,\n type ItemNoteTypeEnum,\n} from \"data/types\";\nimport loc from \"i18next\";\nimport Activity from \"./Activity\";\n\ntype ActionCallback = (actionId: string, payload: T | number) => any;\ntype ActionFactory = (item: T, index: number) => ActionCallback;\n\ntype Props = {\n /** list of activities */\n items: Array,\n /** current user's id */\n userId: number,\n /** whether to show activities details */\n showDetails: boolean,\n /** whether to show history menu\n * @default {boolean} true\n */\n showActions?: boolean,\n /** whether to show notes (comment) entries */\n showNotes: boolean,\n /** whether to show history entries */\n showHistory: boolean,\n /** which version should be selected\n * 0 to show latest\n */\n currentVersion: number,\n /** callback when user chooses an action\n * @param {string} actionId action identifier\n * @param {ActivityDTO | number} payload payload or activity row index\n */\n onAction: ActionCallback,\n /** whether ActivityList is read-only */\n isReadOnly?: boolean,\n};\n\n/** Renders a list of activities */\nconst ActivityList = ({\n items,\n userId,\n showDetails,\n showNotes = true,\n showHistory = true,\n showActions = true,\n currentVersion,\n onAction,\n isReadOnly = false,\n}: Props) => {\n const [edit, setEdit] = useState(null);\n const [commentType, setCommentType] = useState(null);\n\n const [highlight, handleHighlight] = usePdfHighlightActivityList(\n items,\n userId,\n setEdit,\n onAction,\n isReadOnly\n );\n\n const handleAction: ActionFactory = useCallback(\n (item: ActivityDTO, index: number) =>\n (actionId: string, payload: any = index) => {\n switch (actionId) {\n case \"filter_note\":\n const itemCommentType: ItemNoteTypeEnum =\n (item.what === ActivityType.comment &&\n item.extras &&\n item.extras.$type) ||\n ItemNoteType.Default;\n return setCommentType(\n commentType !== itemCommentType\n ? itemCommentType\n : null\n );\n case \"edit_note\":\n return setEdit(payload ? item.id : null);\n case \"highlight_note\":\n return handleHighlight(\n highlight !== item.id ? item : null\n );\n case \"update_note\":\n return onAction(actionId, payload).then((success) => {\n /* istanbul ignore else */\n if (success) setEdit(null);\n return success;\n });\n case \"delete_note\":\n return onAction(actionId, payload).then((success) => {\n /* istanbul ignore else */\n if (success) {\n setEdit(null);\n handleHighlight(null);\n }\n return success;\n });\n default:\n return onAction(actionId, payload);\n }\n },\n [commentType, highlight, handleHighlight, onAction]\n );\n\n const filterType = useCallback(\n (item: ActivityDTO): boolean => {\n if (commentType != null)\n return (\n showNotes &&\n item.what === ActivityType.comment &&\n ((item.extras && item.extras.$type === commentType) ||\n (!item.extras && commentType === ItemNoteType.Default))\n );\n if (item.what === ActivityType.comment) return showNotes;\n return showHistory;\n },\n [commentType, showHistory, showNotes]\n );\n\n useEffect(() => {\n // Reset CommentType\n if (items.filter(filterType).length === 0) setCommentType(null);\n }, [filterType, items]);\n\n if (!showNotes && !showHistory)\n return
{loc.t(\"activity:list.invalid\")}
;\n let lastVersionId = 1;\n const totalVersions = items.reduce((accumulator, item: ActivityDTO) => {\n if (item.what !== ActivityType.comment) {\n lastVersionId = item.id;\n return accumulator + 1;\n }\n return accumulator;\n }, 0);\n\n return (\n <>\n {items.map(\n (item: ActivityDTO, index: number) =>\n filterType(item) && (\n 1 && showActions}\n onAction={handleAction(item, index)}\n isReadOnly={isReadOnly}\n />\n )\n )}\n \n );\n};\nActivityList.displayName = \"ActivityList\";\nexport default ActivityList;\n","// @flow\nimport React from \"react\";\nimport { type CleanupKeepInfoDTO, CleanupKeepVersionType } from \"data/types\";\nimport Alert from \"react-bootstrap/lib/Alert\";\nimport loc from \"i18next\";\nimport Icons from \"@hs/icons\";\n\ntype Props = {\n /** info object for Cleanup Keep Version */\n info: ?CleanupKeepInfoDTO,\n /** optional custom CSS class to apply */\n className?: string,\n};\n\nconst CleanupKeepInfo = ({ info, className }: Props) => {\n // no message if keeping them all\n if (info == null || info.type === CleanupKeepVersionType.All) return null;\n return (\n \n {\" \"}\n {loc.t(`docactivity:keep.${info.type}`, { count: info.count })}\n \n );\n};\nCleanupKeepInfo.displayName = \"CleanupKeepInfo\";\nexport default CleanupKeepInfo;\n","// @flow\nimport React, { useCallback } from \"react\";\nimport {\n type ActivityDTO,\n type CleanupKeepInfoDTO,\n type RetentionInfoDTO,\n} from \"data/types\";\nimport { isFeatureOn, Feature } from \"data/constants\";\nimport ActivityList from \"./ActivityList\";\nimport Status from \"components/Status\";\nimport Constants, { type ConstantsEnum } from \"data/constants\";\nimport CleanupKeepInfo from \"./CleanupKeepInfo\";\nimport RetentionInfo from \"./RetentionInfo\";\nimport NoteInput from \"components/NoteInput\";\nimport styles from \"./Activities.module.css\";\n\ntype Props = {\n /** optional status defaults to OK*/\n status?: ConstantsEnum,\n /** list of activities */\n items: Array,\n /** cleanup keep versions info */\n cleanupKeepInfo: ?CleanupKeepInfoDTO,\n /** retention info */\n retentionInfo: ?RetentionInfoDTO,\n /** callback when user chooses an action\n * @param {string} actionId action identifier\n * @param {string} index activity row index\n */\n onAction: (actionId: string, index: number) => void,\n /** which version should be selected\n * 0 to show latest\n */\n currentVersion: number,\n /** whether to show all details */\n showDetails: boolean,\n /** whether to allow adding notes */\n showAddNote: boolean,\n /** whether to show notes (comment) entries */\n showNotes: boolean,\n /** whether to show history entries */\n showHistory: boolean,\n /** whether to show history menu */\n showActions: boolean,\n /** whether to show retention info */\n showRetentionInfo: boolean,\n /** current userId */\n userId: number,\n /** whether activities are read-only */\n isReadOnly: boolean,\n};\n\n/**\n * renders a list of document's activities\n */\nconst Activities = ({\n status = Constants.OK,\n items,\n cleanupKeepInfo,\n retentionInfo,\n onAction,\n currentVersion,\n showDetails,\n showAddNote,\n showNotes,\n showHistory,\n showActions,\n showRetentionInfo,\n userId,\n isReadOnly,\n}: Props) => {\n const handleEnter: (activity: ActivityDTO) => Promise =\n useCallback((activity) => onAction(\"add_note\", activity), [onAction]);\n return (\n
\n \n {showRetentionInfo && (\n <>\n \n \n \n )}\n \n {showAddNote && !isReadOnly && isFeatureOn(Feature.noteService) && (\n \n )}\n
\n );\n};\n\nActivities.displayName = \"Activities\";\nexport default Activities;\n\n// const useScrollToBottom = ({ className }) => {\n// React.useEffect(() => {\n// const elems = document.getElementsByClassName(className);\n// if (elems.length === 1) {\n// elems[0].scrollTo(0, elems[0].scrollHeight);\n// }\n// }, [className]);\n// };\n\n// actEnd: HTMLDivElement | null;\n\n// componentDidMount = () => this._scrollToBottom();\n\n// // componentDidUpdate = () => this._scrollToBottom();\n\n// _scrollToBottom = (smooth?: boolean) => {\n// if (\n// this.actEnd != null &&\n// typeof this.actEnd.scrollIntoView === \"function\"\n// ) {\n// if (smooth === true)\n// this.actEnd.scrollIntoView({ behavior: \"smooth\" });\n// else this.actEnd.scrollIntoView();\n// }\n// };\n","// @flow\nimport React, { PureComponent } from \"react\";\nimport { connect } from \"react-redux\";\nimport { compose } from \"redux\";\nimport Constants, {\n getDefaultsConfig,\n type ConstantsEnum,\n} from \"data/constants\";\nimport {\n fetchActivities,\n addItemNote,\n updateItemNote,\n deleteItemNote,\n delDocVersion,\n restoreDocVersion,\n} from \"data/api\";\nimport Activities from \"components/Activities\";\nimport Status from \"components/Status\";\nimport {\n ServerEventActionType,\n ServerEventItemType,\n type UserInfoResultDTO,\n type ActivitiesDTO,\n} from \"data/types\";\nimport GlobalEventsHandler from \"containers/GlobalEventsHandler\";\nimport { openConfirmModal } from \"components/ConfirmModal\";\nimport loc from \"i18next\";\nimport { toastActionResult } from \"data/toast\";\nimport CommandActionHandler from \"components/CommandActions\";\nimport moment from \"moment\";\nimport Moment from \"containers/Moment\";\nimport withOfflineHandler from \"containers/OfflineHandler\";\nimport { userLanguage } from \"data/storeHelper\";\n\ntype Props = {\n isDoc: boolean,\n /** the current itemUri */\n itemUri: ?string,\n /** the current formatId */\n formatId: ?number,\n /** Redux: the current User object */\n user: UserInfoResultDTO,\n /** GlobalEventsHandler.refreshId */\n refreshId: number,\n /** which version should be selected\n * 0 to show latest\n */\n currentVersion?: number,\n /** callback when user wants to see a specific version\n * @param {number} version which version to display\n * @param {number} itemUri itemUri including version\n */\n onShowVersion?: (version: number, itemUri: string) => void,\n /** whether to allow adding notes\n * @default {boolean} true\n */\n showAddNote?: boolean,\n /** whether to show notes (comment) entries\n * @default {boolean} true\n */\n showNotes?: boolean,\n /** whether to show history entries\n * @default {boolean} true\n */\n showHistory?: boolean,\n /** whether to show history menu\n * @default {boolean} true\n */\n showActions?: boolean,\n /** whether to show retention info\n * @default {boolean} true\n */\n showRetentionInfo?: boolean,\n /** whether activities are read-only\n * @default {boolean} false\n */\n isReadOnly?: boolean,\n};\n\ntype State = {\n status: ConstantsEnum,\n result: ?ActivitiesDTO,\n showDetails: boolean,\n /** whether to allow adding notes\n * @default {boolean} true\n */\n showAddNote?: boolean,\n /** whether to show notes (comment) entries\n * @default {boolean} true\n */\n showNotes?: boolean,\n /** whether to show history entries\n * @default {boolean} true\n */\n showHistory?: boolean,\n /** whether to show history menu\n * @default {boolean} true\n */\n showActions?: boolean,\n /** whether to show retention info\n * @default {boolean} true\n */\n showRetentionInfo?: boolean,\n};\n\n// TODO this will need refactoring once inPoint implemented Folder versioning\nexport class ActivitiesContainer extends PureComponent {\n state = {\n status: Constants.LOADING,\n result: null,\n showDetails: false,\n showAddNote: !!this.props.showAddNote,\n showNotes: !!this.props.showNotes,\n showHistory: !!this.props.showHistory,\n showActions: !!this.props.showActions,\n showRetentionInfo: !!this.props.showRetentionInfo,\n };\n\n static defaultProps = {\n currentVersion: 0,\n isReadOnly: false,\n showAddNote: true,\n showNotes: true,\n showHistory: true,\n showActions: true,\n showRetentionInfo: true,\n };\n\n constructor(props: Props) {\n super(props);\n moment.locale(userLanguage());\n this.format = `${moment.localeData().longDateFormat(\"L\")} ${moment\n .localeData()\n .longDateFormat(\"LTS\")}`;\n }\n\n componentDidMount = () => {\n this._fetch();\n this._setActivityListDefaults();\n };\n\n componentDidUpdate(prevProps: Props) {\n /* istanbul ignore else */\n if (prevProps.itemUri !== this.props.itemUri) {\n this.setState(\n {\n status: Constants.LOADING,\n result: null,\n },\n () => {\n this._fetch();\n this._setActivityListDefaults();\n }\n );\n } else if (prevProps.refreshId !== this.props.refreshId) {\n this.setState(\n {\n status: Constants.LOADING,\n },\n () => this._fetch()\n );\n }\n }\n\n _fetch() {\n const { itemUri, offlineHandler } = this.props;\n if (itemUri != null) {\n offlineHandler\n .factory(fetchActivities)(itemUri)\n .catch((err) => {\n this.setState({\n status: Constants.ERROR,\n });\n return null;\n })\n .then((result: ActivitiesDTO) => {\n if (result != null) {\n this.setState({\n status: Constants.OK,\n result,\n });\n }\n });\n }\n }\n\n _setActivityListDefaults = () => {\n const defaults = getDefaultsConfig(\n this.props.itemUri,\n this.props.formatId\n );\n if (\n defaults == null ||\n !Object.prototype.hasOwnProperty.call(defaults, \"activityList\")\n ) {\n return;\n }\n this.setState({ ...defaults.activityList });\n };\n\n _onAddNote = (activity: ActivityDTO) => {\n if (this.props.itemUri == null) {\n toastActionResult(false, \"activity:note.notallowed\");\n return new Promise((resolve) => resolve(false));\n }\n activity.itemUri = this.props.itemUri;\n return addItemNote(activity)\n .then(() => true)\n .catch((err) => {\n console.warn(err);\n toastActionResult(false, \"activity:note.add\");\n return false;\n });\n };\n\n /* add additional checks here (e.g. date based) */\n _canUserUpdateOrDelete = (activity: ActivityDTO): boolean =>\n activity != null &&\n this.props.itemUri === activity.itemUri &&\n this.props.user.id === activity.userId;\n\n _onUpdateNote = (activity: ActivityDTO): Promise => {\n activity.itemUri = this.props.itemUri;\n if (!this._canUserUpdateOrDelete(activity)) {\n toastActionResult(false, \"activity:note.notallowed\");\n return new Promise((resolve) => resolve(false));\n }\n return updateItemNote(activity)\n .then(() => true)\n .catch((err) => {\n console.warn(err);\n toastActionResult(false, \"activity:note.update\");\n return false;\n });\n };\n\n _onDeleteNote = (activity: ActivityDTO): Promise => {\n activity.id = activity.id && Math.abs(activity.id);\n activity.itemUri = this.props.itemUri;\n if (!this._canUserUpdateOrDelete(activity)) {\n toastActionResult(false, \"activity:note.notallowed\");\n return new Promise((resolve) => resolve(false));\n }\n return openConfirmModal({\n body: loc.t(\"activity:note.delete.confirmBody\"),\n confirmButton: loc.t(\"activity:note.delete.confirmYes\"),\n }).then(async (confirmed) => {\n /* istanbul ignore else */\n if (confirmed === true) {\n try {\n const deleted = await deleteItemNote(\n this.props.itemUri,\n activity.id\n );\n if (!deleted)\n toastActionResult(false, \"activity:note.delete\");\n return deleted;\n } catch (err) {\n console.warn(err);\n toastActionResult(false, \"activity:note.delete\");\n return false;\n }\n }\n return false;\n });\n };\n\n _toggleDetails = () =>\n this.setState((prevState: State) => ({\n showDetails: !prevState.showDetails,\n }));\n\n _onAction = (actionId: string, payload: any) => {\n const activity =\n (typeof payload === \"number\" && this.state.result.items[payload]) ||\n {};\n const version = activity.id;\n const itemUriWithVersion = activity.itemUri;\n switch (actionId) {\n case \"view\":\n /* istanbul ignore else */\n if (typeof this.props.onShowVersion === \"function\")\n this.props.onShowVersion(version, itemUriWithVersion);\n break;\n case \"download\":\n CommandActionHandler(\"doc_download\", {\n itemUri: itemUriWithVersion,\n });\n break;\n case \"popout\":\n CommandActionHandler(\"doc_preview\", {\n itemUri: itemUriWithVersion,\n newWindow: true,\n });\n break;\n case \"details\":\n this._toggleDetails();\n break;\n case \"restore\":\n openConfirmModal({\n body: loc.t(\n \"docactivity_context:action_restore.confirmBody\"\n ),\n }).then((confirmed) => {\n if (confirmed === true) {\n this.restoreVersion(version);\n }\n });\n break;\n case \"delete\":\n openConfirmModal({\n body: loc.t(\n \"docactivity_context:action_delete.confirmBody\"\n ),\n confirmButton: loc.t(\"common:delete\"),\n }).then((confirmed) => {\n if (confirmed === true) {\n this.deleteVersion(version);\n }\n });\n break;\n case \"add_note\":\n return this._onAddNote(payload);\n case \"update_note\":\n return this._onUpdateNote(payload);\n case \"delete_note\":\n return this._onDeleteNote(activity);\n /* istanbul ignore next */\n default:\n console.warn(actionId);\n break;\n }\n };\n\n restoreVersion = (version: number) => {\n this.setState({ status: Constants.LOADING }, () => {\n restoreDocVersion(this.props.itemUri, version)\n .catch((err) => {\n console.warn(err);\n return null;\n })\n .then((success) => {\n // notify user\n toastActionResult(\n success === true,\n \"docactivity_context:action_restore\"\n );\n // refresh\n if (success === true) {\n // show new @latest version\n /* istanbul ignore else */\n if (typeof this.props.onShowVersion === \"function\")\n this.props.onShowVersion(0, this.props.itemUri);\n // refetch activity list\n this._fetch();\n } else {\n this.setState({\n status: Constants.ERROR,\n });\n }\n });\n });\n };\n\n deleteVersion = (version: number) => {\n this.setState({ status: Constants.LOADING }, () => {\n delDocVersion(this.props.itemUri, version)\n .catch((err) => {\n console.warn(err);\n return null;\n })\n .then((success) => {\n // notify user\n toastActionResult(\n success === true,\n \"docactivity_context:action_delete\"\n );\n // refresh\n if (success === true) {\n // in case it was selected reset to latest\n /* istanbul ignore else */\n\n if (\n this.props.currentVersion === version &&\n typeof this.props.onShowVersion === \"function\"\n ) {\n this.props.onShowVersion(0, this.props.itemUri);\n }\n // re-fetch activity list\n this._fetch();\n } else {\n this.setState({\n status: Constants.ERROR,\n });\n }\n });\n });\n };\n\n render() {\n const { status, result } = this.state;\n if (result != null && status !== Constants.ERROR) {\n return (\n \n );\n }\n return (\n \n );\n }\n}\n\n// apply Redux Store state to Component Properties\nconst mapStateToProps = /* istanbul ignore next */ (state, ownProps) => ({\n user: state.user,\n});\n\nexport default compose(\n connect(mapStateToProps),\n GlobalEventsHandler({\n items: [\n ServerEventItemType.document,\n ServerEventItemType.task,\n ServerEventItemType.activity,\n ],\n actions: [\n ServerEventActionType.add,\n ServerEventActionType.modify,\n ServerEventActionType.edit,\n ServerEventActionType.delete,\n ServerEventActionType.refresh,\n ],\n }),\n Moment,\n withOfflineHandler\n)(ActivitiesContainer);\n","import { combineReducers } from \"redux\";\nimport togglesReducer from \"./togglesReducer\";\nimport userReducer from \"./userReducer\";\nimport loginReducer from \"./loginReducer\";\nimport formReducer from \"./formReducer\";\nimport cardsReducer from \"./cardsReducer\";\nimport workflowReducer from \"./workflowReducer\";\nimport panesReducer from \"./panesReducer\";\nimport treeReducer from \"./treeReducer\";\nimport docsReducer from \"./docsReducer\";\nimport thumbnailsReducer from \"./thumbnailsReducer\";\nimport docsLayoutReducer from \"./docsLayoutReducer\";\nimport settingsReducer from \"./settingsReducer\";\nimport breadcrumbReducer from \"./breadcrumbReducer\";\nimport favoritesReducer from \"./favoritesReducer\";\nimport globalSearchReducer from \"./globalSearchReducer\";\nimport currentItemReducer from \"./currentItemReducer\";\nimport searchReducer from \"./searchReducer\";\nimport searchFormsReducer from \"./searchFormsReducer\";\nimport globalEventsReducer from \"./globalEventsReducer\";\nimport offlineReducer from \"./offlineReducer\";\nimport serviceWorkerReducer from \"./serviceWorkerReducer\";\nimport notificationReducer from \"./notificationReducer\";\nimport commandActionReducer from \"./commandActionReducer\";\n// import { reducer as oidcReducer } from \"redux-oidc\";\nimport { createResponsiveStateReducer } from \"redux-responsive\";\nimport transform from \"lodash/transform\";\nimport { reducer as uppyReducer } from \"@uppy/store-redux\";\nimport { reducer as networkReducer } from \"@hs/redux-saga-network-status\";\n\nconst appReducers = combineReducers({\n // oidc: oidcReducer,\n toggles: togglesReducer,\n user: userReducer,\n offline: offlineReducer,\n login: loginReducer,\n favorites: favoritesReducer,\n cards: cardsReducer,\n workflow: workflowReducer,\n tree: treeReducer,\n docs: docsReducer,\n thumbnails: thumbnailsReducer,\n docsLayout: docsLayoutReducer,\n panes: panesReducer,\n settings: settingsReducer,\n breadcrumb: breadcrumbReducer,\n globalSearch: globalSearchReducer,\n current: currentItemReducer,\n search: searchReducer,\n searchForms: searchFormsReducer,\n form: formReducer,\n globalEvents: globalEventsReducer,\n sw: serviceWorkerReducer,\n network: networkReducer,\n commandAction: commandActionReducer,\n browser: createResponsiveStateReducer(null, {\n extraFields: ({ greaterThan, is }) => ({\n // greaterThanOrEqual is built by transforming greaterThan\n greaterThanOrEqual: transform(\n greaterThan,\n (result, value, mediaType) => {\n // and combining the value with the `is` field\n result[mediaType] = value || is[mediaType];\n },\n {}\n ),\n }),\n }),\n uppy: uppyReducer,\n notification: notificationReducer,\n});\n\nexport default appReducers;\n","import { openConfirmModal } from \"components/ConfirmModal\";\nimport loc from \"i18next\";\n\nexport const openConflictModal = (name: string): Promise =>\n openConfirmModal({\n title: loc.t(\"common:conflict.title\", {\n name,\n }),\n body: loc.t(\"common:conflict.message\"),\n confirmButton: loc.t(\"common:conflict.overwrite\"),\n cancelButton: loc.t(\"common:conflict.cancel\"),\n requireSelection: true,\n });\n","// @flow\nimport { produce } from \"immer\";\nimport { type ToggleItemDTO, type ToggleDTO } from \"./types\";\n\nexport const Toggles = {\n home: {\n name: \"home\",\n isMultiple: false,\n toggles: [\n {\n value: \"action\",\n text: \"Actions\",\n icon: \"thumbtack\",\n isSelected: true,\n isHidden: false,\n },\n {\n value: \"fav\",\n text: \"Favorites\",\n icon: \"fa-regular fa-star\",\n isSelected: false,\n },\n {\n value: \"rec\",\n text: \"Recents\",\n icon: \"clock-rotate-left\",\n isSelected: false,\n },\n ],\n },\n wf: {\n name: \"wf\",\n isMultiple: false,\n toggles: [\n {\n value: \"start\",\n text: \"Start\",\n icon: \"fa-regular fa-calendar-plus\",\n isSelected: false,\n },\n {\n value: \"pending\",\n text: \"Pending\",\n icon: \"fa-regular fa-calendar\",\n isSelected: true,\n },\n // {\n // value: \"done\",\n // text: \"Done\",\n // icon: \"calendar-check-o\",\n // },\n ],\n },\n news: {\n name: \"news\",\n isMultiple: true,\n toggles: [\n {\n value: \"folders\",\n text: \"Folders\",\n icon: \"fa-regular fa-folder\",\n isSelected: true,\n },\n {\n value: \"documents\",\n text: \"Documents\",\n icon: \"fa-regular fa-file\",\n isSelected: true,\n },\n {\n value: \"shares\",\n text: \"shares\",\n icon: \"share\",\n isSelected: true,\n },\n {\n value: \"reminders\",\n text: \"reminders\",\n icon: \"fa-regular fa-clock\",\n isSelected: true,\n },\n ],\n },\n minipicker: {\n name: \"minipicker\",\n isMultiple: true,\n toggles: [\n {\n value: \"tree\",\n text: \"Tree\",\n icon: \"sitemap\",\n isSelected: true,\n },\n {\n value: \"doclist\",\n text: \"Documents\",\n icon: \"list\",\n isSelected: true,\n },\n ],\n },\n folder: {\n name: \"folder\",\n isMultiple: true,\n toggles: [\n {\n value: \"tree\",\n text: \"Tree\",\n icon: \"sitemap\",\n isSelected: true,\n },\n {\n value: \"form\",\n text: \"Classification\",\n icon: \"pen-to-square\",\n isSelected: true,\n },\n {\n value: \"doclist\",\n text: \"Documents\",\n icon: \"list\",\n isSelected: true,\n },\n ],\n },\n flat: {\n name: \"flat\",\n isMultiple: false,\n toggles: [\n {\n value: \"doclist\",\n text: \"Documents\",\n icon: \"list\",\n isSelected: true,\n isDisabled: true,\n },\n ],\n },\n mailbox: {\n name: \"mailbox\",\n isMultiple: true,\n toggles: [\n {\n value: \"tree\",\n text: \"Tree\",\n icon: \"sitemap\",\n isSelected: true,\n },\n {\n value: \"doclist\",\n text: \"Mails\",\n icon: \"list\",\n isSelected: true,\n },\n {\n value: \"viewer\",\n text: \"Viewer\",\n icon: \"fa-regular fa-envelope\",\n isSelected: true,\n },\n ],\n },\n miniflat: {\n name: \"miniflat\",\n isMultiple: true,\n toggles: [\n {\n value: \"doclist\",\n text: \"Mails\",\n icon: \"list\",\n isSelected: true,\n },\n {\n value: \"viewer\",\n text: \"Viewer\",\n icon: \"fa-regular fa-file\",\n isSelected: true,\n },\n ],\n },\n search: {\n name: \"search\",\n isMultiple: true,\n toggles: [\n {\n value: \"forms\",\n text: \"Forms\",\n icon: \"list-ul\",\n isSelected: true,\n isDisabled: false,\n },\n {\n value: \"search\",\n text: \"Manual\",\n icon: \"pen-to-square\",\n isSelected: true,\n isDisabled: false,\n },\n {\n value: \"result\",\n text: \"Results\",\n icon: \"list\",\n isSelected: false,\n isDisabled: true,\n },\n ],\n },\n searchresult: {\n name: \"searchresult\",\n isMultiple: false,\n toggles: [\n // {\n // value: \"form\",\n // text: \"Form\",\n // icon: \"edit\",\n // isSelected: false\n // },\n {\n value: \"result\",\n text: \"Results\",\n icon: \"list\",\n isSelected: true,\n isDisabled: true,\n },\n ],\n },\n document: {\n name: \"document\",\n isMultiple: true,\n toggles: [\n {\n value: \"viewer\",\n text: \"Document\",\n icon: \"fa-regular fa-files\",\n isSelected: true,\n },\n {\n value: \"form\",\n text: \"Form\",\n icon: \"pen-to-square\",\n isSelected: true,\n },\n {\n value: \"act\",\n text: \"Activity\",\n icon: \"clock-rotate-left\",\n isSelected: true,\n },\n ],\n },\n docmodal: {\n name: \"docmodal\",\n isMultiple: true,\n toggles: [\n {\n value: \"viewer\",\n text: \"Document\",\n icon: \"fa-regular fa-file\",\n isSelected: true,\n },\n {\n value: \"form\",\n text: \"Form\",\n icon: \"pen-to-square\",\n isSelected: true,\n },\n {\n value: \"act\",\n text: \"Activity\",\n icon: \"clock-rotate-left\",\n isSelected: true,\n },\n ],\n },\n upload: {\n name: \"upload\",\n isMultiple: true,\n toggles: [\n {\n value: \"files\",\n text: \"Files\",\n icon: \"fa-regular fa-files\",\n isSelected: true,\n },\n {\n value: \"form\",\n text: \"Target\",\n icon: \"bullseye\",\n isSelected: false,\n isDisabled: true,\n },\n ],\n },\n itemflows: {\n name: \"itemflows\",\n isMultiple: true,\n toggles: [\n {\n value: \"list\",\n text: \"Items\",\n icon: \"list-ul\",\n isSelected: true,\n },\n {\n value: \"form\",\n text: \"Form\",\n icon: \"pen-to-square\",\n isSelected: false,\n isDisabled: true,\n },\n ],\n },\n};\n\nexport default function getToggles(\n name: string,\n isCallback?: Function\n): ToggleDTO | void {\n const toggles = Toggles[name];\n if (toggles) {\n return produce(toggles, (draft) => {\n draft.toggles.forEach((toggle: ToggleItemDTO) => {\n toggle.text = `$${name}:toggles.${toggle.value}`;\n /* istanbul ignore else */\n if (typeof isCallback === \"function\")\n toggle = isCallback(toggle);\n });\n });\n }\n console.error(\"Cannot find toggles: \" + name);\n return undefined;\n}\n","// @flow\r\nimport React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport loc from \"i18next\";\r\nimport CommandActionHandler from \"components/CommandActions\";\r\nimport { type ItemStatusesDTO, ItemStatuses, ItemLinkType } from \"data/types\";\r\nimport Icons from \"@hs/icons\";\r\n\r\nconst itemStatusMapping = {\r\n [ItemStatuses.Reminder]: Icons.Reminder,\r\n [ItemStatuses.Share]: Icons.Share,\r\n [ItemStatuses.Relation]: Icons.Relation,\r\n [ItemStatuses.PDF]: Icons.Pdf,\r\n [ItemStatuses.WFReport]: Icons.WorkflowReport,\r\n [ItemStatuses.Note]: Icons.Notes,\r\n [ItemStatuses.Link]: Icons.Link,\r\n [ItemStatuses.MailHasAttachment]: Icons.Email.Attachment,\r\n [ItemStatuses.MailReplied]: Icons.Email.Replied,\r\n [ItemStatuses.MailForwarded]: Icons.Email.Forwarded,\r\n [ItemStatuses.Locked]: Icons.Locked,\r\n [ItemStatuses.CloudSync]: Icons.Cloud,\r\n [ItemStatuses.Signed]: Icons.FileSignature,\r\n};\r\n\r\nconst getPropsForItemStatus = (\r\n status: ItemStatusesDTO,\r\n itemUri: string,\r\n ext: string,\r\n /** callback when user clicks on More... Button\r\n * @param {SyntheticMouseEvent} e HTML click event\r\n */\r\n onMoreClick?: (e: SyntheticMouseEvent) => void\r\n) => {\r\n switch (status) {\r\n case ItemStatuses.Reminder:\r\n return typeof onMoreClick === \"function\"\r\n ? {\r\n style: {\r\n cursor: \"pointer\",\r\n },\r\n onClick: onMoreClick,\r\n }\r\n : {};\r\n case ItemStatuses.Relation:\r\n return {\r\n style: {\r\n cursor: \"pointer\",\r\n },\r\n onClick: () =>\r\n CommandActionHandler(\"doc_related\", {\r\n itemUri,\r\n itemLinkType: ItemLinkType.Manual,\r\n }),\r\n };\r\n case ItemStatuses.WFReport:\r\n return {\r\n style: {\r\n cursor: \"pointer\",\r\n },\r\n onClick: () =>\r\n CommandActionHandler(\"doc_related\", {\r\n itemUri,\r\n itemLinkType: ItemLinkType.WorkflowReport,\r\n }),\r\n };\r\n case ItemStatuses.CloudSync:\r\n return {\r\n style: {\r\n cursor: \"pointer\",\r\n },\r\n onClick: (e: SyntheticMouseEvent) =>\r\n CommandActionHandler(\"doc_editCloud\", {\r\n itemUri,\r\n ext,\r\n onlineEditor: !(e.ctrlKey || e.altKey),\r\n }),\r\n };\r\n case ItemStatuses.Signed:\r\n case ItemStatuses.PDF:\r\n return {\r\n style: {\r\n cursor: \"zoom-in\",\r\n },\r\n onClick: (e: SyntheticMouseEvent) => {\r\n e.stopPropagation();\r\n CommandActionHandler(\"doc_preview\", {\r\n itemUri,\r\n });\r\n },\r\n };\r\n default:\r\n return {};\r\n }\r\n};\r\n\r\nconst ItemStatusIcons = ({\r\n itemStatus,\r\n itemUri,\r\n ext,\r\n style,\r\n className,\r\n onMoreClick,\r\n}: {\r\n itemStatus: ItemStatusesDTO,\r\n itemUri: ?string,\r\n ext: ?string,\r\n style?: CSSStyleDeclaration,\r\n className?: string,\r\n /** callback when user clicks on More... Button\r\n * @param {SyntheticMouseEvent} e HTML click event\r\n */\r\n onMoreClick?: (e: SyntheticMouseEvent) => void,\r\n}) => {\r\n if (itemStatus === ItemStatuses.Nothing) return null;\r\n const iconStyle = Object.assign({}, style, {\r\n marginRight: 2,\r\n });\r\n let bit = 1;\r\n let children = [];\r\n while (bit <= 1 << 30) {\r\n if (itemStatus & bit) {\r\n const ItemStatusComponent = itemStatusMapping[bit];\r\n if (ItemStatusComponent != null) {\r\n const props = getPropsForItemStatus(\r\n bit,\r\n itemUri,\r\n ext,\r\n onMoreClick\r\n );\r\n children.push(\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n bit *= 2;\r\n }\r\n return children.length ? <>{children} : null;\r\n};\r\n\r\nItemStatusIcons.displayName = \"ItemStatusIcons\";\r\nItemStatusIcons.propTypes = {\r\n //itemStatus: PropTypes.number.isRequired,\r\n style: PropTypes.object,\r\n className: PropTypes.string,\r\n};\r\n\r\nexport default ItemStatusIcons;\r\n","//@flow\nimport React from \"react\";\nimport \"./SimpleAttribute.css\"; // TODO refactor to CSSModule - note used globally!\n\nexport const SimpleAttributeValue = ({\n value,\n className = \"a-val\",\n}: {\n value: string,\n className: string,\n}) => (\n \n {value}\n \n);\n\nconst SimpleAttribute = ({ attribute }: { attribute: Array }) => (\n \n \n {attribute[0]}\n {\" \"}\n \n \n);\nSimpleAttribute.displayName = \"SimpleAttribute\";\nexport default SimpleAttribute;\n","import React from \"react\";\nimport { compose } from \"redux\";\nimport { useAsync } from \"hooks\";\nimport Constants from \"data/constants\";\nimport { fetchWorkflowInfo } from \"data/api\";\nimport Status from \"components/Status\";\nimport styles from \"./itemView_workflow.module.css\";\nimport CountBadge from \"components/CountBadge\";\nimport Attributes from \"components/Attributes\";\nimport Divider from \"components/Divider\";\nimport {\n type ItemActionViewConfig,\n type ItemActionConfig,\n type WorkflowAction,\n ServerEventItemType,\n} from \"data/types\";\nimport ItemActions from \"components/ActionPanel/ItemActions\";\nimport loc from \"i18next\";\nimport { get } from \"data/constants\";\nimport GlobalEventsHandler from \"containers/GlobalEventsHandler\";\n\n/**\n * shows the pending Workflow Actions\n */\nexport const WorkflowActions = ({\n onClick,\n actions,\n}: {\n onClick: (props: Object) => void,\n actions: Array,\n}) => {\n const workflowActions = actions.map((action) => ({\n icon: action.icon,\n name: action.caption,\n desc: action.description,\n url: action.page,\n }));\n const onActionClick = (action) =>\n onClick({\n title: action.name,\n url: action.url,\n });\n return ;\n};\nWorkflowActions.displayName = \"ItemViews.Workflow.Actions\";\n\nexport /**\n * shows Workflow\n *\n * @param {{ actions: Array }} { actions }\n */\nconst ItemView_Workflow = ({\n refreshId,\n onClick,\n itemUri,\n action,\n view,\n}: {\n refreshId: number,\n onClick: (props: Object) => void,\n itemUri: string,\n action: ItemActionConfig,\n view: ItemActionViewConfig,\n}) => {\n const state = useAsync(async () => {\n try {\n const info = get(\n action,\n [\"commandAction\", \"props\", \"workflow\"],\n null\n );\n const wfs = await fetchWorkflowInfo({\n provider: info?.provider,\n wfId: info?.wfid,\n itemUri,\n });\n return wfs;\n } catch (err) {\n console.warn(\"Error while fetchWorkflow\", err);\n throw err;\n }\n }, [action, itemUri, refreshId]);\n\n if (state.loading || state.error) {\n return (\n \n {state.loading && (\n \n )}\n {state.error && (\n \n )}{\" \"}\n {loc.t(\"ipwf:loading\")}\n \n }\n />\n );\n } else if (state.value == null || state.value === \"\") {\n return null;\n } else {\n return state.value.map((wf) => (\n \n {wf.name} ({wf.status})\n {wf.progress != null && (\n \n )}\n \n }\n >\n
\n {!!wf.attributes?.length && (\n
\n \n
\n )}\n {!!wf.actions?.length && (\n \n \n \n )}\n
\n \n ));\n }\n};\n\nItemView_Workflow.displayName = \"ItemViews.Workflow\";\n// export default ItemView_Workflow;\n\nexport default compose(\n GlobalEventsHandler({\n items: [ServerEventItemType.task],\n })\n)(ItemView_Workflow);\n","import React from \"react\";\nimport { useAsyncMemo } from \"hooks\";\nimport { siteDisplayName } from \"components/Sidebar/utils\";\nimport Dropdown from \"@hs/dropdown\";\nimport MenuItem from \"react-bootstrap/lib/MenuItem\";\nimport Icons from \"@hs/icons\";\nimport styles from \"./SiteSelect.module.css\";\nimport NativeSelect from \"components/NativeSelect\";\nimport bowser from \"data/bowser\";\nimport { sitesSelector } from \"data/storeHelper\";\nimport { getClassNames } from \"data/utils\";\n\nexport const SiteRow = ({\n site,\n className,\n}: {\n site: SidebarItemDTO,\n className?: string,\n}) => (\n
\n \n {siteDisplayName(site)}\n
\n);\nSiteRow.displayName = \"SiteRow\";\n\ntype Props = {\n /** callback with first itemUri after loading sites */\n onLoad: (itemUri: string) => void,\n /** which itemUri to pre-select */\n defaultItemUri: ?string,\n /** callback when user changes selection\n * @param {string} itemUri new selected site's itemUri\n */\n onChange: (itemUri: string) => void,\n};\n\n/**\n * will render a dropdown to select searchable sites\n */\nexport const SiteSelect = ({ onLoad, defaultItemUri, onChange }: Props) => {\n /**\n * Info: Why useAsyncMemo and not useMemo\n * onLoad (from parent) will always update parent while rendering child\n * Results in react error\n */\n const [selectedSite, filteredSites] = useAsyncMemo(\n async () => {\n const sites = sitesSelector();\n //Hide custom sites, recyclebin and AUSites\n const filteredSites =\n sites == null\n ? []\n : sites.filter(\n (site) =>\n site.source !== 1 &&\n ![4, 6].includes(site.siteType)\n );\n if (filteredSites.length === 0) return [null, []];\n if (defaultItemUri) {\n const selectedSite = filteredSites.find(\n (site) => site.itemUri === defaultItemUri\n );\n return [selectedSite, filteredSites];\n }\n\n /* istanbul ignore else */\n if (filteredSites.length > 0 && typeof onLoad === \"function\") {\n onLoad(filteredSites[0].itemUri);\n }\n return [null, filteredSites];\n },\n [onLoad, defaultItemUri],\n [null, []]\n );\n\n if (bowser.is(\"iOS\") || bowser.is(\"mobile\"))\n return (\n onChange(option.K)\n }\n defaultValue={{ K: defaultItemUri }}\n value={{ K: defaultItemUri }}\n options={filteredSites.map((site, index) => ({\n K: site.itemUri,\n T: siteDisplayName(site),\n }))}\n valueKey=\"K\"\n labelKey=\"T\"\n />\n );\n else\n return (\n \n \n {selectedSite && (\n \n )}\n \n \n {filteredSites.map((site, index) => (\n \n onChange(site.itemUri)\n }\n >\n \n \n ))}\n \n \n );\n};\nSiteSelect.displayName = \"SiteSelect\";\n\nexport default SiteSelect;\n","// @ts-check\nimport React, { useRef, useState, useCallback, useEffect } from \"react\";\nimport { DayPicker } from \"react-day-picker\";\nimport Button from \"react-bootstrap/lib/Button\";\nimport \"react-day-picker/dist/style.css\";\nimport * as Locales from \"date-fns/locale\";\nimport moment from \"moment\";\nimport styles from \"./DayPickerInput.module.css\";\nimport loc from \"i18next\";\nimport { Reference, Popper } from \"react-popper\";\nimport { createPortal } from \"react-dom\";\nimport FocusTrap from \"focus-trap-react\";\nimport ClearableInput from \"@hs/clearable-input\";\n\nexport const getDateFnsLocale = () => {\n let [language, country] = moment.locale().split(\"-\");\n language = language?.toLowerCase();\n country = country?.toUpperCase();\n switch (`${language}${country == null ? \"\" : \"-\" + country}`) {\n case \"en\":\n return Locales[\"enUS\"];\n case \"de-CH\":\n return Locales[\"de\"];\n default:\n return Locales[`${language}${country == null ? \"\" : country}`];\n }\n};\n\nexport default function DayPickerInput({\n inputProps,\n placeholder,\n format: dateFormat,\n value: valueFromProps,\n onDayChange,\n component: Input = \"input\",\n overlayComponent: Overlay = \"div\",\n required = false,\n autoFocus = false,\n dayPickerProps,\n id,\n}) {\n /* istanbul ignore next */\n const [selected, setSelected] = useState(\n valueFromProps ? moment(valueFromProps, dateFormat, true).toDate() : \"\"\n );\n\n const [value, setValue] = useState(valueFromProps);\n\n // month to display\n const [month, setMonth] = useState(\n selected || dayPickerProps?.month || new Date()\n );\n\n useEffect(() => {\n setValue(valueFromProps);\n }, [valueFromProps]);\n\n useEffect(() => {\n /* istanbul ignore next */\n setSelected((s) =>\n value && moment(value, dateFormat, true).isValid()\n ? moment(value, dateFormat, true).toDate()\n : s\n );\n }, [value, dateFormat]);\n\n const [isPopperOpen, setIsPopperOpen] = useState(false);\n const [isFocusTrapActive, setIsFocusTrapActive] = useState(true);\n\n const focus = useRef({ input: autoFocus, overlay: true });\n\n const popperRef = useRef(null);\n\n const closePopper = useCallback(() => {\n /* istanbul ignore next */\n if (focus.current.input || focus.current.overlay) return;\n const isValidDateInput = moment(value, dateFormat, true).isValid();\n\n /* istanbul ignore else */\n if (!isValidDateInput) {\n /* istanbul ignore else */\n if (value && selected && popperRef.current?._ref.value) {\n // if the user has a half-typed date in and we already have a selected in out state\n // then overwrite the typed in text with the selected date\n setValue(moment(selected).format(dateFormat));\n onDayChange(\n selected,\n popperRef.current,\n moment(selected).format(dateFormat)\n );\n } else {\n // if there is nothing selected then delete the text\n setValue(\"\");\n }\n }\n setIsPopperOpen(false);\n }, [value, selected, dateFormat, onDayChange]);\n\n const handleInputChange = useCallback(\n (e) => {\n setValue(e);\n const dateObj = moment(e, dateFormat, true);\n\n if (dateObj.isValid()) {\n const date = dateObj.toDate();\n onDayChange(date, popperRef.current);\n setSelected(date);\n // change the month to switch the daypicker view\n setMonth(date);\n } else {\n if ((e ?? \"\").trim() === \"\") {\n onDayChange(null, popperRef.current, null, true);\n setSelected(undefined);\n } else {\n onDayChange(null, popperRef.current, e);\n }\n }\n\n // if the input was cleared by the X button then\n // we have to blur and focus again so the FocusTrap becomes active\n // otherwise the date is not selectable and the popup just closes on click\n // bugticket for proper fix: Bug 66350: @hs/clearable-input breaks DayPickerInput\n\n /* istanbul ignore next */\n if (e == null) {\n setTimeout(() => {\n popperRef.current._ref.blur();\n popperRef.current._ref.focus();\n });\n }\n },\n [dateFormat, onDayChange]\n );\n\n const handleFocus = useCallback((e) => {\n focus.current.input = true;\n setIsPopperOpen(true);\n }, []);\n\n const handleBlur = useCallback(() => {\n focus.current.input = false;\n closePopper();\n }, [closePopper]);\n\n const handleDaySelect = useCallback(\n (date: Date) => {\n setSelected(date);\n if (date) {\n const formattedDate = moment(date).format(\n moment.localeData().longDateFormat(\"L\")\n );\n\n setValue(formattedDate);\n onDayChange(date, popperRef.current, formattedDate);\n focus.current.overlay = false;\n setIsFocusTrapActive(false);\n closePopper();\n } else {\n onDayChange(null, popperRef.current, null, true);\n setValue(\"\");\n }\n },\n [closePopper, onDayChange]\n );\n\n /* istanbul ignore next */\n const handleActivate = useCallback(() => {\n focus.current.overlay = true;\n }, []);\n\n const handleDeactivate = useCallback(() => {\n focus.current.overlay = false;\n setIsFocusTrapActive(false);\n closePopper();\n }, [closePopper]);\n\n const setToday = useCallback(() => {\n handleDaySelect(new Date());\n setMonth(new Date());\n }, [handleDaySelect]);\n\n return (\n <>\n \n {({ ref }) => (\n
\n \n (popperRef.current = ref)\n }\n placeholder={placeholder}\n value={value}\n onChange={handleInputChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n {...inputProps}\n required={required}\n autoFocus={autoFocus}\n className=\"form-control\"\n id={id}\n />\n
\n )}\n
\n {isPopperOpen &&\n createPortal(\n \n {({ ref, style, placement }) => (\n \n \n setIsFocusTrapActive(true)\n }\n >\n \n \n {loc.t(\n \"folder:action_filter.calendar_today\"\n )}\n \n \n \n )}\n ,\n document.getElementById(\"root\")\n )}\n \n );\n}\n","// @flow\nimport React from \"react\";\nimport Icons from \"@hs/icons\";\nimport Button from \"react-bootstrap/lib/Button\";\nimport loc from \"i18next\";\nimport { openMapModal } from \"components/MapModal\";\nimport {\n ParseLocation,\n ParseRaster,\n ParseArea,\n} from \"components/MapViewer/utils\";\nimport {\n SupportGeoMapViewer,\n getGeoMapViewerProvider,\n getGeoRasterProvider,\n} from \"components/MapViewer/providerSupport\";\nimport { type MarkerDTO } from \"data/types\";\n\ntype Props = {\n /** current itemUri */\n itemUri: string,\n /** current formatId */\n formatId: number,\n /** location point or area in string format */\n value: string,\n /** marker name to show on map */\n label: string,\n /** whether to render button as disabled */\n disabled?: boolean,\n /** CSS style to apply to button */\n style?: CSSStyleDeclaration,\n /** optional (custom) location marker icon */\n marker?: MarkerDTO,\n};\n\nconst MapButton = ({\n itemUri,\n formatId,\n value,\n label,\n disabled,\n style,\n marker,\n}: Props) => {\n const showOnMap = () => {\n // area?\n if (value.includes(\";\")) {\n const area = ParseArea(value);\n openMapModal({\n title: label,\n mapProvider: getGeoMapViewerProvider(),\n useMarker: false,\n locations: [\n {\n attribute: label,\n label,\n area,\n },\n ],\n });\n } else if (value.includes(\":\")) {\n // raster\n const loc = ParseRaster(value);\n openMapModal({\n title: label,\n mapProvider: getGeoRasterProvider(itemUri, formatId),\n useMarker: true,\n locations: [\n {\n attribute: label,\n label,\n allowEdit: false,\n icon: marker,\n ...loc,\n },\n ],\n });\n } else {\n // exactly one point\n const loc = ParseLocation(value);\n openMapModal({\n title: label,\n mapProvider: getGeoMapViewerProvider(),\n useMarker: true,\n locations: [\n {\n attribute: label,\n label,\n allowEdit: false,\n icon: marker,\n ...loc,\n },\n ],\n });\n }\n };\n if (!SupportGeoMapViewer()) return null;\n return (\n \n \n \n );\n};\nMapButton.displayName = \"MapButton\";\nexport default MapButton;\n","// @flow\r\nimport { PdfPrintAction } from \"hooks/PostMessage/Actions\";\r\nimport { postMessageTo } from \"hooks/PostMessage/Utils\";\r\n/**\r\n * trigger pdf.js print dialog\r\n */\r\n\r\ntype Context = DocModalProps & {\r\n target?: any,\r\n};\r\n\r\nclass doc_print {\r\n execute = ({ target = window }: Context) => {\r\n postMessageTo(PdfPrintAction, null, target);\r\n return true;\r\n };\r\n}\r\nexport default doc_print;\r\n","// @flow\nimport React, { useState, useCallback } from \"react\";\nimport Constants from \"data/constants\";\nimport Status from \"components/Status\";\n\n/**\n * renders a local loading icon until iframe onLoad event is fired\n */\nconst LoadingIframe = ({\n onLoad,\n ...props\n}: {\n onLoad: () => void,\n props: Object,\n}) => {\n const [loading, setLoading] = useState(true);\n\n const _onLoad = useCallback(() => {\n setLoading(false);\n /* istanbul ignore else */\n if (typeof onLoad === \"function\") onLoad();\n }, [setLoading, onLoad]);\n\n return (\n <>\n {loading && }\n \n \n );\n};\n\nexport default LoadingIframe;\n","import { hasCacheSupport, isListed } from \"data/utils\";\nimport { getStorageEstimate } from \"data/storage\";\nimport { JL } from \"data/logging\";\n\nexport default class ApiCacheManager {\n constructor() {\n this._log = JL(\"ApiCacheManager\");\n this.OpenCache = this.OpenCache.bind(this);\n this.DeleteCache = this.DeleteCache.bind(this);\n this.CacheExists = this.CacheExists.bind(this);\n this.LogEstimates = this.LogEstimates.bind(this);\n }\n\n /**\n * Returns a handle to the requested cache\n *\n * @returns {Promise} cache handler\n * @memberof ApiCacheManager\n * @public\n */\n OpenCache = (id: string): Promise => {\n if (!hasCacheSupport())\n throw new Error(\"Browser does not support cache!\");\n return window.caches.open(id);\n };\n\n /**\n * Deletes the requested cache\n *\n * @returns {Promise} f the cache was actually deleted and a false if something went wrong or the cache doesn’t exist\n * @memberof ApiCacheManager\n * @public\n */\n DeleteCache = (id: string): Promise => {\n if (!hasCacheSupport())\n throw new Error(\"Browser does not support cache!\");\n return window.caches.delete(id);\n };\n\n /**\n * Checks if an existing Cache key already exists\n * @returns {Promise} true or false\n * @memberof ApiCacheManager\n * @public\n */\n CacheExists = (id: string): Promise => {\n if (!hasCacheSupport())\n throw new Error(\"Browser does not support cache!\");\n return window.caches.keys().then((keys) => isListed(id, keys));\n };\n\n /**\n * Logs to the console some storage usage estimates\n *\n * @memberof ApiCacheManager\n * @public\n */\n LogEstimates = (id: string): void => {\n // show total number of cached items - unfortunately it is not possible to retrieve cache total in diskspace\n // https://github.com/w3c/ServiceWorker/issues/587\n this.OpenCache(id).then((cache) =>\n cache.keys().then(async (cachedRequests) => {\n this._log.info(() => ({\n msg: `[storage] total of ${cachedRequests.length} cached items`,\n id,\n }));\n const estimate = await getStorageEstimate();\n /* istanbul ignore next */\n if (estimate != null) {\n this._log.info(() => ({\n msg: `[storage] total usage estimate: ${estimate.usageInGb} out of ${estimate.quotaInGb}Gb used (${estimate.percentUsed}%)`,\n estimate,\n id,\n }));\n }\n })\n );\n };\n}\n","import ApiManagerBase, { type Context } from \"./ApiManagerBase\";\nimport {\n ContentType,\n type OfflineItemDTO,\n CustomHttpHeader,\n type ApiMethodRef,\n DEFAULT_CACHE_NAME,\n} from \"data/types\";\nimport ApiCacheManager from \"data/ApiCacheManager\";\nimport { JL } from \"jsnlog\";\n\n/**\n * Specifically used by offlineSaga to sync \"make available offline\"marked for offline items\n *\n * @export\n * @class ApiManagerMakeAvailableOffline\n * @extends {ApiManagerBase}\n */\nexport default class ApiManagerMakeAvailableOffline extends ApiManagerBase {\n constructor(offlineItem: OfflineItemDTO) {\n super();\n this._log = JL(\"ApiManagerMakeAvailableOffline\");\n this._offlineItem = offlineItem;\n this._apiCache = new ApiCacheManager();\n this.CacheExists = this.CacheExists.bind(this);\n this.DeleteCache = this.DeleteCache.bind(this);\n this.LogEstimates = this.LogEstimates.bind(this);\n this.CheckLicense = this.CheckLicense.bind(this);\n this.EOL = this.EOL.bind(this);\n this._callWithDeps = this._callWithDeps.bind(this);\n this._runTransformer = this._runTransformer.bind(this);\n this._addToCache = this._addToCache.bind(this);\n }\n\n _callWithDeps = async (\n name: string,\n args?: Object = {}\n ): Promise> => {\n // calling the API method will effectively cache it\n const context = await this._callReturnContext(name, args);\n const { cache } = context.request;\n if (cache == null || cache.depsAnalyzer == null) return [];\n else return cache.depsAnalyzer(context.body, context.request.params);\n };\n\n /**\n * Deletes the whole current OfflineItem's cache\n * @returns {Promise} true if the cache was actually deleted and false if something went wrong or the cache doesn’t exist\n * @memberof ApiManagerMakeAvailableOffline\n * @public\n */\n DeleteCache = (): Promise => {\n /* istanbul ignore else */\n if (this._offlineItem) {\n return this._apiCache.DeleteCache(this._offlineItem.id);\n } else {\n return Promise.reject(false);\n }\n };\n\n /**\n * Checks if an existing Cache key already exists\n * @returns {Promise} true or false\n * @memberof ApiManagerMakeAvailableOffline\n * @public\n */\n CacheExists = (): Promise => {\n /* istanbul ignore else */\n if (this._offlineItem) {\n return this._apiCache.CacheExists(this._offlineItem.id);\n } else {\n return Promise.reject(false);\n }\n };\n\n /**\n * Logs to the console some storage usage estimates\n * @memberof ApiManagerMakeAvailableOffline\n * @public\n */\n LogEstimates = (): void => {\n /* istanbul ignore else */\n if (this._offlineItem) {\n this._apiCache.LogEstimates(this._offlineItem.id);\n }\n };\n\n /**\n * Prepares request's HTTP headers\n * @memberof ApiManagerMakeAvailableOffline\n * @param {Context} context query context\n * @returns {Promise} current context\n * @override\n */\n async BeforeFetch(context: Context): Promise {\n context = await super.BeforeFetch(context);\n // tell serviceWorker to skip these requests - we'll cache them\n context.options.headers.delete(CustomHttpHeader.CacheStrategy);\n // #55379 tell the server we are requesting for offline cache\n context.options.headers.append(CustomHttpHeader.OfflineSync, \"true\");\n return context;\n }\n\n /**\n * We skip licensing check when caching offline items\n * @param {Context} context query context\n * @returns {Promise} current context\n * @memberof ApiManagerMakeAvailableOffline\n * @override\n */\n async CheckLicense(context: Context): Promise {\n return context;\n }\n\n // TODO handle API custom errors instead of throwing\n // async CheckCustomError(context: Context): Promise {\n // }\n\n /**\n * Convert response body and cache it\n * @param {Context} context query context\n * @returns {Promise} current context\n * @memberof ApiManagerMakeAvailableOffline\n * @override\n */\n async EOL(context: Context): Promise {\n this._log.debug(() => ({\n msg: `${context.request.name}: EOL`,\n apiContext: context,\n }));\n\n // custom transformer function defined?\n context = this._runTransformer(context);\n\n await this._addToCache(context);\n\n return context;\n }\n\n _runTransformer = (context: Context): Promise => {\n if (\n context.request &&\n typeof context.request.transformer === \"function\"\n ) {\n if (\n context.request.contentType !== ContentType.AUTO &&\n context.request.contentType !== ContentType.JSON\n ) {\n throw new Error(\n `ApiCatalog method ${context.request.name} error: cache.transformer can only be used on ContentType.AUTO or JSON!`\n );\n }\n try {\n // transform it and convert back to body\n const cacheBody = JSON.stringify(\n context.request.transformer(context.body)\n );\n\n // return/cache this response instead\n context.response = new Response(cacheBody, context.response);\n } catch (e) {\n this._log.fatalException(\n () => ({\n msg: \"error while transforming body\",\n body: context.body,\n apiMethod: context.request.name,\n apiContext: context,\n }),\n e\n );\n throw new Error(\n \"Could not transform body for \" + context.request.name\n );\n }\n }\n return context;\n };\n\n _addToCache = async (context: Context): void => {\n // note: better control here than having the serviceWorker do this; cons - #54575 we need to handle our own cache store\n const cache = await this._apiCache.OpenCache(this._offlineItem.id);\n if (cache != null) {\n const cacheKey = this._getFullCacheKey(context);\n // note: no need to clone response here since .DecodeBody() does it for us!\n try {\n await cache.put(cacheKey, context.response);\n\n // Delete existing cache entry from Default store\n // Fixes #58699 Remove offline availability is not available\n const defaultCache = await this._apiCache.OpenCache(\n DEFAULT_CACHE_NAME\n );\n const deleted = await defaultCache.delete(cacheKey);\n /* istanbul ignore next */\n if (deleted) {\n this._log.info(() => ({\n msg: `Deleted duplicate cacheKey from defaultStore.`,\n cacheKey,\n defaultCache: DEFAULT_CACHE_NAME,\n cache: this._offlineItem.id,\n }));\n }\n } catch (e) {\n this._log.fatalException(\n () => ({\n msg: \"could not store cacheKey\",\n cacheKey: cacheKey,\n apiMethod: context.request.name,\n apiContext: context,\n }),\n e\n );\n throw new Error(\"Could not store cacheKey \" + cacheKey);\n }\n } else {\n this._log.fatalException(() => ({\n msg: \"could not open cache for offlineItem\",\n apiMethod: context.request.name,\n offlineItem: this._offlineItem,\n }));\n throw new Error(\"Could not open cache for storing offlineItem\");\n }\n };\n}\n","import {\n fork,\n all,\n call,\n put,\n takeLatest,\n select,\n spawn,\n take,\n race,\n} from \"redux-saga/effects\";\nimport delay from \"@redux-saga/delay-p\";\nimport {\n startOfflineSyncAction,\n offlineSyncStartedAction,\n offlineSyncDoneAction,\n setOfflineItemSyncStatusAction,\n removeOfflineItemAction,\n setOfflineItemDepsMapAction,\n} from \"data/actions\";\nimport { actions as networkActions } from \"@hs/redux-saga-network-status\";\nimport * as networkActionTypes from \"@hs/redux-saga-network-status/lib/actionTypes\";\nimport actionTypes from \"data/actions/actionTypes\";\nimport {\n CustomHttpHeader,\n OfflineSyncStatus,\n type ApiMethodRef,\n} from \"data/types\";\nimport ApiManagerMakeAvailableOffline from \"data/ApiManagerMakeAvailableOffline\";\nimport * as s from \"data/reducers/selectors\";\nimport {\n fetchOfflineItems,\n fetchUser,\n getArchiveTargets,\n fetchCards,\n fetchWorkflowCards,\n fetchWorkflowProviders,\n fetchNews,\n} from \"data/api\";\nimport { hasCacheSupport } from \"data/utils\";\nimport { JL } from \"data/logging\";\nimport { replayOfflineQueue } from \"data/offline/offlineQueue\";\nimport { isFeatureOn, Feature } from \"data/constants\";\n\nconst _log = JL(\"offlineSaga\");\n\n// caching API instances per offlineItem\nlet APIs = {};\nconst getAPI = (item: OfflineItemDTO) =>\n APIs[item.id] == null\n ? (APIs[item.id] = new ApiManagerMakeAvailableOffline(item))\n : APIs[item.id];\nlet isSyncing = false;\n\nlet promptedForPersistentStorage = false;\nconst depsMap = {};\n\nexport function* updateUser() {\n yield call(fetchUser);\n}\n\nexport function* startSync(action) {\n try {\n isSyncing = true;\n _log.debug(() => \"starting sync\");\n const items = action.payload.items; //exact items to sync\n if (items && items.length > 0) {\n console.time(\"[offline]\");\n let anyOfflineItemSyncErrors = false;\n yield put(offlineSyncStartedAction());\n\n // update archive targets\n yield spawn(getArchiveTargets, true);\n\n for (var i = 0; i < items.length; i++) {\n const item = items[i];\n _log.debug(() => ({\n msg: \"syncing\",\n bc: item.breadcrumb.text,\n offlineItem: item,\n }));\n depsMap[item.id] = {\n name: item.breadcrumb.text,\n children: [],\n attributes: {\n itemUri: item.itemUri,\n },\n };\n\n try {\n yield put(\n setOfflineItemSyncStatusAction({\n item,\n status: OfflineSyncStatus.Syncing,\n })\n );\n\n const t0 = performance.now();\n yield call(preFetchFolder, item, item.itemUri);\n const took = performance.now() - t0;\n\n // retrieve item from redux to check for errors\n const storeItems = yield select(s.offlineItemsSelector);\n /* istanbul ignore if */\n if (storeItems == null) {\n throw new Error(\n \"offlineSaga could not retrieve all offlineItems\"\n );\n }\n const storeItem = storeItems[item.id];\n /* istanbul ignore if */\n if (storeItem == null) {\n throw new Error(\n \"offlineSaga could not retrieve offlineItem \" +\n item.id\n );\n }\n\n /* istanbul ignore else */\n if (storeItem.status === OfflineSyncStatus.Syncing) {\n // no errors, update to done!\n yield put(\n setOfflineItemSyncStatusAction({\n item,\n status: OfflineSyncStatus.Synced,\n took,\n })\n );\n delete depsMap[item.id].attributes.error;\n } else {\n anyOfflineItemSyncErrors = true;\n }\n } catch (e) {\n anyOfflineItemSyncErrors = true;\n _log.fatalException(\n () => ({\n msg: \"error while syncing\",\n bc: item.breadcrumb.text,\n offlineItem: item,\n }),\n e\n );\n depsMap[item.id].attributes.error = e;\n depsMap[item.id]._collapsed = false;\n yield put(\n setOfflineItemSyncStatusAction({\n item,\n message: e.message,\n status: OfflineSyncStatus.SyncedWithErrors,\n })\n );\n }\n console.timeLog(\"[offline]\", item);\n yield call(getAPI(item).LogEstimates);\n }\n yield put(\n offlineSyncDoneAction({\n status: anyOfflineItemSyncErrors\n ? OfflineSyncStatus.SyncedWithErrors\n : OfflineSyncStatus.Synced,\n })\n );\n console.timeEnd(\"[offline]\");\n }\n } catch (e) {\n /* istanbul ignore next */\n _log.fatalException(() => \"Error in startSync()\", e);\n\n /* istanbul ignore next */\n yield put(\n offlineSyncDoneAction({\n status: OfflineSyncStatus.Error,\n message: e.message,\n })\n );\n } finally {\n // release all API instances\n APIs = {};\n }\n isSyncing = false;\n}\n\nfunction* preFetchGlobals(): void {\n _log.debug(() => ({\n msg: \"pre-fetching globals\",\n }));\n\n // wait for user token\n yield take(actionTypes.USER_FETCH_RESULT);\n\n // fetch globals\n yield spawn(fetchCards);\n yield spawn(fetchWorkflowCards);\n yield spawn(fetchWorkflowProviders);\n yield spawn(fetchNews);\n}\nfunction* preFetchFolder(item: OfflineItemDTO, itemUri: string): void {\n if (item.isDoc !== false) {\n _log.warn(() => ({\n msg: \"cannot pre-fetch offlineItem as currently only Folders are supported!\",\n offlineItem: item,\n }));\n throw new Error(\"Only Folders are supported for offline sync!\");\n }\n\n _log.debug(() => ({\n msg: \"pre-fetching Folder\",\n item,\n itemUri,\n }));\n\n // starting point is always the tree\n const childMapRef = {\n name: \"fetchTree\",\n children: [],\n attributes: {\n itemUri,\n },\n };\n depsMap[item.id].children.push(childMapRef);\n const rootDep = {\n name: \"fetchTree\",\n params: {\n itemUri,\n deep: false,\n all: true, // no paging\n },\n };\n yield call(fetchDeps, item, rootDep, childMapRef);\n}\n\nfunction* fetchDeps(item: OfflineItemDTO, dep: ApiMethodRef, mapRef): void {\n _log.debug(() => ({\n msg: \"Fetching DEP:\",\n dep,\n }));\n const t0 = performance.now();\n const { name, ...args } = dep;\n const deps = yield call(getAPI(item)._callWithDeps, dep.name, args);\n const took = Math.round(performance.now() - t0) + \"ms\";\n mapRef.attributes = {\n took,\n ...dep.params,\n };\n\n _log.debug(() => ({\n msg: \"Retrieved sub-dependencies\",\n dep,\n args,\n deps,\n }));\n\n for (const dep of deps) {\n try {\n // add child dependencies for processing\n const childMapRef = {\n name: dep.name,\n children: [],\n attributes: {},\n };\n mapRef.children.push(childMapRef);\n\n yield call(fetchDeps, item, dep, childMapRef);\n } catch (e) {\n _log.warn(() => ({\n msg: \"error while fetchDeps\",\n dep,\n e,\n }));\n\n yield put(\n setOfflineItemSyncStatusAction({\n item,\n message: e.message,\n status: OfflineSyncStatus.SyncedWithErrors,\n })\n );\n }\n }\n}\n\nfunction* removeOfflineItem(action) {\n _log.debug(() => ({\n msg: \"remove offline item\",\n offlineItem: action.payload.item,\n }));\n const itemAPI = yield call(getAPI, action.payload.item);\n // remove window.cache entries\n itemAPI.DeleteCache().then((isSuccess) => {\n if (isSuccess)\n _log.debug(() => ({\n msg: \"successfully deleted cache\",\n offlineItem: action.payload.item,\n }));\n else\n _log.warn(() => ({\n msg: \"could not delete cache\",\n offlineItem: action.payload.item,\n }));\n });\n}\n\nexport function* checkOfflineItems() {\n const hasOfflineItems = yield select(s.userHasOfflineItemsSelector);\n // retrieve current offline items\n const currentOffline = yield select(s.offlineItemsSelector);\n /* istanbul ignore else */\n if (\n hasOfflineItems /* istanbul ignore next */ ||\n Object.keys(currentOffline).length > 0\n ) {\n // https://storage.spec.whatwg.org/#example-3a7051a8\n if (\n !promptedForPersistentStorage &&\n navigator.storage &&\n navigator.storage.persist\n ) {\n // eslint-disable-next-line no-loop-func\n navigator.storage.persist().then((persistent) => {\n promptedForPersistentStorage = true;\n /* istanbul ignore else */\n if (persistent)\n _log.info(\n () =>\n \"Storage will not be cleared except by explicit user action\"\n );\n else\n _log.warn(\n () =>\n \"Storage may be cleared by the UA under storage pressure.\"\n );\n });\n }\n\n // manual offline files\n try {\n const itemsToSync = [];\n\n // Update cached User network call to fix #56961 (update detached)\n yield spawn(updateUser);\n\n // retrieve new ones (with .LastUpdate) from server\n const items = yield call(fetchOfflineItems);\n\n // let's check the new ones\n for (const item of items) {\n // do we have this one already?\n const currentOfflineItem = currentOffline[item.id];\n // same same? no need to sync\n if (\n currentOfflineItem &&\n currentOfflineItem.lastUpdate === item.lastUpdate &&\n [\n OfflineSyncStatus.Synced,\n OfflineSyncStatus.SyncedWithErrors,\n OfflineSyncStatus.Error,\n ].includes(currentOfflineItem.status)\n ) {\n const exists = yield call(\n getAPI(currentOfflineItem).CacheExists\n );\n if (exists) {\n _log.debug(() => ({\n msg: \"item already synchronized\",\n offlineItem: currentOfflineItem,\n }));\n continue;\n }\n }\n // TODO better granularity of which ItemsUris within an OfflineItem to sync?\n itemsToSync.push(item);\n }\n // process currentOfflineItems that have been removed!\n for (const currentOfflineItem of Object.values(currentOffline)) {\n const item = items?.find?.(\n (i) => i.id === currentOfflineItem.id\n );\n // does not exist anymore! purge\n if (item == null) {\n yield put(removeOfflineItemAction(currentOfflineItem));\n }\n }\n\n if (itemsToSync.length > 0) {\n _log.debug(() => ({\n msg: \"checkOfflineItems: itemsToSync\",\n itemsToSync,\n }));\n // TODO should we clear current cache for this item as a whole?\n // put(setOfflineItemSyncStatusAction) BEFORE startOfflineSyncAction() so they are all visible in the sidebar!\n for (const item of itemsToSync) {\n yield put(\n setOfflineItemSyncStatusAction({\n item,\n status: OfflineSyncStatus.Unknown,\n })\n );\n }\n yield put(startOfflineSyncAction(itemsToSync));\n } else {\n _log.debug(() => \"checkOfflineItems: nothing to sync!\");\n }\n } catch (e) {\n _log.fatalException(\n () => ({ msg: \"Error in checkOfflineItems()\" }),\n e\n );\n yield put(\n offlineSyncDoneAction({\n status: OfflineSyncStatus.Error,\n message: e.message,\n })\n );\n }\n }\n}\n\nexport function* watchOfflineSync() {\n while (true) {\n const isOnline = yield select(s.isApiOnlineSelector);\n // if (!isOnline) {\n // const hasBeenOnline = yield select(s.hasBeenOnlineSelector);\n // if (!hasBeenOnline) {\n // yield call(delay, 1000 * 5);\n // continue;\n // }\n // }\n if (isOnline && !isSyncing) {\n // check pending offline queue\n yield call(replayOfflineQueue);\n // check offlineItems to cache\n yield call(checkOfflineItems);\n }\n yield race({\n user: take(actionTypes.OFFLINE_SYNC_UPDATE),\n network: take(networkActionTypes.PING_SUCCESS),\n timeout: delay(1000 * 60), // TODO #54607 appSettings offline refresh timeout\n });\n }\n}\n\n/* istanbul ignore next */\nfunction* getDepsMap(action) {\n yield put(\n setOfflineItemDepsMapAction(\n action.payload.item,\n depsMap[action.payload.item.id]\n )\n );\n}\n\n/* istanbul ignore next */\nfunction persistNetworkStatus(action) {\n // To avoid race-condition with network-status reducer = > calculate online status by ourself\n const offline = [\n networkActionTypes.PING_FAILURE,\n networkActionTypes.NAVIGATOR_OFFLINE,\n ];\n const payload = {\n isOnline: !offline.includes(action.type),\n };\n window.caches.open(\"swConfig\").then((cache) =>\n cache\n .put(\n \"/swConfig\",\n new Response(JSON.stringify(payload), {\n status: 200,\n headers: { \"Content-Type\": \"application/json\" },\n })\n )\n .then(() =>\n _log.info(() => ({\n msg: \"Persited Networkstatus to cache\",\n payload,\n }))\n )\n );\n}\n\n/* istanbul ignore next */\nfunction* watchNetworkStatus() {\n yield takeLatest(\n [\n networkActionTypes.PING_SUCCESS,\n networkActionTypes.PING_FAILURE,\n networkActionTypes.NAVIGATOR_ONLINE,\n networkActionTypes.NAVIGATOR_OFFLINE,\n ],\n persistNetworkStatus\n );\n}\n\nfunction* offlineSaga() {\n if (!hasCacheSupport()) {\n _log.info(\n () =>\n \"Browser does not support Caching - offlineItems cannot be synchronized!\"\n );\n return;\n }\n if (!isFeatureOn(Feature.offline)) {\n _log.info(\n () =>\n \"Offline feature disabled in appsettings - offlineItems cannot be synchronized!\"\n );\n return;\n }\n // offline saga\n yield all([\n // listen for sync requests\n takeLatest(actionTypes.OFFLINE_SYNC_REQUEST, startSync),\n // listen for removals\n takeLatest(actionTypes.OFFLINEITEM_REMOVE, removeOfflineItem),\n // retrieve last offlineItem sync and add it to redux store\n takeLatest(actionTypes.OFFLINEITEM_DEPSMAP_REQUEST, getDepsMap),\n // background sync job\n fork(watchOfflineSync),\n // handle online/offline changes\n fork(watchNetworkStatus),\n // pre-fetch globals\n spawn(preFetchGlobals),\n ]);\n}\n\nexport default offlineSaga;\n\n// continuos check for actual server connectivity - forked by rootSaga\n/* istanbul ignore next*/\nexport function* checkServerConnectivity() {\n // check for network outages\n const correlationId = yield select(s.userCorrelationIdSelector);\n const pingUrl = `${window.CONFIG.host.basename}/ping`;\n var headers = new Headers();\n if (correlationId != null) {\n headers.append(CustomHttpHeader.CorrelationId, correlationId);\n }\n yield put(\n networkActions.startWatchNetworkStatus(\n new Request(pingUrl, {\n headers,\n })\n )\n );\n // additionally, periodically check for server connection\n // while (true) {\n // if (!isSyncing) {\n // if (yield select(isNavigatorOnlineSelector)) {\n // yield put(networkActions.ping(pingUrl));\n // }\n // }\n // yield call(delay, 1000 * 10); //every 10sec\n // }\n}\n","import { call, put, takeLatest, select, take, race } from \"redux-saga/effects\";\r\nimport delay from \"@redux-saga/delay-p\";\r\nimport actionTypes from \"data/actions/actionTypes\";\r\nimport {\r\n getUserResultAction,\r\n setLoginResultAction,\r\n loginRefreshAction,\r\n} from \"data/actions\";\r\nimport { fetchUser } from \"data/api\";\r\nimport Constants from \"data/constants\";\r\nimport { version } from \"../../../package.json\";\r\nimport { signinRedirect, signout, getToken } from \"data/loginFlow\";\r\nimport { JL } from \"data/logging\";\r\nimport * as s from \"data/reducers/selectors\";\r\nimport { msToTime } from \"data/utils\";\r\n\r\nconst log = JL(\"userSaga\");\r\nconst EXPIRATION_DELTA = 0.25; // percentage of unused token lifetime\r\nconst MAX_RACE_TIMEOUT = 2147483647; // max value for race effect\r\n\r\n// worker Saga: will be fired on USER_FETCH_REQUESTED actions\r\nfunction* getUser(action) {\r\n try {\r\n const user = yield call(fetchUser);\r\n window.CONFIG.web_version = version;\r\n window.CONFIG.provider_fileVersion = user.provider_fileVersion;\r\n window.CONFIG.provider_serviceVersion = user.provider_serviceVersion;\r\n window.CONFIG.general.features = user.features;\r\n log.info(() => ({\r\n msg: `Fetch user`,\r\n user,\r\n version,\r\n }));\r\n\r\n yield put(getUserResultAction({ status: Constants.OK, info: user }));\r\n //}\r\n } catch (error) {\r\n log.error(() => ({\r\n msg: `Error while getting user`,\r\n action,\r\n error,\r\n }));\r\n yield put(\r\n getUserResultAction({\r\n status: Constants.ERROR,\r\n message: error.message,\r\n })\r\n );\r\n }\r\n}\r\n\r\nfunction* logoutUser() {\r\n const idToken = yield select(s.loginIdTokenSelector);\r\n log.info(() => ({\r\n msg: `Logging out user`,\r\n idToken,\r\n }));\r\n yield call(signout, idToken);\r\n}\r\n\r\nfunction* refreshToken() {\r\n const refreshToken = yield select(s.loginRefreshTokenSelector);\r\n try {\r\n log.info(() => ({\r\n msg: `Renew Token with refresh_token`,\r\n grant_type: \"refresh_token\",\r\n client_id: window.CONFIG.auth.clientId,\r\n redirect_uri: window.CONFIG.auth.redirectUrl,\r\n }));\r\n\r\n const result = yield call(getToken, {\r\n client_id: window.CONFIG.auth.clientId,\r\n grant_type: \"refresh_token\",\r\n redirect_uri: window.CONFIG.auth.redirectUrl,\r\n refresh_token: refreshToken,\r\n });\r\n\r\n yield put(\r\n setLoginResultAction({\r\n status: Constants.OK,\r\n refreshToken: result.refresh_token,\r\n accessToken: result.access_token,\r\n idToken: result.id_token,\r\n expiresIn: result.expires_in,\r\n expiresOn: Date.now() + 1000 * result.expires_in,\r\n })\r\n );\r\n } catch (error) {\r\n log.error(() => ({\r\n msg: \"Error while Token renewal with refresh_token\",\r\n error,\r\n }));\r\n signinRedirect();\r\n }\r\n}\r\n\r\nfunction* setRenewal(action) {\r\n // Relative seconds, that are always set\r\n const expiresIn = (yield select(s.loginExpiresInSelector)) * 1000;\r\n // Absolute timestap that might be empty, therefor calculate it\r\n const expiresOn = parseInt(\r\n (yield select(s.loginExpiresOnSelector)) ??\r\n action.receivedAt + expiresIn,\r\n 10\r\n );\r\n const expiresInMs = expiresOn - action.receivedAt;\r\n // Calculated delta, but not less than 1 minute\r\n const expiresInDelta = Math.max(60000, expiresIn * EXPIRATION_DELTA);\r\n // Calculated delay, but not less than 0\r\n const delayInMs = Math.max(0, expiresInMs - expiresInDelta);\r\n\r\n if (Number.isNaN(expiresIn) || Number.isNaN(action.receivedAt)) {\r\n log.error(() => ({\r\n msg: \"Cannot calculate expiration delta, aborting setRenewal...\",\r\n delayInMs,\r\n MAX_RACE_TIMEOUT,\r\n expiresOn,\r\n expiresIn,\r\n expiresInMs,\r\n expiresInDelta,\r\n receivedAt: action?.receivedAt,\r\n action,\r\n }));\r\n return;\r\n }\r\n /* istanbul ignore if */\r\n if (!window.CONFIG.auth.tokenEndpoint) {\r\n log.warn(() => ({\r\n msg: \"OAuth Provider does not support hybrid grant flow, cannot renew token in background...\",\r\n DEV: \"IIdentityService.TokenEndpoint needs valid URL\",\r\n }));\r\n return;\r\n }\r\n\r\n log.info(() => ({\r\n msg: `Token will be renewed in ${msToTime(\r\n Math.min(delayInMs, MAX_RACE_TIMEOUT)\r\n )}`,\r\n formated: {\r\n delayInMs: msToTime(delayInMs),\r\n MAX_RACE_TIMEOUT: msToTime(MAX_RACE_TIMEOUT),\r\n expiresOn: new Date(expiresOn),\r\n expiresIn: msToTime(expiresIn),\r\n expiresInMs: msToTime(expiresInMs),\r\n expiresInDelta: msToTime(expiresInDelta),\r\n },\r\n delayInMs,\r\n MAX_RACE_TIMEOUT,\r\n expiresOn,\r\n expiresIn,\r\n expiresInMs,\r\n expiresInDelta,\r\n }));\r\n\r\n const { timeout, ...actions } = yield race({\r\n login: take(actionTypes.LOGIN_RESULT),\r\n logout: take(actionTypes.LOGIN_SIGNOUT),\r\n renewal: take(actionTypes.LOGIN_SET_RENEWAL),\r\n timeout: delay(Math.min(delayInMs, MAX_RACE_TIMEOUT)),\r\n });\r\n\r\n if (timeout) {\r\n log.info(() => ({\r\n msg: \"Token expiration delta reached, refreshing token...\",\r\n delayInMs,\r\n MAX_RACE_TIMEOUT,\r\n expiresOn,\r\n expiresIn,\r\n expiresInMs,\r\n expiresInDelta,\r\n }));\r\n yield put(loginRefreshAction());\r\n return;\r\n }\r\n\r\n log.info(() => ({\r\n msg: \"Aborting setRenewal...\",\r\n actions,\r\n }));\r\n}\r\n\r\nfunction* userSaga() {\r\n yield takeLatest(actionTypes.USER_FETCH_REQUESTED, getUser);\r\n yield takeLatest(actionTypes.LOGIN_SIGNOUT, logoutUser);\r\n yield takeLatest(actionTypes.LOGIN_REFRESH, refreshToken);\r\n yield takeLatest(actionTypes.LOGIN_SET_RENEWAL, setRenewal);\r\n}\r\n\r\nexport default userSaga;\r\n","import {\n call,\n put,\n takeLatest,\n takeEvery,\n select,\n take,\n race,\n} from \"redux-saga/effects\";\nimport delay from \"@redux-saga/delay-p\";\nimport actionTypes from \"data/actions/actionTypes\";\nimport {\n getFavoritesAction,\n getFavoritesResultAction,\n setCurrentBreadcrumb,\n} from \"data/actions\";\nimport { fetchFavorites } from \"data/api\";\nimport Constants from \"data/constants\";\nimport * as s from \"data/reducers/selectors\";\n\nconst breadcrumbSelector = (state, viewName) => state.breadcrumb[viewName];\n\nfunction* getFavorites(action) {\n try {\n const favorites = yield call(fetchFavorites);\n yield put(\n getFavoritesResultAction({ status: Constants.OK, favorites })\n );\n\n // const breadcrumb = yield select(breadcrumbSelector);\n // yield put(setCurrentBreadcrumb(breadcrumb));\n } catch (e) {\n yield put(\n getFavoritesResultAction({\n status: Constants.ERROR,\n message: e.message,\n })\n );\n }\n}\n\nfunction* checkIsFav(action) {\n const breadcrumb = yield select(\n breadcrumbSelector,\n action.payload.viewName\n );\n // only check if unknown\n if (breadcrumb != null && breadcrumb.isFav == null) {\n let stateFavoritesStatus = yield select(s.favoritesStatusSelector);\n if (\n [Constants.LOADING, Constants.REFRESH].includes(\n stateFavoritesStatus\n )\n ) {\n const { timeout } = yield race({\n favoritesFetched: take(actionTypes.FAVORITES_FETCH_RESULT),\n timeout: delay(5000),\n });\n stateFavoritesStatus = yield select(s.favoritesStatusSelector);\n /* istanbul ignore if */\n if (timeout || stateFavoritesStatus !== Constants.OK) {\n return;\n }\n }\n const stateFavorites = yield select(s.favoritesFavoritesSelector);\n // only check if favorites known\n /* istanbul ignore else */\n if (stateFavorites != null) {\n const isFav = stateFavorites.includes(breadcrumb.itemUri);\n // update state\n yield put(setCurrentBreadcrumb({ ...action.payload, isFav }));\n }\n }\n}\n\nexport function* refreshFavorites(action) {\n /* istanbul ignore else */\n if (\"favorite\" === action.payload.item) {\n return yield put(getFavoritesAction(Constants.REFRESH));\n }\n}\n\nfunction* favoritesSaga() {\n yield takeLatest(actionTypes.FAVORITES_FETCH_REQUEST, getFavorites);\n yield takeEvery(actionTypes.CURRENT_BREADCRUMB, checkIsFav);\n yield takeEvery(actionTypes.GLOBALEVENTS_SERVER, refreshFavorites);\n}\n\nexport default favoritesSaga;\n","import { select, call, put, takeLatest, cancelled } from \"redux-saga/effects\";\nimport delay from \"@redux-saga/delay-p\";\nimport actionTypes from \"data/actions/actionTypes\";\nimport { cardsCardsSelector } from \"data/reducers/selectors\";\nimport {\n getCardsResultAction,\n getCardsByEntityAction,\n getCardsByEntityResultAction,\n} from \"data/actions\";\nimport { fetchCards, fetchCardsByEntity } from \"data/api\";\nimport {\n ServerEventItemType,\n ServerEventActionType,\n CardType,\n CardItemType,\n type ServerEventItemTypeEnum,\n type CardItemTypeEnum,\n} from \"data/types\";\nimport Constants from \"data/constants\";\n\n// worker Saga: will be fired on CARDS_FETCH_REQUESTED actions\nexport function* getCards(action) {\n const abortController = new AbortController();\n\n try {\n const cards = yield call(fetchCards, abortController.signal);\n yield put(getCardsResultAction({ status: Constants.OK, cards }));\n } catch (e) {\n yield put(\n getCardsResultAction({\n status: Constants.ERROR,\n message: e.message,\n })\n );\n } finally {\n if (yield cancelled()) {\n // Cancel the API call if the saga was cancelled\n abortController.abort();\n }\n }\n}\n\nconst getCardItemTypeFrom = (\n itemType: ServerEventItemTypeEnum\n): CardItemTypeEnum => {\n switch (itemType) {\n case ServerEventItemType.document:\n return CardItemType.Doc;\n case ServerEventItemType.folder:\n return CardItemType.Folder;\n case ServerEventItemType.search:\n return CardItemType.Search;\n /* istanbul ignore next */\n default:\n return null;\n }\n};\n\nexport function* refreshCards(action) {\n const params = {};\n\n // Handle recent changes\n if (\n action.payload.action === ServerEventActionType.view &&\n [\n ServerEventItemType.document,\n ServerEventItemType.folder,\n ServerEventItemType.search,\n ].includes(action.payload.item)\n ) {\n params.cardTypes = [CardType.Rec];\n params.cardItemTypes = [getCardItemTypeFrom(action.payload.item)];\n }\n\n // Handle favorite changes\n if (action.payload.item === ServerEventItemType.favorite) {\n params.cardTypes = [CardType.Fav];\n params.cardItemTypes = [\n CardItemType.Doc,\n CardItemType.Folder,\n CardItemType.Search,\n ];\n }\n\n /* istanbul ignore else */\n if (params.cardTypes == null || params.cardItemTypes == null) {\n return;\n }\n\n // De-bouncer\n yield delay(10000);\n\n yield put(\n getCardsByEntityAction(\n params.cardTypes,\n params.cardItemTypes,\n Constants.REFRESH\n )\n );\n}\n\nexport function* getCardsByEntity(action) {\n const params = {\n cardTypes: action.payload.cardTypes,\n cardItemTypes: action.payload.cardItemTypes,\n };\n\n const abortController = new AbortController();\n try {\n const cards = yield call(\n fetchCardsByEntity,\n params,\n abortController.signal\n );\n yield put(\n getCardsByEntityResultAction({\n status: Constants.OK,\n cards,\n cardTypes: action.payload.cardTypes,\n cardItemTypes: action.payload.cardItemTypes,\n })\n );\n } catch (e) {\n const cards = yield select(cardsCardsSelector);\n yield put(\n getCardsResultAction({\n status: Constants.ERROR,\n message: e.message,\n cards,\n })\n );\n } finally {\n if (yield cancelled()) {\n // Cancel the API call if the saga was cancelled\n abortController.abort();\n }\n }\n}\n\nfunction* cardsSaga() {\n yield takeLatest(actionTypes.CARDS_FETCH_REQUESTED, getCards);\n yield takeLatest(\n actionTypes.CARDS_FETCH_ENTITY_REQUESTED,\n getCardsByEntity\n );\n yield takeLatest(actionTypes.GLOBALEVENTS_SERVER, refreshCards);\n}\n\nexport default cardsSaga;\n","import { call, put, takeLatest, cancelled } from \"redux-saga/effects\";\nimport delay from \"@redux-saga/delay-p\";\nimport actionTypes from \"data/actions/actionTypes\";\nimport {\n getWorkflowCards,\n getWorkflowCardsResult,\n getWorkflowProvidersResult,\n togglesUpdateCounterAction,\n} from \"data/actions\";\nimport { fetchWorkflowCards, fetchWorkflowProviders } from \"data/api\";\nimport Constants from \"data/constants\";\nimport countBy from \"lodash/countBy\";\n\nexport const lib = {\n delay,\n};\n\nconst defaultCount = {\n start: 0,\n pending: 0,\n // done: 0,\n};\nconst countCards = (cards?: Array) => ({\n ...defaultCount,\n ...countBy(cards || /* istanbul ignore next */ [], \"extras.toggle\"),\n});\n\n// worker Saga: will be fired on WF_FETCH_REQUESTED actions\nexport function* getCards(action) {\n let status = {\n start: Constants.LOADING,\n pending: Constants.LOADING,\n };\n let counts = { ...defaultCount };\n yield put(\n togglesUpdateCounterAction({\n name: \"wf\",\n counts,\n status,\n })\n );\n if (action?.payload?.status === Constants.REFRESH) {\n // this delay in combination with takeLatest\n // is our debouncer to avoid multiple calls\n yield lib.delay(10000);\n }\n\n // https://decembersoft.com/posts/redux-saga-abort-controller-cancel-api-calls/\n const abortController = new AbortController();\n try {\n const cards = yield call(fetchWorkflowCards, abortController.signal);\n yield put(getWorkflowCardsResult({ status: Constants.OK, cards }));\n status = {\n start: Constants.OK,\n pending: Constants.OK,\n };\n counts = countCards(cards);\n } catch (e) {\n yield put(\n getWorkflowCardsResult({\n status: Constants.ERROR,\n message: e.message,\n })\n );\n status = {\n start: Constants.ERROR,\n pending: Constants.ERROR,\n };\n } finally {\n if (yield cancelled()) {\n // Cancel the API call if the saga was cancelled\n abortController.abort();\n }\n yield put(\n togglesUpdateCounterAction({\n name: \"wf\",\n counts,\n status,\n })\n );\n }\n}\n\n// worker Saga: will be fired on WF_PROVIDERS_FETCH_REQUESTED actions\nexport function* getProviders(action) {\n const abortController = new AbortController();\n\n try {\n const providers = yield call(\n fetchWorkflowProviders,\n abortController.signal\n );\n yield put(\n getWorkflowProvidersResult({ status: Constants.OK, providers })\n );\n } catch (e) {\n yield put(\n getWorkflowProvidersResult({\n status: Constants.ERROR,\n message: e.message,\n })\n );\n } finally {\n if (yield cancelled()) {\n // Cancel the API call if the saga was cancelled\n abortController.abort();\n }\n }\n}\n\nfunction* refreshCards(action) {\n /* istanbul ignore else */\n if (\n action.payload.action === \"view\" &&\n [\"document\", \"folder\", \"task\", \"search\"].includes(action.payload.item)\n ) {\n return yield put(getWorkflowCards(Constants.REFRESH));\n }\n}\n\nfunction* workflowSaga() {\n yield takeLatest(actionTypes.WF_PROVIDERS_FETCH_REQUESTED, getProviders);\n yield takeLatest(actionTypes.WF_FETCH_REQUESTED, getCards);\n yield takeLatest(actionTypes.GLOBALEVENTS_SERVER, refreshCards);\n}\n\nexport default workflowSaga;\n","import { call, put, takeLatest, cancelled } from \"redux-saga/effects\";\nimport actionTypes from \"data/actions/actionTypes\";\nimport { getTreeResultAction } from \"data/actions\";\nimport { fetchTree } from \"data/api\";\nimport Constants from \"data/constants\";\n\nexport function* getTree(action) {\n // https://decembersoft.com/posts/redux-saga-abort-controller-cancel-api-calls/\n const abortController = new AbortController();\n\n try {\n const tree = yield call(fetchTree, {\n itemUri: action.payload.itemUri,\n filter: action.payload.filter,\n deep: action.payload.deep,\n all: action.payload.all,\n signal: abortController.signal,\n });\n yield put(\n getTreeResultAction({ status: Constants.OK, tree, error: null })\n );\n } catch (e) {\n yield put(\n getTreeResultAction({\n status: Constants.ERROR,\n error: e,\n })\n );\n } finally {\n if (yield cancelled()) {\n // Cancel the API call if the saga was cancelled\n abortController.abort();\n }\n }\n}\n\nfunction* treeSaga() {\n yield takeLatest(actionTypes.TREE_FETCH_REQUEST, getTree);\n}\n\nexport default treeSaga;\n","import { call, put, takeLatest, cancelled, select } from \"redux-saga/effects\";\nimport actionTypes from \"data/actions/actionTypes\";\nimport { getDocsResultAction } from \"data/actions\";\nimport { fetchDocs, fetchDocsCsv, fetchDocCount } from \"data/api\";\nimport Constants from \"data/constants\";\nimport FileSaver from \"file-saver\";\nimport * as s from \"data/reducers/selectors\";\n\n// fetches batch of results\nexport function* getDocs(action) {\n // https://decembersoft.com/posts/redux-saga-abort-controller-cancel-api-calls/\n const abortController = new AbortController();\n\n // this delay in combination with takeLatest\n // is our debouncer to avoid multiple calls\n // yield call(delay, 300);\n try {\n const result = yield call(\n fetchDocs,\n action.payload.itemUri,\n action.payload.pageNum,\n action.payload.sorts,\n action.payload.filters,\n action.payload.cols,\n abortController.signal\n );\n\n yield put(\n getDocsResultAction({\n status: Constants.OK,\n result,\n totalCount: result.rowCount,\n error: null,\n })\n );\n\n // do we need to fetch the real totalCount?\n if (\n (action.payload.pageNum === 0 ||\n action.payload.pageNum === undefined) &&\n result.rowCount > 0 &&\n result.rowCount === result.pageSize\n ) {\n const totalCount = yield call(\n fetchDocCount,\n action.payload.itemUri,\n action.payload.filters,\n abortController.signal\n );\n yield put(\n getDocsResultAction({\n status: Constants.OK,\n result,\n totalCount: totalCount >= 0 ? totalCount : result.rowCount, // Handle -1/-2 responses from server\n error: null,\n })\n );\n }\n } catch (e) {\n yield put(\n getDocsResultAction({\n status: Constants.ERROR,\n error: e,\n })\n );\n } finally {\n if (yield cancelled()) {\n // console.log(\"getDocs cancelled\");\n // Cancel the API call if the saga was cancelled\n abortController.abort();\n }\n }\n}\n\nfunction* exportToCsv() {\n const itemUri = yield select(s.currentItemUriSelector);\n const filters = yield select(s.docsFiltersSelector);\n const sorts = yield select(s.docsSortsSelector);\n\n const blob = yield call(fetchDocsCsv, itemUri, sorts, filters);\n FileSaver.saveAs(blob, \"inPoint.Web.Export.csv\");\n}\n\nfunction* docsSaga() {\n yield takeLatest(actionTypes.DOCS_FETCH_REQUEST, getDocs);\n yield takeLatest(actionTypes.DOCS_EXPORT_CSV, exportToCsv);\n}\n\nexport default docsSaga;\n","import { call, put, take, takeEvery, select, race } from \"redux-saga/effects\";\nimport delay from \"@redux-saga/delay-p\";\nimport actionTypes from \"data/actions/actionTypes\";\nimport { getDocsAction, setDocsLayoutAction } from \"data/actions\";\nimport * as s from \"data/reducers/selectors\";\nimport { DocListFilterOperators, SearchValueType } from \"data/types\";\nimport {\n GetDefaults,\n ResetFilters,\n GetFilterValueAsString,\n} from \"components/DocListFilterModal/Utils\";\nimport Constants, { getDefaultsConfig } from \"data/constants\";\nimport { produce } from \"immer\";\n\nconst resultSelector = (state) => state.docs;\nconst currentItemSelector = (state) => state.current;\nconst formatIdSelector = (state) =>\n s.breadcrumbFormatIdSelector(state, s.currentNameSelector(state));\n\n// clears all filters & sorts (in case none is available, will reset everything)\nfunction* resetFilters() {\n const result = yield select(resultSelector);\n const formatId = yield select(formatIdSelector);\n if (result != null && result.cols != null && result.cols.length > 0) {\n yield put(\n setDocsLayoutAction({\n sorts: [],\n filters: ResetFilters(\n result.itemUri,\n formatId,\n result.filters,\n result.cols\n ),\n })\n );\n } else {\n // bruteforce - delete everything\n yield put(setDocsLayoutAction());\n }\n}\n\n// create a filter based on a value referenced from the result.rows\nfunction* setFilterByRef(action) {\n const status = yield select(s.docsStatusSelector);\n if (status !== Constants.OK) return;\n\n const { docContextClick, resetValues } = action.payload;\n const result = yield select(resultSelector);\n const formatId = yield select(formatIdSelector);\n //const filters = yield select(s.docsFiltersSelector);\n //const cols = yield select(s.docsColsSelector);\n /* istanbul ignore else */\n if (result != null && result.cols != null) {\n // get current filters\n let filters = result.filters;\n // none yet? create default list\n if (filters == null || filters.length === 0) {\n filters = GetDefaults(\n result.itemUri,\n formatId,\n result.cols\n ).filters;\n }\n if (resetValues) {\n // reset values ONLY (operators stay as they are)\n filters = ResetFilters(\n result.itemUri,\n formatId,\n filters,\n result.cols\n );\n }\n const { cols } = result;\n const colName = cols[docContextClick.columnIndex].name;\n\n // then set our own\n const newfilters = filters.map((filter, index) => {\n if (filter.name === colName) {\n return produce(filter, (draft) => {\n draft.values = [\n docContextClick.rowIndex === -1\n ? \"\"\n : GetFilterValueAsString(\n result.rows[docContextClick.rowIndex][\n docContextClick.columnIndex\n ]\n ),\n ];\n if (\n [\n DocListFilterOperators.None,\n DocListFilterOperators.Between,\n DocListFilterOperators.NotBetween,\n // DocListFilterOperators.Contains\n ].includes(draft.operator)\n )\n draft.operator = DocListFilterOperators.Equals;\n if (\n [DocListFilterOperators.DoesNotContain].includes(\n draft.operator\n )\n )\n draft.operator = DocListFilterOperators.NotEquals;\n });\n }\n return filter;\n });\n yield put(setDocsLayoutAction({ filters: newfilters }));\n }\n}\n\nfunction* setFilterByName(action) {\n const result = yield select(resultSelector);\n const formatId = yield select(formatIdSelector);\n /* istanbul ignore else */\n if (result == null || result.cols == null) return;\n\n const { name, valueType, operator, value } = action.payload;\n // get current filters\n let filters = result.filters;\n // none yet? create default list\n if (filters == null || filters.length === 0) {\n filters = GetDefaults(result.itemUri, formatId, result.cols).filters;\n }\n\n // new value to assign; reset or set value\n let newValue =\n value === \"__ALL__\" ||\n (valueType === SearchValueType.RelativeDate && value === \"NotSet\")\n ? \"\"\n : value;\n // Transform to Array (if not already an array)\n if (!Array.isArray(newValue)) {\n newValue = [newValue];\n }\n // find requested filter\n const idx = filters.findIndex((f) => f.name === name);\n let newFilters = filters;\n if (idx === -1) {\n // add new filter\n newFilters = produce(filters, (draft) => {\n draft.push({\n name,\n operator,\n values: newValue,\n });\n });\n } else {\n newFilters = produce(filters, (draft) => {\n draft[idx] = {\n name,\n operator: operator || filters[idx].operator,\n values: newValue,\n };\n });\n }\n // publish the changed filters\n yield put(setDocsLayoutAction({ filters: newFilters }));\n}\n\nfunction* getDocsLayout(action) {\n let formatId = yield select(formatIdSelector);\n if (formatId == null) {\n // wait for breadcrumb or fail\n yield race({\n breadcrumb: take(actionTypes.CURRENT_BREADCRUMB),\n timeout: delay(2000),\n });\n formatId = yield select(formatIdSelector);\n }\n // anything saved in storage?\n const { currentItemLoaded, timeout } = yield race({\n currentItemLoaded: take(actionTypes.CURRENTITEM_LOADED),\n timeout: delay(2000),\n });\n if (\n !timeout &&\n currentItemLoaded &&\n currentItemLoaded.payload.layout != null\n ) {\n /* console.debug(\n \"restoring layout from storage\",\n currentItemLoaded.payload.layout\n ); */\n yield put(setDocsLayoutAction(currentItemLoaded.payload.layout));\n return;\n }\n // or maybe defaults config?\n const defaults = getDefaultsConfig(action.payload.itemUri, formatId);\n /* istanbul ignore else */\n if (defaults !== null) {\n const { filters, sorts } = defaults;\n /* istanbul ignore else */\n if (filters != null /* istanbul ignore next */ || sorts != null) {\n /* console.debug(\"setting layout from defaults\", defaults); */\n yield put(setDocsLayoutAction({ filters, sorts }));\n return;\n }\n }\n\n // create default\n const result = yield select(resultSelector);\n if (result != null && result.cols != null) {\n /* console.debug(\"setting layout by GetDefaults()\"); */\n yield put(\n setDocsLayoutAction(\n GetDefaults(result.itemUri, formatId, result.cols)\n )\n );\n return;\n } else if (action.payload.allowPreFetch === true) {\n // only if param \"allowPreFetch\" is set! (related to showDocs=true and immediately showing filters)\n const currentItem = yield select(currentItemSelector);\n /* console.debug(\"setting layout by first getting schema\"); */\n yield put(getDocsAction({ pageNum: -1, itemUri: currentItem.itemUri }));\n const docsresult = yield take(actionTypes.DOCS_FETCH_RESULT);\n yield put(\n setDocsLayoutAction(\n GetDefaults(\n currentItem.itemUri,\n formatId,\n docsresult.payload.result.cols\n )\n )\n );\n return;\n }\n\n yield put(setDocsLayoutAction());\n}\n\nfunction* setFilterText(action) {\n yield setFilterByName(action);\n}\n\nfunction* docsSaga() {\n yield takeEvery(actionTypes.DOCS_FILTERS_RESET, resetFilters);\n yield takeEvery(actionTypes.DOCS_FILTERS_SETBYREF, setFilterByRef);\n yield takeEvery(actionTypes.DOCS_FILTERS_SETBYNAME, setFilterByName);\n yield takeEvery(actionTypes.DOCS_FILTERTEXT_SET, setFilterText);\n\n yield takeEvery(actionTypes.DOCS_LAYOUT_REQUEST, getDocsLayout);\n}\n\nexport default docsSaga;\n","import { call, put, takeEvery, select } from \"redux-saga/effects\";\nimport delay from \"@redux-saga/delay-p\";\nimport getToggles from \"data/toggles\";\nimport actionTypes from \"data/actions/actionTypes\";\nimport {\n togglesChangeAction,\n currentItemLoadedAction,\n saveCurrentItemAction,\n setSplitPanesAction,\n} from \"data/actions\";\nimport { viewStorage, cacheStorage } from \"data/storage\";\nimport {\n isMiniView,\n isFeatureOn,\n Feature,\n getDefaultsConfig,\n} from \"data/constants\";\nimport { produce } from \"immer\";\nimport * as s from \"data/reducers/selectors\";\n\nconst togglesSelector = (state) => state.toggles;\nconst panesSelector = (state) => state.panes;\n\nconst ignoredViews = [\"itemflows\", \"upload\", \"search\"];\nconst isIgnoredView = (view) => ignoredViews.indexOf(view) > -1;\n\nfunction* loadSettings(action) {\n try {\n const currentItemName = yield select(s.currentNameSelector);\n const currentItemUri = yield select(s.currentItemUriSelector);\n const name = yield call(getName, action, currentItemName);\n\n // Bail early if on ignored view\n /* istanbul ignore if */\n if (isIgnoredView(name)) {\n yield put(currentItemLoadedAction());\n return;\n }\n\n const key = yield call(getKey, name, currentItemUri);\n const value = yield call(\n [\n shouldPersist(currentItemUri) ? viewStorage : cacheStorage,\n \"getItem\",\n ],\n name\n );\n\n /**\n * Note: Currently the toggles in the store to not match the toggles we need to persist.\n * Some redundant code is already here for moving everything to a saga (maybe not the current one)\n * see TogglesHandler HOC\n */\n const isPersisted = yield select((state) =>\n s.togglesPersistedSelector(state, currentItemName)\n );\n\n const usePersistedToggles = !!(isPersisted || value?.toggles);\n\n const selectedToggles = isPersisted\n ? yield select((state) =>\n s.selectedTogglesSelector(state, currentItemName)\n )\n : value?.toggles;\n\n if (\n value != null &&\n selectedToggles != null &&\n !selectedToggles.every(\n (t) =>\n value.toggles?.includes(t) /* istanbul ignore next */ ?? []\n )\n ) {\n value.toggles = selectedToggles;\n }\n\n /* istanbul ignore next */\n const toggles = produce(getToggles(name), (draft) => {\n draft.toggles = draft.toggles.map((toggle) => {\n toggle.isSelected = usePersistedToggles\n ? selectedToggles?.includes(toggle.value) ??\n toggle.isSelected\n : toggle.isSelected;\n switch (name) {\n case \"home\":\n // Fix persisted hidden toggles\n if (\n toggle.value === \"action\" &&\n !isFeatureOn(Feature.homeActions)\n ) {\n toggle.isHidden = true;\n toggle.isSelected = false;\n }\n // Trigger action view on home in Mini-View\n if (\n isMiniView(window.location) &&\n toggle.value !== \"action\" &&\n isFeatureOn(Feature.homeActions)\n ) {\n console.warn(\n `Mini View \"${name}\" currently does not support \"${value}\", falling back to \"action\"`\n );\n toggle.value = \"action\";\n }\n break;\n default:\n break;\n }\n return toggle;\n });\n\n // Always select at least one\n if (!draft.toggles.some((t) => t.isSelected)) {\n draft.toggles.find((t) => !t.isHidden).isSelected = true;\n }\n });\n // console.log(\"aaa settoggles\", { ...toggles.toggles });\n yield put(togglesChangeAction(currentItemName, toggles.toggles));\n\n if (value !== null) {\n value.layout = yield call(\n [\n shouldPersist(currentItemUri) ? viewStorage : cacheStorage,\n \"getItem\",\n ],\n key\n );\n\n if (\n Object.prototype.hasOwnProperty.call(value, \"panes\") &&\n !isPersisted\n ) {\n for (let key in value.panes) {\n yield put(\n setSplitPanesAction({\n view: name,\n name: key,\n dimensions: value.panes[key],\n })\n );\n }\n }\n\n // console.log(\"loadsettings\", value, name);\n }\n\n yield put(currentItemLoadedAction(value));\n } catch (e) {\n /* istanbul ignore next */\n console.warn(e);\n }\n}\n\nfunction shouldPersist(itemUri: string): boolean {\n const def = getDefaultsConfig(itemUri);\n if (def != null && def.persist != null) return def.persist;\n else return true;\n}\n\nfunction* calcCurrentItem(action) {\n yield delay(500);\n try {\n const currentItemName = yield select(s.currentNameSelector);\n const currentItemUri = yield select(s.currentItemUriSelector);\n const name = yield call(getName, action, currentItemName);\n\n // Bail early if on ignored view\n /* istanbul ignore if */\n if (isIgnoredView(name)) {\n return;\n }\n\n const key = yield call(getKey, name, currentItemUri);\n // console.log(\"calcCurrentItem\", action.type, name, key);\n\n /* istanbul ignore next */\n let value = yield call(\n [\n shouldPersist(currentItemUri) ? viewStorage : cacheStorage,\n \"getItem\",\n ],\n name\n );\n // console.log(\"val\", action.type, value);\n /* istanbul ignore next */\n if (value == null) {\n value = {};\n }\n\n /* istanbul ignore next */\n value.layout = yield call(\n [\n shouldPersist(currentItemUri) ? viewStorage : cacheStorage,\n \"getItem\",\n ],\n key\n );\n\n // Setup defaults\n const toggles = yield select(togglesSelector);\n value.toggles = toggles[name][\"_selected\"];\n const panes = yield select(panesSelector);\n // we might need to mutate the panes so it's need to be mutable\n value.panes = [...(panes[name] /* istanbul ignore next */ || [])];\n value.layout = {};\n\n //console.log(\"action\", action);\n switch (action.type) {\n /* istanbul ignore next */\n case actionTypes.CURRENTITEM_SET:\n //yield call(loadSettings, action);\n break;\n\n case actionTypes.TOGGLES_PERSIST:\n value.toggles = action.payload.toggles\n .filter((t) => t.isSelected)\n .map((t) => t.value);\n break;\n\n case actionTypes.SPLITPANES_PERSIST:\n value.panes[action.payload.name] = action.payload.dimensions;\n break;\n\n case actionTypes.DOCS_LAYOUT_SET:\n const filters =\n action.payload.filters ||\n (yield select(s.docsLayoutFiltersSelector));\n const sorts =\n action.payload.sorts ||\n (yield select(s.docsLayoutSortsSelector));\n value.layout = {\n filters,\n sorts,\n };\n break;\n\n /* istanbul ignore next */\n default:\n console.warn(\n \"currentItemSaga.calcCurrentItem cannot handle action.type=\" +\n action.type\n );\n break;\n }\n\n yield put(\n saveCurrentItemAction({\n name,\n key,\n value,\n persist: shouldPersist(currentItemUri),\n })\n );\n } catch (e) {\n /* istanbul ignore next */\n console.warn(e);\n }\n}\n\nfunction* saveCurrentItem(action) {\n try {\n const {\n name,\n key,\n value: { layout, ...rest },\n persist,\n } = action.payload;\n // console.log(\"saveCurrentItem\", action.type, key, value);\n yield call(\n [persist ? viewStorage : cacheStorage, \"setItem\"],\n name,\n rest\n );\n yield call(\n [persist ? viewStorage : cacheStorage, \"setItem\"],\n key,\n layout\n );\n } catch (e) {\n /* istanbul ignore next */\n console.warn(e);\n }\n}\n\nexport function getKey(name, currentItemUri) {\n switch (name) {\n // doc* settings are global and not itemUri specific\n case \"document\":\n case \"docmodal\":\n // const folderItemUri = currentItemUri.substring(\n // 0,\n // currentItemUri.indexOf(\"@eid\")\n // );\n // return `${name}_${folderItemUri}`;\n return name;\n default:\n return `${name}_${currentItemUri}`;\n }\n}\n\nexport function getName(action, currentItemName) {\n let name;\n switch (action.type) {\n case actionTypes.CURRENTITEM_SET:\n case actionTypes.TOGGLES_PERSIST:\n name = action.payload.name;\n break;\n case actionTypes.DOCS_LAYOUT_SET:\n name = currentItemName;\n break;\n case actionTypes.SPLITPANES_PERSIST:\n name = action.payload.view;\n break;\n default:\n console.warn(\n \"currentItemSaga.getName cannot handle action.type=\" +\n action.type\n );\n return null;\n }\n return name;\n}\n\nfunction* currentItemSaga() {\n // this will reload settings from storage (and apply them) whenever CURRENTITEM changes\n yield takeEvery(actionTypes.CURRENTITEM_SET, loadSettings);\n // this will calculate the settings for the CURRENTITEM\n yield takeEvery(\n [\n //actionTypes.CURRENTITEM_SET,\n actionTypes.TOGGLES_PERSIST,\n actionTypes.SPLITPANES_PERSIST,\n actionTypes.DOCS_LAYOUT_SET,\n ],\n calcCurrentItem\n );\n // this will save settings in storage\n yield takeEvery(actionTypes.CURRENTITEM_SAVE, saveCurrentItem);\n}\n\nexport default currentItemSaga;\n","import {\n call,\n put,\n take,\n takeLatest,\n takeEvery,\n select,\n cancelled,\n race,\n} from \"redux-saga/effects\";\nimport actionTypes from \"data/actions/actionTypes\";\nimport {\n getSearchResultAction,\n renameSearchFavoriteResultAction,\n getSearchFormResultAction,\n globalSearchDefaultResultAction,\n getSearchFormListResultAction,\n getSearchCountResultAction,\n togglesUpdateCounterAction,\n searchResetAction,\n addSearchRecentAction,\n} from \"data/actions\";\nimport { SearchRequestType } from \"data/types\";\nimport {\n fetchSearchResult,\n fetchSearchFormList,\n fetchSearchForm,\n fetchSAYT,\n fetchSearchCount,\n addSearchRecent,\n} from \"data/api\";\nimport Constants from \"data/constants\";\nimport * as s from \"data/reducers/selectors\";\nimport { produce } from \"immer\";\n\n// fetches batch of results\nfunction* getSearchResult(action) {\n try {\n const isValid = yield select(s.searchFormValidationSelector);\n if (!isValid) {\n yield put(searchResetAction());\n return;\n }\n\n let count = 0;\n let status = Constants.LOADING;\n yield updateResultToggles(count, status);\n\n const abortController = new AbortController();\n\n const { result, abort, reset } = yield race({\n result: call(\n fetchSearchResult,\n action.payload.searchRequest,\n abortController.signal\n ),\n abort: take(actionTypes.SEARCH_ABORT),\n reset: take(actionTypes.SEARCH_RESET),\n });\n\n status = Constants.OK;\n\n if (reset || abort) {\n abortController.abort();\n yield put(searchResetAction());\n return;\n }\n\n count = result.totalCount;\n yield updateResultToggles(count, status);\n yield put(addSearchRecentAction(action.payload.searchRequest));\n yield put(\n getSearchResultAction({\n status,\n result,\n terms: [\n (typeof action.payload.searchRequest.searchText === \"string\"\n ? action.payload.searchRequest.searchText\n : \"\"\n )\n .replace(/\\[[^\\s]+/g, \"\")\n .trim(),\n ],\n })\n );\n } catch (e) {\n yield put(\n getSearchResultAction({\n status: Constants.ERROR,\n error: /* istanbul ignore next */ e.data || e.message,\n })\n );\n }\n}\n\nexport function* getSearchCountResult(action) {\n // https://decembersoft.com/posts/redux-saga-abort-controller-cancel-api-calls/\n const abortController = new AbortController();\n try {\n const result = yield call(\n fetchSearchCount,\n action.payload.searchRequest,\n abortController.signal\n );\n\n yield put(\n getSearchCountResultAction({\n status: Constants.OK,\n result,\n })\n );\n } catch (e) {\n yield put(\n getSearchCountResultAction({\n status: Constants.ERROR,\n message: e.message,\n })\n );\n } finally {\n if (yield cancelled()) {\n // console.log(\"getDocs cancelled\");\n // Cancel the API call if the saga was cancelled\n abortController.abort();\n }\n }\n}\n\nfunction* renameSearchFavorite(action) {\n const searchRequest = yield select(s.searchRequestSelector);\n // TODO searchFavorite rename existing\n if (\n searchRequest.searchType !== SearchRequestType.Favorite ||\n searchRequest.isCustom\n ) {\n yield put(\n renameSearchFavoriteResultAction({\n status: Constants.OK,\n message: \"\",\n searchRequest: produce(searchRequest, (draft) => {\n draft.name = action.payload.name;\n }),\n })\n );\n }\n}\n\nfunction* updateResultToggle(name, result, status) {\n yield put(\n togglesUpdateCounterAction({\n name,\n counts: { result },\n status: { result: status },\n })\n );\n}\n\nfunction* updateResultToggles(count, status) {\n yield updateResultToggle(\"searchresult\", count, status);\n yield updateResultToggle(\"search\", count, status);\n}\n\nfunction* resetSearch() {\n yield updateResultToggles(-1, Constants.OK);\n}\n\nfunction* updateSearchFormToggles(counts, status) {\n yield put(\n togglesUpdateCounterAction({\n name: \"forms\",\n counts,\n status,\n })\n );\n yield put(\n togglesUpdateCounterAction({\n name: \"search\",\n counts: {\n forms: counts,\n },\n status: {\n forms: status,\n },\n })\n );\n}\n\nfunction* getSearchFormList(action) {\n try {\n yield updateSearchFormToggles(-1, Constants.LOADING);\n const result = yield call(fetchSearchFormList);\n yield updateSearchFormToggles(result.length, Constants.OK);\n yield put(\n getSearchFormListResultAction({\n status: Constants.OK,\n result,\n })\n );\n } catch (e) {\n yield put(\n getSearchFormListResultAction({\n status: Constants.ERROR,\n message: e.message,\n })\n );\n }\n}\n\nfunction* getSearchForm(action) {\n try {\n const result = yield call(\n fetchSearchForm,\n action.payload.id,\n action.payload.model\n );\n\n yield put(\n getSearchFormResultAction({\n status: Constants.OK,\n result,\n })\n );\n } catch (e) {\n yield put(\n getSearchFormResultAction({\n status: Constants.ERROR,\n message: e.message,\n })\n );\n }\n}\n\nfunction* getGlobalDefault(action) {\n try {\n const result = yield call(fetchSAYT);\n yield put(\n globalSearchDefaultResultAction({\n status: Constants.OK,\n options: result,\n })\n );\n } catch (e) {\n yield put(\n globalSearchDefaultResultAction({\n status: Constants.ERROR,\n message: e.message,\n })\n );\n }\n}\n\nfunction* handleSearchAddRecent(action) {\n try {\n if (action.payload.searchRequest.pageNum !== 0) return;\n yield call(addSearchRecent, action.payload.searchRequest);\n } catch (e) {\n console.error(e);\n }\n}\n\nfunction* searchSaga() {\n yield takeLatest(actionTypes.SEARCH_FETCH_REQUEST, getSearchResult);\n yield takeLatest(actionTypes.SEARCH_COUNT_REQUEST, getSearchCountResult);\n yield takeLatest(\n actionTypes.SEARCH_FAVRENAME_REQUEST,\n renameSearchFavorite\n );\n yield takeLatest(actionTypes.SEARCH_FORM_FETCH_REQUEST, getSearchForm);\n yield takeLatest(\n actionTypes.GLOBALDEFAULTSEARCH_FETCH_REQUEST,\n getGlobalDefault\n );\n yield takeLatest(\n actionTypes.SEARCH_FORM_LIST_FETCH_REQUEST,\n getSearchFormList\n );\n yield takeLatest(actionTypes.SEARCH_RESET, resetSearch);\n yield takeEvery(actionTypes.SEARCH_ADD_RECENT, handleSearchAddRecent);\n}\n\nexport default searchSaga;\n","import {\n call,\n put,\n take,\n actionChannel,\n race,\n flush,\n cancelled,\n} from \"redux-saga/effects\";\nimport { buffers } from \"redux-saga\";\nimport actionTypes from \"data/actions/actionTypes\";\nimport { docThumbnailResultAction } from \"data/actions\";\nimport { fetchThumbnail } from \"data/api\";\nimport Constants from \"data/constants\";\n\nfunction* thumbnailsSaga() {\n // 1- Create a channel for request actions\n const requestChan = yield actionChannel(\n actionTypes.DOCS_THUMBNAIL_REQUEST,\n buffers.expanding()\n );\n while (true) {\n // 2- take from the channel\n const { payload } = yield take(requestChan);\n\n // support cancellation\n // https://github.com/redux-saga/redux-saga/issues/1046\n // eslint-disable-next-line\n const { task, cancel } = yield race({\n task: call(getThumbnail, payload),\n cancel: take(actionTypes.CURRENTITEM_SET),\n });\n\n /* istanbul ignore next */\n if (cancel !== undefined) {\n yield flush(requestChan);\n // Don't need these actions, do nothing.\n }\n }\n}\n\nexport function* getThumbnail(payload) {\n // https://decembersoft.com/posts/redux-saga-abort-controller-cancel-api-calls/\n const abortController = new AbortController();\n\n try {\n const result = yield call(\n fetchThumbnail,\n payload.itemUri,\n abortController.signal\n );\n\n yield put(\n docThumbnailResultAction({\n itemUri: payload.itemUri,\n status: Constants.OK,\n result,\n })\n );\n } catch (e) {\n yield put(\n docThumbnailResultAction({\n itemUri: payload.itemUri,\n status: Constants.ERROR,\n message: e.message,\n })\n );\n } finally {\n if (yield cancelled()) {\n // Cancel the API call if the saga was cancelled\n abortController.abort();\n }\n }\n}\n\nexport default thumbnailsSaga;\n","import { all, call, take, put, cancelled, select } from \"redux-saga/effects\";\nimport { channel, eventChannel, buffers } from \"redux-saga\";\nimport delay from \"@redux-saga/delay-p\";\nimport { serverEventAction } from \"data/actions\";\nimport { actions as networkActions } from \"@hs/redux-saga-network-status\";\nimport * as s from \"data/reducers/selectors\";\nimport { HubConnection, HubConnectionBuilder } from \"@microsoft/signalr\";\nimport { get } from \"data/constants\";\nimport { CustomHttpHeader } from \"data/types\";\nimport { JL } from \"jsnlog\";\n\nconst _log = JL(\"Notifications\");\nconst actionChannel = channel();\n\nfunction createSocket(\n accessToken: string,\n correlationId: string\n): HubConnection {\n return new HubConnectionBuilder()\n .withAutomaticReconnect({\n nextRetryDelayInMilliseconds: /*istanbul ignore next*/ (\n retryContext\n ) => {\n if (retryContext.elapsedMilliseconds < 60000) {\n // If we've been reconnecting for less than 60 seconds so far,\n // wait between 0 and 10 seconds before the next reconnect attempt.\n return Math.random() * 10000;\n } else {\n // If we've been reconnecting for more than 60 seconds so far, try only every 5mins\n return 1000 * 60 * 5;\n }\n },\n })\n .configureLogging(\"warn\")\n .withUrl(\n get(\n window.CONFIG,\n [\"notificationsUrl\", \"global\"],\n \"/notifications/global\"\n ) +\n \"?correlationId=\" +\n encodeURIComponent(correlationId),\n {\n // https://docs.microsoft.com/en-us/aspnet/core/signalr/configuration?view=aspnetcore-5.0&tabs=dotnet#configure-bearer-authentication\n accessTokenFactory: /*istanbul ignore next*/ () => accessToken,\n headers: {\n [CustomHttpHeader.CorrelationId]: correlationId,\n },\n }\n )\n .build();\n}\n\nfunction signalChannel(connection) {\n return eventChannel((emit) => {\n const pingUrl = `${window.CONFIG.host.basename}/ping`;\n // https://docs.microsoft.com/en-us/aspnet/signalr/overview/guide-to-the-api/hubs-api-guide-javascript-client#how-to-handle-connection-lifetime-events\n connection.on(\"ReceiveMessage\", emit);\n connection.onreconnecting(\n /*istanbul ignore next*/ (error) => {\n actionChannel.put(networkActions.ping(pingUrl));\n _log.warn(() => ({\n msg: \"SignalR reconnecting\",\n error,\n }));\n }\n );\n connection.onreconnected(\n /*istanbul ignore next*/ (connectionId) => {\n actionChannel.put(networkActions.ping(pingUrl));\n _log.warn(() => ({\n msg: \"SignalR reconnected with connectionId\",\n connectionId,\n }));\n }\n );\n connection.onclose(\n /*istanbul ignore next*/ (error) => {\n actionChannel.put(networkActions.ping(pingUrl));\n _log.warn(() => ({\n msg: \"SignalR connection closed\",\n error,\n }));\n }\n );\n // cleanup when channel closes\n return /*istanbul ignore next*/ () =>\n connection &&\n typeof connection.close === \"function\" &&\n connection.close();\n }, buffers.expanding());\n}\n\n/* istanbul ignore next*/\nfunction* getToken() {\n // try for max. 1sec * 30\n for (let i = 0; i < 30; i++) {\n const accessToken = yield select(s.loginAccessTokenSelector);\n if (accessToken != null) return accessToken;\n else yield delay(1000);\n }\n _log.warn(\n () => \"Cannot retrieve user token; no server pushed notifications!\"\n );\n // throw new Error(\"Cannot retrieve token\")\n return null;\n}\n\nfunction* notificationLoop(chan) {\n while (true) {\n try {\n // wait for incoming message\n const message = yield take(chan);\n // console.log(\"signalR message: \", message);\n // publish to Redux store for further handling\n yield put(serverEventAction(message));\n } finally {\n /* istanbul ignore if */\n if (yield cancelled()) {\n chan.close();\n }\n }\n }\n}\n\n/* istanbul ignore next */\nfunction* actionLoop() {\n while (true) {\n const action = yield take(actionChannel);\n yield put(action);\n }\n}\n\nexport default function* notificationsSaga() {\n // create a SignalR connection socket\n try {\n // get user's token\n const accessToken = yield call(getToken);\n // no token? no game\n /* istanbul ignore next */\n if (accessToken == null) {\n throw new Error(\"No Access Token\");\n }\n const correlationId = yield select(s.userCorrelationIdSelector);\n const connection = yield call(createSocket, accessToken, correlationId);\n // create our Redux-Saga channel and register for client-side methods\n const chan = yield call(signalChannel, connection);\n\n // start listening\n connection\n .start()\n .then(\n /*istanbul ignore next*/ (result) =>\n _log.info(() => \"SignalR Connected!\")\n )\n .catch(\n /*istanbul ignore next*/ (e) => {\n throw e;\n }\n );\n\n yield all([notificationLoop(chan), actionLoop()]);\n } catch (e) {\n /* istanbul ignore next */\n _log.fatalException(() => \"SignalR Connection failed: \", e);\n }\n}\n","import { call, take, actionChannel, select, put } from \"redux-saga/effects\";\nimport { toast } from \"react-toastify\";\nimport {\n userLanguageSelector,\n settingValueSelector,\n} from \"data/reducers/selectors\";\nimport actionTypes from \"data/actions/actionTypes\";\nimport { notificationUpsertAction } from \"data/actions\";\nimport { Toast, RoutedToast } from \"data/toast\";\nimport { NotificationType } from \"data/types\";\nimport { buffers } from \"redux-saga\";\nimport Icons from \"@hs/icons\";\n\nconst mapFontawesomeIconToNotificationsIcon = (icon) =>\n icon?.includes(\"fa-\")\n ? icon\n .split(\" \")\n .filter((i) => i.startsWith(\"fa-\"))\n .map((i) => i.replace(\"fa-\", \"\"))\n .join(\"-\")\n : `solid-${icon}`;\n\nfunction* triggerNotificationAPI({ message, handleClick, autoClose, icon }) {\n const lang = yield select(userLanguageSelector);\n const notification = new Notification(message, {\n dir: \"auto\",\n lang,\n icon: icon\n ? `${\n window.CONFIG.host.basename\n }/__notification/${mapFontawesomeIconToNotificationsIcon(\n icon\n )}.png`\n : undefined,\n });\n /* istanbul ignore else */\n if (handleClick) {\n notification.addEventListener(\"click\", handleClick);\n }\n /* istanbul ignore else */\n if (autoClose) {\n setTimeout(notification.close.bind(notification), autoClose);\n }\n return notification;\n}\n\nfunction triggerReactToastify({\n icon,\n message,\n details,\n handleClick,\n style,\n isRouted,\n className,\n toastId,\n autoClose,\n position,\n}) {\n const Component = isRouted ? RoutedToast : Toast;\n const toastOptions = {\n type: style,\n className,\n toastId,\n autoClose,\n position,\n theme: \"colored\",\n icon: icon && ,\n };\n\n Object.keys(toastOptions).forEach((key) =>\n toastOptions[key] === undefined ? delete toastOptions[key] : {}\n );\n\n toast(\n ,\n toastOptions\n );\n}\n\nfunction* toastSaga() {\n const channel = yield actionChannel(\n actionTypes.NOTIFICATION_TOAST,\n buffers.expanding()\n );\n\n while (true) {\n const { payload } = yield take(channel);\n const notificationType = yield select((state) =>\n settingValueSelector(\"notificationType\", state)\n );\n let toast = payload.toast;\n if (notificationType === NotificationType.API) {\n // Update toast property with notification reference to close notification\n toast = yield call(triggerNotificationAPI, {\n ...payload.toast,\n message: payload.message,\n icon: payload.icon,\n });\n } else {\n triggerReactToastify({\n ...payload.toast,\n toastId: payload.notificationId,\n message: payload.message,\n style: payload.style,\n icon: payload.icon,\n });\n }\n yield put(notificationUpsertAction({ ...payload, toast }));\n }\n}\n\nexport default toastSaga;\n","import { buffers } from \"redux-saga\";\nimport delay from \"@redux-saga/delay-p\";\nimport {\n actionChannel,\n all,\n call,\n flush,\n fork,\n put,\n race,\n select,\n takeLatest,\n takeEvery,\n take,\n} from \"redux-saga/effects\";\nimport actionTypes from \"data/actions/actionTypes\";\nimport { dispatch } from \"data/storeHelper\";\nimport Constants, { type ConstantsEnum } from \"data/constants\";\nimport { CommandActionStatusFlag } from \"data/types\";\nimport {\n commandActionQueueAddAction,\n commandActionQueueRemoveAction,\n commandActionRemoveAction,\n commandActionItemStatusAction,\n commandActionStatusAction,\n commandActionLogAction,\n notificationUpsertAction,\n notificationDelAction,\n notificationToastAction,\n} from \"data/actions\";\nimport { commandActionRequestSelector } from \"data/reducers/selectors\";\nimport { actionMappings } from \"components/CommandActions\";\nimport loc from \"i18next\";\nimport { toastTypes } from \"data/toast\";\nimport { JL } from \"data/logging\";\n\nconst log = JL(\"commandActionSaga\");\n\nfunction* handleCommandActionRequest({ payload }) {\n const { guid, commandAction, props } = payload;\n const actionHandler = new actionMappings[commandAction]();\n\n log.info(() => ({\n msg: \"Handle CommandAction request\",\n payload,\n actionHandler,\n }));\n\n if (props.multiple && actionHandler.queueMultiple) {\n log.info(() => ({\n msg: \"Add commandAction to queue\",\n commandAction,\n guid,\n }));\n yield put(\n notificationUpsertAction({\n notificationId: guid,\n message: loc.t(`commandAction:${commandAction}.queued`, {\n count: payload.items.length,\n name: payload.items?.map((i) => i.name).join(\", \"),\n }),\n })\n );\n for (let item of payload?.items) {\n yield put(\n commandActionQueueAddAction({\n guid,\n commandAction,\n actionHandler,\n props: { ...props, ...item },\n })\n );\n yield put(\n commandActionItemStatusAction(\n guid,\n item.itemUri,\n Constants.LOADING,\n true\n )\n );\n }\n } else {\n yield executeCommandAction({\n payload: {\n commandAction,\n actionHandler,\n context: {\n dispatch,\n ...props,\n },\n guid,\n },\n });\n yield put(commandActionRemoveAction(guid));\n }\n}\n\nfunction getToastType(status) {\n switch (true) {\n case (status & CommandActionStatusFlag.Success) > 0:\n return toastTypes.success;\n case (status & CommandActionStatusFlag.Partial) > 0:\n return toastTypes.partial;\n default:\n return toastTypes.failure;\n }\n}\n\nfunction getToastMessage(commandAction, status) {\n let state = \"failure\";\n switch (true) {\n case (status & CommandActionStatusFlag.Success) > 0:\n state = \"success\";\n break;\n case (status & CommandActionStatusFlag.Partial) > 0:\n state = \"partial\";\n break;\n default:\n break;\n }\n return loc.t(`commandAction:${commandAction.commandAction}.${state}`, {\n count: commandAction.items.length,\n ok: commandAction.items.filter((i) => i.status === Constants.OK).length,\n error: commandAction.items.filter((i) => i.status === Constants.ERROR)\n .length,\n name: commandAction.items.map((i) => i.name).join(\", \"),\n });\n}\n\nfunction* updateCommandActionStatus({ payload }) {\n const commandAction = (yield select((state) =>\n commandActionRequestSelector(state, payload.guid)\n ))?.[0];\n if (commandAction == null) {\n log.warn(() => ({\n msg: \"Cannot update CommandAction Status\",\n payload,\n }));\n return;\n }\n log.info(() => ({\n msg: \"updateCommandActionStatus\",\n commandAction,\n payload,\n }));\n let status = CommandActionStatusFlag.NotSet;\n if (commandAction?.items?.some((i) => i.status === Constants.ERROR))\n status |= CommandActionStatusFlag.Error;\n if (commandAction?.items?.every((i) => i.status !== Constants.LOADING)) {\n status |= CommandActionStatusFlag.Done;\n if (commandAction?.items?.every((i) => i.status === Constants.OK)) {\n status |= CommandActionStatusFlag.Success;\n yield put(commandActionRemoveAction(payload.guid));\n } else if (\n !commandAction?.items?.every((i) => i.status === Constants.ERROR)\n )\n status |= CommandActionStatusFlag.Partial;\n log.info(() => ({\n msg: \"Command Action queue completed\",\n guid: payload.guid,\n commandAction,\n }));\n yield put(\n notificationToastAction({\n ...getToastType(status),\n notificationId: payload.guid,\n log: commandAction.log,\n message: getToastMessage(commandAction, status),\n })\n );\n } else {\n if (commandAction?.items?.some((i) => i.status !== Constants.LOADING))\n status |= CommandActionStatusFlag.Partial;\n status |= CommandActionStatusFlag.Loading;\n }\n yield put(commandActionStatusAction(payload.guid, status, true));\n}\n\nfunction* handleQueueRequest(payload, channel) {\n log.info(() => ({\n msg: \"handleQueueRequest\",\n payload,\n }));\n const { guid, actionHandler, commandAction, props } = payload;\n // HACK: Delay 50ms on commancAction doc_download to allow for multiple downloads\n if (commandAction === \"doc_download\") {\n yield delay(50);\n log.info(() => ({\n msg: \"delayed 50ms\",\n commandAction,\n }));\n }\n const context = {\n dispatch,\n ...props,\n };\n actionHandler.logger = (success, identifier, context) =>\n dispatch(\n commandActionLogAction(guid, {\n timestamp: Date.now(),\n status: success ? Constants.OK : Constants.ERROR,\n message: loc.t(\n `${identifier}.${success ? \"success\" : \"failure\"}`,\n context\n ),\n details: {\n ...props,\n commandAction: commandAction.commandAction,\n },\n })\n );\n log.info(() => ({\n msg: \"Update actionHandler.logger to log current details\",\n actionHandler,\n context,\n }));\n const itemStatus = yield executeCommandAction({\n payload: { actionHandler, commandAction, context, guid },\n });\n yield put(\n commandActionItemStatusAction(guid, props.itemUri, itemStatus, true)\n );\n}\n\nfunction* executeCommandAction({ payload }): ConstantsEnum {\n const { actionHandler, commandAction, context, guid } = payload;\n log.info(() => ({\n msg: `Execute commandAction \"${commandAction}\"`,\n actionHandler,\n context,\n }));\n const shouldExecute =\n typeof actionHandler?.render !== \"function\" ||\n !actionHandler?.shouldRender ||\n (yield call(actionHandler.render, context));\n if (!shouldExecute || typeof actionHandler?.execute !== \"function\") {\n yield put(commandActionQueueRemoveAction(guid));\n return Constants.OK;\n }\n let itemStatus = Constants.LOADING;\n try {\n const result = yield call(actionHandler.execute, context);\n if (typeof actionHandler?.report === \"function\")\n yield call(actionHandler.report, result, context);\n itemStatus = result ? Constants.OK : Constants.ERROR;\n log.info(() => ({\n msg: `Executed commandAction \"${commandAction}\"`,\n actionHandler,\n context,\n result,\n itemStatus,\n }));\n } catch (error) {\n itemStatus = Constants.ERROR;\n log.error(() => ({\n msg: `Error while executing commandAction \"${commandAction}\"`,\n actionHandler,\n context,\n error,\n itemStatus,\n }));\n }\n return itemStatus;\n}\n\nfunction* abortCommandAction({ payload }, channel) {\n yield flush(channel);\n yield put(\n commandActionStatusAction(\n payload.guid,\n CommandActionStatusFlag.Done | CommandActionStatusFlag.Partial,\n true\n )\n );\n yield rebuildQueue();\n}\n\nfunction* removeCommandAction({ payload }, channel) {\n channel && (yield flush(channel));\n yield put(commandActionRemoveAction(payload.guid));\n yield put(notificationDelAction(payload.guid));\n yield rebuildQueue();\n}\n\nfunction* handleCommandActionQueueAction(action, payload, channel) {\n switch (action?.type) {\n case actionTypes.COMMANDACTION_ABORT:\n yield call(abortCommandAction, action, channel);\n break;\n case actionTypes.COMMANDACTION_QUEUE_REMOVE:\n yield call(removeCommandAction, action, channel);\n break;\n case actionTypes.COMMANDACTION_QUEUE_PAUSE:\n yield call(pauseQueue, payload, channel);\n break;\n default:\n // Continue with requests\n break;\n }\n}\n\nfunction* pauseQueue(payload, channel) {\n // Re-add to queue (since we paused)\n yield put(commandActionQueueAddAction(payload));\n // Wait for command to continue queue\n const action = (yield race([\n take(actionTypes.COMMANDACTION_ABORT),\n take(actionTypes.COMMANDACTION_QUEUE_REMOVE),\n take(actionTypes.COMMANDACTION_QUEUE_START),\n ])).find((a) => a != null);\n yield call(handleCommandActionQueueAction, action, channel);\n}\n\nfunction* rebuildQueue() {\n const requests = (yield select(commandActionRequestSelector)).filter(\n (req) => req.status === CommandActionStatusFlag.Loading\n );\n if (requests.length === 0) return;\n log.info(() => ({\n msg: \"rebuildQueue\",\n requests,\n }));\n for (let payload of requests) {\n yield call(handleCommandActionRequest, { payload });\n }\n}\n\nfunction* watchCommandActionQueue() {\n const channel = yield actionChannel(\n actionTypes.COMMANDACTION_QUEUE_ADD,\n buffers.expanding()\n );\n while (true) {\n const { payload } = yield take(channel);\n const action = (yield race([\n call(handleQueueRequest, payload, channel),\n take(actionTypes.COMMANDACTION_ABORT),\n take(actionTypes.COMMANDACTION_QUEUE_REMOVE),\n take(actionTypes.COMMANDACTION_QUEUE_PAUSE),\n ])).find((a) => a != null);\n log.info(() => ({\n msg: \"watchCommandActionQueue\",\n action,\n payload,\n }));\n yield call(handleCommandActionQueueAction, action, payload, channel);\n }\n}\n\nfunction* commandActionSaga() {\n yield all([\n // listen for command action requests\n takeLatest(\n actionTypes.COMMANDACTION_REQUEST,\n handleCommandActionRequest\n ),\n // listen for command action item status changes\n takeEvery(\n actionTypes.COMMANDACTION_ITEM_STATUS,\n updateCommandActionStatus\n ),\n // watch Command Action Queue\n fork(watchCommandActionQueue),\n ]);\n}\n\nexport default commandActionSaga;\n","import { all, fork } from \"redux-saga/effects\";\nimport offlineSaga, { checkServerConnectivity } from \"./offlineSaga\";\nimport userSaga from \"./userSaga\";\nimport favoritesSaga from \"./favoritesSaga\";\nimport cardsSaga from \"./cardsSaga\";\nimport workflowSaga from \"./workflowSaga\";\nimport treeSaga from \"./treeSaga\";\nimport docsSaga from \"./docsSaga\";\nimport docsLayoutSaga from \"./docsLayoutSaga\";\nimport currentItemSaga from \"./currentItemSaga\";\nimport searchSaga from \"./searchSaga\";\nimport thumbnailsSaga from \"./thumbnailsSaga\";\nimport watchNetworkStatus from \"@hs/redux-saga-network-status\";\nimport notificationsSaga from \"./notificationsSaga\";\nimport toastSaga from \"./toastSaga\";\nimport commandActionSaga from \"./commandActionSaga\";\n\nexport default function* rootSaga() {\n yield all([\n fork(watchNetworkStatus),\n fork(checkServerConnectivity),\n fork(offlineSaga),\n fork(userSaga),\n fork(cardsSaga),\n fork(workflowSaga),\n fork(favoritesSaga),\n fork(treeSaga),\n fork(docsSaga),\n fork(docsLayoutSaga),\n fork(currentItemSaga),\n fork(searchSaga),\n fork(thumbnailsSaga),\n fork(notificationsSaga),\n fork(toastSaga),\n fork(commandActionSaga),\n ]);\n}\n\nexport function* localRootSaga() {\n yield all([\n fork(watchNetworkStatus),\n fork(checkServerConnectivity),\n fork(favoritesSaga),\n fork(treeSaga),\n fork(docsSaga),\n fork(docsLayoutSaga),\n fork(currentItemSaga),\n fork(searchSaga),\n fork(thumbnailsSaga),\n fork(toastSaga),\n fork(commandActionSaga),\n ]);\n}\n","// @flow\nimport React from \"react\";\nimport { type ListViewModeEnum } from \"data/types\";\nimport Dropdown from \"@hs/dropdown\";\nimport MenuItem from \"react-bootstrap/lib/MenuItem\";\nimport Icons from \"@hs/icons\";\nimport loc from \"i18next\";\nimport { ViewModeIcon } from \"./ViewModes\";\n\ntype Props = {\n /** current selected viewMode */\n viewMode: ListViewModeEnum,\n /** all available viewModes to render */\n viewModes?: Array,\n /** callback when user changes viewMode\n * @param {ListViewModeEnum} viewMode the viewMode the user chose\n */\n onChange: (viewMode: ListViewModeEnum) => void,\n /** options CSS class name to apply */\n className?: string,\n};\n\n/** render a Dropdownlist with requested viewModes marking the currently active viewMode */\nconst ViewModesMenu = ({ viewMode, viewModes, onChange, className }: Props) => (\n \n \n \n \n \n {viewModes.map((vm) => (\n onChange(vm)}\n >\n \n {loc.t(`common:view.${vm}`)}\n \n ))}\n \n \n);\n\nViewModesMenu.displayName = \"ViewModesMenu\";\nexport default ViewModesMenu;\n","// @flow\r\nimport React from \"react\";\r\nimport { type ListViewModeEnum } from \"data/types\";\r\nimport ToggleButtonGroup from \"react-bootstrap/lib/ToggleButtonGroup\";\r\nimport ToggleButton from \"react-bootstrap/lib/ToggleButton\";\r\nimport Icons from \"@hs/icons\";\r\nimport loc from \"i18next\";\r\nimport { ViewModeIcon } from \"./ViewModes\";\r\n\r\ntype Props = {\r\n /** current selected viewMode */\r\n viewMode: ListViewModeEnum,\r\n /** all available viewModes to render */\r\n viewModes?: Array,\r\n /** callback when user changes viewMode\r\n * @param {ListViewModeEnum} viewMode the viewMode the user chose\r\n */\r\n onChange: (viewMode: ListViewModeEnum) => void,\r\n /** options CSS class name to apply */\r\n className?: string,\r\n};\r\n\r\n/** render a Dropdownlist with requested viewModes marking the currently active viewMode */\r\nconst ViewModesButtons = ({\r\n viewMode,\r\n viewModes,\r\n onChange,\r\n className,\r\n}: Props) => (\r\n \r\n {viewModes.map((vm) => (\r\n \r\n \r\n \r\n ))}\r\n \r\n);\r\nViewModesButtons.displayName = \"ViewModesButtons\";\r\nexport default ViewModesButtons;\r\n","// @flow\nimport React from \"react\";\nimport { connect } from \"react-redux\";\nimport ViewModesMenu from \"./ViewModesMenu\";\nimport ViewModesButtons from \"./ViewModesButtons\";\nimport { type ListViewModeEnum, ListViewMode } from \"data/types\";\nimport styles from \"./ViewModes.module.css\";\n\nexport const ViewModeIcon = {\n [ListViewMode.Thumbnails]: \"fa-regular fa-image\",\n [ListViewMode.List]: \"list\",\n [ListViewMode.Grid]: \"table\",\n [ListViewMode.Map]: \"earth-europe\",\n [ListViewMode.Calendar]: \"fa-regular fa-calendar\",\n};\n\ntype Props = {\n /** current selected ViewMode */\n viewMode: ListViewModeEnum,\n /** all available viewModes to render */\n viewModes: Array,\n /** callback when user selects a different viewMode\n * @param {ListViewModeEnum} viewMode new selected viewMode\n */\n onChange: (viewMode: ListViewModeEnum) => void,\n};\n\n/** render the ViewMenu choice with requested viewModes marking the currently active viewMode */\nexport const ViewModes = (props: Props) => {\n if (\n props.viewModes == null ||\n props.viewMode == null ||\n props.viewModes.length <= 1\n )\n return null;\n else\n return props.browser.greaterThanOrEqual.large ? (\n \n ) : (\n \n );\n};\nViewModes.displayName = \"ViewModes\";\n\n// apply Redux Store state to Component Properties\nconst mapStateToProps = /* istanbul ignore next */ (state, ownProps) => ({\n browser: state.browser,\n ...ownProps,\n});\n\nexport default connect(mapStateToProps)(ViewModes);\n","// configuration file for components/ActionsMenu\n// localized text defined in data/i8n.*.json {viewName}/actions\nconst ActionMenus = {\n docactivity_context: [\n {\n id: \"details\",\n },\n {\n id: \"view\",\n },\n {\n id: \"popout\",\n },\n {\n id: \"download\",\n },\n {\n id: \"sep\",\n type: \"separator\",\n },\n {\n id: \"restore\",\n },\n {\n id: \"delete\",\n },\n ],\n docactivity_readonly_context: [\n {\n id: \"details\",\n },\n {\n id: \"view\",\n },\n ],\n};\n\nexport default ActionMenus;\n","// @flow\nimport React from \"react\";\nimport MenuItem from \"react-bootstrap/lib/MenuItem\";\nimport actionMenus from \"data/actionMenus\";\nimport loc from \"i18next\";\n\ntype ActionMenuItem = {\n id: string,\n text: string,\n type: null | \"separator\" | \"header\",\n};\n\ntype Props = {\n menuName: string,\n item: ActionMenuItem,\n /** callback to decide whether specified action should be visible\n * @param {object} action action object for which to decide visibility\n * @returns {boolean} true if should be visible, false to not render\n */\n onShouldBeVisible: ?(action: { id: string }) => boolean,\n /** callback to retrieve parameters to show in the action's text */\n onGetActionTextArguments: ?(actionId: string) => Object,\n /** callback when user selects action from ActionsMenu */\n onSelect: (id: string) => void,\n};\n\nexport const RenderActionMenuItem = ({\n menuName,\n item,\n onShouldBeVisible,\n onGetActionTextArguments,\n onSelect,\n}: Props) => {\n if (typeof onShouldBeVisible === \"function\") {\n if (!onShouldBeVisible(item)) return null;\n }\n const args =\n typeof onGetActionTextArguments === \"function\"\n ? onGetActionTextArguments(item.id)\n : {};\n\n return (\n \n {item.type !== \"separator\" &&\n loc.t(`${menuName}:actions.${item.id}`, args)}\n \n );\n};\n\nfunction RenderActionsMenu(\n name: string,\n onShouldBeVisible: ?(action: { id: string }) => boolean,\n onGetActionTextArguments: ?(actionId: string) => Object,\n onSelect: (id: string) => void\n) {\n if (!Object.prototype.hasOwnProperty.call(actionMenus, name)) return null;\n\n return actionMenus[name].map((item, key) => (\n {\n if (typeof id === \"string\") onSelect(id);\n }\n }\n />\n ));\n}\n\nexport default RenderActionsMenu;\n","// @flow\nimport React from \"react\";\nimport RenderActionsMenu from \"./Render\";\nimport Dropdown from \"@hs/dropdown\";\nimport Icons from \"@hs/icons\";\nimport styles from \"./ActionsMenu.module.css\";\nimport { getClassNames } from \"data/utils\";\n\ntype Props = {\n /** view name */\n name: string,\n /** callback when user selects action from ActionsMenu\n * @param {string} actionId which action has been selected by the user\n */\n onAction: (actionId: string) => void,\n /** callback to decide whether specified action should be visible\n * @param {object} action action object for which to decide visibility\n * @returns {boolean} true if should be visible, false to not render\n */\n onShouldBeVisible?: (action: { id: string }) => boolean,\n /** whether to disable the whole actionsMenu */\n disabled?: boolean,\n /** optional CSS class to apply to dropdown */\n className?: string,\n toggleComponent?: React.Element,\n};\n\n/**\n * renders a dropdown menu with actions\n */\nconst ActionsMenu = ({\n name,\n onAction,\n onShouldBeVisible,\n disabled,\n className,\n toggleComponent,\n}: Props) => (\n \n \n {toggleComponent ? (\n toggleComponent\n ) : (\n \n )}\n \n \n {RenderActionsMenu(name, onShouldBeVisible, null, onAction)}\n \n \n);\n\nActionsMenu.displayName = \"ActionsMenu\";\nexport default ActionsMenu;\n","// @flow\nimport React, { useMemo, useCallback, useContext } from \"react\";\nimport { MultiSelectionContext } from \"data/context\";\nimport Icons from \"@hs/icons\";\nimport ItemStatusIcons from \"components/ItemStatusIcons\";\nimport Attributes from \"components/Attributes\";\nimport {\n GridListConstant,\n type DocColumnResultDTO,\n type docFilterText,\n DocListColumnType,\n} from \"data/types\";\n// import { shortItemUri } from \"components/ItemUriLink\";\nimport Thumbnail from \"./Thumbnail\";\nimport Mark from \"@hs/mark\";\nimport ValueFactory from \"components/Attributes/SummaryAttribute/ValueFactory\";\nimport { getClassNames, getValue } from \"data/utils\";\nimport { isHandheld } from \"data/bowser\";\nimport withStickyToggle from \"containers/StickyToggle\";\nimport StickyToggleStyle from \"containers/StickyToggle/style\";\nimport styles from \"./RowResult.module.css\";\n\ntype Props = {\n /** CSS styles to apply */\n style?: StyleSheet,\n /** the row object */\n row: Object,\n /** row index */\n index: number,\n /** all the columns */\n cols: Array,\n /** whether row should be marked as selected */\n isSelected: boolean,\n /** callback when user clicks document icon\n * @param {SyntheticMouseEvent} e HTML click event\n */\n onIconClick?: (e: SyntheticMouseEvent<*>) => void,\n /** callback when user single clicks the whole row\n * @param {SyntheticMouseEvent} e HTML click event\n * @param {string} itemUri the row's itemUri\n * @param {number} index the row's index\n */\n onSingleClick?: (\n e: SyntheticMouseEvent,\n itemUri: string,\n index: number\n ) => void,\n /** callback when user double clicks the whole row\n * @param {SyntheticMouseEvent} e HTML click event\n * @param {string} itemUri the row's itemUri\n * @param {number} index the row's index\n */\n onDoubleClick?: (\n e: SyntheticMouseEvent,\n itemUri: string,\n index: number\n ) => void,\n /** callback when user clicks on More... Button\n * @param {SyntheticMouseEvent} e HTML click event\n * @param {string} itemUri the row's itemUri\n * @param {number} index the row's index\n */\n onMoreClick?: (\n e: SyntheticMouseEvent,\n itemUri: string,\n index: number\n ) => void,\n /** whether to disable the More... button */\n actionsDisabled?: boolean,\n /** callback when row has been rendered (and HTML loaded) */\n onLoad?: () => void,\n /** whether to show thumbnails or just file types' icons */\n showThumbnail: boolean,\n /** quick filter details */\n filterText: ?docFilterText,\n};\n\n/**\n * Render one document row in \"Simple\" layout mode\n */\nexport const RowResult = (props: Props) => {\n const {\n className,\n style,\n row,\n index,\n cols,\n isSelected,\n isHovered,\n filterText,\n onIconClick,\n onSingleClick,\n onDoubleClick,\n onMoreClick,\n onMouseEnter,\n onMouseLeave,\n onLoad,\n showThumbnail,\n divRef,\n onTouchStart,\n onTouchMove,\n onTouchEnd,\n onMouseDown,\n onMouseUp,\n onContextMenu,\n } = props;\n\n /* istanbul ignore next */\n const {\n multiple,\n renderCheckbox,\n isSelected: isMultiSelected,\n } = useContext(MultiSelectionContext) || {\n multiple: false,\n renderCheckbox: () => null,\n isSelected: (index: number) => false,\n };\n\n const itemUri = useMemo(() => row[row.length - 1], [row]);\n\n const handleSingleClick = useCallback(\n (e: SyntheticMouseEvent<*>) => {\n e.stopPropagation();\n /* istanbul ignore else */\n if (typeof onSingleClick === \"function\")\n onSingleClick(e, itemUri, index);\n },\n [itemUri, index, onSingleClick]\n );\n\n const handleDoubleClick = useCallback(\n (e: SyntheticMouseEvent<*>) => {\n e.stopPropagation();\n /* istanbul ignore else */\n if (typeof onDoubleClick === \"function\")\n onDoubleClick(e, itemUri, index);\n },\n [itemUri, index, onDoubleClick]\n );\n\n const handleIconClick = useCallback(\n (e: SyntheticMouseEvent<*>) => {\n e.stopPropagation();\n /* istanbul ignore else */\n if (typeof onIconClick === \"function\")\n onIconClick(e, itemUri, index);\n },\n [itemUri, index, onIconClick]\n );\n\n const renderName = useCallback(() => {\n let nameColIndex = cols.findIndex(\n (col) => col.type === DocListColumnType.WebDavName\n );\n // FlatAUs do not have any Name columns\n if (nameColIndex === -1) nameColIndex = 1;\n\n const col = cols[nameColIndex];\n\n let name = row[nameColIndex];\n if (typeof name !== \"string\") {\n name = (\n \n );\n }\n\n if (\n filterText &&\n filterText.name &&\n filterText.value &&\n filterText.name.toUpperCase() === col.name.toUpperCase()\n ) {\n return {name};\n } else return name;\n }, [row, cols, filterText]);\n\n const extensionColIndex = useMemo(\n () =>\n cols.findIndex(\n (col) => col.name === GridListConstant.ExtensionIcon\n ),\n [cols]\n );\n const statusColIndex = useMemo(\n () =>\n cols.findIndex(\n (col) => col.name === GridListConstant.IconItemStatus\n ),\n [cols]\n );\n const sizeColIndex = useMemo(\n () => cols.findIndex((col) => col.type === DocListColumnType.FileSize),\n [cols]\n );\n\n const size = useMemo(\n () => getValue(row[sizeColIndex]),\n [row, sizeColIndex]\n );\n const attributes = useMemo(\n () =>\n cols.reduce((accumulator, col, idx, arr) => {\n const val = row[idx];\n if (\n ![\n GridListConstant.ExtensionIcon.toUpperCase(),\n GridListConstant.IconItemStatus.toUpperCase(),\n GridListConstant.ItemUri.toUpperCase(),\n ].includes(col.name.toUpperCase()) &&\n col.type !== DocListColumnType.WebDavName &&\n col.type !== DocListColumnType.FileSize &&\n val != null\n ) {\n if (typeof val === \"string\") {\n accumulator.push([col.caption, val]);\n } else {\n accumulator.push({\n caption: col.caption,\n value: val,\n });\n }\n }\n\n return accumulator;\n }, []),\n [cols, row]\n );\n const combinedClassNames = getClassNames(\n className,\n styles.row,\n multiple\n ? isMultiSelected(index)\n ? styles.active\n : null\n : isSelected\n ? styles.active\n : null,\n isHovered ? styles.hovered : null,\n showThumbnail ? styles.thumbnail : null,\n isHandheld() ? (multiple ? styles.multi : null) : styles.multi\n );\n return (\n \n {(multiple || (isHovered && !isHandheld())) &&\n renderCheckbox(index, styles.checkbox)}\n
\n {showThumbnail && (\n \n )}\n {!showThumbnail && (\n \n )}\n
\n
\n {sizeColIndex !== -1 && size !== \"0 B\" && size + \" \"}\n {showThumbnail && (\n \n )}\n \n
\n
{renderName()}
\n \n \n );\n};\nRowResult.displayName = \"RowResult\";\nRowResult.defaultProps = {\n isSelected: false,\n showThumbnail: false,\n};\n\nconst RowResultWithStickyToggle = withStickyToggle({\n renderDiv: false,\n usePortal: false,\n getStyle: StickyToggleStyle.List,\n isActiveProp: \"isSelected\",\n})(RowResult);\n\nexport default RowResultWithStickyToggle;\n","// @flow\r\nimport React, { PureComponent } from \"react\";\r\nimport { type docsResultState } from \"data/reducers/types\";\r\nimport { type DocListLayout } from \"data/types\";\r\nimport CellMeasurer from \"react-virtualized/dist/commonjs/CellMeasurer\";\r\nimport CellMeasurerCache from \"react-virtualized/dist/commonjs/CellMeasurer/CellMeasurerCache\";\r\nimport Measure from \"react-measure\";\r\nimport Constants, { type ConstantsEnum } from \"data/constants\";\r\nimport ContextMenuHandler from \"components/ContextMenu/Handler\";\r\nimport Icons from \"@hs/icons\";\r\nimport NoDocs from \"components/NoDocs\";\r\nimport ListGroup from \"react-bootstrap/lib/ListGroup\";\r\nimport List from \"react-virtualized/dist/commonjs/List\";\r\nimport InfiniteLoader from \"react-virtualized/dist/commonjs/InfiniteLoader\";\r\nimport \"react-virtualized/styles.css\"; // only needs to be imported once\r\nimport styles from \"./DocListSimple.module.css\";\r\nimport RowResult from \"./RowResult\";\r\nimport isEqual from \"lodash/isEqual\";\r\n\r\ntype Props = {\r\n /** doclist fetch result */\r\n result: docsResultState,\r\n /** total number of documents */\r\n totalCount: number,\r\n /** callback to request loading next page */\r\n loadMoreRows: ({ rowIndex: number }) => Promise,\r\n /** docList layout settings */\r\n layout?: DocListLayout,\r\n /** callback to set filtering on a specific column\r\n * @param {string} colName name of column to filter\r\n */\r\n requestShowFilter: (colName: string) => void,\r\n /** which row index is currently selected */\r\n activeRowIndex?: ?number,\r\n /** which row index to bring into view */\r\n scrollToRow?: ?number,\r\n /** which row is the UI currently updating\r\n * @param {number} rowStartIndex row index in result.rows\r\n */\r\n rowStartIndexUpdated: (rowStartIndex: number) => void,\r\n /** callback when user clicks document icon\r\n * @param {SyntheticMouseEvent} e HTML click event\r\n */\r\n onIconClick?: (e: SyntheticMouseEvent) => void,\r\n /** callback when user single clicks the whole row\r\n * @param {SyntheticMouseEvent} e HTML click event\r\n * @param {string} itemUri the row's itemUri\r\n * @param {number} rowIndex the row's index\r\n */\r\n onSingleClick?: (\r\n e: SyntheticMouseEvent,\r\n itemUri: string,\r\n rowIndex: number\r\n ) => void,\r\n /** callback when user clicks on More... button\r\n * @param {SyntheticMouseEvent} e HTML click event\r\n * @param {string} itemUri the row's itemUri\r\n * @param {number} index the row's index\r\n */\r\n onMoreClick?: (\r\n e: SyntheticMouseEvent,\r\n itemUri: string,\r\n index: number\r\n ) => void,\r\n /** whether to disable the More... button */\r\n actionsDisabled?: boolean,\r\n /** callback when user right clicks the whole row\r\n * @param {SyntheticMouseEvent} e HTML click event\r\n * @param {number} rowIndex the row's index\r\n * @param {number} columnsIndex the column's index\r\n * @param {string} itemUri the row's itemUri\r\n */\r\n onContextClick?: (\r\n e: SyntheticMouseEvent,\r\n rowIndex: number,\r\n columnIndex: number,\r\n itemUri: string\r\n ) => void,\r\n /** React.Node children */\r\n children?: Node,\r\n /** whether to show thumbnails or just file types' icons */\r\n showThumbnails?: boolean,\r\n /** minimum row height (in px) */\r\n minRowHeight?: number,\r\n /** alternative Component used to Render each Row */\r\n RenderRowComponentClass?: React.Node,\r\n};\r\n\r\ntype State = {\r\n rows: Object,\r\n pageSize: number,\r\n pagesStatus: Array,\r\n activeRowIndex: number,\r\n hoveredRowIndex: number,\r\n refreshId: number,\r\n};\r\n\r\n/**\r\n * Renders the Tiles/Thumbnails documents list\r\n */\r\nclass DocListSimple extends PureComponent {\r\n _cache: Object;\r\n _list: List | null; // internal ref to rendered virtualized List Component\r\n // _autoHide: AutoHide | null;\r\n\r\n static defaultProps = {\r\n showThumbnails: false,\r\n RenderRowComponentClass: RowResult,\r\n };\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this._initCellMeasurerCache(props);\r\n\r\n this.state = {\r\n //first page results loaded by DocListContainer\r\n rows: props.result.rows,\r\n pageSize: props.result.pageSize,\r\n //first page already pre-loaded otherwise we wouldn't be here\r\n pagesStatus: [Constants.OK],\r\n activeRowIndex:\r\n props.activeRowIndex != null ? props.activeRowIndex : -1,\r\n hoveredRowIndex: -1,\r\n refreshId: 0,\r\n };\r\n }\r\n\r\n componentDidUpdate(prevProps: Props, prevState: State) {\r\n /* istanbul ignore else */\r\n if (prevProps.showThumbnails !== this.props.showThumbnails) {\r\n this._initCellMeasurerCache(this.props);\r\n this._onResize();\r\n }\r\n\r\n if (!isEqual(this.props.result.rows, this.state.rows)) {\r\n this.setState(\r\n ({ pagesStatus, refreshId }) => ({\r\n rows: this.props.result.rows,\r\n pagesStatus: pagesStatus.map((p, i) =>\r\n p === Constants.LOADING\r\n ? i === this.props.pageNum\r\n ? Constants.OK\r\n : null\r\n : p\r\n ),\r\n refreshId: ++refreshId,\r\n }),\r\n () => {\r\n this._cache.clearAll();\r\n }\r\n );\r\n }\r\n }\r\n\r\n _initCellMeasurerCache = (props: Props) => {\r\n this._cache = new CellMeasurerCache({\r\n fixedWidth: true,\r\n minHeight:\r\n props.minRowHeight ||\r\n /* istanbul ignore next */ (props.showThumbnails ? 85 : 55),\r\n });\r\n };\r\n\r\n /* istanbul ignore next */ _onResize = (width: number, height: number) => {\r\n /* istanbul ignore next */\r\n this.setState(\r\n ({ refreshId }: State) => ({\r\n refreshId: ++refreshId,\r\n }),\r\n () => this._cache.clearAll()\r\n );\r\n };\r\n\r\n _isRowLoaded = ({ index }: { index: number }) => {\r\n return Object.prototype.hasOwnProperty.call(this.state.rows, index);\r\n };\r\n\r\n _loadMoreRows = ({\r\n startIndex,\r\n stopIndex,\r\n }: {\r\n startIndex: number,\r\n stopIndex: number,\r\n }) => {\r\n const { rows, pageSize, pagesStatus } = this.state;\r\n //console.log(\"loadMoreRows\", startIndex, stopIndex);\r\n\r\n // calc pagenumber\r\n let pageNum = 0;\r\n /* istanbul ignore else */\r\n if (startIndex > 0) {\r\n // specific row index requested? calc page number\r\n // To avoid pageNum is Infinity, we default pageSize to Infinity\r\n pageNum = Math.floor(startIndex / (pageSize || Infinity)) - 1;\r\n }\r\n // check that stopIndex is indeed included\r\n /* istanbul ignore next */\r\n if (pageSize > 0 && (pageNum + 1) * pageSize < stopIndex) {\r\n pageNum++;\r\n }\r\n\r\n // page already loaded/requested?\r\n /* istanbul ignore next */\r\n if (\r\n (pagesStatus[pageNum] === Constants.OK ||\r\n pagesStatus[pageNum] === Constants.LOADING) &&\r\n !(\r\n Object.prototype.hasOwnProperty.call(rows, startIndex) &&\r\n Object.prototype.hasOwnProperty.call(rows, stopIndex)\r\n )\r\n )\r\n return;\r\n\r\n // fetch\r\n pagesStatus[pageNum] = Constants.LOADING;\r\n this.props.loadMoreRows(pageNum);\r\n };\r\n\r\n _rowRenderer = ({\r\n index,\r\n isScrolling,\r\n key,\r\n parent,\r\n style,\r\n }: {\r\n index: number,\r\n isScrolling: boolean,\r\n key: number,\r\n parent: Object,\r\n style: StyleSheet,\r\n }) => {\r\n if (this._isRowLoaded({ index })) {\r\n const { rows } = this.state;\r\n const row = rows[index];\r\n const itemUri = row[row.length - 1];\r\n const handleRowMoreClick = (e) => {\r\n /* istanbul ignore else */\r\n if (typeof this.props.onMoreClick === \"function\")\r\n this.props.onMoreClick(e, itemUri, index);\r\n };\r\n const handleRowContextMenu = (e) => {\r\n this._cellOnContextMenu(e, index, itemUri);\r\n };\r\n const handleRowMouseEnter = (e) => {\r\n this.setState({ hoveredRowIndex: index });\r\n };\r\n return (\r\n \r\n {({ measure }) => (\r\n \r\n {React.createElement(\r\n this.props.RenderRowComponentClass,\r\n {\r\n index,\r\n row,\r\n onLoad: this._onResize,\r\n showThumbnail: this.props.showThumbnails,\r\n filterText: this.props.result.filterText,\r\n layout: this.props.layout,\r\n cols: this.props.result.cols,\r\n isSelected:\r\n this.props.activeRowIndex === index,\r\n isHovered:\r\n this.state.hoveredRowIndex === index,\r\n onIconClick: this.props.onIconClick,\r\n onSingleClick: this.props.onSingleClick,\r\n onMoreClick: handleRowMoreClick,\r\n onDoubleClick: this.props.onDoubleClick,\r\n actionsDisabled: this.props.actionsDisabled,\r\n }\r\n )}\r\n \r\n )}\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n {({ measure }) => (\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n }\r\n };\r\n\r\n _cellOnContextMenu = (\r\n e: SyntheticMouseEvent<*>,\r\n rowIndex: number,\r\n itemUri: string\r\n ) => {\r\n this.setState({ activeRowIndex: rowIndex });\r\n e.preventDefault();\r\n e.persist();\r\n /* istanbul ignore else */\r\n if (typeof this.props.onContextClick === \"function\") {\r\n //console.log(e.target.innerText, columnIndex);\r\n this.props.onContextClick(e, rowIndex, 0, itemUri);\r\n }\r\n };\r\n\r\n render() {\r\n const { rows } = this.state;\r\n const count =\r\n this.props.totalCount === 0\r\n ? this.props.result.rowCount\r\n : this.props.totalCount;\r\n\r\n return (\r\n \r\n {({\r\n measureRef,\r\n contentRect: /* istanbul ignore next */ { bounds } = {\r\n bounds: { width: 0, height: 0 },\r\n },\r\n }) => (\r\n \r\n \r\n \r\n {({ onRowsRendered, registerChild }) => (\r\n {\r\n this._list = ref;\r\n registerChild(ref);\r\n }}\r\n deferredMeasurementCache={this._cache}\r\n width={\r\n /* istanbul ignore next */ bounds?.width ??\r\n 0\r\n }\r\n height={\r\n /* istanbul ignore next */ bounds?.height ??\r\n 0\r\n }\r\n rowCount={count}\r\n rowHeight={this._cache.rowHeight}\r\n rowRenderer={this._rowRenderer}\r\n onRowsRendered={onRowsRendered}\r\n overscanRowCount={10}\r\n noRowsRenderer={() => (\r\n \r\n )}\r\n rows={rows}\r\n scrollToIndex={this.props.scrollToRow}\r\n scrollToAlignment=\"start\"\r\n />\r\n )}\r\n \r\n \r\n {this.props.children}\r\n \r\n )}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default DocListSimple;\r\n","// @flow\nimport React from \"react\";\nimport Button from \"react-bootstrap/lib/Button\";\nimport loc from \"i18next\";\nimport Icons from \"@hs/icons\";\n\nconst OpenFiltersButton = ({ onClick }: { onClick: Function }) => (\n \n \n {loc.t(\"actionCategory:filter.name\")}\n \n);\nOpenFiltersButton.displayName = \"OpenFiltersButton\";\nexport default OpenFiltersButton;\n","// @flow\nimport React, { useContext } from \"react\";\nimport { useRecycleBin } from \"hooks\";\nimport NoData from \"components/NoData\";\nimport { IsFiltered } from \"components/DocListFilterModal/Utils\";\nimport { type DocListLayout } from \"data/types\";\nimport OpenFiltersButton from \"./OpenFiltersButton\";\nimport CommandActionButton from \"components/CommandActions/CommandActionButton\";\nimport { ItemContext } from \"data/context\";\nimport styles from \"./NoDocs.module.css\";\n\nconst NoDocs = ({\n layout,\n requestShowFilter,\n showAddDocument,\n}: {\n layout?: DocListLayout,\n requestShowFilter?: Function,\n showAddDocument?: boolean,\n}) => {\n const { isDocAssignmentAllowed, itemUri, itemStatus } =\n useContext(ItemContext) || {};\n const [, , , checkIfInRecycleBin] = useRecycleBin(itemUri, itemStatus);\n const hasActiveFilter =\n layout != null &&\n layout.filters &&\n requestShowFilter != null &&\n IsFiltered(layout.filters);\n const canUploadDocument =\n showAddDocument &&\n !hasActiveFilter &&\n itemUri &&\n isDocAssignmentAllowed &&\n !checkIfInRecycleBin();\n return (\n \n {(hasActiveFilter || canUploadDocument) && (\n
\n {hasActiveFilter && (\n \n )}\n {canUploadDocument && (\n \n )}\n
\n )}\n
\n );\n};\nNoDocs.displayName = \"NoDocs\";\nNoDocs.defaultProps = {\n showAddDocument: true,\n};\nexport default NoDocs;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"Status_wrapper__1xrEx\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"btnToast\":\"toast_btnToast__1G1AD\",\"toast\":\"toast_toast__WLizo\",\"detail\":\"toast_detail__2jbz7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"modal\":\"Modal_modal__1cXJL\",\"fs\":\"Modal_fs__1ig4z\",\"docked\":\"Modal_docked__yb-5V\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"button\":\"ItemAction_button__3fwaS\",\"icon\":\"ItemAction_icon__1ZbDt\",\"desc\":\"ItemAction_desc__3Ql9P\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"top\":\"itemView_docList_top___U4a4\",\"wrapper\":\"itemView_docList_wrapper__2nlL6\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"ValuePrincipal_wrapper__1QZwe\",\"icon\":\"ValuePrincipal_icon__2ydq1\",\"avatar\":\"ValuePrincipal_avatar__1volQ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"button\":\"StickyToggle_button__29V1n\",\"wrapper\":\"StickyToggle_wrapper__2zrSm\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"noteContainer\":\"NoteInput_noteContainer__35zt_\",\"noteWrapper\":\"NoteInput_noteWrapper__op-sG\",\"noteInput\":\"NoteInput_noteInput__1CY0F\",\"highlight\":\"NoteInput_highlight__3iRLs\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"Activities_wrapper__13MQj\",\"info\":\"Activities_info__1k3pe\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"canClick\":\"Breadcrumb_canClick__3cwNb\",\"icon\":\"Breadcrumb_icon__B7s8o\",\"color\":\"Breadcrumb_color__1NWTT\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"picker\":\"PickerModal_picker__1uvkV\",\"button\":\"PickerModal_button__mndRK\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"rename\":\"Rename_rename__kH-xw\",\"input\":\"Rename_input__3In84\",\"icon\":\"Rename_icon__11tv4\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"params\":\"Searchcrumb_params__1Nbkx\",\"param\":\"Searchcrumb_param__C7DKV\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"icon\":\"Button_icon__uy-69\",\"badge\":\"Button_badge__3fXV6\",\"status\":\"Button_status__84hFh\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"button\":\"OptionsModal_button__1sGMA\",\"checkbox_wrapper\":\"OptionsModal_checkbox_wrapper__2M2vh\",\"checkbox_label\":\"OptionsModal_checkbox_label__28AMI\",\"checkbox\":\"OptionsModal_checkbox__CclYa\",\"options\":\"OptionsModal_options__18uzK\",\"modal\":\"OptionsModal_modal__2gFjB\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"PlaceInput_container__Yz99t\",\"inputGroup\":\"PlaceInput_inputGroup__3vN1D\",\"iconWrapper\":\"PlaceInput_iconWrapper__3GUOj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"cards\":\"List_cards__2A4ql\",\"wrapper\":\"List_wrapper__3mEHD\"};","import React from \"react\";\nimport LocalContactInfo from \"components/LocalContactInfo\";\nimport Constants, { type ConstantsEnum } from \"data/constants\";\nimport styles from \"./PageStatus.module.css\";\nimport { getClassNames } from \"data/utils\";\n\ntype Props = {\n /** current status */\n status: ConstantsEnum,\n /** optional message to display\n * NOTE: only visible when status = ERROR or LOADING\n */\n message?: string,\n /** optional React element to show below message\n * NOTE: only visible when status = ERROR or LOADING\n */\n children?: React.ElementType,\n};\n\nconst PageStatus = ({ status, message, children }: Props) => (\n
\n \"inPoint\n {[Constants.ERROR, Constants.LOADING].includes(status) && (\n
\n {message}\n {children}\n {status === Constants.ERROR && }\n
\n )}\n
\n);\nPageStatus.displayName = \"PageStatus\";\nPageStatus.defaultProps = {\n status: Constants.NONE,\n};\nexport default PageStatus;\n","import queryString from \"data/queryString\";\nimport {\n type SidebarItemDTO,\n SpecialFoldersItemURIs,\n SystemWebDavName,\n} from \"data/types\";\nimport loc from \"i18next\";\n\nlet siteActiveCache = {\n uri: null,\n orderedIndex: -1,\n};\n\n// HACK for some reason the LinkContainer does not receive the correct match object\nexport const isSiteActive = (\n location: Location,\n sitesOrdered: Array,\n site: SidebarItemDTO\n): boolean => {\n const qs = queryString.parse(location.search);\n const qsuri =\n location.hash !== SpecialFoldersItemURIs.RecycleBinUri &&\n qs.uri !== SpecialFoldersItemURIs.RecycleBinUri\n ? \"pam-item://\" + qs.uri\n : SpecialFoldersItemURIs.RecycleBinUri;\n\n // no need to find qsuri every time\n if (siteActiveCache.uri === qsuri) {\n return (\n site.itemUri === sitesOrdered[siteActiveCache.orderedIndex].itemUri\n );\n }\n // do we have an exact match?\n const orderedIndex = sitesOrdered.findIndex(\n (orderedSite) => orderedSite.itemUri === qsuri\n );\n // ...then take it\n if (orderedIndex !== -1) {\n siteActiveCache = { uri: qsuri, orderedIndex };\n return site.itemUri === sitesOrdered[orderedIndex].itemUri;\n } else {\n // find closest neighbour\n const orderedIndex2 = sitesOrdered.findIndex(\n (orderedSite) => qsuri.indexOf(orderedSite.itemUri) === 0\n );\n if (orderedIndex2 !== -1) {\n siteActiveCache = { uri: qsuri, orderedIndex: orderedIndex2 };\n return site.itemUri === sitesOrdered[orderedIndex2].itemUri;\n }\n }\n //if uri does not exist at all in our sidebar\n siteActiveCache = { uri: null, orderedIndex: -1 };\n return false;\n};\n\nexport const siteDisplayName = (site: SidebarItemDTO): string => {\n const nameIndex = Object.values(SystemWebDavName).indexOf(site.caption);\n\n if (nameIndex !== -1) {\n return loc.t(`common:siteItemType.${site.siteType}`);\n }\n\n return site.caption;\n};\n","import _queryString, { StringifyOptions } from \"query-string\";\n\nconst queryString = {\n ..._queryString,\n stringify: (object: Record, options: StringifyOptions) =>\n _queryString.stringify(object, {\n skipNull: true,\n skipEmptyString: true,\n }),\n};\n\nexport default queryString;\n","import { compose, createStore, applyMiddleware } from \"redux\";\nimport appReducers from \"data/reducers\";\n// redux-persist\nimport { persistStore, persistReducer } from \"redux-persist\";\nimport {\n // transformCorrelationId,\n transformInitialState,\n} from \"data/persistTransforms\";\nimport { LocalNodeDevelopment } from \"./config\";\n// responsive\nimport { responsiveStoreEnhancer } from \"redux-responsive\";\n// sagas\nimport createSagaMiddleware from \"redux-saga\";\n//import { version } from \"../../package.json\";\nimport { persistStorage } from \"data/storage\";\nimport { initialState as loginInitialState } from \"data/reducers/loginReducer\";\n// import { initialState as userInitialState } from \"data/reducers/userReducer\";\nimport { setupLogging } from \"data/logging\";\n\nexport const injectConfigFromServer = async () => {\n let config;\n try {\n const url = `${window.CONFIG.host.basename}/config`;\n const result = await fetch(url);\n config = await result.json();\n } catch (e) {\n console.error(\n `Cannot load appsettings from inPoint.Web.Server. Please check if the Server is running and the proxy is configured`,\n e\n );\n }\n return config || LocalNodeDevelopment;\n};\n\n/* istanbul ignore next */\nif (process.env.NODE_ENV !== \"production\") {\n // Log the initial state\n //console.log(store.getState())\n // Every time the state changes, log it\n // Note that subscribe() returns a function for unregistering the listener//let unsubscribe =\n /* store.subscribe(() => {\n console.log(\"%c store\", \"color: orange\", store.getState());\n }); */\n // this sets window.CONFIG either locally (node.js server) or when hosted, from MVC\n\n /* istanbul ignore next */\n if (typeof window.CONFIG === \"string\") {\n window.CONFIG = LocalNodeDevelopment;\n injectConfigFromServer().then((config) => (window.CONFIG = config));\n }\n}\n\n/* istanbul ignore next */\nif (process.env.JEST_WORKER_ID === undefined) {\n setupLogging();\n}\n\n// create the saga middleware\nexport const sagaMiddleware = createSagaMiddleware();\n\n// redux-persist\nconst transforms = [\n /*transformCorrelationId()*/\n];\n/* istanbul ignore next */\nif (window.CONFIG.auth.forceLogin === true || window.CONFIG.token != null) {\n transforms.push(transformInitialState(\"login\", loginInitialState));\n // transforms.push(transformInitialState(\"user\", userInitialState));\n}\n\nconst persistConfig = {\n key: \"root\",\n version: 3,\n whitelist: [\n \"settings\",\n /*\"user\",*/ \"login\",\n \"cards\",\n \"offline\",\n \"notification\",\n ],\n storage: persistStorage, //localForage,\n debug: process.env.NODE_ENV !== \"production\",\n autoRehydrate: true,\n transforms,\n};\nconst reducer = persistReducer(persistConfig, appReducers);\n\n// simple Redux console logger\n// https://twitter.com/dan_abramov/status/629347448247468032?lang=en\n/* function logger({ getState }) {\n return next => action => {\n //console.time();\n console.groupCollapsed(action.type);\n console.info(\"dispatching:\", action);\n const result = next(action);\n console.log(\"next state:\", getState());\n console.groupEnd();\n //console.timeEnd();\n return result;\n };\n} */\n\n// http://redux.js.org/\nconst middlewares = [sagaMiddleware];\n/* if (process.env.NODE_ENV !== \"production\") {\n middlewares.push(logger);\n} */\n\nconst composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;\nconst store = createStore(\n reducer,\n composeEnhancers(responsiveStoreEnhancer, applyMiddleware(...middlewares))\n);\n\nexport const persistor = persistStore(store);\n\nexport default store;\n","import { createTransform } from \"redux-persist\";\n// https://github.com/rt2zz/redux-persist\n\n// // do not store/reload the correlationId (used for server-side logging)\n// export const transformCorrelationId = /* istanbul ignore next */ () =>\n// createTransform(\n// // transform state on its way to being serialized and persisted.\n// (inboundState, key) => {\n// return { ...inboundState, correlationId: undefined };\n// },\n// // transform state being rehydrated\n// (outboundState, key) => {\n// return { ...outboundState, correlationId: undefined };\n// },\n// // define which reducers this transform gets called for.\n// { whitelist: [\"user\"] }\n// );\n\nexport const transformInitialState = /* istanbul ignore next */ (\n reducerName,\n initialState\n) =>\n createTransform(\n // transform state on its way to being serialized and persisted.\n (inboundState, key) => {\n return {\n ...inboundState,\n ...initialState,\n };\n },\n // transform state being rehydrated\n (outboundState, key) => {\n return {\n ...outboundState,\n ...initialState,\n };\n },\n // define which reducers this transform gets called for.\n { whitelist: [reducerName] }\n );\n\n// // optionally skip storing/loading the login reducer (forcing user to re-login every time)\n// export const transformLoginToken = createTransform(\n// // transform state on its way to being serialized and persisted.\n// (inboundState, key) => {\n// return {\n// ...inboundState,\n// ...loginInitialState\n// };\n// },\n// // transform state being rehydrated\n// (outboundState, key) => {\n// return {\n// ...outboundState,\n// ...loginInitialState\n// };\n// },\n// // define which reducers this transform gets called for.\n// { whitelist: [\"login\"] }\n// );\n\n// // optionally skip storing/loading the login reducer (forcing user to re-login every time)\n// export const transformUserToken = createTransform(\n// // transform state on its way to being serialized and persisted.\n// (inboundState, key) => {\n// return {\n// ...inboundState,\n// ...userInitialState\n// };\n// },\n// // transform state being rehydrated\n// (outboundState, key) => {\n// return {\n// ...outboundState,\n// ...userInitialState\n// };\n// },\n// // define which reducers this transform gets called for.\n// { whitelist: [\"user\"] }\n// );\n","import localForage from \"localforage\";\nimport { extendPrototype } from \"localforage-startswith\";\n\nextendPrototype(localForage);\n\n// Add n/a fallback StorageDriver #53854\nexport function NotAvailable(...args) {\n return new Promise((resolve, reject) => {\n console.error(\"No StorageDriver is available\", args);\n resolve(null);\n });\n}\n\nconst NoStorageDriver = {\n _driver: \"NOSTORAGE\",\n _initStorage: /* istanbul ignore next */ () => {},\n setItem: NotAvailable,\n getItem: NotAvailable,\n removeItem: NotAvailable,\n clear: NotAvailable,\n length: NotAvailable,\n key: NotAvailable,\n keys: NotAvailable,\n iterate: NotAvailable,\n};\nlocalForage.defineDriver(NoStorageDriver);\n\n// configure our local storage for Views (currentItem_*)\n// https://github.com/localForage/localForage/issues/191#issuecomment-342793463\n/* istanbul ignore next */\nexport const viewStorage = localForage.createInstance({\n name: \"inPoint.Web\",\n driver: [localForage.INDEXEDDB, localForage.LOCALSTORAGE, \"NOSTORAGE\"],\n version: 5,\n size: 4980736,\n storeName: \"views\",\n});\nviewStorage\n .ready()\n .catch(\n /* istanbul ignore next */ () =>\n console.error(\"Cannot load viewStorage\")\n );\n\n// configure our local storage for persist (redux-persist)\n/* istanbul ignore next */\nexport const persistStorage = localForage.createInstance({\n name: \"inPoint.Web\",\n driver: [localForage.LOCALSTORAGE, \"NOSTORAGE\"],\n version: 5,\n size: 4980736,\n storeName: \"persist\",\n});\npersistStorage\n .ready()\n .catch(\n /* istanbul ignore next */ () =>\n console.error(\"Cannot load persistStorage\")\n );\n\n/* istanbul ignore next */\nexport const cacheStorage = localForage.createInstance({\n name: \"inPoint.Web\",\n driver: [localForage.LOCALSTORAGE, \"NOSTORAGE\"],\n version: 5,\n size: 4980736,\n storeName: \"cache\",\n});\n// clear on F5 or Browser Refresh\ncacheStorage\n .ready()\n .then(() => cacheStorage.clear())\n .catch(\n /* istanbul ignore next */ () =>\n console.error(\"Cannot load cacheStorage\")\n );\n\nexport const offlineQueueStorage = localForage.createInstance({\n name: \"inPoint.Web\",\n driver: [localForage.INDEXEDDB],\n version: 5,\n size: 4980736,\n storeName: \"offline\",\n});\n\nexport async function getStorageEstimate() {\n if (\"storage\" in navigator && \"estimate\" in navigator.storage) {\n const { usage, quota } = await navigator.storage.estimate();\n const percentUsed = Math.round((usage / quota) * 100);\n const usageInGb = Math.round(usage / (1024 * 1024) / 954);\n const quotaInGb = Math.round(quota / (1024 * 1024) / 954);\n\n // const usageInMib = Math.round(usage / (1024 * 1024) / 954);\n // const quotaInMib = Math.round(quota / (1024 * 1024) / 954);\n // const details = `${usageInMib} out of ${quotaInMib} MiB used (${percentUsed}%)`;\n\n return { usageInGb, quotaInGb, percentUsed };\n }\n return null;\n}\n\nexport /* istanbul ignore next*/ function getAllItems(db): Promise> {\n var accumulator = [];\n return db\n .iterate(function (value, key /*, iterationNumber*/) {\n accumulator.push({ key, value });\n })\n .then(function () {\n return accumulator;\n });\n}\n","import React from \"react\";\nimport { getDisplayName } from \"data/constants\";\nimport { itemUriSelector } from \"data/reducers/selectors\";\n\nconst withItemUri = (WrappedComponent: ComponentType) => {\n const HOC = (props: Props) => {\n const itemUri =\n props.itemUri ||\n itemUriSelector({\n location: props.history?.location ?? window.location,\n });\n return ;\n };\n HOC.displayName = `withItemUri(${getDisplayName(WrappedComponent)})`;\n return HOC;\n};\n\nexport default withItemUri;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"toast\":\"NetworkStatus_toast__22kCS\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"row\":\"ItemActions_row__3Mfen\",\"itemView\":\"ItemActions_itemView__2KTgu\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"right\":\"ViewModes_right__tbtY3\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"btn\":\"CommandActionButton_btn__XTTpq\",\"icon\":\"CommandActionButton_icon__1IW_u\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"facePileMore\":\"ValueFacePile_facePileMore__2cTYa\",\"wrapper\":\"ValueFacePile_wrapper__2tjDO\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"group\":\"UserGroup_group__qwvmB\",\"icon\":\"UserGroup_icon__25Yuf\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"header\":\"ActionCategory_header__2Hh_h\",\"icon\":\"ActionCategory_icon__WCKKA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"todayButton\":\"DayPickerInput_todayButton__3v6GJ\",\"overlay\":\"DayPickerInput_overlay__14r10\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"overlay\":\"Error_overlay__1UguQ\",\"message\":\"Error_message__fDSMI\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"avatar\":\"PrincipalEditorControl_avatar__1sUXW\",\"name\":\"PrincipalEditorControl_name__1iaFI\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"Attachments_wrapper__1Qz6t\",\"group\":\"Attachments_group__1jb8T\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"modal\":\"ShareModal_modal__OeMRv\",\"button\":\"ShareModal_button__2zvF6\",\"delete\":\"ShareModal_delete__2g9CF\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"footer\":\"MapModal_footer__EXrf1\",\"btnSet\":\"MapModal_btnSet__oNMCf\"};","export const postMessageTo = (type, data, target = window.parent) =>\n target.postMessage({ source: \"inPoint\", type, data }, \"*\");\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"noIcon\":\"ArchiveTarget_noIcon__1UlJ3\",\"image\":\"ArchiveTarget_image__2xIDS\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"outer\":\"PageStatus_outer__TYodB\",\"animatedBackground\":\"PageStatus_animatedBackground__2q7v0\",\"inner\":\"PageStatus_inner__2xhw7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"divider\":\"itemFlow_document_divider__Ubyke\",\"wrapper\":\"itemFlow_document_wrapper__3fjsn\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"title\":\"WorkflowActionPanel_title__24WjS\",\"icon\":\"WorkflowActionPanel_icon__3MfMX\"};","// @flow\nimport React, { type ComponentType } from \"react\";\nimport { getDisplayName } from \"data/constants\";\nimport { usePersistSetting } from \"hooks\";\n\ntype Config = {\n /** setting name in store */\n name: string,\n /** namespace for props */\n namespace: string,\n /** defaultValue to assign when not found in storage */\n defaultValue?: ?Object,\n};\n\nexport type SettingValueProps = {\n value: ?Object,\n setValue: (value: Object) => void,\n};\n\n/** will return the current setting's value and dispatch an action on change\n * @deprecated please use hooks/usePersistSetting\n */\nconst SettingValue =\n ({ name, namespace, defaultValue }: Config) =>\n (WrappedComponent: ComponentType) => {\n const HOC = (props) => {\n const extraProps = {\n [namespace]: usePersistSetting({\n name,\n defaultValue,\n asObject: true,\n }),\n };\n return ;\n };\n HOC.displayName = `SettingValue(${getDisplayName(WrappedComponent)})`;\n return HOC;\n };\n\nexport default SettingValue;\n","// @flow\r\nimport React, { PureComponent, type ComponentType } from \"react\";\r\nimport { connect, Dispatch } from \"react-redux\";\r\nimport Constants, { getDisplayName } from \"data/constants\";\r\nimport { type docsLayoutState } from \"data/reducers/types\";\r\nimport { requestDocsLayoutAction } from \"data/actions\";\r\nimport Status from \"components/Status\";\r\n\r\ntype Props = {\r\n dispatch: Dispatch,\r\n itemUri: string,\r\n layout: docsLayoutState,\r\n showDocs?: boolean,\r\n};\r\n\r\n// will block until docsLayout is OK and pass it on as a layout prop\r\nconst LayoutLoader = (WrappedComponent: ComponentType) => {\r\n class PP extends PureComponent {\r\n static displayName = `LayoutLoader(${getDisplayName(\r\n WrappedComponent\r\n )})`;\r\n\r\n componentDidMount() {\r\n const { dispatch, itemUri, showDocs } = this.props;\r\n dispatch(requestDocsLayoutAction(itemUri, showDocs === false));\r\n }\r\n\r\n componentDidUpdate(prevProps: Props) {\r\n const { dispatch, itemUri, showDocs } = this.props;\r\n if (itemUri !== prevProps.itemUri) {\r\n dispatch(requestDocsLayoutAction(itemUri, showDocs === false));\r\n }\r\n }\r\n\r\n render() {\r\n const { layout, ...rest } = this.props;\r\n if (layout.status === Constants.OK)\r\n return ;\r\n if (layout.status === Constants.ERROR)\r\n return ;\r\n return ;\r\n }\r\n }\r\n\r\n const mapStateToProps = (state, ownProps) => ({\r\n layout: state.docsLayout,\r\n ...ownProps,\r\n });\r\n\r\n return connect(mapStateToProps)(PP);\r\n};\r\n\r\nexport default LayoutLoader;\r\n","// @flow\nimport React from \"react\";\nimport { connect, Dispatch } from \"react-redux\";\n// import LayoutLoader from \"containers/LayoutLoader\";\nimport FilterBarContainer from \"containers/FilterBar\";\nimport {\n DocListFilterOperators,\n type DocListLayout,\n type SearchBucketDTO,\n type SearchFilterDTO,\n type SearchValueTypeEnum,\n type DocColumnResultDTO,\n DocListColumnType,\n LocalDateStringOption,\n ListViewMode,\n type ListViewModeEnum,\n SearchValueType,\n type DocListFilterRequestDTO,\n SORT_BUCKET_NAME,\n} from \"data/types\";\nimport { type docsResultState } from \"data/reducers/types\";\nimport {\n resetDocFilters,\n setDocListViewModeAction,\n setDocFilterByName,\n setDocFilterTextAction,\n} from \"data/actions\";\nimport Constants, { type ConstantsEnum } from \"data/constants\";\nimport * as s from \"data/reducers/selectors\";\nimport { GetDefaults } from \"components/DocListFilterModal/Utils\";\nimport { getDefaultsConfig, get } from \"data/constants\";\nimport { userLanguage } from \"data/storeHelper\";\nimport loc from \"i18next\";\n\ntype Props = {\n /** Redux dispatch */\n dispatch: Dispatch,\n /** doclist fetch status */\n status: ConstantsEnum,\n /** doclist fetch result */\n result: docsResultState,\n /** current docListViewMode */\n docListViewMode: ListViewModeEnum,\n /** docList layout settings */\n layout: DocListLayout,\n /** callback to set filtering on a specific column\n * @param {string} colName name of column to filter\n */\n requestShowFilter: (colName: string) => void,\n /** callback to set sorting on a specific column\n * @param {string} colName name of column to sort\n */\n setSorting: (colName: string) => void,\n /** redux: current itemUri */\n itemUri: string,\n /** redux: current formatId */\n formatId: number,\n /** whether doclist filter should be rendered */\n renderFilter: ?boolean,\n /** whether doclist filter should be disabled */\n disableFilter: ?boolen,\n};\n\ntype QuickFilterConfig = {\n name: string,\n caption?: string,\n visible: boolean,\n operator: DocListFilterOperatorsEnum,\n valueType: SearchValueTypeEnum,\n};\n\ntype State = {\n aggregations: Array,\n selected: Array,\n quickFilter: ?QuickFilterConfig,\n};\n\nexport class DocListFilterBar extends React.PureComponent {\n state = {\n aggregations: [],\n selected: [],\n quickFilter: null,\n };\n\n componentDidMount() {\n this.setState({\n ...this.prepFilters(),\n });\n }\n\n componentDidUpdate(prevProps: Props) {\n if (\n this.props.status !== prevProps.status &&\n this.props.result != null\n ) {\n this.setState({\n ...this.prepFilters(),\n });\n }\n }\n\n prepFilters = () => {\n // prep available sorting/filters\n const { status, layout, result, formatId } = this.props;\n if (status !== Constants.OK || result == null || result.cols == null)\n return null;\n\n // filterBar buckets\n let selected = [];\n let filterBuckets: Array = [];\n const sortBucket = {\n visible: true,\n icon: \"fa-regular fa-sort\",\n name: SORT_BUCKET_NAME,\n caption: loc.t(\"common:filter.SortCaption\"),\n valueType: SearchValueType.NotSet,\n selected: [\"\"],\n buckets: [],\n };\n\n // add sorting\n result.cols.forEach((col) => {\n if (col.canSort) {\n // add sorting\n sortBucket.buckets.push({\n value: col.name,\n caption: col.caption,\n });\n }\n });\n // custom sorting set?\n sortBucket.selected =\n layout && layout.sorts && layout.sorts.length > 0\n ? [layout.sorts[0].name]\n : [\"\"];\n selected.push({\n name: SORT_BUCKET_NAME,\n value: sortBucket.selected[0],\n valueType: SearchValueType.NotSet,\n });\n\n // find current quickFilter defaults settings\n const quickFilter = this._getQuickFilterConfig();\n const quickFilterCol = this._findCol(quickFilter.name);\n if (quickFilterCol) quickFilter.caption = quickFilterCol.caption;\n else quickFilter.visible = false;\n\n // add filters\n const defaultFilters = GetDefaults(\n result.itemUri,\n formatId,\n result.cols\n ).filters;\n const filters =\n layout.filters != null && layout.filters.length > 0\n ? layout.filters\n : defaultFilters;\n\n filters.forEach((filter) => {\n const col = this._findCol(filter.name);\n if (col == null || col.canSort === false) return;\n // add filter\n const dupIdx = filterBuckets.findIndex((b) => b.name === col.name);\n // avoid duplicates\n /* istanbul ignore else */\n if (dupIdx === -1) {\n const hasFilter =\n filter != null &&\n filter.values.filter((f) => f != null && String(f).length)\n .length > 0;\n const filterCaption = hasFilter\n ? this._getFilterDisplay(filter, col)\n : null;\n if (hasFilter) {\n selected.push({\n name: col.name,\n value: this._getValueOrValues(filter.values),\n valueType: SearchValueType.NotSet,\n });\n }\n // add to filterBar\n filterBuckets.push({\n name: col.name,\n caption: col.caption,\n valueType: SearchValueType.NotSet,\n selected: hasFilter ? filter.values : [],\n buckets: hasFilter\n ? [\n {\n value: this._getValueOrValues(filter.values),\n caption: filterCaption,\n },\n ]\n : [],\n hideMenu: true,\n hideName: false,\n visible: true,\n });\n // is it also our quickFilter?\n if (\n quickFilter &&\n quickFilter.visible &&\n // this.props.result.filterText == null &&\n quickFilter.name.toUpperCase() === col.name.toUpperCase() &&\n quickFilter.operator === filter.operator\n ) {\n this._onFilterTextChange(filter.values, quickFilter);\n }\n }\n });\n\n // sort always at the end\n filterBuckets.push(sortBucket);\n\n return { aggregations: filterBuckets, selected, quickFilter };\n };\n\n _getValueOrValues = (values: Array): Array | any =>\n values.length > 1 ? values : values[0];\n\n _getFilterDisplay = (\n filter: DocListFilterRequestDTO,\n col?: DocColumnResultDTO\n ): string => {\n let values = [...filter.values];\n // Convert JSON UTC Date value to localized Date\n /* istanbul ignore else */\n if (\n col &&\n col.type === DocListColumnType.DateTimeValue &&\n filter.operator !== DocListFilterOperators.DateRelative\n ) {\n values = values.map((value) =>\n value == null\n ? \"\"\n : new Date(\n String(value).replace(\"Z\", \"\")\n ).toLocaleDateString(\n userLanguage(),\n LocalDateStringOption.Date\n )\n );\n }\n switch (filter.operator) {\n case DocListFilterOperators.DateRelative:\n return loc.t(\"common:filter.RelativeDate.\" + values[0]);\n case DocListFilterOperators.Equals:\n return `${values[0]}`;\n case DocListFilterOperators.Between:\n return `${loc.t(\n \"folder:action_filter.operators.\" + filter.operator\n )} ${values[0]}-${values[1]}`;\n default:\n return `${loc.t(\n \"folder:action_filter.operators.\" + filter.operator\n )} ${values[0]}`;\n }\n };\n\n _findCol = (\n name: string,\n identifier: string = \"name\"\n ): DocColumnResultDTO | null =>\n this.props.result &&\n this.props.result.cols &&\n this.props.result.cols.find(\n (c) => c[identifier].toUpperCase() === name.toUpperCase()\n );\n\n _onFilterBarSelect = (\n name: string,\n valueType: SearchValueTypeEnum,\n value: any\n ) => {\n if (value === null) {\n // button item\n this.props.requestShowFilter(name);\n } else if (name === SORT_BUCKET_NAME) {\n // sort\n this.props.setSorting(value);\n } else {\n this.props.dispatch(setDocFilterByName({ name, valueType, value }));\n }\n };\n\n _onFilterBarClear = () => this.props.dispatch(resetDocFilters());\n\n _onViewModeChange = (viewMode: ListViewModeEnum) =>\n this.props.dispatch(setDocListViewModeAction(viewMode));\n\n _getQuickFilterConfig = () => {\n // merge default with appsettings defaults\n const quickFilter = Object.assign(\n {},\n {\n visible: true,\n name: null, //will then search for Name or Dateiname\n operator: DocListFilterOperators.Contains,\n valueType: SearchValueType.String, // we only really support strings anyways\n },\n get(\n getDefaultsConfig(this.props.itemUri, this.props.formatId),\n [\"docList\", \"quickFilter\"],\n {}\n )\n );\n // find real name column (unless provided)\n const nameCol = quickFilter.name\n ? this._findCol(quickFilter.name)\n : this._findCol(DocListColumnType.WebDavName, \"type\");\n quickFilter.name = (nameCol && nameCol.name) || \"Name\"; // nothing found, fallback to Name\n return quickFilter;\n };\n\n _onFilterTextChange = (\n filterText?: string,\n quickFilter?: QuickFilterConfig\n ) =>\n this.props.dispatch(\n setDocFilterTextAction({\n ...(quickFilter || this.state.quickFilter),\n value: filterText,\n })\n );\n\n render = () => (\n \n );\n}\n\nconst mapStateToProps = /* istanbul ignore next */ (state, ownProps) => ({\n docListViewMode: s.docListViewModeSelector(state),\n status: s.docsStatusSelector(state),\n result: state.docs,\n itemUri: s.breadcrumbItemUriSelector(state, s.currentNameSelector(state)),\n formatId: s.breadcrumbFormatIdSelector(state, s.currentNameSelector(state)),\n ...ownProps,\n});\n\nexport default connect(mapStateToProps)(DocListFilterBar);\n","import React, { useContext } from \"react\";\nimport { MultiSelectionContext } from \"data/context\";\nimport Mark from \"@hs/mark\";\nimport Icons from \"@hs/icons\";\nimport ItemStatusIcons from \"components/ItemStatusIcons\";\nimport { BrowserDragLink } from \"components/ItemUriLink\";\nimport ValueFactory from \"components/Attributes/SummaryAttribute/ValueFactory\";\nimport { DocListColumnType, GridListConstant } from \"data/types\";\nimport withStickyToggle from \"containers/StickyToggle\";\nimport StickyToggleStyle from \"containers/StickyToggle/style\";\nimport { isHandheld } from \"data/bowser\";\nimport { getClassNames } from \"data/utils\";\nimport styles from \"./CellContent.module.css\";\n\ntype Props = {\n index: number,\n col: DocColumnResultDTO,\n cell: any,\n filterText: any,\n onMoreClick: (\n e: SyntheticMouseEvent,\n itemUri: string,\n index: number\n ) => void,\n actionsDisabled: boolean,\n itemUri: string,\n};\n\nexport const CellContent = ({\n index,\n col,\n cell,\n filterText,\n onMoreClick,\n itemUri,\n ext,\n isHovered,\n}: Props): any => {\n /* istanbul ignore next */\n const { multiple, renderCheckbox } = useContext(MultiSelectionContext) || {\n multiple: false,\n renderCheckbox: () => null,\n };\n\n const { caption: header } = col;\n let content = cell;\n if (content == null) return null;\n if (header === GridListConstant.ExtensionIcon) {\n if (multiple && isHandheld()) {\n content = renderCheckbox(index, styles.checkbox);\n } else {\n content = (\n <>\n {(isHovered || multiple) &&\n !isHandheld() &&\n renderCheckbox(\n index,\n getClassNames(styles.checkbox, styles.desktop)\n )}\n \n \n \n \n );\n }\n } else if (header === GridListConstant.IconItemStatus) {\n content = (\n \n );\n } else if (Object.prototype.hasOwnProperty.call(content, \"$type\")) {\n content = (\n \n );\n }\n\n if (col.type === DocListColumnType.BooleanValue) {\n return (\n \n );\n }\n if (header === GridListConstant.IconItemStatus) {\n return <>{content};\n }\n if (\n [\n DocListColumnType.IntValue,\n DocListColumnType.LongValue,\n DocListColumnType.FileSize,\n DocListColumnType.ShortValue,\n DocListColumnType.DoubleValue,\n DocListColumnType.DecimalValue,\n DocListColumnType.SingleValue,\n ].includes(col.type)\n ) {\n return {content};\n }\n // #51803 filterText highlighting\n if (\n filterText &&\n filterText.name &&\n filterText.name.toUpperCase() === col.name.toUpperCase() &&\n filterText.value\n ) {\n return {content};\n }\n return <>{content};\n};\n\nconst CellContentWithStickyToggle = withStickyToggle({\n getStyle: StickyToggleStyle.GridList,\n renderDiv: true,\n portalTargetSelector:\n \"#docListPanel .ReactVirtualized__Grid__innerScrollContainer\",\n})(CellContent);\n\nexport default CellContentWithStickyToggle;\n","// @flow\r\nimport React, { PureComponent, type Node } from \"react\";\r\nimport {\r\n GridListConstant,\r\n SortDirectionOptions,\r\n type DocListLayout,\r\n} from \"data/types\";\r\nimport { type docsResultState } from \"data/reducers/types\";\r\nimport Constants, { type ConstantsEnum } from \"data/constants\";\r\nimport GridList from \"@hs/grid-list\";\r\nimport ContextMenuHandler from \"components/ContextMenu/Handler\";\r\nimport CellContent from \"./CellContent\";\r\nimport { isHandheld } from \"data/bowser\";\r\nimport isEqual from \"lodash/isEqual\";\r\nimport localForage from \"localforage\";\r\n\r\ntype Props = {\r\n /** doclist fetch result */\r\n result: docsResultState,\r\n /** current page number */\r\n pageNum: number,\r\n /** total number of documents */\r\n totalCount: number,\r\n /** callback to request loading next page */\r\n loadMoreRows: ({ rowIndex: number }) => Promise,\r\n /** callback to set sorting on a specific column\r\n * @param {string} colName name of column to sort\r\n */\r\n setSorting: (colName: string) => void,\r\n /** docList layout settings */\r\n layout?: DocListLayout,\r\n /** callback to set filtering on a specific column\r\n * @param {string} colName name of column to filter\r\n */\r\n requestShowFilter: (colName: string) => void,\r\n /** which row index is currently selected */\r\n activeRowIndex?: ?number,\r\n /** which row index to bring into view */\r\n scrollToRow?: ?number,\r\n /** which row is the UI currently updating\r\n * @param {number} rowStartIndex row index in result.rows\r\n */\r\n rowStartIndexUpdated: (rowStartIndex: number) => void,\r\n /** callback when user clicks document icon\r\n * @param {SyntheticMouseEvent} e HTML click event\r\n */\r\n onIconClick?: (e: SyntheticMouseEvent<*>) => void,\r\n /** callback when user single clicks the whole row\r\n * @param {SyntheticMouseEvent} e HTML click event\r\n * @param {string} itemUri the row's itemUri\r\n * @param {number} index the row's index\r\n */\r\n onSingleClick?: (\r\n e: SyntheticMouseEvent,\r\n itemUri: string,\r\n index: number\r\n ) => void,\r\n /** callback when user double clicks the whole row\r\n * @param {SyntheticMouseEvent} e HTML click event\r\n * @param {string} itemUri the row's itemUri\r\n * @param {number} index the row's index\r\n */\r\n onDoubleClick?: (\r\n e: SyntheticMouseEvent,\r\n itemUri: string,\r\n index: number\r\n ) => void,\r\n /** callback when user clicks on More... button\r\n * @param {SyntheticMouseEvent} e HTML click event\r\n * @param {string} itemUri the row's itemUri\r\n * @param {number} index the row's index\r\n */\r\n onMoreClick?: (\r\n e: SyntheticMouseEvent,\r\n itemUri: string,\r\n index: number\r\n ) => void,\r\n /** whether to disable the More... button */\r\n actionsDisabled?: boolean,\r\n /** callback when user right clicks the whole row\r\n * @param {SyntheticMouseEvent} e HTML click event\r\n * @param {number} rowIndex the row's index\r\n * @param {number} columnsIndex the column's index\r\n * @param {string} itemUri the row's itemUri\r\n */\r\n onContextClick?: (\r\n e: SyntheticMouseEvent,\r\n rowIndex: number,\r\n columnIndex: number,\r\n itemUri: string\r\n ) => void,\r\n /** React.Node children */\r\n children?: Node,\r\n cols: Array,\r\n formatId: number,\r\n};\r\n\r\ntype State = {\r\n rows: Object,\r\n pageSize: number,\r\n pagesStatus: Array,\r\n};\r\n\r\n/**\r\n * Renders the Grid documents list\r\n */\r\nexport default class DocList extends PureComponent {\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n //first page results loaded by DocListContainer\r\n rows: props.result.rows,\r\n pageSize: props.result.pageSize,\r\n //first page already pre-loaded otherwise we wouldn't be here\r\n pagesStatus: [Constants.OK],\r\n colWidths: props.colWidths /* istanbul ignore next */ || {},\r\n };\r\n }\r\n\r\n componentDidUpdate(prevProps: Props) {\r\n if (!isEqual(this.props.result.rows, this.state.rows)) {\r\n this.setState(({ pagesStatus }) => ({\r\n rows: this.props.result.rows,\r\n pagesStatus: pagesStatus.map((p, i) =>\r\n p === Constants.LOADING\r\n ? i === this.props.pageNum\r\n ? Constants.OK\r\n : null\r\n : p\r\n ),\r\n }));\r\n }\r\n\r\n // only update colWidths if the colWiths were set for the same formatId and the user hasn't manually resized the columns\r\n if (\r\n !isEqual(this.props.colWidths, this.state.colWidths) &&\r\n this.props.colWidths?.__folderFormatId === this.props.formatId &&\r\n !this.state.manualResized\r\n ) {\r\n this.setState({\r\n colWidths:\r\n this.props.colWidths /* istanbul ignore next */ || {},\r\n });\r\n }\r\n }\r\n\r\n isColumnFiltered = (name: string): boolean => {\r\n const { layout } = this.props;\r\n if (layout?.filters == null) return false;\r\n const filter = layout.filters.find((f) => f.name === name);\r\n /* istanbul ignore next */\r\n if (filter == null) return false;\r\n return (\r\n filter?.values?.length > 0 && String(filter.values[0]).length > 0\r\n );\r\n };\r\n\r\n canColumnFilter = (name: string): boolean => {\r\n const { layout } = this.props;\r\n if (!layout?.filters?.length) return true;\r\n return layout.filters.findIndex((f) => f.name === name) !== -1;\r\n };\r\n\r\n isColumnSorted = (name: string): boolean => {\r\n if (this.props.layout == null) {\r\n return false;\r\n }\r\n const { sorts } = this.props.layout;\r\n return sorts?.some((s) => s.name === name);\r\n };\r\n\r\n getColumnSortDirection = (name: string): SortDirectionEnum => {\r\n if (this.props.layout == null) {\r\n return SortDirectionOptions.Ascending;\r\n }\r\n const { sorts } = this.props.layout;\r\n const sort = sorts?.find((s) => s.name === name);\r\n return sort ? sort.direction : SortDirectionOptions.Ascending;\r\n };\r\n\r\n // #36000 single-click behavior\r\n handleCellClick = (\r\n e: SyntheticMouseEvent<*>,\r\n rowIndex: number,\r\n columnIndex: number,\r\n itemUri: string\r\n ): void => {\r\n if (columnIndex === 0) {\r\n /* istanbul ignore else */\r\n if (typeof this.props.onIconClick === \"function\")\r\n this.props.onIconClick(e, itemUri, rowIndex);\r\n } else {\r\n /* istanbul ignore else */\r\n if (typeof this.props.onSingleClick === \"function\")\r\n this.props.onSingleClick(e, itemUri, rowIndex);\r\n }\r\n };\r\n\r\n parseCellColumnTitle = (caption: string, content: any): string => {\r\n if (caption === GridListConstant.ItemUri) {\r\n return undefined;\r\n } else if (content != null && typeof content !== \"string\") {\r\n return content.value;\r\n }\r\n return content;\r\n };\r\n\r\n handleHeaderFilterClick = (\r\n e: SyntheticMouseEvent<*>,\r\n name: string\r\n ): void => {\r\n e.stopPropagation();\r\n this.props.requestShowFilter(name);\r\n };\r\n\r\n handleHeaderClick = (columnIndex: number, header: string): void => {\r\n const col = this.props.result.cols[columnIndex];\r\n if (col.canSort) this.props.setSorting(col.name);\r\n };\r\n\r\n parseCellHeaderCaption = (rawData: string): string => {\r\n if (\r\n rawData === GridListConstant.ExtensionIcon ||\r\n rawData === GridListConstant.IconItemStatus ||\r\n rawData === GridListConstant.ItemUri\r\n ) {\r\n return \"\";\r\n }\r\n return rawData;\r\n };\r\n\r\n getColumnWidth = ({\r\n index,\r\n col,\r\n }: {\r\n index: number,\r\n col: DocColumnResultDTO,\r\n }): number => {\r\n const header = col.caption;\r\n\r\n if (this.state.colWidths?.[col.name]) {\r\n return this.state.colWidths[col.name];\r\n }\r\n\r\n let width = 0;\r\n if (header === GridListConstant.ExtensionIcon) {\r\n width += isHandheld() ? 35 : 42;\r\n } else if (header === GridListConstant.IconItemStatus) {\r\n /* istanbul ignore next */\r\n width += col.width > 0 ? col.width : 20;\r\n } else {\r\n width += col.width * 1.2 + 15;\r\n }\r\n if (index === this.props.result.cols.length - 1) {\r\n width += 20;\r\n }\r\n return width;\r\n };\r\n\r\n onResize = (index: number, widthChange: number) => {\r\n const newColumnWidth = Math.max(\r\n this.getColumnWidth({ index, col: this.props.cols[index] }) +\r\n widthChange,\r\n 30\r\n );\r\n\r\n this.setState(({ colWidths }) => ({\r\n colWidths: {\r\n ...colWidths,\r\n [this.props.cols[index].name]: newColumnWidth,\r\n },\r\n manualResized: true,\r\n }));\r\n\r\n localForage\r\n .getItem(`docListLayout_${btoa(this.props.formatId)}`)\r\n .then((item) => {\r\n if (item == null) {\r\n item = {};\r\n }\r\n item[this.props.cols[index].name] = newColumnWidth;\r\n localForage.setItem(\r\n `docListLayout_${btoa(this.props.formatId)}`,\r\n item\r\n );\r\n });\r\n };\r\n\r\n isRowLoaded = ({ rowIndex }: { rowIndex: number }): boolean =>\r\n Object.prototype.hasOwnProperty.call(this.state.rows, rowIndex);\r\n\r\n loadMoreRows = ({ rowIndex }: { rowIndex: number }) => {\r\n const { pageSize, pagesStatus } = this.state;\r\n\r\n // calc page number\r\n let pageNum = 0;\r\n /* istanbul ignore else */\r\n if (rowIndex > 0) {\r\n // specific row index requested? calc page number\r\n // To avoid pageNum is Infinity, we default pageSize to Infinity\r\n pageNum = Math.floor(rowIndex / (pageSize || Infinity));\r\n }\r\n\r\n // page already loaded/requested?\r\n /* istanbul ignore else */\r\n if (pagesStatus[pageNum] != null) return null;\r\n\r\n // fetch\r\n pagesStatus[pageNum] = Constants.LOADING;\r\n this.props.loadMoreRows(pageNum);\r\n };\r\n\r\n sectionRendered = (rowStartIndex: number) =>\r\n this.props.rowStartIndexUpdated(rowStartIndex);\r\n\r\n render() {\r\n const count =\r\n this.props.totalCount === 0\r\n ? this.props.result.rowCount\r\n : this.props.totalCount;\r\n if (this.props.result.cols.length === 0) {\r\n return null;\r\n }\r\n return (\r\n \r\n );\r\n }\r\n}\r\n","// @flow\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport FormControl from \"react-bootstrap/lib/FormControl\";\nimport { DocListFilterOperators, type DocListColumnTypeEnum } from \"data/types\";\nimport loc from \"i18next\";\n\nconst operatorsPerType = {\n StringValue: [\n DocListFilterOperators.Equals,\n DocListFilterOperators.NotEquals,\n DocListFilterOperators.Contains,\n DocListFilterOperators.DoesNotContain,\n DocListFilterOperators.StartsWith,\n DocListFilterOperators.DoesNotStartWith,\n DocListFilterOperators.EndsWith,\n DocListFilterOperators.DoesNotEndWith,\n ],\n IntValue: [\n DocListFilterOperators.Equals,\n DocListFilterOperators.NotEquals,\n DocListFilterOperators.LessThan,\n DocListFilterOperators.LessThanOrEqualsTo,\n DocListFilterOperators.GreaterThan,\n DocListFilterOperators.GreaterThanOrEqualsTo,\n DocListFilterOperators.Between,\n ],\n BooleanValue: [DocListFilterOperators.None, DocListFilterOperators.Equals],\n LongValue: [\n DocListFilterOperators.Equals,\n DocListFilterOperators.NotEquals,\n DocListFilterOperators.LessThan,\n DocListFilterOperators.LessThanOrEqualsTo,\n DocListFilterOperators.GreaterThan,\n DocListFilterOperators.GreaterThanOrEqualsTo,\n DocListFilterOperators.Between,\n ],\n ShortValue: [\n DocListFilterOperators.Equals,\n DocListFilterOperators.NotEquals,\n DocListFilterOperators.LessThan,\n DocListFilterOperators.LessThanOrEqualsTo,\n DocListFilterOperators.GreaterThan,\n DocListFilterOperators.GreaterThanOrEqualsTo,\n DocListFilterOperators.Between,\n ],\n DoubleValue: [\n DocListFilterOperators.Equals,\n DocListFilterOperators.NotEquals,\n DocListFilterOperators.LessThan,\n DocListFilterOperators.LessThanOrEqualsTo,\n DocListFilterOperators.GreaterThan,\n DocListFilterOperators.GreaterThanOrEqualsTo,\n DocListFilterOperators.Between,\n ],\n DecimalValue: [\n DocListFilterOperators.Equals,\n DocListFilterOperators.NotEquals,\n DocListFilterOperators.LessThan,\n DocListFilterOperators.LessThanOrEqualsTo,\n DocListFilterOperators.GreaterThan,\n DocListFilterOperators.GreaterThanOrEqualsTo,\n DocListFilterOperators.Between,\n ],\n SingleValue: [\n DocListFilterOperators.Equals,\n DocListFilterOperators.NotEquals,\n DocListFilterOperators.LessThan,\n DocListFilterOperators.LessThanOrEqualsTo,\n DocListFilterOperators.GreaterThan,\n DocListFilterOperators.GreaterThanOrEqualsTo,\n ],\n DateTimeValue: [\n DocListFilterOperators.DateRelative,\n DocListFilterOperators.Equals,\n DocListFilterOperators.LessThan,\n DocListFilterOperators.LessThanOrEqualsTo,\n DocListFilterOperators.GreaterThan,\n DocListFilterOperators.GreaterThanOrEqualsTo,\n DocListFilterOperators.Between,\n ],\n DateTimeOffsetValue: [DocListFilterOperators.None],\n ByteValue: [\n DocListFilterOperators.Equals,\n DocListFilterOperators.NotEquals,\n DocListFilterOperators.LessThan,\n DocListFilterOperators.LessThanOrEqualsTo,\n DocListFilterOperators.GreaterThan,\n DocListFilterOperators.GreaterThanOrEqualsTo,\n DocListFilterOperators.Between,\n ],\n ObjectValue: [DocListFilterOperators.None],\n};\n\noperatorsPerType.WebDavName = operatorsPerType.StringValue;\noperatorsPerType.FileSize = operatorsPerType.LongValue;\n\nconst Operators = ({\n index,\n type,\n value,\n onChange,\n id,\n}: {\n index: number,\n type: DocListColumnTypeEnum,\n value: string,\n onChange: Function,\n}) => (\n \n {Array.isArray(operatorsPerType[type]) ? (\n operatorsPerType[type].map((opType, index) => (\n \n ))\n ) : (\n \n )}\n \n);\n\nOperators.propTypes = {\n index: PropTypes.number.isRequired,\n type: PropTypes.string.isRequired,\n value: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n};\n\nexport default Operators;\n","// @ts-check\nimport React, { PureComponent, useRef, useCallback } from \"react\";\nimport {\n DocListFilterOperators,\n type DocListFilterOperatorsEnum,\n} from \"data/types\";\nimport moment from \"moment\";\nimport Moment from \"containers/Moment\";\nimport DayPickerInput from \"components/DayPickerInput\";\nimport { Manager } from \"react-popper\";\nimport { userLanguage } from \"data/storeHelper\";\n\n// range of dates to show in the picker\nconst currentYear = () => new Date().getFullYear();\nconst fromMonth = () => new Date(currentYear() - 10, 0);\nconst toMonth = () => new Date(currentYear() + 10, 11);\n\nexport function YearMonthForm({\n date,\n localeUtils,\n onChange,\n}: {\n date?: Date,\n localeUtils?: Object,\n onChange: Function,\n}) {\n const month = useRef(null);\n const year = useRef(null);\n\n const handleChange = useCallback(\n (e) => {\n onChange(new Date(year.current.value, month.current.value));\n },\n [month, year, onChange]\n );\n\n if (localeUtils === undefined || localeUtils === null) return null;\n if (date === undefined || date === null) date = new Date();\n const months = localeUtils.getMonths(userLanguage());\n\n const years = [];\n for (\n let i = fromMonth().getFullYear();\n i <= toMonth().getFullYear();\n i += 1\n ) {\n years.push(i);\n }\n\n return (\n
\n \n {months.map((month, i) => (\n \n ))}\n \n \n {years.map((year, i) => (\n \n ))}\n \n
\n );\n}\n\ntype Props = {\n autoFocus?: boolean,\n index: number,\n operator: DocListFilterOperatorsEnum,\n values: Array,\n valueIndex: number,\n onChange: Function,\n id?: string,\n};\n\ntype State = {\n month: Date,\n values: Array,\n};\n\nexport class DatePicker extends PureComponent {\n state = {\n month: fromMonth(),\n values: [],\n };\n\n constructor(props: Props) {\n super(props);\n this.state = {\n month: new Date(),\n values:\n (Array.isArray(props.values) &&\n props.values.map((value) => this.getValueAsDate(value))) ||\n [],\n };\n moment.locale(userLanguage());\n }\n\n handleYearMonthChange = (month: Date) => {\n this.setState({ month });\n };\n\n areValuesEqual = (\n prevValues: Array,\n currentValues: Array\n ) => {\n return (\n prevValues[0] === currentValues[0] &&\n prevValues[1] === currentValues[1]\n );\n };\n\n componentDidUpdate(prevProps: Props) {\n /* istanbul ignore else */\n if (!this.areValuesEqual(prevProps.values, this.props.values)) {\n this.setState({\n month: new Date(),\n values:\n (Array.isArray(this.state.values) &&\n this.props.values.map((value) =>\n this.getValueAsDate(value)\n )) ||\n /* istanbul ignore next */\n [],\n });\n }\n }\n\n getValueAsDate = (value: ?string) => {\n return value && String(value).length > 0\n ? moment(value).format(\"L\")\n : null;\n };\n\n handleDayChange = (\n day: ?Date,\n dayPickerInput: DayPickerInput,\n inputValue: ?Date\n ) => {\n // hours set to prevent date inconsistencies, when giving manual input\n day?.setHours(12);\n\n let value =\n inputValue &&\n /* istanbul ignore next */\n (dayPickerInput._ref.value || dayPickerInput.state.value);\n\n const { index, valueIndex, onChange } = this.props;\n if (day != null) {\n value = this.getValueAsDate(day);\n onChange(\n moment(day).utc().startOf(\"day\").toJSON(),\n index,\n valueIndex\n );\n } else {\n /* istanbul ignore else */\n if (value == null) {\n onChange(\"\", index, valueIndex);\n }\n }\n const values = [...this.state.values];\n values[valueIndex] = value;\n this.setState({ values });\n };\n\n render() {\n const { autoFocus, valueIndex, values, operator } = this.props;\n\n const from =\n [\n DocListFilterOperators.Between,\n DocListFilterOperators.NotBetween,\n ].includes(operator) &&\n values &&\n values[0] &&\n String(values[0]).length > 0\n ? moment(values[0]).toDate()\n : null;\n\n const to =\n [\n DocListFilterOperators.Between,\n DocListFilterOperators.NotBetween,\n ].includes(operator) &&\n values &&\n values[1] &&\n String(values[1]).length > 0\n ? moment(values[1]).toDate()\n : null;\n\n const getDisabled = () => {\n if (valueIndex === 1 && from) {\n return { before: from };\n }\n\n if (valueIndex === 0 && to) {\n return { after: to };\n }\n\n return null;\n };\n\n // calculate the month that should be displayed on opening the daypicker modal\n const getMonthToDisplay = () => {\n if (valueIndex === 0) {\n if (!to) {\n return from || this.state.month;\n }\n return to;\n }\n\n /* istanbul ignore else */\n if (valueIndex === 1) {\n if (!from) {\n return to || this.state.month;\n }\n return from;\n }\n };\n\n return (\n
\n \n \n \n
\n );\n }\n}\n\nexport default Moment(DatePicker);\n","// @flow\nimport React from \"react\";\nimport {\n DocListFilterOperators,\n type DocListFilterOperatorsEnum,\n} from \"data/types\";\nimport DatePicker from \"./DatePicker\";\nimport RelativeDatePicker from \"./RelativeDatePicker\";\n\nconst FilterDateValue = ({\n autoFocus,\n index,\n valueIndex,\n values,\n operator,\n onChange,\n id,\n}: {\n autoFocus: boolean,\n index: number,\n valueIndex: number,\n values?: Array,\n operator: DocListFilterOperatorsEnum,\n onChange: Function,\n id?: string,\n}) => {\n switch (operator) {\n case DocListFilterOperators.DateRelative:\n return (\n \n onChange(e, index, valueIndex)\n }\n id={id}\n />\n );\n\n case DocListFilterOperators.None:\n return null;\n\n default:\n return (\n \n );\n }\n};\n\nexport default FilterDateValue;\n","// @flow\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport ToggleButtonGroup from \"react-bootstrap/lib/ToggleButtonGroup\";\nimport ToggleButton from \"react-bootstrap/lib/ToggleButton\";\nimport loc from \"i18next\";\n\nconst BoolPicker = ({\n index,\n value,\n onChange,\n}: {\n index: number,\n value?: string,\n onChange: Function,\n}) => (\n \n \n {loc.t(\"folder:action_filter.Boolean.None\")}\n \n \n {loc.t(\"folder:action_filter.Boolean.True\")}\n \n \n {loc.t(\"folder:action_filter.Boolean.False\")}\n \n \n);\n\nBoolPicker.propTypes = {\n index: PropTypes.number.isRequired,\n value: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n};\n\nexport default BoolPicker;\n","// @flow\nimport React from \"react\";\nimport FormControl from \"react-bootstrap/lib/FormControl\";\nimport {\n type DocListColumnTypeEnum,\n DocListColumnType,\n type DocListFilterOperatorsEnum,\n DocListFilterOperators,\n} from \"data/types\";\nimport FilterDateValue from \"./FilterDateValue\";\nimport BoolPicker from \"./BoolPicker\";\nimport ClearableInput from \"@hs/clearable-input\";\n\ntype Props = {\n autoFocus?: boolean,\n index: number,\n type: DocListColumnTypeEnum,\n operator: DocListFilterOperatorsEnum,\n values: Array,\n valueIndex: number,\n onChange: Function,\n id?: string,\n};\n\nconst FilterValue = ({\n autoFocus,\n index,\n valueIndex,\n type,\n values,\n operator,\n onChange,\n id,\n}: Props) => {\n const from =\n [\n DocListFilterOperators.Between,\n DocListFilterOperators.NotBetween,\n ].includes(operator) &&\n values &&\n values[0] &&\n String(values[0]).length > 0\n ? values[0]\n : null;\n\n switch (type) {\n case DocListColumnType.BooleanValue:\n return (\n onChange(e, index)\n }\n />\n );\n\n case DocListColumnType.DateTimeValue:\n return (\n \n );\n\n case DocListColumnType.IntValue:\n case DocListColumnType.LongValue:\n case DocListColumnType.FileSize:\n case DocListColumnType.ShortValue:\n case DocListColumnType.DoubleValue:\n case DocListColumnType.DecimalValue:\n case DocListColumnType.SingleValue:\n return (\n onChange(e, index, valueIndex)\n }\n id={id}\n />\n );\n\n default:\n return (\n \n onChange(e, index, valueIndex)\n }\n className=\"form-control\"\n id={id}\n />\n );\n }\n};\nFilterValue.displayName = \"FilterValue\";\nexport default FilterValue;\n","// @flow\nimport React, { PureComponent } from \"react\";\nimport Col from \"react-bootstrap/lib/Col\";\nimport Modal from \"components/Modal\";\nimport ButtonToolbar from \"react-bootstrap/lib/ButtonToolbar\";\nimport Button from \"react-bootstrap/lib/Button\";\nimport SplitButton from \"react-bootstrap/lib/SplitButton\";\nimport MenuItem from \"react-bootstrap/lib/MenuItem\";\nimport Form from \"react-bootstrap/lib/Form\";\nimport FormGroup from \"react-bootstrap/lib/FormGroup\";\nimport ControlLabel from \"react-bootstrap/lib/ControlLabel\";\nimport Icons from \"@hs/icons\";\nimport Operators from \"./Operators\";\nimport FilterValue from \"./FilterValue\";\nimport {\n type DocListFilterRequestDTO,\n DocListFilterOperators,\n DocListColumnType,\n} from \"data/types\";\nimport { type docsResultState } from \"data/reducers/types\";\nimport loc from \"i18next\";\nimport styles from \"./DocListFilterModal.module.css\";\nimport { GetDefaults } from \"./Utils\";\nimport { produce } from \"immer\";\n\ntype Props = {\n /** whether to show modal */\n show: boolean,\n /** which filter to focus on */\n focusOnFilterName: ?string,\n /** modal dialog title */\n title: string,\n /** current result */\n result: docsResultState,\n /** callback when user closes modal */\n onClose: () => void,\n /** callback when user wants to set filters\n * @param {Array} filters all filters values\n */\n onFilter: (filters: Array) => void,\n /** current filters definitions */\n filters: ?Array,\n};\n\ntype State = {\n filters: Array,\n};\n\nexport default class DocListFilterModal extends PureComponent {\n constructor(props: Props) {\n super(props);\n if (props.filters == null || props.filters.length === 0) {\n if (props.result.itemUri != null)\n this.state = {\n filters:\n GetDefaults(\n props.result.itemUri,\n props.formatId,\n props.result.cols\n ).filters /* istanbul ignore next */ || [],\n };\n else this.state = { filters: [] };\n } else {\n this.state = {\n filters: props.filters,\n };\n }\n }\n\n _onFilter = () => {\n this.props.onFilter(this.state.filters);\n };\n\n _onSubmit = (e: SyntheticInputEvent<*>) => {\n e.preventDefault();\n this._onFilter();\n };\n\n _onOperatorChange = (e: SyntheticInputEvent<*>): void => {\n const index = parseInt(e.currentTarget.name, 10);\n const filter = this.state.filters[index];\n\n this.setState({\n filters: produce(this.state.filters, (draft) => {\n draft[index].operator = e.currentTarget.value;\n if (\n filter.operator === DocListFilterOperators.DateRelative ||\n draft[index].operator ===\n DocListFilterOperators.DateRelative\n ) {\n draft[index].values = [\"\"];\n }\n // if Between is changed to something else clear the \"to\"...\n if (\n filter.operator === DocListFilterOperators.Between &&\n draft[index].operator !== DocListFilterOperators.Between\n ) {\n draft[index].values.splice(1, 1);\n }\n }),\n });\n };\n\n _onValueChange = (\n e: SyntheticInputEvent<*> | string,\n index: number,\n valueIndex: ?number\n ) => {\n let value;\n /* istanbul ignore if */\n if (typeof e === \"string\") {\n value = e;\n } else {\n value = e.currentTarget.value;\n }\n this.setState({\n filters: produce(this.state.filters, (draft) => {\n draft[index].values[valueIndex || 0] = value;\n\n // if Between \"from\" is changed clear the \"to\"...\n if (\n valueIndex === 0 &&\n draft[index].operator === DocListFilterOperators.Between &&\n // ... unless it's a date (dates are passed as strings instead of event objects)\n typeof e !== \"string\"\n ) {\n draft[index].values[1] = \"\";\n }\n }),\n });\n };\n\n _resetValues = () => {\n this._resetSelect(\"values\");\n };\n\n _resetSelect = (eventKey: \"all\" | \"values\") => {\n if (eventKey === \"all\") {\n const { result, formatId } = this.props;\n // clear the WHOLE form (operators & values)\n /* istanbul ignore else */\n if (result.itemUri != null)\n this.setState({\n filters: GetDefaults(result.itemUri, formatId, result.cols)\n .filters,\n });\n else this.setState({ filters: [] });\n } else {\n /* istanbul ignore else */\n if (eventKey === \"values\") {\n this.setState({\n filters: this.state.filters.map((filter) =>\n produce(filter, (draft) => {\n draft.values = [\"\"];\n })\n ),\n });\n }\n }\n };\n\n // submit form on keyboard Enter\n _onKeyPress = (e: SyntheticKeyboardEvent<*>) => {\n /* istanbul ignore else */\n if (e.which === 13) {\n e.preventDefault();\n this._onFilter();\n }\n };\n\n // will return column index to focus on\n // if passed in props then return that\n // otherwise find first visible field\n _getFocusColumnIndex = () => {\n const { filters } = this.state;\n const { focusOnFilterName, result } = this.props;\n if (focusOnFilterName == null) {\n const cols = result.cols || [];\n // find first field available\n const i = filters.findIndex((filter) => {\n const col = cols.find((c) => c.name === filter.name);\n if (col != null && col.canSort) return true;\n return false;\n });\n return i;\n }\n\n const i = filters.findIndex(\n (filter) => filter.name === focusOnFilterName\n );\n /* istanbul ignore next */\n if (i == null) return -1;\n return i;\n };\n\n render() {\n const { show, onClose, result, title } = this.props;\n const { filters } = this.state;\n const cols = result.cols || [];\n const focusColumnIndex = this._getFocusColumnIndex();\n\n return (\n \n
\n \n \n \n {\" \" +\n loc.t(\"folder:action_filter.title\") +\n \" \" +\n title}\n \n \n \n {filters.map((filter, index) => {\n const col = cols.find(\n (c) => c.name === filter.name\n );\n if (col == null) {\n return null;\n }\n if (!col.canSort) return null;\n return (\n \n \n {col.caption}\n \n {col.type !==\n DocListColumnType.BooleanValue && (\n \n \n \n )}\n {[\n DocListFilterOperators.Between,\n DocListFilterOperators.NotBetween,\n ].includes(filter.operator) ? (\n <>\n \n \n \n \n \n \n \n ) : (\n \n \n \n )}\n \n );\n })}\n \n \n \n e.stopPropagation()\n }\n >\n \n \n {loc.t(\"folder:action_filter.reset_all\")}\n \n \n \n \n \n {loc.t(\"folder:action_filter.filter\")}\n \n \n \n
\n \n );\n }\n}\n","//@flow\nimport React, { PureComponent, type ComponentType } from \"react\";\nimport { connect } from \"react-redux\";\nimport findIndex from \"lodash/findIndex\";\nimport { getDisplayName } from \"data/constants\";\nimport * as s from \"data/reducers/selectors\";\nimport { type TrackCurrentRowProps } from \"containers/TrackCurrentRow\";\nimport {\n type ServerEventMessage,\n ServerEventItemType,\n ServerEventActionType,\n} from \"data/types\";\nimport { type docsResultState } from \"data/reducers/types\";\n\ntype Props = {\n /** Current User ID */\n userId: number,\n /** DocList Container: Result (from API) */\n result: docsResultState,\n /** DocList Container: Tracker Object */\n docTracker: TrackCurrentRowProps,\n /** GlobalEventsHandler: Id */\n refreshId: number,\n /** GlobalEventsHandler: Event */\n refreshEvent: ?ServerEventMessage,\n};\n\ntype State = {\n refreshId: number,\n userId: number,\n itemUri: string,\n};\n\nconst UploadHandler = () => (WrappedComponent: ComponentType) => {\n class PP extends PureComponent {\n static displayName = `UploadHandler(${getDisplayName(\n WrappedComponent\n )})`;\n\n state = {\n refreshId: -1,\n userId: -1,\n itemUri: \"\",\n };\n\n static _maybeSetActiveRow(props, state) {\n /* istanbul ignore else */\n if (!props.result) {\n return null;\n }\n\n const rows = props.result.rows;\n /* istanbul ignore else */\n if (!rows || props.result.rowCount === 0) {\n return null;\n }\n\n const itemUriIndex = findIndex(props.result.cols, [\n \"name\",\n \"ITEMURI\",\n ]);\n /* istanbul ignore else */\n if (itemUriIndex === -1) {\n return null;\n }\n\n const activeRowIndex = Object.keys(rows).reduce(\n (indexOrUndefined, index) =>\n typeof indexOrUndefined === \"undefined\" &&\n rows[index][itemUriIndex] === state.itemUri\n ? index\n : indexOrUndefined,\n undefined\n );\n /* istanbul ignore else */\n if (\n typeof activeRowIndex !== \"undefined\" &&\n props.docTracker &&\n props.docTracker.currentRow !== activeRowIndex\n ) {\n props.docTracker.setCurrentRow(activeRowIndex);\n // Reset itemUri and User ID\n return {\n userId: -1,\n itemUri: \"\",\n };\n }\n return null;\n }\n\n static getDerivedStateFromProps(props, state) {\n /* istanbul ignore else */\n if (!props.refreshEvent) {\n return null;\n }\n\n // Did my upload finish? Maybe need to set new active row\n /* istanbul ignore else */\n if (state.itemUri && state.userId === props.userId) {\n const newState = PP._maybeSetActiveRow(props, state);\n /* istanbul ignore else */\n if (newState) {\n return newState;\n }\n }\n\n const { item, action, data } = props.refreshEvent;\n // Is the refresh event a file upload\n /* istanbul ignore else */\n if (\n item !== ServerEventItemType.document ||\n action !== ServerEventActionType.add\n ) {\n return null;\n }\n\n // Is the upload event mine and new?\n /* istanbul ignore else */\n if (\n props.refreshId !== state.refreshId &&\n data.userId === props.userId\n ) {\n return {\n refreshId: props.refreshId,\n userId: data.userId,\n itemUri: data.itemUri,\n };\n }\n return null;\n }\n\n render() {\n // Remove userID property\n const { userId, ...props } = this.props;\n\n return ;\n }\n }\n\n const mapStateToProps = (state, ownProps) => ({\n userId: s.userIdSelector(state),\n ...ownProps,\n });\n\n return connect(mapStateToProps)(PP);\n};\n\nexport default UploadHandler;\n","// @flow\r\nimport React, { PureComponent, type Node } from \"react\";\r\nimport { compose } from \"redux\";\r\nimport { connect, Dispatch } from \"react-redux\";\r\nimport loc from \"i18next\";\r\nimport noop from \"lodash/noop\";\r\nimport isEqual from \"lodash/isEqual\";\r\nimport LayoutLoader from \"containers/LayoutLoader\";\r\nimport {\r\n RefreshMode,\r\n type DocListFilterRequestDTO,\r\n type DocListSortRequestDTO,\r\n SortDirectionOptions,\r\n type DocListLayout,\r\n type ListViewModeEnum,\r\n ListViewMode,\r\n ServerEventItemType,\r\n type TrackCurrentRowProps,\r\n} from \"data/types\";\r\nimport { type docsResultState } from \"data/reducers/types\";\r\nimport {\r\n getDocsAction,\r\n togglesUpdateCounterAction,\r\n setDocsLayoutAction,\r\n} from \"data/actions\";\r\nimport DocListFilterBar from \"components/DocListFilterBar\";\r\nimport DocList from \"components/DocList\";\r\nimport DocListSimple from \"components/DocListSimple\";\r\nimport DocListFilterModal from \"components/DocListFilterModal\";\r\nimport {\r\n IsFiltered,\r\n GetDefaultFilters,\r\n} from \"components/DocListFilterModal/Utils\";\r\nimport Constants, { type ConstantsEnum } from \"data/constants\";\r\nimport * as s from \"data/reducers/selectors\";\r\nimport GlobalEventsHandler from \"containers/GlobalEventsHandler\";\r\nimport UploadHandler from \"containers/UploadHandler\";\r\nimport Status from \"components/Status\";\r\nimport NoDocs from \"components/NoDocs\";\r\nimport withOfflineHandler from \"containers/OfflineHandler\";\r\nimport { type MultiSelectionProps } from \"containers/MultiSelection\";\r\nimport localForage from \"localforage\";\r\n\r\ntype Props = {\r\n /** folder itemUri to show */\r\n itemUri: string,\r\n /** whether to popup filter modal */\r\n showFilter: boolean,\r\n /** whether to automatically load and show documents */\r\n showDocs: boolean,\r\n /** whether to show the AddDocument action when NoDocs found\r\n * @default {boolean} true\r\n */\r\n showAddDocument?: boolean,\r\n /** callback when user closes filter modal */\r\n onFilterClose: () => void,\r\n /** callback when user clicks document icon\r\n * @param {SyntheticMouseEvent} e HTML click event\r\n */\r\n onIconClick?: (e: SyntheticMouseEvent) => void,\r\n /** callback when user single clicks the whole row\r\n * @param {SyntheticMouseEvent} e HTML click event\r\n * @param {string} itemUri the row's itemUri\r\n * @param {number} index the row's index\r\n */\r\n onSingleClick?: (\r\n e: SyntheticMouseEvent,\r\n itemUri: string,\r\n index: number\r\n ) => void,\r\n /** callback when user double clicks the whole row\r\n * @param {SyntheticMouseEvent} e HTML click event\r\n * @param {string} itemUri the row's itemUri\r\n * @param {number} index the row's index\r\n */\r\n onDoubleClick?: (\r\n e: SyntheticMouseEvent,\r\n itemUri: string,\r\n index: number\r\n ) => void,\r\n /** callback when user clicks on More... button\r\n * @param {SyntheticMouseEvent} e HTML click event\r\n * @param {string} itemUri the row's itemUri\r\n * @param {number} index the row's index\r\n */\r\n onMoreClick?: (\r\n e: SyntheticMouseEvent,\r\n itemUri: string,\r\n index: number\r\n ) => void,\r\n /** whether doclist filters should be rendered */\r\n renderFilter: ?boolean,\r\n /** whether to disable the More... button */\r\n actionsDisabled?: boolean,\r\n /** callback when user right clicks the whole row\r\n * @param {SyntheticMouseEvent} e HTML click event\r\n * @param {number} rowIndex the row's index\r\n * @param {number} columnsIndex the column's index\r\n * @param {string} itemUri the row's itemUri\r\n */\r\n onContextClick?: (\r\n e: SyntheticMouseEvent,\r\n rowIndex: number,\r\n columnIndex: number,\r\n itemUri: string\r\n ) => void,\r\n activeRowIndex?: number,\r\n scrollToRow?: number,\r\n /** React.Node children */\r\n children?: Node,\r\n\r\n // from redux connect()\r\n layout?: DocListLayout,\r\n /** current viewName */\r\n viewName: ?string,\r\n breadcrumbName: string,\r\n result?: docsResultState,\r\n status: ConstantsEnum,\r\n /** GlobalEventsHandler.refreshId */\r\n refreshId: number,\r\n /** Redux dispatch */\r\n dispatch: Dispatch,\r\n /** current docListViewMode */\r\n docListViewMode: ListViewModeEnum,\r\n /** redux: current formatId */\r\n formatId: number,\r\n /** TrackCurrentRow: tracks current selected document row */\r\n docTracker: ?TrackCurrentRowProps,\r\n /** withMultipleSelection additional props */\r\n multiSelection: MultiSelectionProps,\r\n};\r\n\r\ntype State = {\r\n rowStartIndex: number, //current top row rendered\r\n scrollToRow: number,\r\n focusOnFilterName: ?string,\r\n};\r\n\r\nexport class DocListContainer extends PureComponent {\r\n static defaultProps = {\r\n showFilter: false,\r\n showDocs: true,\r\n onFilterClose: undefined,\r\n status: Constants.LOADING,\r\n dispatch: noop,\r\n };\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n focusOnFilterName: null,\r\n rowStartIndex: 0,\r\n scrollToRow: props.scrollToRow || props.activeRowIndex || -1,\r\n columnMapper: [...(props.result?.cols?.keys() || [])],\r\n };\r\n this.setupColumns(props.result);\r\n }\r\n\r\n async setupColumns(result) {\r\n if (!result || !result.cols) return;\r\n\r\n const formatId = this.props.formatId;\r\n\r\n const columnMapper = await this.getColOrder();\r\n\r\n const storedColWidths =\r\n (await localForage.getItem(\r\n `docListLayout_${btoa(this.props.formatId)}`\r\n )) /* istanbul ignore next */ || {};\r\n\r\n // there's a possibility that by the time we get the storedColWidths, the formatId has changed\r\n // in that case, we don't want to apply the storedColWidths\r\n /* istanbul ignore else */\r\n if (formatId === this.props.formatId) {\r\n // store the formatId so we can check it later\r\n storedColWidths.__folderFormatId = formatId;\r\n this.setState({ columnMapper, storedColWidths });\r\n }\r\n }\r\n\r\n getColOrder = async () => {\r\n const storedOrder = await localForage.getItem(\r\n `docListLayout_${btoa(this.props.formatId)}_order`\r\n );\r\n\r\n if (storedOrder?.length === this.props.result?.cols.length) {\r\n return storedOrder;\r\n }\r\n\r\n // clear stored order if the number of columns has changed\r\n /* istanbul ignore else */\r\n if (\r\n storedOrder &&\r\n // cols.length can be 0 during initial load, in that case we don't want to clear the order\r\n this.props.result?.cols?.length &&\r\n storedOrder.length !== this.props.result.cols?.length\r\n ) {\r\n console.warn(\r\n \"Column order cannot be applied, because the number of columns has changed. Resetting column order.\"\r\n );\r\n localForage.removeItem(\r\n `docListLayout_${btoa(this.props.formatId)}_order`\r\n );\r\n }\r\n\r\n return [...(this.props.result?.cols?.keys() ?? [])];\r\n };\r\n\r\n onReorder = (oldIndex, newIndex) => {\r\n const newColumnMapper = [...this.state.columnMapper];\r\n const [removed] = newColumnMapper.splice(oldIndex, 1);\r\n newColumnMapper.splice(newIndex, 0, removed);\r\n\r\n localForage.setItem(\r\n `docListLayout_${btoa(this.props.formatId)}_order`,\r\n newColumnMapper\r\n );\r\n\r\n this.setState({ columnMapper: newColumnMapper });\r\n };\r\n\r\n componentDidMount() {\r\n /* istanbul ignore else */\r\n if (\r\n this.props.showDocs === true ||\r\n this.props.status === Constants.NONE\r\n ) {\r\n this._fetch(this.props.itemUri);\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps: Props) {\r\n // reload data?\r\n /* istanbul ignore else */\r\n if (this.props.showDocs === true && this.props.itemUri !== undefined) {\r\n const prevNotInitialFilters = prevProps.layout?.filters?.length;\r\n\r\n const isLayoutChanged =\r\n prevProps.layout?.filters &&\r\n this.props.layout?.filters &&\r\n !isEqual(prevProps.layout, this.props.layout);\r\n\r\n const notDefaultFilters =\r\n this.props.layout?.filters &&\r\n this.props.result?.cols &&\r\n !isEqual(\r\n this.props.layout.filters,\r\n GetDefaultFilters(this.props.result.cols)\r\n );\r\n\r\n /* istanbul ignore else */\r\n if (\r\n prevProps.showDocs !== this.props.showDocs ||\r\n prevProps.itemUri !== this.props.itemUri ||\r\n (isLayoutChanged &&\r\n (prevNotInitialFilters || notDefaultFilters))\r\n ) {\r\n this.setState(\r\n {\r\n scrollToRow: this.props.activeRowIndex,\r\n rowStartIndex: 0,\r\n },\r\n () => this._fetch(this.props.itemUri)\r\n );\r\n }\r\n\r\n /* istanbul ignore else */\r\n if (\r\n this.props.docTracker &&\r\n isLayoutChanged &&\r\n (prevNotInitialFilters || notDefaultFilters)\r\n ) {\r\n this.props.docTracker.setCurrentRow(-1);\r\n this.setState({ scrollToRow: -1 });\r\n }\r\n }\r\n\r\n if (prevProps.itemUri !== this.props.itemUri) {\r\n this.props.multiSelection?.disable();\r\n }\r\n\r\n // update totalCount\r\n if (\r\n prevProps.result !== this.props.result &&\r\n this.props.result != null &&\r\n this.props.viewName != null\r\n ) {\r\n /* istanbul ignore else */\r\n if (prevProps.result?.rows !== this.props.result.rows)\r\n this._updateToggleCounter(\r\n this.props.result.totalCount,\r\n Constants.OK\r\n );\r\n\r\n // Update multiSelection available Rows\r\n /* istanbul ignore next */\r\n this.props.multiSelection?.setAvailableRows(this.props.result.rows);\r\n this.props.pagination?.onRowsUpdate(this.props.result);\r\n\r\n this.setupColumns(this.props.result);\r\n }\r\n\r\n if (\r\n this.props.status === Constants.ERROR &&\r\n prevProps.status !== this.props.status &&\r\n this.props.viewName != null\r\n ) {\r\n this.props.dispatch(\r\n togglesUpdateCounterAction({\r\n name: this.props.viewName,\r\n counts: { doclist: 0 },\r\n status: { doclist: Constants.ERROR },\r\n })\r\n );\r\n }\r\n\r\n // finished uploading? refresh\r\n /* istanbul ignore else */\r\n if (prevProps.refreshId !== this.props.refreshId) {\r\n this.props.docTracker.setCurrentRow(-1);\r\n this._fetch(this.props.itemUri);\r\n this.props.multiSelection?.disable();\r\n this.props.pagination?.onRowsUpdate(this.props.result);\r\n }\r\n }\r\n\r\n _updateToggleCounter(count: number, doclist?: ConstantsEnum): void {\r\n const { dispatch, viewName, layout } = this.props;\r\n let status = undefined;\r\n /* istanbul ignore else */\r\n if (layout && layout.filters && IsFiltered(layout.filters)) {\r\n status = {\r\n doclist: doclist !== Constants.LOADING ? \"filter\" : doclist,\r\n };\r\n } else if (doclist != null) {\r\n status = { doclist };\r\n }\r\n /* istanbul ignore else */\r\n if (viewName != null)\r\n dispatch(\r\n togglesUpdateCounterAction({\r\n name: viewName,\r\n counts: { doclist: count },\r\n status,\r\n })\r\n );\r\n }\r\n\r\n // load next page of results\r\n _loadMoreRows = (pageNum: number) => {\r\n /* istanbul ignore else */\r\n if (\r\n this.props.itemUri !== undefined &&\r\n pageNum > 0 &&\r\n pageNum < Infinity // HACK: do not fetch Cloud requests with Infinity pageNum\r\n )\r\n this._fetch(this.props.itemUri, pageNum);\r\n };\r\n\r\n // load first page of documents\r\n _fetch(itemUri: string, pageNum: number = null) {\r\n const { dispatch, showDocs, layout } = this.props;\r\n if ((pageNum ?? 0) === 0 && showDocs)\r\n this._updateToggleCounter(0, Constants.LOADING);\r\n dispatch(\r\n getDocsAction({\r\n pageNum: showDocs ? pageNum ?? 0 : -1,\r\n itemUri,\r\n sorts: layout?.sorts,\r\n filters: layout?.filters,\r\n })\r\n );\r\n }\r\n\r\n _setSorting = (name: string) => {\r\n const { layout } = this.props;\r\n let direction = SortDirectionOptions.Ascending;\r\n if (layout?.sorts?.[0]?.name === name) {\r\n direction =\r\n layout.sorts[0].direction === SortDirectionOptions.Ascending\r\n ? SortDirectionOptions.Descending\r\n : SortDirectionOptions.Ascending;\r\n }\r\n\r\n const sorts: Array = [\r\n {\r\n name,\r\n direction,\r\n },\r\n ];\r\n this.props.dispatch(setDocsLayoutAction({ sorts }));\r\n };\r\n\r\n _onFilter = (filters: Array) => {\r\n this._onFilterClose();\r\n this.props.dispatch(setDocsLayoutAction({ filters }));\r\n };\r\n\r\n _onFilterClose = () => {\r\n this.setState({ focusOnFilterName: null });\r\n /* istanbul ignore else */\r\n if (typeof this.props.onFilterClose === \"function\")\r\n this.props.onFilterClose();\r\n };\r\n\r\n /* istanbul ignore next */ _requestShowFilter = (name) =>\r\n this.setState({\r\n focusOnFilterName: name,\r\n });\r\n\r\n /* istanbul ignore next */ _rowStartIndexUpdated = (rowStartIndex) =>\r\n this.setState({ rowStartIndex });\r\n\r\n _onContextClick = (\r\n e,\r\n rowIndex: number,\r\n columnIndex: number,\r\n itemUri: string\r\n ) => this.props.onMoreClick(e, itemUri, rowIndex, columnIndex);\r\n\r\n _isRowActive = (rowIndex: number, activeState: boolean): boolean => {\r\n return this.props.multiSelection?.multiple\r\n ? this.props.multiSelection?.isSelected(rowIndex)\r\n : activeState;\r\n };\r\n\r\n render() {\r\n const {\r\n status,\r\n showDocs,\r\n showFilter,\r\n renderFilter,\r\n result,\r\n hasFilter,\r\n layout,\r\n breadcrumbName,\r\n docListViewMode,\r\n } = this.props;\r\n if (showDocs) {\r\n return (\r\n \r\n \r\n\r\n {status === Constants.OK && result != null && (\r\n \r\n )}\r\n {status !== Constants.OK &&\r\n (result == null || result.totalCount === 0) && (\r\n \r\n )}\r\n {status === Constants.OK &&\r\n result != null &&\r\n result.totalCount === 0 && (\r\n \r\n )}\r\n {result != null && result.totalCount > 0 && (\r\n <>\r\n {(docListViewMode === ListViewMode.List ||\r\n docListViewMode ===\r\n ListViewMode.Thumbnails) && (\r\n \r\n {this.props.children}\r\n \r\n )}\r\n {docListViewMode === ListViewMode.Grid &&\r\n result.cols.length && (\r\n \r\n {this.props.children}\r\n \r\n )}\r\n \r\n )}\r\n \r\n );\r\n } else if (showFilter || this.state.focusOnFilterName != null) {\r\n if (\r\n status === Constants.OK &&\r\n result != null &&\r\n result.filters != null\r\n ) {\r\n return (\r\n \r\n );\r\n } else return ;\r\n } else\r\n return (\r\n this.props.children || (\r\n \r\n )\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = /* istanbul ignore next */ (state, ownProps) => ({\r\n viewName: s.currentNameSelector(state), // state.current.name,\r\n breadcrumbName: s.breadcrumbNameSelector(\r\n state,\r\n s.currentNameSelector(state)\r\n ),\r\n status: s.docsStatusSelector(state),\r\n error: s.docsErrorSelector(state),\r\n docListViewMode: s.docListViewModeSelector(state),\r\n formatId: s.breadcrumbFormatIdSelector(state, s.currentNameSelector(state)),\r\n result: state.docs,\r\n pageNum: s.docsPageNumSelector(state),\r\n hasFilter: (s.docsLayoutFiltersSelector(state) || []).filter(\r\n (filter) => filter.values.filter((v) => v).length\r\n ).length,\r\n ...ownProps,\r\n});\r\n\r\nexport default compose(\r\n LayoutLoader,\r\n connect(mapStateToProps),\r\n GlobalEventsHandler({\r\n items: [ServerEventItemType.document, ServerEventItemType.activity],\r\n refreshMode: RefreshMode.Originator,\r\n refreshMessage: \"$globalEvents:refresh.doclist\",\r\n }),\r\n UploadHandler(),\r\n withOfflineHandler\r\n)(DocListContainer);\r\n","import React, { useMemo } from \"react\";\nimport FormBar from \"@hs/form-bar\";\nimport SearchInput from \"@hs/search-input\";\nimport { useFormActions } from \"hooks\";\nimport { FormBarView } from \"data/types\";\nimport { getClassNames } from \"data/utils\";\nimport styles from \"./ArchiveTarget.module.css\";\n\ntype Props = {\n /** CSS Classname */\n className?: string,\n /** current ArchiveTarget */\n archiveTarget: CardItemResultDTO,\n /** callback when user clicks Cancel */\n onCancel: () => void,\n /** callback when user clicks Back */\n onBack?: () => void,\n /** callback when user types anything into filter text\n * @param {string} filterText filterText to apply\n */\n onFilterTextChange?: (filterText: string) => void,\n /** current filterText value */\n filterText?: string,\n};\n\n/**\n * renders an ArchiveTarget image (instead of icon)\n */\nconst ArchiveTargetImageWithTitle = (title) => {\n const Component = ({ name: src }) => (\n {title}\n );\n Component.displayName = \"ArchiveTargetImage\";\n return Component;\n};\n\n/**\n * renders an ArchiveTarget panel header\n */\nexport const ArchiveTarget = ({\n className,\n archiveTarget,\n onCancel,\n onBack,\n onFilterTextChange,\n filterText,\n}: Props) => {\n const [components, icon] = useMemo(() => {\n const components = archiveTarget.image\n ? {\n Icon: ArchiveTargetImageWithTitle(archiveTarget.name),\n }\n : null;\n switch (archiveTarget.uri) {\n case \"at-fav\":\n return [components, \"fa-regular fa-star\"];\n case \"at-rec\":\n return [components, \"clock-rotate-left\"];\n case \"at-search\":\n return [components, \"magnifying-glass\"];\n default:\n return [components, archiveTarget.image];\n }\n }, [archiveTarget]);\n const contextProps = useMemo(\n () => ({ onCancel, onBack }),\n [onCancel, onBack]\n );\n const actions = useFormActions(FormBarView.ArchiveTarget, contextProps);\n return (\n \n \n \n );\n};\nArchiveTarget.displayName = \"FormBar.ArchiveTarget\";\nexport default ArchiveTarget;\n","import React, { useMemo } from \"react\";\nimport FormBar from \"@hs/form-bar\";\nimport { getLocalizedText } from \"data/utils\";\nimport { type FormBarViewEnum } from \"data/types\";\nimport { useFormActions } from \"hooks\";\nimport { getClassNames } from \"data/utils\";\nimport styles from \"./Edit.module.css\";\n\ntype Props = {\n /** CSS Classname */\n className?: string,\n /** current Form being edited */\n form?: FormResultDTO | DocFormResultDTO,\n /** callback when user clicks Cancel */\n onCancel: () => void,\n /** callback when user clicks Back */\n onBack?: () => void,\n /** default form title to use when formTitle/name not supplied\n * @default {string} null so use i18next localization upload:edit_form.title\n */\n title?: string,\n /** optional icon to display\n * @default {string} edit\n */\n /** optional center component */\n children?: React.ElementType,\n /** targetView */\n targetView: FormBarViewEnum,\n};\n\n/**\n * renders the FormEdit's panel header\n *\n * @param {Props} { form, title, onCancel, onBack, children, icon }\n */\nexport const Edit = ({\n className,\n title,\n onCancel,\n onBack,\n targetView,\n children,\n icon = \"pen-to-square\",\n}: Props) => {\n const contextProps = useMemo(\n () => ({ onCancel, isEdit: true, onBack }),\n [onCancel, onBack]\n );\n const actions = useFormActions(targetView, contextProps);\n return (\n \n );\n};\nEdit.displayName = \"FormBar.Edit\";\nexport default Edit;\n","import React from \"react\";\r\nimport { useToggle } from \"hooks\";\r\nimport FormBar from \"@hs/form-bar\";\r\nimport Avatar from \"components/User/Avatar\";\r\nimport { LockInfoOn } from \"components/LockInfo\";\r\nimport { type LockResultDTO } from \"data/types\";\r\nimport { useFormActions } from \"hooks\";\r\nimport { FormBarView } from \"data/types\";\r\nimport { getClassNames } from \"data/utils\";\r\nimport styles from \"./LockInfo.module.css\";\r\n\r\ntype Props = {\r\n lockInfo: LockResultDTO,\r\n className?: string,\r\n};\r\n\r\nconst components = {\r\n Container: \"aside\",\r\n};\r\n\r\n/**\r\n * renders dismissable lock info\r\n *\r\n * @param {Props} { lockInfo, className }\r\n */\r\nexport const LockInfo = ({ lockInfo, className }: Props) => {\r\n const [show, toggleShow] = useToggle(true);\r\n const actions = useFormActions(FormBarView.LockInfo);\r\n if (lockInfo == null) return null;\r\n return (\r\n \r\n
\r\n \r\n {lockInfo.lockedByName}\r\n \r\n
\r\n \r\n );\r\n};\r\nLockInfo.displayName = \"FormBar.LockInfo\";\r\nexport default LockInfo;\r\n","import React, { useMemo } from \"react\";\nimport FormBar from \"@hs/form-bar\";\nimport { getLocalizedText } from \"data/utils\";\nimport { useFormActions, usePersistSetting } from \"hooks\";\nimport Constants, { type ConstantsEnum } from \"data/constants\";\nimport { useDispatch } from \"react-redux\";\nimport { FormBarView } from \"data/types\";\nimport { getClassNames } from \"data/utils\";\nimport styles from \"./Search.module.css\";\n\ntype Props = {\n /** CSS Classname */\n className?: string,\n /** current SearchForm */\n searchForm?: SearchFormResultDTO,\n /** callback when user clicks Cancel */\n onCancel: () => void,\n /** callback when user clicks Back */\n onBack?: () => void,\n /** callback when user clicks Clear */\n onClear: () => void,\n /** used for evaluating if the clear button should be visible */\n clearEnabled: () => boolean,\n /** status of the search */\n status: ConstantsEnum,\n};\n\n/**\n * renders the SearchForm's panel header\n *\n * @param {Props} { searchForm, onCancel, onClear, onBack }\n */\nexport const Search = ({\n className,\n searchForm,\n onCancel,\n onClear,\n onBack,\n status,\n}: Props) => {\n const dispatch = useDispatch();\n const [operator, setOperator] = usePersistSetting({\n name: \"showSearchOperators\",\n defaultValue: false,\n });\n const [scope, setScope] = usePersistSetting({\n name: \"showSearchScope\",\n defaultValue: false,\n });\n const isSearching = status === Constants.LOADING;\n const contextProps = useMemo(\n () => ({\n searchForm,\n onClear,\n onCancel,\n onBack,\n showSearchOperators: { value: operator, setValue: setOperator },\n showSearchScope: { value: scope, setValue: setScope },\n isSearching,\n dispatch,\n }),\n [\n searchForm,\n onClear,\n onCancel,\n onBack,\n operator,\n setOperator,\n scope,\n setScope,\n isSearching,\n dispatch,\n ]\n );\n const actions = useFormActions(FormBarView.Search, contextProps);\n return (\n \n );\n};\nSearch.displayName = \"FormBar.Search\";\nexport default Search;\n","import React, { useCallback, useMemo } from \"react\";\nimport FormBar from \"@hs/form-bar\";\nimport { useFormActions, usePersistSetting } from \"hooks\";\nimport { SearchScope as Scope, FormBarView } from \"data/types\";\nimport SearchScopeSelect from \"components/MainSearchScope/SearchScopeSelect\";\nimport styles from \"./SearchScope.module.css\";\n\ntype Props = {\n /** optional string of css classes */\n className?: string,\n /** initial search scope */\n searchScope: SearchScopeEnum,\n /** initial search scope itemUri */\n itemUri: string,\n /** callback when user changes scope\n * @param {SearchScopeEnum} searchScope new search scope\n * @param {string} itemUri new scoped itemUri\n */\n onSearchScopeChange: (\n searchScope: SearchScopeEnum,\n itemUri: ?string\n ) => void,\n};\n\nconst components = {\n Container: \"aside\",\n};\n\n/**\n * renders dismissable search scope\n *\n * @param {Props} { scope, className }\n */\nexport const SearchScope = ({\n searchScope,\n onSearchScopeChange,\n className,\n scopeItemUri: itemUri,\n}: Props) => {\n const [value, setValue] = usePersistSetting({\n name: \"showSearchScope\",\n defaultValue: false,\n });\n const handleClose = useCallback(() => setValue(false), [setValue]);\n const contextProps = useMemo(\n () => ({\n itemUri,\n onSearchScopeChange,\n showSearchScope: { value, setValue },\n }),\n [itemUri, onSearchScopeChange, value, setValue]\n );\n const actions = useFormActions(FormBarView.SearchScope, contextProps);\n return (\n \n \n \n );\n};\nSearchScope.displayName = \"FormBar.SearchScope\";\nexport default SearchScope;\n","import React, { useMemo } from \"react\";\nimport FormBar from \"@hs/form-bar\";\nimport { useFormActions } from \"hooks\";\nimport { type FormBarViewEnum } from \"data/types\";\n\ntype Props = {\n className?: string,\n title?: string,\n onCancel?: () => void,\n onBack?: () => void,\n children?: React.ElementType,\n icon?: string,\n targetView: FormBarViewEnum,\n};\n\n/**\n * renders the Form's panel header\n *\n * @param {Props} { form, title, onCancel, onBack, children, icon }\n */\nexport const View = ({\n className,\n title,\n onCancel,\n onBack,\n children,\n icon,\n targetView,\n}: Props) => {\n const contextProps = useMemo(\n () => ({ onCancel, onBack }),\n [onCancel, onBack]\n );\n const actions = useFormActions(targetView, contextProps);\n return (\n \n );\n};\nView.displayName = \"FormBar.View\";\nexport default View;\n","import React from \"react\";\nimport { useToggle } from \"hooks\";\nimport FormBar from \"@hs/form-bar\";\nimport { useFormActions } from \"hooks\";\nimport { FormBarView } from \"data/types\";\nimport { getClassNames, getLocalizedText } from \"data/utils\";\nimport styles from \"./Workflow.module.css\";\n\ntype Props = {\n className?: string,\n};\n\nconst components = {\n Container: \"aside\",\n};\n\n/**\n * renders dismissable workflow info\n *\n * @param {Props} { className }\n */\nexport const Workflow = ({ className }: Props) => {\n const [show, toggleShow] = useToggle(true);\n const actions = useFormActions(FormBarView.Workflow);\n return (\n \n
\n {getLocalizedText(\"$formActions:wf_info.pending\")}\n
\n \n );\n};\nWorkflow.displayName = \"FormBar.Workflow\";\nexport default Workflow;\n","import ArchiveTarget from \"./ArchiveTarget\";\nimport Edit from \"./Edit\";\nimport LockInfo from \"./LockInfo\";\nimport Search from \"./Search\";\nimport SearchScope from \"./SearchScope\";\nimport View from \"./View\";\nimport Workflow from \"./Workflow\";\n\nconst FormBarItem = {\n ArchiveTarget,\n Edit,\n LockInfo,\n Search,\n SearchScope,\n View,\n Workflow,\n};\n\nexport default FormBarItem;\n","import React, { useContext, useMemo } from \"react\";\nimport FormBarItem from \"./Item\";\nimport { FormBarView } from \"data/types\";\nimport { ItemContext, ArrowNavigationContext } from \"data/context\";\nimport { ItemStatuses, ItemContextKey } from \"data/types\";\n\nexport const useFormBarViews = (defaultViews) => {\n const {\n [ItemContextKey.ItemStatus]: itemStatus,\n [ItemContextKey.HasWorkflow]: hasWorkflow,\n } = useContext(ItemContext) || {};\n return useMemo(() => {\n const views = defaultViews || [];\n if (itemStatus & ItemStatuses.Locked) {\n views.push(FormBarView.LockInfo);\n }\n if (hasWorkflow) {\n views.push(FormBarView.Workflow);\n }\n return views;\n }, [defaultViews, itemStatus, hasWorkflow]);\n};\n\nconst Factory = ({ views: defaultViews, ...props }) => {\n const views = useFormBarViews(defaultViews);\n const { setTarget } = useContext(ArrowNavigationContext) || {};\n return views.map((targetView, i) => {\n switch (targetView) {\n case FormBarView.Document:\n case FormBarView.Upload:\n case FormBarView.ItemFlows:\n case FormBarView.DocModal:\n case FormBarView.Folder:\n return props.isEdit ? (\n \n ) : (\n \n );\n case FormBarView.Search:\n return (\n \n );\n case FormBarView.SearchScope:\n return (\n \n );\n case FormBarView.LockInfo:\n return (\n \n );\n case FormBarView.ArchiveTarget:\n return (\n \n );\n case FormBarView.Workflow:\n return (\n \n );\n default:\n console.error(`Unknown FormBarView ${targetView}`);\n return null;\n }\n });\n};\nFactory.displayName = \"FormBarFactory\";\nexport default Factory;\n","// @flow\r\nimport React, { type ComponentType } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport FormsyEditorBase from \"./FormsyEditorBase\";\r\nimport { fetchFormLookup, fetchFormLookupDependencies } from \"data/api\";\r\nimport {\r\n type ApiError,\r\n type FormLookupTypeEnum,\r\n FormLookupType,\r\n type FieldDefinitionDTO,\r\n type SearchFieldDefinitionDTO,\r\n type SearchFilterDTO,\r\n type FormLookupValue,\r\n type LookupValuesResultDTO,\r\n type SearchValueTypeEnum,\r\n SearchValueType,\r\n SearchOperator,\r\n} from \"data/types\";\r\nimport loc from \"i18next\";\r\nimport { userLanguage } from \"data/storeHelper\";\r\nimport Constants, { type ConstantsEnum } from \"data/constants\";\r\nimport { AsyncPaginate } from \"react-select-async-paginate\";\r\nimport { createFilter, components } from \"react-select\";\r\nimport Status from \"components/Status\";\r\nimport CountBadge from \"components/CountBadge\";\r\nimport NativeSelect from \"components/NativeSelect\";\r\nimport { isHandheld } from \"data/bowser\";\r\nimport * as s from \"data/reducers/selectors\";\r\nimport Mark from \"@hs/mark\";\r\nimport SearchBucket from \"components/FilterBar/SearchBucket\";\r\nimport { getClassNames, closeMenuOnScroll } from \"data/utils\";\r\nimport styles from \"./LookupEditorControl.module.css\";\r\n\r\nconst { Option } = components;\r\n\r\ntype FetchFormResponseDTO = {\r\n options: Array,\r\n hasMore: boolean,\r\n additional: { pageNum: number },\r\n};\r\n\r\ntype Props = {\r\n /** whether handling a Document or Folder form */\r\n isDoc: boolean,\r\n /** requested formatId */\r\n formatId: number,\r\n /** requested itemUri */\r\n itemUri: string,\r\n /** commonName */\r\n name: string,\r\n /** current value */\r\n value: string,\r\n /** all ExtraAttributes */\r\n attributes: Array,\r\n /** Redux form changes */\r\n changes: ?Object,\r\n /** type of lookup */\r\n lookupType: FormLookupTypeEnum,\r\n /** when lookupType==FormLookupType.sf_ftlookup then this is the searchFormId */\r\n formId?: number,\r\n /** SearchValueType */\r\n valueType?: SearchValueTypeEnum,\r\n /** whether multiple selection is allowed */\r\n isMultiple: boolean,\r\n /** whether this is a required field */\r\n isRequired: boolean,\r\n /** whether this is a readonly field */\r\n isReadonly: boolean,\r\n /** filtering by matching any part of starts with */\r\n useContains: boolean,\r\n /** whether to use lookup values keys */\r\n useKeys: boolean,\r\n /** all available options */\r\n values?: Array,\r\n /** placeholder text to display when @see {value} is empty */\r\n placeholder?: string,\r\n /** optional children to render */\r\n children?: ComponentType<*>,\r\n /** optional parentName (dependent lookups) */\r\n parentName: string,\r\n};\r\n\r\ntype State = {\r\n inputValue: ?string,\r\n status: ConstantsEnum,\r\n loadIndex: number,\r\n};\r\n\r\n/* istanbul ignore next */\r\nconst getLoadingMessage = () => loc.t(\"search:select:loading\");\r\n\r\n/* istanbul ignore next */\r\nconst getNoOptionMessage = () => loc.t(\"search:select:noOptions\");\r\n\r\nexport class LookupEditorControl extends React.Component {\r\n static defaultProps = {\r\n isDoc: false,\r\n formatId: 0,\r\n name: \"\",\r\n lookupType: FormLookupType.ea_lookup,\r\n isMultiple: false,\r\n isRequired: false,\r\n isReadonly: false,\r\n useContains: false,\r\n useKeys: false,\r\n };\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n status: props.values ? Constants.OK : Constants.LOADING,\r\n loadIndex: 0,\r\n inputValue: null,\r\n };\r\n }\r\n\r\n /** re-render only when value changes! */\r\n shouldComponentUpdate = (nextProps: Props, nextState: State) =>\r\n nextProps.itemUri !== this.props.itemUri ||\r\n nextProps.value !== this.props.value ||\r\n nextProps.values !== this.props.values ||\r\n // used to force reloading\r\n nextState.loadIndex !== this.state.loadIndex ||\r\n nextState.inputValue !== this.state.inputValue;\r\n\r\n componentDidUpdate(prevProps: Props) {\r\n /* istanbul ignore else */\r\n if (\r\n prevProps.attributes !== this.props.attributes ||\r\n prevProps.values !== this.props.values\r\n ) {\r\n this.setState(({ loadIndex }: State) => ({\r\n loadIndex: loadIndex + 1,\r\n }));\r\n }\r\n }\r\n\r\n getParentAsFilters = (filters = [], parentName = this.props.parentName) => {\r\n // Bail early if not EA\r\n if (this.props.attributes == null) {\r\n return filters;\r\n }\r\n const attr = this.props.attributes.find(\r\n (attr) => attr.name === parentName\r\n );\r\n // No parent found, return found filters\r\n if (attr == null) return filters;\r\n\r\n // Up the dependency tree\r\n if (attr.extra && attr.extra.parentLookupCommonName != null) {\r\n filters = this.getParentAsFilters(\r\n filters,\r\n attr.extra.parentLookupCommonName\r\n );\r\n }\r\n const filter: SearchFilterDTO = {\r\n name: parentName,\r\n op: SearchOperator.Equals,\r\n value: attr.value,\r\n };\r\n filters.push(filter);\r\n return filters;\r\n };\r\n\r\n getCurrentDependentLookupValues = (\r\n lookupValues = [],\r\n parentName = this.props.name.substring(3)\r\n ) => {\r\n // Bail early if not EA\r\n if (this.props.attributes == null) {\r\n return lookupValues;\r\n }\r\n // Re-use getParentAsFilters to get all parent values\r\n if (\r\n lookupValues.length === 0 &&\r\n parentName === this.props.name.substring(3)\r\n ) {\r\n lookupValues = this.getParentAsFilters(\r\n lookupValues,\r\n this.props.parentName\r\n ).map((filter) => ({\r\n name: filter.name,\r\n value: filter.value,\r\n }));\r\n }\r\n\r\n // Find any child\r\n const attr = this.props.attributes.find(\r\n (attr) =>\r\n attr.extra && attr.extra.parentLookupCommonName === parentName\r\n );\r\n\r\n if (attr == null) return lookupValues;\r\n\r\n const value = {\r\n name: attr.name,\r\n value: attr.value,\r\n };\r\n lookupValues.push(value);\r\n\r\n // Down the dependency tree\r\n return this.getCurrentDependentLookupValues(lookupValues, attr.name);\r\n };\r\n\r\n getValueByOperator = (value: any, op: SearchOperatorEnum) => {\r\n if (Array.isArray(value)) {\r\n return value.map((v) => this.getValueByOperator(v, op));\r\n }\r\n switch (op) {\r\n case SearchOperator.Contextor:\r\n case SearchOperator.ContextorContains:\r\n return value && value.T ? value.T : value;\r\n default:\r\n return value;\r\n }\r\n };\r\n\r\n fetchLookup = (\r\n keyword: string,\r\n loadedOptions: any,\r\n { pageNum }: { pageNum: number }\r\n ): Promise => {\r\n if (this.props.values) {\r\n return Promise.resolve({\r\n options: this.props.values,\r\n hasMore: false,\r\n additional: { pageNum: 0 },\r\n });\r\n }\r\n const name = this.props.name.substring(3); //remove formPrefix\r\n // collect other attribute values\r\n let filters: Array = [];\r\n if (\r\n this.props.lookupType === FormLookupType.sf_ftlookup &&\r\n this.props.changes != null\r\n ) {\r\n this.props.attributes.forEach((attr) => {\r\n const changed = this.props.changes[attr.name];\r\n // pass any other set filters (always pass ourselves as well)\r\n // NOTE: we need to pass everything to allow resetting predefined SearchParameters!\r\n // if (\r\n // changed != null &&\r\n // (changed.val != null || attr.name === name)\r\n // ) {\r\n const filter: SearchFilterDTO = {\r\n name: attr.name,\r\n op: changed.op,\r\n value: this.getValueByOperator(changed.val, changed.op),\r\n valueType: attr.valueType,\r\n boostLeafNode: attr.boostLeafNode,\r\n nodeType: attr.nodeType,\r\n };\r\n filters.push(filter);\r\n // }\r\n });\r\n }\r\n // collect any (parent(s)) parent value and add to filter\r\n if (this.props.parentName) {\r\n filters = this.getParentAsFilters(filters);\r\n }\r\n\r\n return fetchFormLookup({\r\n keyword,\r\n pageNum,\r\n isDoc: this.props.isDoc,\r\n formatId: this.props.formatId,\r\n itemUri: this.props.itemUri,\r\n name,\r\n lookupType: this.props.lookupType,\r\n id: this.props.formId,\r\n filters,\r\n values: this.props.attributes?.reduce((changes, a) => {\r\n changes[a.name] = a.value;\r\n return changes;\r\n }, {}),\r\n })\r\n .catch((err: ApiError) => {\r\n this.setState({\r\n status: Constants.ERROR,\r\n });\r\n return null;\r\n })\r\n .then((result: ?LookupValuesResultDTO) => {\r\n if (result != null && result.values != null) {\r\n this.setState({\r\n // values,\r\n status: Constants.OK,\r\n });\r\n return {\r\n options: result.values,\r\n hasMore: result.hasMore,\r\n additional: { pageNum: pageNum + 1 },\r\n };\r\n } else\r\n return {\r\n options: [],\r\n hasMore: false,\r\n additional: { pageNum: 0 },\r\n };\r\n });\r\n };\r\n\r\n _fixValue = (value: ?any | ?Array | ?FormLookupValue) => {\r\n if (Array.isArray(value)) {\r\n const values = value\r\n .map((v) => this._fixValue(v))\r\n .filter((v) => v != null);\r\n return values.length ? values : null;\r\n }\r\n return value?.T ? value : null;\r\n };\r\n\r\n _onChange = (\r\n value: ?Array | ?FormLookupValue,\r\n changeValue: Function\r\n ) =>\r\n this._handleDependenciesUpdate(\r\n this._handleLookupValue(value),\r\n changeValue\r\n );\r\n\r\n _prepareOtherValueFor = (name: string, value: any): any => {\r\n const target = this.props.attributes?.find((a) => a.name === name);\r\n let v = value;\r\n if (\r\n [\"List_Combo\", \"Lookup_Combo\", \"FullTextLookup_Combo\"].includes(\r\n target?.format\r\n )\r\n ) {\r\n v = { T: `${value}` };\r\n }\r\n if (v != null && typeof v === \"object\" && target?.extra?.useKeys) {\r\n v.K = `${value}`;\r\n }\r\n if (target?.extra?.isMultiple) {\r\n v = [v];\r\n }\r\n return v;\r\n };\r\n\r\n _handleLookupValue = (\r\n rawValue: ?Array | ?FormLookupValue,\r\n name: string = this.props.name\r\n ): Array => {\r\n const changed: Array = [];\r\n if (Array.isArray(rawValue)) {\r\n changed.push({\r\n name,\r\n value: this._fixValue(rawValue),\r\n });\r\n } else {\r\n const { O: others, ...current } = rawValue || {};\r\n const value = this._fixValue(current);\r\n changed.push({\r\n name,\r\n value,\r\n });\r\n if (others != null) {\r\n const splittedName = name.split(\".\");\r\n const prefix = splittedName.shift();\r\n Object.keys(others)\r\n .filter((name) => name !== splittedName.join(\".\"))\r\n .forEach((name) => {\r\n changed.push({\r\n name: `${prefix}.${name}`,\r\n value: this._prepareOtherValueFor(\r\n name,\r\n others[name]\r\n ),\r\n });\r\n });\r\n }\r\n }\r\n return changed;\r\n };\r\n\r\n _handleDependenciesUpdate = (\r\n changed: Array,\r\n changeValue: Function\r\n ) => {\r\n const splittedName = changed[0].name.split(\".\");\r\n const currentLookupValues = this.getCurrentDependentLookupValues();\r\n // Bail early if only one Lookup is present\r\n if (currentLookupValues.length === 0) {\r\n return changeValue(changed);\r\n }\r\n currentLookupValues.push({\r\n name: splittedName[1],\r\n value: changed[0].value,\r\n });\r\n fetchFormLookupDependencies({\r\n isDoc: this.props.isDoc,\r\n formatId: this.props.formatId,\r\n itemUri: this.props.itemUri,\r\n name: this.props.name.substring(3),\r\n lookupType: this.props.lookupType,\r\n currentLookupValues,\r\n })\r\n .then((dependentLookups) => {\r\n dependentLookups.forEach((lookup) => {\r\n const _lookup = this._handleLookupValue(\r\n lookup.value,\r\n `${splittedName[0]}.${lookup.name}`\r\n );\r\n // append updated lookup & other values\r\n changed = changed.concat(_lookup);\r\n });\r\n changeValue(changed);\r\n })\r\n .catch((e) => {\r\n changeValue(changed);\r\n });\r\n };\r\n\r\n _onInputChange = (inputValue: string): void =>\r\n this.setState({ inputValue });\r\n\r\n _valueRenderer = (props: any) => {\r\n const { value } = props;\r\n switch (this.props.valueType) {\r\n case SearchValueType.Decimal:\r\n case SearchValueType.DecimalFieldOnly:\r\n return value.toLocaleString(userLanguage());\r\n default:\r\n const valueWithIcon = (\r\n \r\n );\r\n /* istanbul ignore next */\r\n return valueWithIcon != null ? (\r\n <>\r\n {valueWithIcon} {value}\r\n \r\n ) : (\r\n value\r\n );\r\n }\r\n };\r\n\r\n _optionRenderer = (props: any) => {\r\n // https://github.com/JedWatson/react-select/issues/3128#issuecomment-451936743\r\n const { onMouseMove, onMouseOver, ...rest } = props.innerProps;\r\n const newProps = Object.assign({}, props, { innerProps: rest });\r\n const ValueComponent = this._valueRenderer;\r\n ValueComponent.displayName = \"LookupEditorControl._valueRenderer\";\r\n return (\r\n Option && (\r\n \r\n {this.props.lookupType === FormLookupType.sf_ftlookup ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n )\r\n );\r\n };\r\n\r\n render = () => (\r\n {\r\n /* istanbul ignore if */\r\n if (this.state.status === Constants.ERROR)\r\n return ;\r\n else {\r\n // only on mobile with values fallback to HTML select\r\n if (isHandheld() && this.props.values) {\r\n return (\r\n \r\n this._onChange(item, changeValue)\r\n }\r\n options={this.props.values}\r\n inputId={this.props.name}\r\n />\r\n );\r\n } else {\r\n // otherwise use full-featured react-select\r\n return (\r\n <>\r\n ({\r\n ...provided,\r\n width: \"100%\",\r\n minWidth: 120,\r\n whiteSpace: \"normal\",\r\n }),\r\n control: /* istanbul ignore next */ (\r\n provided,\r\n state\r\n ) => ({\r\n ...provided,\r\n height: this.props.isMultiple\r\n ? \"auto\"\r\n : 34,\r\n minHeight: \"fit-content\",\r\n borderRadius: 0,\r\n boxShadow:\r\n \"inset 0 1px 1px rgba(0, 0, 0, 0.075)\",\r\n }),\r\n valueContainer:\r\n /* istanbul ignore next */ (\r\n provided,\r\n state\r\n ) => ({\r\n ...provided,\r\n padding: \"0px 6px\",\r\n minHeight: 34,\r\n }),\r\n input: /* istanbul ignore next */ (\r\n provided,\r\n state\r\n ) => ({\r\n ...provided,\r\n margin: 0,\r\n padding: 0,\r\n }),\r\n dropdownIndicator:\r\n /* istanbul ignore next */ (\r\n provided,\r\n state\r\n ) => ({\r\n ...provided,\r\n padding: 4,\r\n }),\r\n indicatorSeparator:\r\n /* istanbul ignore next */ () => ({\r\n display: \"none\",\r\n }),\r\n clearIndicator:\r\n /* istanbul ignore next */ (\r\n provided,\r\n state\r\n ) => ({\r\n ...provided,\r\n padding: 0,\r\n }),\r\n menu: /* istanbul ignore next */ (\r\n provided,\r\n state\r\n ) => ({\r\n ...provided,\r\n marginTop: 0,\r\n borderRadius: 0,\r\n width: \"auto\",\r\n minWidth: \"100%\",\r\n // left: -300, // to set the dropdown bigger than the field - needs work to align correctly (and to the right side!)\r\n // minWidth: 300,\r\n // zIndex: 1051\r\n }),\r\n menuPortal: /* istanbul ignore next */ (\r\n provided,\r\n state\r\n ) => ({\r\n ...provided,\r\n zIndex: 9999,\r\n }),\r\n placeholder:\r\n /* istanbul ignore next */ (\r\n provided,\r\n state\r\n ) => ({\r\n ...provided,\r\n whiteSpace: \"nowrap\",\r\n color: \"hsl(0, 0%, 80%)\",\r\n }),\r\n option: /* istanbul ignore next */ (\r\n provided,\r\n state\r\n ) => {\r\n if (state.isSelected) {\r\n return Object.assign(\r\n {},\r\n provided,\r\n {\r\n boxShadow: \"none\",\r\n background: \"#0098AA\",\r\n textShadow: \"none\",\r\n cursor: \"pointer\",\r\n // border: \"1px solid #f5f5f5\"\r\n }\r\n );\r\n } else if (state.isFocused) {\r\n return Object.assign(\r\n {},\r\n provided,\r\n {\r\n boxShadow: \"none\",\r\n background: \"#f5f5f5\",\r\n textShadow: \"none\",\r\n cursor: \"pointer\",\r\n // border: \"1px solid #f5f5f5\"\r\n }\r\n );\r\n }\r\n return provided;\r\n },\r\n }}\r\n // async-paginate\r\n loadOptions={this.fetchLookup}\r\n debounceTimeout={300}\r\n additional={{\r\n pageNum: 0,\r\n }}\r\n cacheUniqs={[this.state.loadIndex]}\r\n onMenuClose={\r\n /*istanbul ignore next*/ () =>\r\n this.setState(\r\n (prevState: State) => ({\r\n loadIndex:\r\n prevState.loadIndex + 1,\r\n })\r\n )\r\n }\r\n // defaultOptions={true}\r\n // options\r\n getOptionLabel={\r\n /* istanbul ignore next */ (option: {\r\n T: \"\",\r\n }) => option.T\r\n }\r\n getOptionValue={\r\n /* istanbul ignore next */ (option: {\r\n K: \"\",\r\n T: \"\",\r\n }) =>\r\n this.props.useKeys\r\n ? option.K\r\n : option.T\r\n }\r\n filterOption={createFilter({\r\n ignoreAccents: false,\r\n })}\r\n // behavior\r\n isClearable={true}\r\n openMenuOnFocus={true}\r\n // localizations\r\n placeholder={\r\n this.props.placeholder ||\r\n loc.t(\"common:validation.select\")\r\n }\r\n loadingMessage={getLoadingMessage}\r\n noOptionsMessage={getNoOptionMessage}\r\n // selection\r\n onChange={\r\n /* istanbul ignore next */ (item) =>\r\n this._onChange(item, changeValue)\r\n }\r\n value={this._fixValue(value)}\r\n inputValue={this.state.inputValue}\r\n onInputChange={this._onInputChange}\r\n isMulti={this.props.isMultiple}\r\n delimiter=\",\"\r\n inputId={this.props.name}\r\n />\r\n {this.props.children}\r\n \r\n );\r\n }\r\n }\r\n }}\r\n {...this.props}\r\n value={this._fixValue(this.props.value)}\r\n />\r\n );\r\n}\r\n\r\nconst mapStateToProps = /* istanbul ignore next */ (\r\n state: State,\r\n ownProps: Props\r\n) => ({\r\n changes: s.searchFormChangesSelector(state),\r\n formId:\r\n ownProps.lookupType === FormLookupType.sf_ftlookup\r\n ? s.searchFormIdSelector(state)\r\n : -1,\r\n ...ownProps,\r\n // #56024 disable FT lookup when offline\r\n isReadonly: s.isOnlineSelector(state)\r\n ? ownProps.isReadonly\r\n : ownProps.lookupType === FormLookupType.ea_ftlookup,\r\n});\r\n\r\nexport default connect(mapStateToProps)(LookupEditorControl);\r\n","// @flow\nimport React, { useCallback } from \"react\";\nimport { useEffectOnce } from \"hooks\";\nimport { getDisplayName } from \"data/constants\";\n\ntype Props = {\n /** callback when user pressed the left arrow */\n onPrev?: () => void,\n /** callback when user pressed the right arrow */\n onNext?: () => void,\n};\n\n/** used by ImageViewer/InlineViewer to intercept left/right keyboard commands */\nconst ViewerKeysHandler = (WrappedComponent: ReactClass): Node => {\n const HOC = (props: Props) => {\n const { onNext, onPrev } = props;\n if (typeof onNext !== \"function\" || typeof onPrev !== \"function\") {\n console.warn(\"Missing onNext/onPrev callback\");\n }\n const handleKeyDown = useCallback(\n (e) => {\n // #43374 arrow keys during DocForm editing\n if (\n e.target?.classList?.contains(\"form-control\") ||\n e.target?.tagName === \"INPUT\"\n )\n return;\n\n const keyCode = e.keyCode || e.which || e.charCode;\n switch (keyCode) {\n case 39: // key: →\n /* istanbul ignore else */\n if (typeof onNext === \"function\") {\n e.preventDefault();\n onNext();\n }\n break;\n case 37: // key: ←\n /* istanbul ignore else */\n if (typeof onPrev === \"function\") {\n e.preventDefault();\n onPrev();\n }\n break;\n /* istanbul ignore next */\n default:\n break;\n }\n },\n [onNext, onPrev]\n );\n\n useEffectOnce(() => {\n window.document.addEventListener(\"keydown\", handleKeyDown, false);\n return () => {\n window.document.removeEventListener(\n \"keydown\",\n handleKeyDown,\n false\n );\n };\n });\n return ;\n };\n HOC.displayName = `ViewerKeysHandler(${getDisplayName(WrappedComponent)})`;\n return HOC;\n};\n\nexport default ViewerKeysHandler;\n","// @flow\nimport React, { useState, useEffect } from \"react\";\nimport { useEffectOnce } from \"hooks\";\nimport { Location } from \"history\";\nimport queryString from \"data/queryString\";\nimport { fetchSearchSuggestion } from \"data/api\";\nimport {\n type ApiError,\n type SearchFilterDTO,\n SearchValueType,\n} from \"data/types\";\nimport Constants, { getDisplayName } from \"data/constants\";\nimport Status from \"components/Status\";\nimport PageStatus from \"components/PageStatus\";\nimport loc from \"i18next\";\n\ntype Props = {\n /** React-router history object */\n location: Location,\n /** Redux-state current itemUri */\n itemUri: string,\n};\n\ntype Config = {\n /** whether we expect a doc ItemUri */\n docSearchProvider: boolean,\n};\n\nexport const isSearchParam = (p: string): boolean => {\n if (p == null) return false;\n const pSplit = p.split(\".\");\n if (pSplit.length === 1) {\n if ([\"searchtext\", \"advancedsearchtext\"].includes(p)) return true;\n else return false;\n }\n return [\n \"leafnode\",\n \"doc\",\n \"item\",\n \"allnodes\",\n \"folder\",\n \"itemany\",\n ].includes(pSplit[0]);\n};\n\n/**\n * HOC to handle searching for an itemUri by fulltext search filters passed as URL query parameters,\n * will then pass the result itemUri\n * @param {ComponentType} WrappedComponent children to render\n */\nconst SuggestionHandler =\n ({ docSearchProvider = false }: Config) =>\n (WrappedComponent: ComponentType) => {\n const HOC = ({ location, ...props }: Props) => {\n const itemUriFromLocation =\n \"pam-item://\" + queryString.parse(location.search).uri;\n const [status, setStatus] = useState(Constants.LOADING);\n const [errorDetail, setErrorDetail] = useState(null);\n const [itemUri, setItemUri] = useState(null);\n useEffectOnce(() => {\n if (itemUriFromLocation !== \"pam-item://undefined\") {\n setStatus(Constants.OK);\n setItemUri(itemUriFromLocation);\n return;\n }\n const qs = queryString.parse(location.search);\n // any specific provider or use default\n let provider = \"\";\n /* istanbul ignore else */\n if (qs.p) {\n provider = qs.p;\n delete qs.p;\n }\n // remove secureParams\n /* istanbul ignore else */\n if (qs.sp) {\n delete qs.sp;\n }\n // anything else should be a suggestion filter (/parameter)\n const filters: Array = Object.keys(qs)\n .filter((p) => isSearchParam(p.toLowerCase()))\n .map((p) => ({\n name: p,\n value: qs[p],\n valueType: SearchValueType.NotSet,\n }));\n // should we return a Doc ItemUri or a Folder one?\n if (provider.length === 0 && docSearchProvider === true)\n provider = \"DocSearchProvider\";\n\n fetchSearchSuggestion(provider, filters)\n .catch((err: ApiError) => {\n if (\n err.data &&\n err.data.eventId &&\n err.data.eventId.id ===\n 1540 /*SEARCH_SUGGESTION_NOTFOUND*/\n ) {\n setStatus(Constants.ERROR);\n setErrorDetail(\n \"Not Found! Please contact your administrator.\"\n );\n }\n return null;\n })\n .then((itemUri) => {\n if (\n itemUri !== null &&\n String(itemUri).length > 0 &&\n String(itemUri).startsWith(\"pam-item://\")\n ) {\n setStatus(Constants.OK);\n setItemUri(itemUri);\n } else {\n setStatus(Constants.ERROR);\n }\n });\n });\n useEffect(() => {\n if (\n status === Constants.OK &&\n itemUri != null &&\n itemUriFromLocation !== \"pam-item://undefined\"\n ) {\n setItemUri(itemUriFromLocation);\n }\n }, [itemUriFromLocation, itemUri, status]);\n switch (status) {\n case Constants.OK:\n // passthrough overriding with our suggested itemUri\n return (\n \n );\n case Constants.ERROR:\n return errorDetail == null ? (\n \n ) : (\n \n );\n default:\n return (\n \n );\n }\n };\n HOC.displayName = `SuggestionHandler(${getDisplayName(\n WrappedComponent\n )})`;\n return HOC;\n };\n\nexport default SuggestionHandler;\n","//@flow\nimport { inPointAction, inPointActionLink } from \"components/ItemUriLink\";\n\n/**\n * opens inPoint.Client to execute command action for the specified itemUris\n *\n * @param {{ itemUri: string }} { itemUri }\n * @param {{ items?: Array }} { items }\n * @param {{ commandAction?: string}} { commandAction }\n */\n\ntype Context = {\n itemUri: string,\n items?: Array,\n commandAction?: string,\n};\n\nclass ip_commandAction {\n execute({ itemUri, items, commandAction }: Context) {\n window.location.assign(\n inPointActionLink(\n inPointAction.commandAction,\n items?.length ? undefined : itemUri,\n items?.length ? items.map((item) => item.itemUri) : undefined,\n {\n name: commandAction,\n }\n )\n );\n return true;\n }\n}\n\nexport default ip_commandAction;\n","import ip_commandAction from \"./ip_commandAction\";\n\n/**\n * opens inPoint.Client to archive to the specified itemUri\n *\n * @param {{ itemUri?: string }} { itemUri }\n */\n\nclass ip_archive extends ip_commandAction {\n execute = ({ itemUri }: { itemUri?: string }) =>\n super.execute({ itemUri, commandAction: \"ArchiveCommandAction\" });\n}\n\nexport default ip_archive;\n","import ip_commandAction from \"./ip_commandAction\";\n\n/**\n * opens inPoint.Client to browse to the specified itemUri\n *\n * @param {{ itemUri: string }} { itemUri }\n */\n\nclass ip_browse extends ip_commandAction {\n execute = ({ itemUri }: { itemUri: string }) =>\n super.execute({ itemUri, commandAction: \"ItemBrowseCommandAction\" });\n}\n\nexport default ip_browse;\n","import ip_commandAction from \"./ip_commandAction\";\n\n/**\n * opens inPoint.Client to edit to the specified itemUri\n *\n * @param {{ itemUri: string }} { itemUri }\n */\n\nclass ip_edit extends ip_commandAction {\n execute = ({ itemUri }: { itemUri: string }) =>\n super.execute({ itemUri, commandAction: \"DocumentOpenCommandAction\" });\n}\n\nexport default ip_edit;\n","import ip_commandAction from \"./ip_commandAction\";\n\n/**\n * opens inPoint.Client to show properties window for the specified itemUri\n *\n * @param {{ itemUri: string }} { itemUri }\n * @param {{ isDoc: boolean }} { isDoc }\n */\n\nclass ip_properties extends ip_commandAction {\n execute = ({ itemUri, isDoc }: { itemUri: string, isDoc: boolean }) =>\n super.execute({\n itemUri,\n commandAction: isDoc\n ? \"DocumentEditAttributesCommandAction\"\n : \"FolderEditAttributesCommandAction\",\n });\n}\n\nexport default ip_properties;\n","import { openConfirmModal } from \"components/ConfirmModal\";\nimport { delItemUri } from \"data/api\";\nimport loc from \"i18next\";\nimport { toastActionResult } from \"data/toast\";\nimport { postMessageTo } from \"hooks/PostMessage/Utils\";\nimport { ItemAction } from \"hooks/PostMessage/Actions\";\n\n/**\n * deletes an existing folder by itemUri\n *\n * @param {{ itemUri: string }} { itemUri }\n * @param {{ name: string }} { name }\n */\n\ntype Context = {\n itemUri: string,\n name: string,\n};\n\nclass folder_delete {\n queueMultiple: boolean = true;\n logger: () => any = toastActionResult;\n shouldRender: boolean = true;\n\n render = async ({ name }: Context): Promise => {\n this.shouldRender = false;\n return await openConfirmModal({\n body: loc.t(\"commandAction:folder_delete.confirmBody\", { name }),\n confirmButton: loc.t(\"commandAction:folder_delete.confirmYes\"),\n });\n };\n\n execute = async ({ itemUri }: Context): Promise => {\n try {\n const success = await delItemUri(itemUri);\n if (success) postMessageTo(ItemAction.Deleted, itemUri, window);\n return success;\n } catch (err) {\n console.warn(err);\n return false;\n }\n };\n\n report = async (success: boolean, { name }: Context): Promise => {\n this.logger(success === true, \"commandAction:folder_delete\", { name });\n };\n}\n\nexport default folder_delete;\n","import { formSetEditModeAction } from \"data/actions\";\n\n/**\n * starts editing the current folder form\n */\n\nclass folder_editClassification {\n execute = ({ dispatch }) => dispatch(formSetEditModeAction(\"folder\", true));\n}\nexport default folder_editClassification;\n","// @flow\nimport React, { useCallback } from \"react\";\nimport Modal, { ModalSize } from \"components/Modal\";\nimport Button from \"react-bootstrap/lib/Button\";\nimport { createModal } from \"react-modal-promise\";\nimport styles from \"./OptionsModal.module.css\";\nimport Icons from \"@hs/icons\";\nimport { getLocalizedText } from \"data/utils\";\n\ntype Option = {\n /** unique identifier */\n eventKey: string,\n /** label to display, can be an optional i18n string @requires getLocalizedText */\n label: string,\n /** optional icon to render before the label */\n icon?: string,\n /** optional icon color */\n color?: string,\n /** optional flag for default values */\n isDefault?: boolean,\n};\n\ntype Props = {\n /** react-modal-promise: whether to show dialog */\n open: boolean,\n /** react-modal-promise: callback when user closes Dialog */\n close: () => void,\n /** options */\n options: Array
\n );\n }\n}\n\nconst MapViewerWithContext = (props: Props) => (\n \n {(itemUri) => }\n \n);\n\nMapViewer.WithContext = MapViewerWithContext;\nexport default MapViewer;\n","// @flow\nimport React, { useContext, useMemo } from \"react\";\nimport AttributeLabel from \"components/ExtraAttributes/AttributeLabel\";\nimport MapButton from \"components/MapButton\";\nimport ViewerControlBase from \"components/ExtraAttributes/ViewerControl/ViewerControlBase\";\nimport { PaneSizeContext, LabelSizeContext } from \"data/context\";\nimport { type MarkerDTO } from \"data/types\";\nimport sharedStyles from \"shared/styles.module.css\";\n\ntype Props = {\n itemUri: string,\n formatId: number,\n name: string,\n header?: string,\n value: any | string,\n width?: number,\n /** optional (custom) location marker icon */\n marker?: MarkerDTO,\n};\n\nconst GeoRasterViewerControl = ({\n itemUri,\n formatId,\n name,\n header,\n value,\n width,\n marker,\n}: Props) => {\n const { width: maxWidth } = useContext(PaneSizeContext);\n const labelWidth = useContext(LabelSizeContext);\n // $FlowFixMe\n const style: CSSStyleDeclaration = useMemo(() => {\n const style: CSSStyleDeclaration = {\n flexShrink: 1,\n };\n if (width && width > 0) style.width = width + \"px\";\n else style.minWidth = \"100px\";\n return style;\n }, [width]);\n\n const margins = 45;\n const labelMargins = 15;\n const wrapperStyle: CSSStyleDeclaration = useMemo(\n () => ({\n display: \"flex\",\n justifyContent: \"space-between\",\n maxWidth: maxWidth - labelWidth - margins - labelMargins,\n }),\n [maxWidth, labelWidth, margins, labelMargins]\n );\n\n return (\n \n \n
\n \n {value}\n \n {value && String(value).length > 0 && (\n \n )}\n
\n
\n );\n};\n\nGeoRasterViewerControl.displayName = \"GeoRasterViewerControl\";\nexport default GeoRasterViewerControl;\n","/* istanbul ignore file */\n\nimport Loader from \"components/Loader\";\nimport { LoadingType } from \"data/types\";\n\nexport default Loader(\n {\n loader: () =>\n import(\n \"./GeoPointEditorControl\" /* webpackChunkName: \"component-GeoPointEditorControl\" */\n ),\n },\n LoadingType.Status\n);\n","/* istanbul ignore next */\nfunction getRadianAngle(degreeValue) {\n return (degreeValue * Math.PI) / 180;\n}\n\n/* istanbul ignore next */\nexport const createImage = (url) =>\n new Promise((resolve, reject) => {\n const image = new Image();\n image.addEventListener(\"load\", () => resolve(image));\n image.addEventListener(\"error\", (error) => reject(error));\n image.setAttribute(\"crossOrigin\", \"anonymous\"); // needed to avoid cross-origin issues\n image.src = url;\n });\n\n/**\n * This function was adapted from the one in the ReadMe of https://github.com/DominicTobias/react-image-crop\n * @param {File} image - Image File url\n * @param {Object} pixelCrop - pixelCrop Object provided by react-easy-crop\n * @param {number} rotation - optional rotation parameter\n */\n/* istanbul ignore next */\nexport default async function getCroppedImg(imageSrc, pixelCrop, rotation = 0) {\n // First, calculate the bounding box size:\n const image = await createImage(imageSrc);\n\n const rotRad = getRadianAngle(rotation);\n const bBoxWidth =\n Math.abs(Math.cos(rotRad) * image.width) +\n Math.abs(Math.sin(rotRad) * image.height);\n const bBoxHeight =\n Math.abs(Math.sin(rotRad) * image.width) +\n Math.abs(Math.cos(rotRad) * image.height);\n\n // Second, create a canvas element with the size of the bounding box:\n const canvas = document.createElement(\"canvas\");\n\n canvas.width = bBoxWidth;\n canvas.height = bBoxHeight;\n\n // Then, rotate the canvas context around the center of the canvas:\n const ctx = canvas.getContext(\"2d\");\n\n ctx.translate(bBoxWidth / 2, bBoxHeight / 2);\n ctx.rotate(rotRad);\n\n // Set context to point to the top-left corner of the rotated image:\n ctx.translate(-image.width / 2, -image.height / 2);\n\n // Draw the image onto the rotated context:\n ctx.drawImage(image, 0, 0);\n\n // What we have in the canvas at this point is a rotated image inside its bounding box.\n // Now, we just need to extract the result using croppedAreaPixels and repaint it on a canvas with the size of the final image:\n\n const data = ctx.getImageData(\n pixelCrop.x,\n pixelCrop.y,\n pixelCrop.width,\n pixelCrop.height\n );\n\n // set the canvas size to the final image size - this will clear existing context\n canvas.width = pixelCrop.width;\n canvas.height = pixelCrop.height;\n\n // paste the extracted image at the top left corner\n ctx.putImageData(data, 0, 0);\n\n // As Base64 string\n return canvas.toDataURL(\"image/jpeg\");\n}\n","import React from \"react\";\nimport Button from \"react-bootstrap/lib/Button\";\nimport ButtonGroup from \"react-bootstrap/lib/ButtonGroup\";\nimport Icons from \"@hs/icons\";\nimport loc from \"i18next\";\nimport { clampInRange } from \"./clampInRange\";\n\nconst degrees = [0, 90, 180, 270];\n\nconst Rotation = ({\n value = 0,\n onRotate,\n}: {\n value: number,\n onRotate: (degrees: number) => void,\n}) => {\n const setRotation = clampInRange(\n degrees,\n degrees.findIndex((v) => v === value)\n );\n\n return (\n \n onRotate(setRotation.prev())}\n >\n \n \n\n onRotate(setRotation.next())}\n >\n \n \n \n );\n};\nRotation.displayName = \"ImageEditor.Rotation\";\nexport default Rotation;\n","// idea extended from https://github.com/watson/roundround/blob/master/index.js\nexport function clampInRange(array, index) {\n index = index || 0;\n\n /* istanbul ignore next */\n if (array == null || !Array.isArray(array))\n throw new Error(\"Expecting argument to RoundRound to be an Array\");\n\n return {\n prev: () => {\n if (index <= 0) index = array.length;\n return array[--index];\n },\n next: () => {\n if (index >= array.length - 1) index = -1;\n return array[++index];\n },\n };\n}\n","import React from \"react\";\nimport Button from \"react-bootstrap/lib/Button\";\nimport ButtonGroup from \"react-bootstrap/lib/ButtonGroup\";\nimport Icons from \"@hs/icons\";\nimport loc from \"i18next\";\n\nconst Zoom = ({\n value,\n maxZoom,\n onZoom,\n}: {\n value: number,\n maxZoom: number,\n onZoom: (zoom: number) => void,\n}) => (\n \n onZoom(value + 1)}\n >\n \n \n\n onZoom(value - 1)}\n >\n \n \n \n);\n\nZoom.displayName = \"ImageEditor.Zoom\";\nexport default Zoom;\n","// @flow\nimport React from \"react\";\nimport Modal, { ModalSize } from \"components/Modal\";\nimport Button from \"react-bootstrap/lib/Button\";\nimport ButtonToolbar from \"react-bootstrap/lib/ButtonToolbar\";\nimport { createModal } from \"react-modal-promise\";\nimport Icons from \"@hs/icons\";\nimport loc from \"i18next\";\nimport styles from \"./ImageEditorModal.module.css\";\nimport Cropper from \"react-easy-crop\";\nimport getCroppedImg from \"./cropImage\";\nimport Rotation from \"./rotation\";\nimport Zoom from \"./zoom\";\n\nconst MAX_ZOOM = 10;\n\ntype Props = {\n /** react-modal-promise: whether to show dialog */\n open: boolean,\n /** react-modal-promise: callback when user closes Dialog\n * @param {{croppedImage : string}} croppedImage new image after editing\n */\n close: ({ croppedImage: string }) => void,\n /** Modal Dialog title */\n title?: string,\n /** dataURL (base64) encoded image */\n src: string,\n /** requested image height */\n height: number,\n /** requested image width */\n width: number,\n};\n\ntype State = {\n crop: ?Object,\n zoom: number,\n aspect: Number,\n rotation: number,\n croppedAreaPixels: ?Object,\n};\n\n/** presents a simple image editor (rotate, crop, ...) dialog to the user\n */\nexport class ImageEditorModal extends React.PureComponent {\n constructor(props: Props) {\n super(props);\n this.state = {\n crop: { x: 0, y: 0 },\n zoom: 1,\n aspect: 4 / 3,\n rotation: 0,\n croppedAreaPixels: null,\n };\n }\n\n _onDone = async () => {\n const croppedImage = await getCroppedImg(\n this.props.src,\n this.state.croppedAreaPixels,\n this.state.rotation\n );\n this.props.close({ croppedImage });\n };\n\n _onCropChange = (crop) => this.setState({ crop });\n\n _onCropComplete = (croppedArea, croppedAreaPixels) =>\n this.setState({ croppedAreaPixels });\n\n _onZoomChange = (zoom) => this.setState({ zoom });\n\n _onRotationChange = (rotation) => this.setState({ rotation });\n\n render() {\n const { open, close, title } = this.props;\n return (\n close()}\n dialogClassName={styles.modal}\n >\n \n \n {title}\n \n \n \n \n \n \n \n \n \n \n\n {/* {this.state.legacy && (\n \n )} */}\n \n \n \n \n \n );\n }\n}\nexport const openImageEditorModal = createModal(ImageEditorModal);\n","import React from \"react\";\r\nimport ImageViewerControl from \"components/ExtraAttributes/ViewerControl/ImageViewerControl\";\r\nimport FileDropHandler, { type DroppedFile } from \"containers/FileDropHandler\";\r\nimport styles from \"./UploadImage.module.css\";\r\nimport Button from \"react-bootstrap/lib/Button\";\r\nimport Icons from \"@hs/icons\";\r\nimport { getFileExtension } from \"data/utils\";\r\nimport { openImageEditorModal } from \"./ImageEditorModal\";\r\nimport loc from \"i18next\";\r\nimport { toastStyled, toastTypes } from \"data/toast\";\r\nimport { defaultFallbackImage } from \"components/ExtraAttributes/ViewerControl/ImageViewerControl\";\r\nimport { type ImageResultDTO } from \"data/types\";\r\n\r\ntype Props = {\r\n /** relativePath for upload queue (e.g. while offline) */\r\n relativePath: string,\r\n /** unique attribute name */\r\n name: string,\r\n /** attribute header */\r\n header: string,\r\n /** current image blob */\r\n value: ?string | ImageResultDTO,\r\n /** optional pixel width */\r\n width?: number,\r\n /** optional pixel height */\r\n height?: number,\r\n /** whether to allow editing */\r\n isReadonly?: boolean,\r\n /** CSV list of image file extensions (with .) to accept\r\n * @default \".png,.jpg,.jpeg,.jfif,.gif\"\r\n */\r\n accept?: string,\r\n /** callback when user chose file to upload\r\n * @param {string} base64 image encoded as base64\r\n */\r\n onDone: (base64: string) => void,\r\n /** optional id for input element */\r\n id?: string,\r\n};\r\n\r\n// https://github.com/GrillWork/react-file-reader/blob/master/ReactFileReader.js\r\nexport default class UploadImage extends React.PureComponent {\r\n _input: HTMLInputElement | null;\r\n\r\n static defaultProps = {\r\n isReadonly: false,\r\n accept: \".png,.jpg,.jpeg,.jfif,.gif\",\r\n };\r\n\r\n _onDrop = (files: Array) => {\r\n if (files.length !== 1) {\r\n toastStyled({\r\n message: loc.t(\"upload:image.onlyOne\"),\r\n ...toastTypes.failure,\r\n });\r\n return;\r\n }\r\n const file = files[0].data;\r\n if (this._validateFile(file)) this._processFile(file);\r\n };\r\n\r\n _onBrowse = (e) => this._input && this._input.click();\r\n\r\n _onBrowseChange = (e) => {\r\n // get the files\r\n let files = e.target.files;\r\n /* istanbul ignore next */\r\n if (files.length !== 1) return;\r\n e.persist();\r\n\r\n // Process single first file\r\n let file = files[0];\r\n if (this._validateFile(file))\r\n this._processFile(file, () => {\r\n // We clear the input after a file is selected, because otherwise\r\n // change event is not fired in Chrome and Safari when a file\r\n // with the same name is selected.\r\n // ___Why not use value=\"\" on instead?\r\n // Because if we use that method of clearing the input,\r\n // Chrome will not trigger change if we drop the same file twice (Issue #768).\r\n e.target.value = null;\r\n });\r\n };\r\n\r\n _validateFile = (file: Blob): boolean => {\r\n const ext = getFileExtension(file.name);\r\n if (this.props.accept.indexOf(ext) === -1) {\r\n toastStyled({\r\n message: loc.t(\"upload:image.invalidFile\", {\r\n valid: this.props.accept,\r\n }),\r\n ...toastTypes.failure,\r\n });\r\n return false;\r\n }\r\n return true;\r\n };\r\n\r\n _processFile = (file: Blob, cb?: Function) => {\r\n // Make new FileReader\r\n const reader = new FileReader();\r\n reader.addEventListener(\"loadend\", () => {\r\n /* istanbul ignore else */\r\n if (reader.readyState === 2) {\r\n /* istanbul ignore else */\r\n if (typeof this.props.onDone === \"function\")\r\n this.props.onDone(reader.result);\r\n } else {\r\n console.warn(\r\n `UploadImage Cannot load file ${file.name}: ${reader.error.message}`\r\n );\r\n }\r\n /* istanbul ignore else */\r\n if (typeof cb === \"function\") cb();\r\n });\r\n\r\n // Convert the file to base64 text\r\n reader.readAsDataURL(file);\r\n };\r\n\r\n _onEdit = () => {\r\n const { src } = this._parseValueAsImageResultDTO();\r\n openImageEditorModal({\r\n title: loc.t(\"upload:image.title\", { name: this.props.header }),\r\n src,\r\n width: this.props.width,\r\n height: this.props.height,\r\n }).then((result) => result && this.props.onDone(result.croppedImage));\r\n };\r\n\r\n _parseValueAsImageResultDTO = () => {\r\n const { value } = this.props;\r\n if (!value) {\r\n return {\r\n src: defaultFallbackImage,\r\n fallback: true,\r\n };\r\n } else if (typeof value === \"string\") {\r\n return {\r\n src: value,\r\n fallback: false,\r\n };\r\n } else {\r\n return this.props.value;\r\n }\r\n };\r\n\r\n render() {\r\n const { src, fallback: hideEdit } = this._parseValueAsImageResultDTO();\r\n\r\n const viewer = (\r\n \r\n );\r\n\r\n if (this.props.isReadonly)\r\n return (\r\n
\r\n {viewer}\r\n
\r\n );\r\n else\r\n return (\r\n \r\n {src && viewer}\r\n
\r\n (this._input = ref)}\r\n id={this.props.id}\r\n />\r\n \r\n \r\n

{loc.t(\"upload:image.upload.button\")}

\r\n \r\n {!hideEdit && (\r\n \r\n \r\n

{loc.t(\"upload:image.edit.button\")}

\r\n \r\n )}\r\n
\r\n \r\n );\r\n }\r\n}\r\n","// @flow\r\nimport React from \"react\";\r\nimport FormsyEditorBase from \"./FormsyEditorBase\";\r\nimport UploadImage from \"components/UploadImage\";\r\n\r\ntype Props = {\r\n itemUri: string,\r\n name: string,\r\n header: string,\r\n value: Object,\r\n width?: number,\r\n height?: number,\r\n isReadonly?: boolean,\r\n isRequired?: boolean,\r\n};\r\n\r\nconst ImageEditorControl = (props: Props) => (\r\n (\r\n \r\n changeValue({ currentTarget: { value } })\r\n }\r\n id={props.name}\r\n />\r\n )}\r\n {...props}\r\n />\r\n);\r\nImageEditorControl.displayName = \"ImageEditorControl\";\r\nexport default ImageEditorControl;\r\n","import { openProgressModal } from \"components/ProgressModal\";\nimport { LocationToString } from \"components/MapViewer/utils\";\nimport loc from \"i18next\";\nimport geoLocatorOptions from \"components/LocatorButton/geoLocatorOptions\";\n\ntype Props = {\n /** callback when user's geolocation successfully retrieved\n * @param {string} strLocation string coordinates\n */\n onLocation: (strLocation: string) => void,\n};\n\nconst getGeoLocation = async ({ onLocation }: Props) => {\n const geolocator = await import(\"geolocator\");\n return openProgressModal({\n icon: \"earth-europe\",\n title: loc.t(\"common:location.loading\"),\n doWork: (close, setError) =>\n geolocator.default.locate(geoLocatorOptions(), (err, location) => {\n if (err) {\n /* istanbul ignore next */\n if (err.message != null) setError(err.message);\n else setError(\"Unknown Error Occured.\");\n console.warn(err);\n } else {\n onLocation(LocationToString(location.coords));\n close();\n }\n }),\n });\n};\n\nexport default getGeoLocation;\n","// @flow\n// import { SearchItemDTO } from \"data/types\";\n\n// type BarcodeConfig = {\n// description: string,\n// matchRegexp: RegExp,\n// searchItem: SearchItemDTO\n// };\n\n// const barcodes: Array = [\n// {\n// description:\n// \"by Freetext: will retrieve k code from a SolothurnURL e.g. https://geo.so.ch/map/?k=cde94a977\",\n// matchRegexp: /k=(.*)/gm,\n// searchItem: {\n// name: \"QR location search\",\n// searchType: 2, //SearchItemType.Freetext\n// itemUri: \"pam-item://hierarchy=51@path=78$-7\\\\,82$-8812\\\\,83$-8813\",\n// scope: 2, //SearchScope.CurrentFolder\n// filters: [\n// // {\n// // name: \"sys.itemtype\",\n// // value: \"Folder\"\n// // },\n// {\n// name: \"KCode\",\n// valueMatchGroup: 1,\n// op: 8, //SearchOperator.Equals,\n// valueType: \"String\", //SearchValueType.String\n// nodeType: 0 //SearchNodeType.AllNodes\n// }\n// ]\n// }\n// }\n// // {\n// // description:\n// // \"by SearchForm: will retrieve k code from a SolothurnURL e.g. https://geo.so.ch/map/?k=cde94a977\",\n// // matchRegexp: /k=(.*)/gm,\n// // searchItem: {\n// // pageNum: 0,\n// // id: 9410, //\"Barcode - Solothurn\"\n// // // name: \"QR location search\",\n// // searchType: 3, //SearchItemType.Form\n// // filters: [\n// // // {\n// // // name: \"sys.itemtype\",\n// // // value: \"Folder\"\n// // // },\n// // {\n// // name: \"KCode\",\n// // op: 8,//SearchOperator.Equals,\n// // valueType: \"String\", //SearchValueType.String\n// // nodeType: 0, //SearchNodeType.AllNodes\n// // matchGroup: 1\n// // }\n// // ]\n// // }\n// // }\n// ];\n\n// export /**\n// * tries to match a barcode configuration and returns filters to set\n// *\n// * @param {{ code: string }} { code } barcode scanned\n// * @returns {{ barcode: BarcodeConfig, filters: Object }}\n// */\n// const findBarcodeConfig = ({ code }: { code: string }) => {\n// let i = 0;\n// // loop through all barcode configs\n// while (i < barcodes.length) {\n// let barcode = barcodes[i++];\n// let m;\n// // find all matches\n// while ((m = barcode.matchRegexp.exec(code)) !== null) {\n// // This is necessary to avoid infinite loops with zero-width matches\n// if (m.index === barcode.matchRegexp.lastIndex) {\n// barcode.matchRegexp.lastIndex++;\n// }\n// // anything found?\n// if (m.length > 0) {\n// const filters = [];\n// // let's build a filter list searchItemType.FreeText\n// // eslint-disable-next-line\n// barcode.searchItem.filters.forEach(filter => {\n// if (filter.value) filters.push(filter);\n// else if (filter.valueMatchGroup)\n// filters.push(\n// Object.assign(\n// {},\n// filter,\n// { valueMatchGroup: null },\n// { value: m[filter.valueMatchGroup] }\n// )\n// );\n// });\n// return {\n// barcode,\n// filters\n// };\n// }\n// }\n// }\n// return null;\n// };\n\nexport const getBarcodeMatch = ({\n code,\n matchRegexp,\n}: {\n code: string,\n matchRegexp: string,\n}): ?string => {\n let m;\n const re = new RegExp(matchRegexp, \"gmi\");\n // find all matches\n while ((m = re.exec(code)) !== null) {\n // This is necessary to avoid infinite loops with zero-width matches\n /* istanbul ignore if */\n if (m.index === re.lastIndex) {\n re.lastIndex++;\n }\n // anything found?\n /* istanbul ignore else */\n if (m.length > 1) {\n return m[1];\n }\n }\n return null;\n};\n","// import { openBarcodeModal } from \"components/BarcodeModal\";\nimport { getBarcodeMatch } from \"data/barcode\";\n\ntype Props = {\n /** Barcode modal title */\n title: string,\n /** callback once barcode was read (or user clicked cancel)\n * @note will NOT be called if user clicked Cancel\n * @param {?string} barcode null if no match or barcode itself\n */\n onBarcode: (barcode: ?string) => void,\n /** optional RegExp to retrieve code from QR Barcode */\n matchRegexp?: string,\n};\n\n/**\n * shows a Barcode Model to scan/upload a barcode,\n * matches it and returns the matched code\n// TODO currently only QR codes supported, normal Barcode do not need any regexp!\n */\nconst getBarcode = async ({ title, onBarcode, matchRegexp }: Props) => {\n const { openBarcodeModal } = await import(\n \"components/BarcodeModal\" /* webpackChunkName: \"barcode\" */\n );\n openBarcodeModal({\n title,\n }).then((code) => {\n // user clicked cancel/closed modal?\n if (code === false) {\n return;\n }\n const result = matchRegexp\n ? getBarcodeMatch({ code, matchRegexp })\n : code;\n onBarcode(result);\n });\n};\n\nexport default getBarcode;\n","import { searchRouteWithItem } from \"components/ItemUriLink\";\nimport history from \"data/history\";\nimport {\n type SearchItemDTO,\n SearchItemType,\n type SearchFilterDTO,\n type SearchSortDTO,\n NotificationStyle,\n} from \"data/types\";\nimport getGeoLocation from \"./searchResult_form.geoLocation\";\nimport getBarcode from \"./searchResult_form.barcode\";\nimport loc from \"i18next\";\nimport { toastStyled } from \"data/toast\";\nimport { tokenize } from \"data/utils\";\n\nexport /**\n * will prefix the filter's name with \".\" (unless $SEARCHTEXT$) to signalize the server-side processing to replace only the value\n * and take all filter properties as configured in the search form\n * @param {*} name\n */\nconst fixSearchFilterName = (name) =>\n name.toLowerCase() === \"$searchtext$\" ? \"$SEARCHTEXT$\" : \".\" + name; //only overwrite value (see SearchQueryConversion.cs)\n\n/**\n * create a searchItem object and navigate to the /searchresult view\n */\nconst runSearchItem = ({\n id,\n name,\n showFilterbar,\n searchType,\n viewMode,\n filters,\n sorts,\n}) =>\n history.push(\n searchRouteWithItem({\n id,\n name,\n searchType,\n fb: showFilterbar ? 1 : 0,\n vm: viewMode,\n filters: JSON.stringify(filters),\n sorts: JSON.stringify(sorts),\n })\n );\n\nexport const createSearchItem = ({\n id,\n name,\n showFilterbar,\n searchType,\n viewMode,\n filters,\n sorts,\n onSearchItemCreated,\n}) => {\n const searchItem: SearchItemDTO = {\n id,\n name,\n searchType: searchType || SearchItemType.Form,\n showFilterbar:\n showFilterbar !== \"false\" && showFilterbar !== false ? true : false,\n viewMode,\n filters: filters && JSON.parse(JSON.stringify(filters)), //HACK: We need a mutable object for this function\n sorts,\n };\n // analyse required filters (any tokens?)\n if (filters && filters.length > 0) {\n // any user.Name or user.Id token?\n const userFilter = searchItem.filters.find(\n (f) =>\n f.value &&\n (String(f.value).toLowerCase().indexOf(\"{user.name}\") !== -1 ||\n String(f.value).toLowerCase().indexOf(\"{user.id}\") !== -1)\n );\n if (userFilter) {\n userFilter.value = tokenize(userFilter.value, null);\n }\n\n // any geolocation token?\n const geoFilter = searchItem.filters.find(\n (f) =>\n f.value &&\n String(f.value).toLowerCase().indexOf(\"{geolocation}\") !== -1\n );\n if (geoFilter) {\n getGeoLocation({\n onLocation: (strLoc) => {\n geoFilter.name = fixSearchFilterName(geoFilter.name); //only overwrite value (see SearchQueryConversion.cs)\n // geolocation string format with radius (as required by inPoint.Web.Server for geoField radius search)\n const geolocation = `${strLoc},${geoFilter.radius || 1000}`;\n geoFilter.value = tokenize(geoFilter.value, {\n geolocation,\n });\n onSearchItemCreated(searchItem);\n },\n });\n return null;\n }\n\n // or barcode token?\n const barcodeFilter = searchItem.filters.find(\n (f) =>\n f.value &&\n String(f.value).toLowerCase().indexOf(\"{barcode}\") !== -1\n );\n if (barcodeFilter) {\n getBarcode({\n title: name,\n matchRegexp: barcodeFilter.matchRegexp,\n onBarcode: (barcode) => {\n if (barcode == null) {\n toastStyled({\n icon: \"triangle-exclamation\",\n style: NotificationStyle.Error,\n toastId: \"barcode-failure\",\n message: loc.t(\"barcode:noMatch\"),\n });\n return;\n }\n barcodeFilter.name = fixSearchFilterName(\n barcodeFilter.name\n ); //only overwrite value (see SearchQueryConversion.cs)\n barcodeFilter.value = tokenize(barcodeFilter.value, {\n barcode,\n });\n onSearchItemCreated(searchItem);\n },\n });\n return null;\n }\n }\n return searchItem;\n};\n\nexport /**\n * a Promise version of the createSearchItem() function (in case of placeholders it uses callbacks)\n */\nconst createSearchItemAsync = (\n searchItem: SearchItemDTO\n): Promise =>\n new Promise((resolve, reject) => {\n const newSearchItem = createSearchItem({\n ...searchItem,\n onSearchItemCreated: resolve,\n });\n /* istanbul ignore else */\n if (newSearchItem != null) resolve(newSearchItem);\n });\n\ntype Context = {\n title: string,\n searchForm: number,\n showFilterbar?: boolean | string,\n viewMode?: string,\n filters?: Array,\n sorts?: Array,\n};\n\nclass searchResult_form {\n /**\n * shows searchResults for a pre-defined searchForm\n * @param {{ title: string }} { title } the modal title\n * @param {{ searchForm: number }} { searchForm } searchForm.id to run\n * @param {{ showFilterbar: boolean }} { showFilterbar } whether to include Filterbar (default: true)\n * @param {{ viewMode: string }} { viewMode } change default viewMode (List/Map) (default: List)\n * @param {{ filters: Array }} { filters } set additional filters\n * @param {{ sorts: Array }} { sorts } set sorting\n */\n execute = ({\n title,\n searchForm,\n showFilterbar,\n viewMode,\n filters,\n sorts,\n }: Context) => {\n const searchItem = createSearchItem({\n id: searchForm,\n name: title,\n showFilterbar,\n viewMode,\n filters,\n sorts,\n onSearchItemCreated: runSearchItem,\n });\n if (searchItem != null) {\n // no filters / nor geolocation / nor barcode\n runSearchItem(searchItem);\n }\n return true;\n };\n}\n\nexport default searchResult_form;\n","import { getLocalizedParamLabel, getLocalizedParamTitle } from \"./utils\";\n\nconst ParamText = ({ param, labelClassName, valueClassName }) => {\n const [, value] = param.split(\"=\", 2);\n const localizedLabel = getLocalizedParamLabel(param);\n const localizedTitle = getLocalizedParamTitle(param, localizedLabel);\n return (\n <>\n \n {localizedLabel}\n \n :{\" \"}\n \n {value}\n \n \n );\n};\n\nParamText.displayName = \"SearchParam.Text\";\nexport default ParamText;\n","import Label from \"react-bootstrap/lib/Label\";\nimport Text from \"./Text\";\n\nconst ParamLabel = ({ param, className }) => {\n return (\n \n );\n};\n\nParamLabel.displayName = \"SearchParam.Label\";\nexport default ParamLabel;\n","import Label from \"./Label\";\nimport Text from \"./Text\";\n\nimport {\n getLocalizedSearchLabel,\n getLocalizedParamLabel,\n getLocalizedParamTitle,\n} from \"./utils\";\n\nconst SearchParam = {\n Label,\n Text,\n};\n\nexport {\n getLocalizedSearchLabel,\n getLocalizedParamLabel,\n getLocalizedParamTitle,\n};\n\nexport default SearchParam;\n","import React from \"react\";\nimport { getDisplayName } from \"data/constants\";\n\ntype Config = {\n mapper: () => string,\n};\n\nconst withViewName =\n ({ mapper }: Config) =>\n (WrappedComponent: ComponentType) => {\n const HOC = (props: Props) => {\n const viewName = mapper(props);\n return ;\n };\n HOC.displayName = `withViewName(${getDisplayName(WrappedComponent)})`;\n return HOC;\n };\n\nexport default withViewName;\n","// @flow\r\n//#region imports\r\nimport React, {\r\n useState,\r\n useCallback,\r\n useEffect,\r\n useMemo,\r\n type Node,\r\n} from \"react\";\r\nimport { useEffectOnce, useUpdateEffect, useRecycleBin } from \"hooks\";\r\nimport { History } from \"history\";\r\nimport { withRouter } from \"react-router\";\r\nimport TogglesHandler from \"containers/TogglesHandler\";\r\nimport styles from \"./document.module.css\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { compose } from \"redux\";\r\nimport queryString from \"data/queryString\";\r\nimport MainLayout from \"components/MainLayout\";\r\nimport FormContainer from \"containers/Form\";\r\nimport DocViewerContainer from \"containers/DocViewer\";\r\nimport ActivitiesContainer from \"containers/Activities\";\r\nimport {\r\n setCurrentItemAction,\r\n setCurrentBreadcrumb,\r\n backupCurrentItemAction,\r\n restoreCurrentItemAction,\r\n formSetEditModeAction,\r\n} from \"data/actions\";\r\nimport {\r\n RefreshMode,\r\n ServerEventItemType,\r\n ServerEventActionType,\r\n ItemContextKey,\r\n type ToggleDTO,\r\n} from \"data/types\";\r\nimport GlobalEventsHandler from \"containers/GlobalEventsHandler\";\r\nimport CommandActionHandler from \"components/CommandActions\";\r\nimport Constants, { isMiniView } from \"data/constants\";\r\nimport SplitPanes from \"containers/SplitPanes\";\r\nimport loc from \"i18next\";\r\n// import FloatingBarList from \"components/FloatingBar/FloatingBarList\";\r\nimport FileDropHandler, { type DroppedFile } from \"containers/FileDropHandler\";\r\nimport { toastStyled, toastTypes } from \"data/toast\";\r\nimport {\r\n check_isSyncUpload,\r\n check_licenseAllowEdit,\r\n} from \"containers/ActionPanel/ShouldBeVisible\";\r\n\r\nimport SuggestionHandler from \"containers/SuggestionHandler\";\r\nimport Pane from \"components/SplitPanes/Pane\";\r\nimport Status from \"components/Status\";\r\nimport withItemContext from \"containers/ItemContext\";\r\nimport withItemUri from \"containers/ItemUri\";\r\nimport withViewName from \"containers/ViewName\";\r\nimport ItemContextProvider from \"containers/ItemContext/Provider\";\r\nimport {\r\n breadcrumbVersionSelector,\r\n formIsEditModeSelector,\r\n breadcrumbFormatIdSelector,\r\n} from \"data/reducers/selectors\";\r\n//#endregion\r\n\r\n//#region flow types\r\ntype Props = {\r\n /** React-router History */\r\n history: History,\r\n /** withItemUri: either prop or by location */\r\n itemUri: string,\r\n /** whether shown as Modal */\r\n asModal?: boolean,\r\n /** React Node to show before toolbar */\r\n topRowBefore?: Node,\r\n /** React Node to show after toolbar */\r\n topRowEnd?: Node,\r\n /** callback when user wants to see previous doc */\r\n onPrev?: Function,\r\n /** callback when user wants to see next doc */\r\n onNext?: Function,\r\n // from TogglesHandler\r\n /** TogglesHandler: set current toggles */\r\n setToggles: Function,\r\n /** TogglesHandler: current toggles */\r\n toggles: ?ToggleDTO,\r\n /** Redux: current itemUri */\r\n itemUri: string,\r\n /** Redux: breadcrumb itemUri version */\r\n version?: number,\r\n /** whether current document is a favorite */\r\n isFav: boolean,\r\n /** current document name */\r\n docName: string,\r\n /** current viewName */\r\n viewName: string,\r\n /** whether running under Windows OS */\r\n onWindows: boolean,\r\n /** whether trigger edit mode on mount */\r\n triggerEditMode: boolean,\r\n /** TogglesHandler: currently selected toggles' names */\r\n selectedToggles: Array,\r\n /** SplitPanes callback to set split sizes */\r\n setSplitSizes: Function,\r\n /**pdf.js: search terms */\r\n searchTerm?: string,\r\n /** pdf.js: whether trigger browser print */\r\n triggerPrint: boolean,\r\n};\r\n//#endregion\r\n\r\nexport const Document = ({\r\n viewName,\r\n itemUri,\r\n refreshId,\r\n isDocClassificationEditAllowed,\r\n isEditMode,\r\n triggerEditMode: triggerEditModeFromProps,\r\n isFlatAU,\r\n itemStatus: itemStatusFromProps,\r\n toggles,\r\n setToggles,\r\n setSplitSizes,\r\n searchTerm: searchTermFromProps,\r\n triggerPrint: triggerPrintFromProps,\r\n asModal,\r\n topRowBefore,\r\n topRowEnd,\r\n onPrev,\r\n onNext,\r\n history: { location },\r\n}: Props) => {\r\n const formatId = useSelector((state) =>\r\n breadcrumbFormatIdSelector(state, viewName)\r\n );\r\n const versionFromStore = useSelector((state) =>\r\n breadcrumbVersionSelector(state, viewName)\r\n );\r\n const isMini = isMiniView(location);\r\n const formInEditMode = useSelector((state) =>\r\n formIsEditModeSelector(state, viewName)\r\n );\r\n const [version, setVersion] = useState(versionFromStore || 0);\r\n const [versionedItemUri, setVersionedItemUri] = useState(null);\r\n\r\n const qs = queryString.parse(location.search);\r\n\r\n const searchTerm = qs.mark ?? searchTermFromProps;\r\n const triggerPrint =\r\n Object.prototype.hasOwnProperty.call(qs, \"print\") ||\r\n !!triggerPrintFromProps;\r\n const triggerEditModeFromPropsOrQs =\r\n Object.prototype.hasOwnProperty.call(qs, \"edit\") ||\r\n !!triggerEditModeFromProps;\r\n const [triggerEditMode, setTriggerEditMode] = useState(\r\n triggerEditModeFromPropsOrQs\r\n );\r\n\r\n const dispatch = useDispatch();\r\n\r\n useEffectOnce(() => {\r\n dispatch(backupCurrentItemAction());\r\n return () => {\r\n dispatch(setCurrentBreadcrumb({ breadcrumb: {}, viewName }));\r\n dispatch(formSetEditModeAction(\"doc\", false));\r\n dispatch(restoreCurrentItemAction());\r\n };\r\n });\r\n\r\n // Trigger Edit Mode\r\n useUpdateEffect(() => {\r\n if (!triggerEditMode || isDocClassificationEditAllowed == null) return;\r\n if (isDocClassificationEditAllowed) {\r\n if (!isEditMode) {\r\n dispatch(formSetEditModeAction(\"doc\", true));\r\n setTriggerEditMode(false);\r\n }\r\n } else {\r\n if (isEditMode) {\r\n dispatch(formSetEditModeAction(\"doc\", false));\r\n }\r\n toastStyled({\r\n message: loc.t(\"document:edit_form.notAuthorized\"),\r\n ...toastTypes.failure,\r\n });\r\n }\r\n }, [isEditMode, isDocClassificationEditAllowed, triggerEditMode, dispatch]);\r\n\r\n useEffect(() => {\r\n setVersion(versionFromStore);\r\n }, [versionFromStore]);\r\n\r\n useEffect(() => {\r\n setVersion(0);\r\n setVersionedItemUri(null);\r\n setTriggerEditMode(!!triggerEditModeFromPropsOrQs);\r\n dispatch(formSetEditModeAction(\"doc\", false));\r\n dispatch(\r\n setCurrentItemAction({\r\n name: viewName,\r\n itemUri,\r\n })\r\n );\r\n }, [viewName, itemUri, refreshId, triggerEditModeFromPropsOrQs, dispatch]);\r\n useEffect(() => {\r\n dispatch(\r\n setCurrentItemAction({\r\n name: viewName,\r\n itemUri,\r\n })\r\n );\r\n }, [viewName, itemUri, dispatch]);\r\n\r\n const handleDrop = useCallback(\r\n (files?: Array) => {\r\n CommandActionHandler(\"doc_uploadVersion\", {\r\n files,\r\n itemUri,\r\n });\r\n },\r\n [itemUri]\r\n );\r\n\r\n const handleCancelForm = useCallback(\r\n () => dispatch(formSetEditModeAction(\"doc\", false)),\r\n [dispatch]\r\n );\r\n\r\n const handleShowVersion = useCallback(\r\n (version: number, itemUri: string) => {\r\n setVersion(version);\r\n setVersionedItemUri(itemUri);\r\n },\r\n []\r\n );\r\n\r\n const [, checkIfDeleted, checkIfAnyParentDeleted, checkIfInRecycleBin] =\r\n useRecycleBin(itemUri, itemStatusFromProps);\r\n\r\n //#region ItemContextProvider effects\r\n const effects = useMemo(\r\n () => ({\r\n [ItemContextKey.Toggles]: (toggles) => setToggles(toggles),\r\n }),\r\n [setToggles]\r\n );\r\n //#endregion\r\n\r\n const itemUriWithVersion = versionedItemUri || itemUri;\r\n if (isMini && checkIfInRecycleBin()) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n {(itemContext) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {!itemContext.isFlatAU && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {!itemContext.isFlatAU && (\r\n \r\n )}\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport const mapViewerName = ({ asModal }: Props) =>\r\n asModal ? \"docmodal\" : \"document\";\r\n\r\nexport const DocumentWithoutHash = compose(\r\n withRouter,\r\n withViewName({\r\n mapper: mapViewerName,\r\n }),\r\n withItemUri,\r\n TogglesHandler({}),\r\n GlobalEventsHandler({\r\n items: [ServerEventItemType.document],\r\n actions: [ServerEventActionType.delete],\r\n refreshMode: RefreshMode.Originator,\r\n refreshMessage: \"$globalEvents:document.delete\",\r\n refreshRoute: false,\r\n }),\r\n SplitPanes({\r\n paneIds: [\r\n \"#viewerPanel\",\r\n \"#drightPanel\",\r\n \"#docformPanel\",\r\n \"#docActivityPanel\",\r\n ],\r\n toggleIds: [\"viewer\", \"form\", \"act\"],\r\n }),\r\n withItemContext({\r\n asProps: [\r\n ItemContextKey.IsFlatAU,\r\n ItemContextKey.ItemStatus,\r\n ItemContextKey.IsDocClassificationEditAllowed,\r\n ],\r\n })\r\n)(Document);\r\n\r\nexport default compose(\r\n withRouter,\r\n withViewName({\r\n mapper: mapViewerName,\r\n }),\r\n withItemUri,\r\n SuggestionHandler({ docSearchProvider: true }),\r\n TogglesHandler({}),\r\n GlobalEventsHandler({\r\n items: [ServerEventItemType.document],\r\n actions: [ServerEventActionType.delete],\r\n refreshMode: RefreshMode.Originator,\r\n refreshMessage: \"$globalEvents:document.delete\",\r\n refreshRoute: false,\r\n }),\r\n SplitPanes({\r\n paneIds: [\r\n \"#viewerPanel\",\r\n \"#drightPanel\",\r\n \"#docformPanel\",\r\n \"#docActivityPanel\",\r\n ],\r\n toggleIds: [\"viewer\", \"form\", \"act\"],\r\n }),\r\n withItemContext({\r\n asProps: [\r\n ItemContextKey.IsFlatAU,\r\n ItemContextKey.ItemStatus,\r\n ItemContextKey.IsDocClassificationEditAllowed,\r\n ],\r\n })\r\n)(Document);\r\n","// @flow\nimport React from \"react\";\nimport FormGroup from \"react-bootstrap/lib/FormGroup\";\nimport InputGroup from \"react-bootstrap/lib/InputGroup\";\nimport FormControl from \"react-bootstrap/lib/FormControl\";\nimport Icons from \"@hs/icons\";\nimport loc from \"i18next\";\nimport Button from \"react-bootstrap/lib/Button\";\nimport { ParseRaster } from \"components/MapViewer/utils\";\nimport { openMapModal } from \"components/MapModal\";\nimport styles from \"./GeoRasterInput.module.css\";\nimport { getGeoRasterProvider } from \"components/MapViewer/providerSupport\";\nimport { type MarkerDTO } from \"data/types\";\nimport { getClassNames } from \"data/utils\";\n\ntype Props = {\n /** current itemUri */\n itemUri: string,\n /** current formatId */\n formatId: number,\n /** displayName of field */\n label: ?string,\n /** current location in string format */\n value: ?string,\n /** whether to show an icon before the text field */\n showIcon: boolean,\n /** callback when user sets location\n * @param {string} value new location in string format\n */\n onChange: (value: string) => void,\n /** optional callback when user wants to manually set location on map\n * if defined this needs to take of calling openMapModal!\n */\n onSetLocationManually?: () => void,\n /** callback when user sets location by map\n * only needed if onSetLocationManually is not defined\n * @param {string} editLocationResult location set\n */\n onManualLocation?: (editLocationResult: string) => void,\n /** optional CSS class to apply to root element */\n className?: string,\n /** placeholder text to display when @see {value} is empty */\n placeholder?: string,\n /** optional (custom) location marker icon */\n marker?: MarkerDTO,\n /** optional id to use for the input element */\n inputId?: string,\n};\n\ntype State = {\n value: ?string,\n};\n\nclass GeoRasterInput extends React.PureComponent {\n static defaultProps = {\n showIcon: true,\n };\n\n constructor(props: Props) {\n super(props);\n this.state = {\n value: props.value,\n };\n }\n\n componentDidUpdate(prevProps: Props) {\n if (prevProps.value !== this.props.value) {\n this.setState({ value: this.props.value });\n }\n }\n\n /** change location input text value */\n changeValue = (e) =>\n this.setState({ value: e.target.value }, () =>\n this.props.onChange(this.state.value)\n );\n\n /** show map and allow user to change marker's location */\n _setLocationManually = () => {\n const mapProvider = getGeoRasterProvider(\n this.props.itemUri,\n this.props.formatId\n );\n /* istanbul ignore next */\n if (mapProvider == null || mapProvider.isRaster !== true) {\n alert(\n \"Missing Raster configuration - do not know which Raster map to display!\"\n );\n return;\n }\n openMapModal({\n itemUri: this.props.itemUri,\n title: this.props.label,\n usePlaceInput: false,\n mapProvider,\n useMarker: true,\n locations: [\n Object.assign(\n {},\n ParseRaster(\n this.state.value != null &&\n String(this.state.value).length > 0\n ? this.state.value\n : \"\" // only MapViewer knows the real layer ids\n ),\n {\n label: /* istanbul ignore next*/ this.props.label || \"\",\n icon: this.props.marker,\n }\n ),\n ],\n onSet: (editLocationResult: string) =>\n this.props.onManualLocation(editLocationResult),\n });\n };\n\n render = () => (\n \n \n {this.props.showIcon && (\n \n \n \n )}\n \n \n \n \n \n \n {this.props.children}\n \n \n );\n}\nexport default GeoRasterInput;\n","import React from \"react\";\nimport FormsyEditorBase from \"./FormsyEditorBase\";\nimport GeoRasterInput from \"components/GeoRasterInput\";\n\nconst GeoRasterEditorControl = (props) => (\n (\n \n changeValue({ currentTarget: { value } })\n }\n onManualLocation={\n /* istanbul ignore next */ (value: string) =>\n changeValue({ currentTarget: { value } })\n }\n placeholder={props.placeholder}\n inputId={props.name}\n />\n )}\n {...props}\n />\n);\nGeoRasterEditorControl.displayName = \"GeoRasterEditorControl\";\nexport default GeoRasterEditorControl;\n","import React, { useEffect } from \"react\";\nimport { useAsyncMemo } from \"hooks\";\nimport { useSelector, useDispatch, type Dispatch } from \"react-redux\";\nimport { type CardItemResultDTO, CardType, CardItemType } from \"data/types\";\nimport { getCardsByEntityAction } from \"data/actions\";\nimport Constants, { type ConstantsEnum } from \"data/constants\";\nimport Status from \"components/Status\";\nimport * as s from \"data/reducers/selectors\";\nimport Dropdown from \"@hs/dropdown\";\nimport MenuItem from \"react-bootstrap/lib/MenuItem\";\nimport Icons from \"@hs/icons\";\nimport styles from \"./RecentFolderSelect.module.css\";\nimport NativeSelect from \"components/NativeSelect\";\nimport bowser from \"data/bowser\";\nimport { getClassNames } from \"data/utils\";\nimport { fetchBreadcrumb } from \"data/api\";\nimport { maybeLocalizeBreadcrumb } from \"data/utils\";\n\ntype Props = {\n /** callback with first itemUri after loading recents */\n onLoad: (itemUri: string) => void,\n /** which itemUri to pre-select */\n defaultItemUri: ?string,\n /** callback when user changes selection\n * @param {string} itemUri new selected itemUri\n */\n onChange: (itemUri: string) => void,\n /** CSS Classname to apply */\n className?: string,\n};\n\n/** localize the siteName in the breadcrumb text */\nexport const FolderRow = ({\n label,\n siteType,\n className,\n icon,\n color,\n}: {\n label?: string,\n siteType: SiteTypeEnum,\n className?: string,\n icon?: string,\n color?: string,\n}) => {\n return (\n
\n \n \n {label}\n \n
\n );\n};\nFolderRow.displayName = \"FolderRow\";\n\n/** renders a dropdown with recent folders */\nexport const RecentFolderSelect = ({\n onLoad,\n defaultItemUri,\n onChange,\n className,\n}: Props) => {\n const status: ConstantsEnum = useSelector(s.cardsStatusSelector);\n const cards: Array = useSelector(s.cardsCardsSelector);\n const dispatch: Dispatch = useDispatch();\n useEffect(() => {\n if (status === Constants.NONE) {\n dispatch(\n getCardsByEntityAction(\n [CardType.Rec],\n [CardItemType.Folder],\n Constants.LOADING\n )\n );\n }\n }, [status, dispatch]);\n\n const [selectedCard, filteredCards] = useAsyncMemo(\n async () => {\n const filteredCards =\n cards == null\n ? []\n : cards.filter(\n (card) =>\n card.type === CardType.Rec &&\n card.itemtype === CardItemType.Folder\n );\n if (filteredCards.length === 0) return [null, []];\n if (defaultItemUri) {\n let card = filteredCards.find(\n (card) => card.uri === defaultItemUri\n );\n if (card) return [card, filteredCards];\n card = await fetchBreadcrumb(defaultItemUri).then((bc) => ({\n uri: defaultItemUri,\n bcText: bc.text,\n siteType: bc.siteType,\n icon: bc.icon,\n color: bc.color,\n }));\n return [card, [card, ...filteredCards]];\n }\n\n /* istanbul ignore else */\n if (filteredCards.length > 0 && typeof onLoad === \"function\") {\n onLoad(filteredCards[0].uri);\n }\n return [null, filteredCards];\n },\n [cards, defaultItemUri, onLoad],\n [null, []]\n );\n\n if ([Constants.NONE, Constants.LOADING].includes(status)) {\n return ;\n }\n\n if (bowser.is(\"iOS\") || bowser.is(\"mobile\"))\n return (\n onChange(option.K)\n }\n defaultValue={{ K: defaultItemUri }}\n value={{ K: defaultItemUri }}\n options={filteredCards.map((card, index) => ({\n K: card.uri,\n T: maybeLocalizeBreadcrumb(card),\n }))}\n valueKey=\"K\"\n labelKey=\"T\"\n />\n );\n else\n return (\n \n \n {selectedCard && (\n \n )}\n \n \n {filteredCards.map((card, index) => (\n \n onChange(card.uri)\n }\n >\n \n \n ))}\n \n \n );\n};\nRecentFolderSelect.displayName = \"RecentFolderSelect\";\nexport default RecentFolderSelect;\n","import React, { useState, useCallback, useEffect } from \"react\";\nimport { usePrevious } from \"hooks\";\nimport Radio from \"react-bootstrap/lib/Radio\";\nimport SiteSelect from \"components/SiteSelect\";\nimport RecentFolderSelect from \"components/RecentFolderSelect\";\nimport CommandActionButton from \"components/CommandActions/CommandActionButton\";\nimport loc from \"i18next\";\nimport { SearchScope, type SearchScopeEnum } from \"data/types\";\n\ntype Props = {\n className?: string,\n radioClassName?: string,\n selectClassName?: string,\n actionClassName?: string,\n searchScope: SearchScopeEnum,\n itemUri: string,\n onChange: (scope: SearchScopeEnum, itemUri?: string) => void,\n renderAction: boolean,\n};\n\nconst SearchScopeSelect = ({\n className,\n radioClassName,\n selectClassName,\n actionClassName,\n itemUri,\n searchScope,\n onChange,\n renderAction = true,\n}: Props) => {\n const [folderItemUri, setFolderItemUri] = useState();\n const [siteItemUri, setSiteItemUri] = useState();\n\n const prevSearchScope = usePrevious(searchScope);\n const prevItemUri = usePrevious(itemUri);\n const prevFolderItemUri = usePrevious(folderItemUri);\n const prevSiteItemUri = usePrevious(siteItemUri);\n useEffect(() => {\n if (prevSearchScope === searchScope && prevItemUri === itemUri) return;\n switch (searchScope) {\n case SearchScope.AllFolders:\n siteItemUri !== itemUri && setSiteItemUri(itemUri);\n break;\n case SearchScope.CurrentFolder:\n folderItemUri !== itemUri && setFolderItemUri(itemUri);\n break;\n default:\n }\n }, [\n itemUri,\n prevItemUri,\n searchScope,\n prevSearchScope,\n folderItemUri,\n siteItemUri,\n ]);\n\n useEffect(() => {\n if (prevFolderItemUri != null && prevFolderItemUri !== folderItemUri)\n onChange(SearchScope.CurrentFolder, folderItemUri);\n }, [onChange, folderItemUri, prevFolderItemUri]);\n\n useEffect(() => {\n if (prevSiteItemUri != null && prevSiteItemUri !== siteItemUri)\n onChange(SearchScope.AllFolders, siteItemUri);\n }, [onChange, siteItemUri, prevSiteItemUri]);\n\n const handleScopeChange = useCallback(\n (e) => {\n const searchScope = SearchScope[e.target.name];\n let itemUri = null;\n if (searchScope === SearchScope.AllFolders) itemUri = siteItemUri;\n if (searchScope === SearchScope.CurrentFolder)\n itemUri = folderItemUri;\n return onChange(searchScope, itemUri);\n },\n [onChange, siteItemUri, folderItemUri]\n );\n const handleFolderPickerChange = useCallback(\n (scope: SearchScopeEnum, itemUri?: string) => {\n onChange(scope, itemUri);\n },\n [onChange]\n );\n return (\n
\n \n {loc.t(\"search:scope.prefix_AllSites\")}\n \n \n {loc.t(\"search:scope.prefix_AllFolders\")}{\" \"}\n \n \n \n {loc.t(\"search:scope.prefix_CurrentFolder\")}{\" \"}\n \n {renderAction && (\n \n )}\n \n
\n );\n};\n\nexport default SearchScopeSelect;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"overlay\":\"Overlay_overlay__3F_R_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"modal\":\"ConfirmModal_modal__Z7-B_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"nodata\":\"NoData_nodata__3up7l\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"NoDocs_wrapper__2w2Vf\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"placeholder\":\"DocListSimple_placeholder__vwjcC\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"avatar\":\"Avatar_avatar__1dKRK\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"progress\":\"ValueProgress_progress__1DGPE\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"ValueEnum_wrapper__uW7dS\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"nolink\":\"LinkViewer_nolink__16Yhn\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"thumbnail\":\"Thumbnail_thumbnail__1L6K-\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"menu\":\"ActionsMenu_menu__3RmT7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"group\":\"ToggleBar_group__uw21L\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"list\":\"Tree_list__1gcde\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"modal\":\"DocListFilterModal_modal__g0_qf\"};","// @flow\nimport React, { PureComponent, type ComponentType } from \"react\";\nimport { connect } from \"react-redux\";\nimport { getDisplayName, isMiniView } from \"data/constants\";\nimport { toastStyled, toastTypes } from \"data/toast\";\nimport * as s from \"data/reducers/selectors\";\nimport { getRoute } from \"components/ItemUriLink\";\nimport {\n RefreshMode,\n type RefreshModeEnum,\n type ServerEventMessage,\n type ServerEventItemEnum,\n type ServerEventActionEnum,\n} from \"data/types\";\nimport { getLocalizedText } from \"data/utils\";\n\ntype Config = {\n actions?: Array,\n items?: Array,\n /** Whom do we want to auto refresh */\n refreshMode?: RefreshModeEnum,\n /** Message, if not auto refresh */\n refreshMessage?: string,\n /** Refresh Route (e.g. if itemUri was deleted) */\n refreshRoute?: boolean,\n};\n\ntype Props = {\n /** current globalEvents from store */\n globalEvents: ?ServerEventMessage,\n /** current users Id */\n userId: number,\n /** current itemUri */\n itemUri?: string,\n /** React-router History */\n history?: History,\n /** is in mini view */\n isMini?: boolean,\n};\n\ntype State = {\n refreshId: number,\n refreshEvent: ?ServerEventMessage,\n};\n\n/**\n * will intercept globalEvents changes and provide a refreshId property\n */\nconst GlobalEventsHandler =\n ({\n actions = [],\n items = [],\n refreshMode = RefreshMode.All,\n refreshMessage = \"\",\n refreshRoute = false,\n }: Config) =>\n (WrappedComponent: ComponentType) => {\n class PP extends PureComponent {\n static displayName = `GlobalEventsHandler(${getDisplayName(\n WrappedComponent\n )})`;\n\n state = {\n refreshId: 0,\n refreshEvent: null,\n };\n\n componentDidUpdate(prevProps: Props) {\n // console.log(prevProps.globalEvents.id, this.props.globalEvents.id);\n\n // new event?\n let doRefresh =\n prevProps.globalEvents.id !== this.props.globalEvents.id &&\n this.props.globalEvents.data != null;\n if (!doRefresh) return;\n\n // specific itemUri?\n doRefresh =\n this.props.itemUri == null\n ? true\n : // is this the one we are currently displaying?\n this.props.globalEvents.data.itemUri ===\n this.props.itemUri ||\n this.props.globalEvents.data.parentItemUri ===\n this.props.itemUri;\n if (!doRefresh) return;\n\n if (\n actions.length > 0 &&\n !actions.includes(this.props.globalEvents.action)\n )\n return;\n if (\n items.length > 0 &&\n !items.includes(this.props.globalEvents.item)\n )\n return;\n const refresh: string =\n refreshRoute && this.props.globalEvents.data.parentItemUri\n ? \"_refreshRoute\"\n : \"_refreshId\";\n if (refreshMode === RefreshMode.Self) {\n /* istanbul ignore else */\n if (\n this.props.globalEvents.data.userId ===\n this.props.userId\n ) {\n this[refresh]();\n }\n } else if (\n refreshMode === RefreshMode.Originator &&\n this.props.globalEvents.data.userId !== this.props.userId\n ) {\n toastStyled({\n ...toastTypes.refresh,\n message: getLocalizedText(refreshMessage),\n handleClick: this[refresh],\n });\n } else {\n this[refresh]();\n }\n }\n\n _refreshId = (): void => {\n this.setState((prevState: State) => ({\n refreshId: prevState.refreshId + 1,\n refreshEvent: this.props.globalEvents,\n }));\n };\n\n _refreshRoute = (): void => {\n const { history, isMini } = this.props;\n if (typeof history === \"undefined\") {\n console.error(\n \"Refreshing routes is not possible without props history and isMini\"\n );\n return;\n }\n history.push(\n getRoute({\n itemUri: this.props.globalEvents.data.parentItemUri,\n isMini,\n })\n );\n };\n\n render() {\n const { globalEvents, userId, ...rest } = this.props;\n return (\n \n );\n }\n }\n\n const mapStateToProps = (state, ownProps) => ({\n globalEvents: state.globalEvents,\n userId: s.userIdSelector(state),\n // We might not have a history prop => fallback\n isMini:\n ownProps.isMini ||\n (ownProps.history\n ? isMiniView(ownProps.history.location)\n : false),\n ...ownProps,\n });\n\n return connect(mapStateToProps)(PP);\n };\n\nexport default GlobalEventsHandler;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"header\":\"ShareAction_header__2l1Yj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"info\":\"ShareAction_info__i6wY8\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"modal\":\"ProgressModal_modal__1ZVkJ\"};"],"sourceRoot":""}