{"version":3,"sources":["components-lib/buttons_/ButtonBack.tsx","components-lib/buttons_/ButtonDropdown.tsx","components-lib/buttons_/ButtonIcon.tsx","components-lib/buttons_/ButtonBase.tsx","components-lib/buttons_/ButtonPrimary.tsx","components-lib/buttons_/ButtonSecondary.tsx","components-lib/buttons_/ButtonText.tsx","components-lib/buttons_/ButtonCopyLink.tsx","components-lib/icons_/AddIcon.tsx","components-lib/icons_/AllInboxIcon.tsx","components-lib/icons_/CheckIcon.tsx","components-lib/icons_/CloseIcon.tsx","resources/icons/copy_link.svg","components-lib/icons_/CopyLinkIcon.tsx","components-lib/icons_/DeleteIcon.tsx","components-lib/icons_/DescriptionIcon.tsx","components-lib/icons_/DragHandleIcon.tsx","components-lib/icons_/DragIndicatorIcon.tsx","components-lib/icons_/EditIcon.tsx","components-lib/icons_/ErrorIcon.tsx","components-lib/icons_/ErrorNotFound.tsx","components-lib/icons_/ExpandIcon.tsx","components-lib/icons_/FailIcon.tsx","resources/icons/file_icon.svg","components-lib/icons_/FileIcon.tsx","components-lib/icons_/FilterListIcon.tsx","resources/images/uploader/illustration_folder.svg","resources/images/uploader/illustration_folder_disabled.svg","components-lib/icons_/FolderIcon.tsx","resources/icons/iconGeneralInstrument.svg","components-lib/icons_/GeneralInstrumentIcon.tsx","resources/icons/info-large.svg","resources/icons/info-large-disabled.svg","components-lib/icons_/InfoIcon.tsx","components-lib/icons_/LinkIcon.tsx","resources/icons/Icon-Master_Instrument.svg","components-lib/icons_/MasterTemplateIcon.tsx","components-lib/icons_/MinimizeIcon.tsx","components-lib/icons_/MoreIcon.tsx","components-lib/icons_/PermMediaIcon.tsx","components-lib/icons_/RemoveRedEye.tsx","components-lib/icons_/SearchIcon.tsx","resources/images/instruments/Illustration_settings.svg","components-lib/icons_/SettingsIcon.tsx","components-lib/icons_/SubjectIcon.tsx","components-lib/icons_/TrashIcon.tsx","components-lib/icons_/TrendingLeft.tsx","components-lib/icons_/TrendingRight.tsx","resources/images/uploader/upload_file_icon.svg","components-lib/icons_/UploadFileIcon.tsx","resources/icons/icon_upload.svg","components-lib/icons_/UploadIcon.tsx","resources/icons/Icon-VirtualClass.svg","components-lib/icons_/VirtualClassIcon.tsx","components-lib/icons_/VisibilityIcon.tsx","components-lib/icons_/VisibilityOffIcon.tsx","components-lib/icons_/WarningIcon.tsx","components-lib/icons_/WebIcon.tsx","components-lib/icons_/ChevronRightIcon.tsx","components-lib/icons_/IconButton.tsx","resources/icons/copy_link_small.svg","resources/icons/copy_link_small_disabled.svg","components-lib/icons_/CopyLinkSmallIcon.tsx","resources/icons/download_resource.svg","resources/icons/download_resource_disabled.svg","components-lib/icons_/DownloadIcon.tsx","resources/icons/view.svg","resources/icons/view_disabled.svg","components-lib/icons_/ViewResourceIcon.tsx","components-lib/icons_/MenuIcon.tsx","resources/icons/export_xls.svg","components-lib/icons_/ExportXlsIcon.tsx","components-lib/divider/DividerHorizontal.tsx","components-lib/divider/DividerVertical.tsx","components-lib/filters/FiltersHeader.tsx","components-lib/filters/FiltersPanel.tsx","components-lib/text/Caption/Caption.tsx","components-lib/text/ErrorText/ErrorText.tsx","components-lib/text/Heading/Heading.tsx","components-lib/text/Paragraph/Paragraph.tsx","resources/logos/JA_Citizens_PoweredBy.svg","components-lib/logos_/CititizensPoweredBy.tsx","components-lib/FileUploader/Horizontal/Horizontal.tsx","components-lib/FileUploader/Vertical/Vertical.tsx","components-lib/Dropdowns/MenuItem.tsx","components-lib/Dropdowns/MenuItemList.tsx","components-lib/Dropdowns/ThreeDotsVerticalIconMenu.tsx","components-lib/Table/Pagination/EntitiesPerPageDropdown.tsx","components-lib/Table/Pagination/PageButton.tsx","components-lib/Table/Pagination/PaginationLocal.tsx","components-lib/Table/TableHeader/TableHeader.tsx","components-lib/Table/TableRow/TableRow.tsx","components-lib/Table/TableRowWithError/TableRowWithError.tsx","components-lib/Table/Table.tsx","components-lib/Accordion/Accordion.tsx","components-lib/Avatar/Avatar.tsx","components-lib/Bullet/Bullet.tsx","components-lib/Card/Card.tsx","components-lib/Checkbox/Checkbox.tsx","components-lib/DatePicker/DatePicker.tsx","components-lib/Form/State.tsx","components-lib/Form/Autocomplete/index.tsx","components-lib/Form/AutocompleteWithSelect/index.tsx","components-lib/Form/DatePicker/index.tsx","components-lib/Form/Multiselect/index.tsx","components-lib/Form/Search/index.tsx","components-lib/Form/Field.tsx","components-lib/Form/Input.tsx","components-lib/Form/Form.tsx","components-lib/Form/ButtonSubmit.tsx","components-lib/Form/ButtonReset.tsx","components-lib/Input/Input.tsx","components-lib/Label/Label.tsx","components-lib/ListInfinite/ListInfinite.tsx","components-lib/Loading/LoadingSpinner/LoadingSpinner.tsx","components-lib/Loading/Loading/Loading.tsx","components-lib/Loading/LoadingSmall/LoadingSmall.tsx","components-lib/Modal/Modal.tsx","components-lib/Modal/ModalActions.tsx","components-lib/Navigation/Navigation.tsx","components-lib/NavigationLink/NavigationLink.tsx","components-lib/page/PageViewHeader.tsx","components-lib/Radio/Radio.tsx","components-lib/RadioGroup/RadioGroup.tsx","components-lib/Search/Search.tsx","components-lib/Select/Select.tsx","components-lib/SelectAutocomplete/ListboxComponent.tsx","components-lib/SelectAutocomplete/SelectAutocomplete.tsx","components-lib/SelectAutocomplete/SearchOnTypeSelectAutocomplete.tsx","components-lib/Switch/Switch.tsx","components-lib/Tag/Tag.tsx","components-lib/FormInputWithChip/FormInputWithChip.tsx","components-lib/TextArea/TextArea.tsx","components-lib/Tooltips/Tooltip/Tooltip.tsx","components-lib/Tooltips/CopyToClipboardToolTip/CopyToClipboardToolTip.tsx","components-lib/RichTextEditor/PreviewEditor/PreviewEditor.tsx","components-lib/RichTextEditor/RichTextEditor/hooks/useRichTextEditor.ts","components-lib/RichTextEditor/RichTextEditor/RichTextEditor.tsx","components-lib/RichTextEditor/RichTextEditor/richTextEditorBaseConfig.ts","components-lib/Range/RangeButtons.tsx","components-lib/ToggleButton/ToggleButton.tsx","components-lib/Wrapper/Wrapper.tsx","components-lib/Link/Link.tsx","components-lib/FileInput/FileInput.tsx","components-lib/uploader/DraggableArea/DraggableArea.tsx","components-lib/uploader/ImageUploadWithPreview/ImageUploadWithPreview.tsx","components-lib/uploader/ImageUploadWithPreview/hooks/useImageUploadWithPreview.ts","components-lib/PasswordInput/PasswordInput.tsx","components-lib/AttachmentArea/AttachmentArea.tsx","components-lib/Box/components/BoxContent/BoxContent.tsx","components-lib/Box/Box.tsx","components-lib/Progress/CircularProgress/CircularProgress.tsx","components-lib/Drawer/Drawer.tsx","components-lib/LinkWithTooltip/LinkWithTooltip.tsx","components-lib/ResizableTable/ResizableTable.tsx","filters-selections/filters/components/FromToDateFilter/FromToDateFilter.tsx","filters-selections/filters/components/IntegrationStatusFilter/IntegrationStatusMultiFilter.tsx","filters-selections/filters/components/IntegrationTypeFilter/IntegrationTypeFilter.tsx","filters-selections/filters/components/LearningObjectiveFilter/LearningObjectiveFilter.tsx","filters-selections/hooks/useIsDomainKnowledgeSelected.ts","filters-selections/filters/components/ProgramFilter/ProgramFilter.tsx","filters-selections/filters/components/ProgramYearFilter/ProgramYearFilter.tsx","filters-selections/hooks/useIsPillarSelected.ts","filters-selections/hooks/useIsProgramSelected.ts","filters-selections/hooks/useSchoolNameBasedOnAreaSelect.ts","filters-selections/hooks/useIsCompetencySelected.ts","filters-selections/filters/components/SessionsFilter/SessionsFilter.tsx","filters-selections/filters/components/FileTypeFilter/FileTypeFilter.tsx","filters-selections/filters/components/FiltersList/FiltersList.tsx","filters-selections/filters/components/AudienceFilter/AudienceFilter.tsx","filters-selections/filters/components/GradeLevelFilter/GradeLevelFilter.tsx","filters-selections/filters/components/MetadataFilter/MetadataFilter.tsx","filters-selections/filters/components/PhaseFilter/PhaseFilter.tsx","filters-selections/filters/components/PillarFilter/PillarFilter.tsx","filters-selections/filters/components/PillarFilter/PillarMultiSelectFilter.tsx","filters-selections/filters/components/ProgramFilter/ProgramFilterSingle.tsx","filters-selections/filters/components/ProgramFilter/ProgramFilterMulti.tsx","filters-selections/filters/components/ProgramYearFilter/ProgramYearCheckboxFilter.tsx","filters-selections/filters/components/ProgramYearFilter/ProgramYearMultiFilter.tsx","filters-selections/filters/components/EducatorFilter/EducatorFilter.tsx","filters-selections/filters/components/AreasFilter/AreasFilter.tsx","filters-selections/filters/components/DistrictsFilter/DistrictsFilter.tsx","filters-selections/filters/components/InstrumentTypeFilter/InstrumentTypeFilter.tsx","filters-selections/filters/components/InstrumentStatusFilter/InstrumentStatusFilter.tsx","filters-selections/filters/components/DomainFilter/DomainFilter.tsx","filters-selections/filters/components/EvaluationTypeFilter/EvaluationTypeFilter.tsx","filters-selections/filters/components/CompetencyFilter/CompetencyFilter.tsx","filters-selections/filters/components/CompetencyFilter/CompetenciesFilter.tsx","filters-selections/filters/components/ConceptFilter/ConceptFilter.tsx","filters-selections/filters/components/CategoryFilter/CategoryFilter.tsx","filters-selections/filters/components/AdministrationFilter/AdministrationFilter.tsx","filters-selections/filters/components/SchoolLevelFilter/SchoolLevelFilter.tsx","filters-selections/filters/components/ItemTypeFilter/ItemTypeFilter.tsx","filters-selections/filters/components/ItemStatusFilter/ItemStatusFilter.tsx","filters-selections/filters/components/InstrumentViewTypeFilter/InstrumentViewTypeFilter.tsx","filters-selections/filters/components/ConceptFilter/DigitalResourcesConceptsFilter.tsx","filters-selections/filters/components/KeyTermsFilter/KeyTermsFilter.tsx","filters-selections/filters/components/LearningObjectivesFilter/LearningObjectivesFilter.tsx","filters-selections/filters/components/SkillsAndBehaviorsFilter/SkillsAndBehaviorsFilter.tsx","filters-selections/filters/components/LanguagesFilter/LanguagesFilter.tsx","filters-selections/filters/components/TagGradeLevelsFilter/TagGradeLevelsFilter.tsx","filters-selections/filters/components/DigitalResourceTypesFilter/DigitalResourceTypesFilter.tsx","filters-selections/filters/components/DrmExpirationDateFilter/DrmExpirationDateFilter.tsx","filters-selections/filters/components/LearningObjectiveFilter/LearningObjectiveWithDomainDependencyFilter.tsx","filters-selections/filters/components/IntegrationTypeFilter/IntegrationTypeSingle.tsx","filters-selections/filters/components/IntegrationTypeFilter/IntegrationTypeFilterMulti.tsx","filters-selections/filters/components/SchoolNameFilter/SchoolNameFilterBasedOnAreaAndDistrict.tsx","filters-selections/filters/components/AreasFilter/AreasMultiAutocompleteFilter.tsx","filters-selections/filters/components/AreasFilter/AreasMultiAutocompleteExternalDataFilter.tsx","filters-selections/filters/components/ClassIsVirtualFilter/ClassIsVirtualFilter.tsx","filters-selections/filters/components/FileTypeFilter/FileTypeFilterMulti.tsx","filters-selections/filters/components/SchoolDistrictFilter/SchoolDistrictFilterMulti.tsx","filters-selections/filters/components/LearningPathStatusesFilter/LearningPathStatusesCheckbox.tsx","filters-selections/filters/components/KnowledgeSkillsAndAbilitiesFilter/KnowledgeSkillsAndAbilitiesFilter.tsx","filters-selections/filters/components/AccessibleToStudentsRadioFilter/AccessibleToStudentsRadioFilter.tsx","filters-selections/filters/components/PublishedByFilter/PublishedByRadioFilter.tsx","filters-selections/filters/components/FileStatussesFilter/FileStatussesCheckboxFilter.tsx","filters-selections/selection/components/ItemWithPlaceholder.tsx","filters-selections/selection/components/CompetencySelect/CompetencyByPillarSelect.tsx","filters-selections/selection/components/TextInputSelection/TextInputSelection.tsx","filters-selections/selection/components/LanguagesSelect/LanguagesSelect.tsx","filters-selections/selection/components/PillarSelect/PillarSelect.tsx","filters-selections/selection/components/ProgramSelect/ProgramSelect.tsx","filters-selections/selection/components/SessionSelect/SessionByProgramSelect.tsx","filters-selections/selection/components/RangeSelect/RangeSelect.tsx","filters-selections/selection/components/LearningObjectiveSelect/LearningObjectiveSelect.tsx","filters-selections/selection/components/AreaSelect/AreaSelect.tsx","filters-selections/selection/components/SchoolNameSelect/SchoolNameBasedOnAreaSelect.tsx","filters-selections/selection/components/SchoolDistrictSelect/SchoolDistrictSelect.tsx","filters-selections/selection/components/AreaSelect/AreaSingleSelectBasedGoogleSites.tsx","filters-selections/selection/components/KnowledgeSkillsAndAbilitiesSelect/KnowledgeSkillsAndAbilitiesSelect.tsx","filters-selections/selection/components/FileTypeSelect/FileTypeSelectBasedOnAttachedFile.tsx","filters-selections/selection/components/ProgramYear/ProgramYearSelect.tsx","filters-selections/selection/components/FutureProgramYearSelect/FutureProgramYear/FutureProgramYearSelect.tsx","filters-selections/selection/components/KeyTermsTextInput/KeyTermsTextInput.tsx","filters-selections/selection/components/TextAreaSelection/TextAreaSelection.tsx","filters-selections/selection/components/BriefDescriptionTextArea/BriefDescriptionTextArea.tsx","filters-selections/selection/components/LearningObjectiveTextInput/LearningObjectiveTextInput.tsx","filters-selections/selection/components/DatePickerSelection/DatePickerSelection.tsx","filters-selections/selection/components/ExpirationDatePicker/ExpirationDatePicker.tsx","filters-selections/selection/components/TimeTextInput/TimeTextInput.tsx","filters-selections/selection/components/PermissionCheckbox/PermissionCheckbox.tsx","filters-selections/selection/components/AccessibleToStudentsRadioGroup/AccessibleToStudentsRadioGroup.tsx","filters-selections/selection/components/VersionFileUpload/TableVersions.tsx","filters-selections/selection/components/VersionFileUpload/ModalVersions.tsx","filters-selections/selection/components/VersionFileUpload/VersionFileUpload.tsx","filters-selections/selection/components/SelectionListItems/SelectionListItems.tsx","filters-selections/selection/components/AudienceSelect/AudienceSelect.tsx","filters-selections/selection/components/PillarSelect/PillarMultiSelect.tsx","filters-selections/selection/components/EvaluationTypeSelect/EvaluationTypeSelect.tsx","filters-selections/selection/components/DomainSelect/DomainSelect.tsx","filters-selections/selection/components/ProgramSelect/ProgramMultiSelect.tsx","filters-selections/selection/components/ProgramSelect/ProgramSelectWithDomainDependency.tsx","filters-selections/selection/components/CompetencySelect/CompetencySelect.tsx","filters-selections/selection/components/ConceptSelect/ConceptSelect.tsx","filters-selections/selection/components/AdministrationSelect/AdministrationSelect.tsx","filters-selections/selection/components/SchoolLevelSelect/SchoolLevelSelect.tsx","filters-selections/selection/components/InstrumentTypeSelect/InstrumentTypeSelect.tsx","filters-selections/selection/components/PhaseSelect/PhaseSelect.tsx","filters-selections/selection/components/SessionSelect/SessionSelect.tsx","filters-selections/selection/components/SkillsAndBehaviorsSelect/SkillsAndBehaviorsSelect.tsx","filters-selections/selection/components/TagGradeLevelSelect/TagGradeLevelSelect.tsx","filters-selections/selection/components/CategoryTags/CategoryTags.tsx","filters-selections/selection/components/InstrumentNameTextInput/InstrumentNameTextInput.tsx","filters-selections/selection/components/GradeLevelsSelect/GradeLevelsSelect.tsx","filters-selections/selection/components/K12KeyTermsSelect/K12KeyTermsSelect.tsx","filters-selections/selection/components/CompetencySelect/CompetencyByDomainSelect.tsx","filters-selections/selection/components/DomainWithoutKnowledgeSelect/DomainWithoutKnowledgeSelect.tsx","filters-selections/selection/components/RangeSelect/RangeFromSelect.tsx","filters-selections/selection/components/RangeSelect/RangeToSelect.tsx","filters-selections/selection/components/LearningObjectiveSelect/LearningObjectiveWithDomainDependencySelect.tsx","filters-selections/selection/components/InstrumentSubTypeSelect/InstrumentSubTypeSelect.tsx","filters-selections/selection/components/RoleSelect/RoleSelect.tsx","filters-selections/selection/components/IntegrationTypeSelect/IntegrationTypeSelect.tsx","filters-selections/selection/components/AreaSelect/AreaMultiSelect.tsx","filters-selections/selection/components/SchoolDistrictSelect/SchoolDistrictBasedOnGoogleSitesSelect.tsx","filters-selections/selection/components/SchoolNameSelect/SchoolNameBasedOnAreaSelectAndGoogleSites.tsx","filters-selections/selection/components/PillarSelect/PrimaryPillarSelect.tsx","filters-selections/selection/components/PillarSelect/SecondaryPillarSelect.tsx","filters-selections/selection/components/ProgramYear/ProgramYearMultiSelect.tsx","filters-selections/selection/components/ProgramYear/ProgramYearSingleSelect.tsx","filters-selections/selection/components/LanguagesSelect/LanguagesSingleSelect.tsx","filters-selections/selection/components/LanguagesSelect/LanguagesMultiSelect.tsx","filters-selections/selection/components/ProgramSelect/ProgramSingleSelect.tsx","filters-selections/selection/components/FutureProgramYearSelect/FutureProgramYearSingleSelect/FutureProgramYearSingleSelect.tsx","filters-selections/selection/components/FutureProgramYearSelect/FutureProgramYearMultiSelect/FutureProgramYearMultiSelect.tsx","filters-selections/selection/components/ResourcesSelect/ResourcesSelect.tsx","filters-selections/selection/components/InstrumentsSelect/InstrumentsSelect.tsx","filters-selections/selection/components/LearningPathNameTextInput/LearningPathNameTextInput.tsx","filters-selections/selection/components/KeyTermsTextInput/KeyTermsWithInfoTextInput.tsx","filters-selections/selection/components/LearningObjectiveTextInput/LearningObjectiveWithInfoTextInput.tsx","filters-selections/selection/components/ExpirationDatePicker/EditableExpirationDatePicker.tsx","filters-selections/selection/components/ExpirationDatePicker/ExpirationWithInfoDatePicker.tsx","filters-selections/selection/components/SchoolDistrictSelect/SchoolDistrictBasedOnAreaSelect.tsx","filters-selections/selection/components/SchoolNameSelect/SchoolNameBasedOnAreaAndDistrict.tsx","filters-selections/selection/components/AreaSelect/AreaSingleBasedOnDistrictAndGoogleSites.tsx","filters-selections/selection/components/IntegrationNameTextInput/IntegrationNameTextInput.tsx","filters-selections/selection/components/UserToImpersonateTextInput/UserToImpersonateTextInput.tsx","filters-selections/selection/components/ServiceEmailTextInput/ServiceEmailTextInput.tsx","filters-selections/selection/components/DisplayNameTextInput/DisplayNameTextInput.tsx","filters-selections/selection/components/WebLinkTextInput/WebLinkTextInput.tsx","filters-selections/selection/components/TimeTextInput/TimeWithInfoTextInput.tsx","filters-selections/selection/components/PermissionCheckbox/AdminPermissionCheckbox.tsx","filters-selections/selection/components/AccessibleToStudentsRadioGroup/AccessibleToStudentsWithInfoRadioGroup.tsx","filters-selections/selection/components/CompetencySelect/CompetenciesByPillarWithInfoSelect.tsx","filters-selections/selection/components/KnowledgeSkillsAndAbilitiesSelect/KnowledgeSkillsAndAbilitiesWithInfoSelect.tsx","filters-selections/selection/components/ToDatePicker/ToDatePicker.tsx","filters-selections/selection/components/FromDatePicker/FromDatePicker.tsx","filters-selections/utils/constants/schoolNameSelectConstants.ts","filters-selections/utils/constants/dynamicSearchMessages.ts","filters-selections/utils/instrument.subtype.util.ts","filters-selections/utils/getPublishedByExtendedList.ts","filters-selections/utils/getPublishedByExtendedEntities.ts","utils/auth/UserStore.ts","utils/token-manager.ts","utils/utils.ts","utils/getLocationOrigin.ts","utils/redirectWindowLocation.ts","utils/createLinkForDownload.ts","utils/openFileInNewWindow.ts","utils/getCurrentDate.ts","utils/getDateFromISOString.ts","enums/resources/ResourceTypeHeadingName.enum.ts","enums/ApiPaths.enum.ts","enums/ErrorStatusCodes.enum.ts","enums/Components.enum.ts","enums/EntitiesPerPage.enum.ts","enums/FileTypes.enum.ts","enums/ProgramsSectionNavigator.enum.ts","enums/UploadResourceTypeEnum.enum.ts","enums/DigitalResourceMetaDataEnum.enum.ts","enums/Order.enum.ts","enums/SortDropdownName.enum.ts","enums/OrderingBackendNames.enum.ts","enums/PaginationNum.enum.ts","forms/components/Form.tsx","forms/components/FormArray.tsx","forms/components/FormButtonClear.tsx","forms/components/FormButtonSubmit.tsx","forms/components/FormCheckbox.tsx","forms/components/FormDatePicker.tsx","forms/components/FormInput.tsx","forms/components/FormRadio.tsx","forms/components/FormRadioGroup.tsx","forms/components/FormSearch.tsx","forms/components/FormSelect.tsx","forms/components/FormSelectAutocomplete.tsx","forms/components/FormSearchSelectAutocomplete.tsx","forms/components/FormSwitch.tsx","forms/components/FormTextArea.tsx","forms/components/FormRichTextEditor.tsx","forms/components/FormToggleButtonGroup.tsx","forms/components/FormImageUpload.tsx","forms/components/FormPasswordInput.tsx","hooks/useAppDispatch.ts","hooks/useViewEditMode.ts","hooks/useEntityCard.ts","hooks/useModal.ts","hooks/useNavigate.ts","hooks/useQueryParams.ts","hooks/useDebounceUserInput.ts","hooks/useDelay.ts","hooks/useMenu.ts","hooks/useActiveStep.ts","hooks/useDebounce.ts","hooks/usePasswordInput.ts","hooks/useDrawer.ts","hooks/useMainNavigation.ts","hooks/useDragAndDrop.ts","toast-notifications/index.ts","enums/form/FormName.enum.ts","enums/form/InputType.enum.ts","filters-selections/enums/Filters.enum.ts","filters-selections/enums/FormName.enum.ts","filters-selections/enums/Selection.enum.ts","filters-selections/enums/Tags.enum.ts","api/axios-interceptors.ts","api/axios-cancellation.ts","api/http-client.ts","api/utils/parseErrorMessages.ts","api/filtersApi.ts","api/instrumentsApi.ts","api/programsApi.ts","api/itemsApi.ts","api/permissionsApi.ts","api/userApi.ts","api/fileManagerApi.ts","api/integrationsApi.ts","api/itemImportApi.ts","api/googleSitesApi.ts","api/learningPathsApi.ts","api/pamApi.ts","api/uploadResourcesApi.ts","paths/paths.ts","permissions/index.ts","admin/index.ts","admin/components/ButtonsWithPermissions/buttonsWithPermissions.tsx","admin/components/ButtonsWithPermissions/ButtonWithAdminPermissions.tsx","admin/components/ModalUserActivity/modalUserActivityFormValidationSchema.ts","admin/components/ModalUserActivity/ModalUserActivityForm.tsx","admin/components/AdminPortalNavigation/AdminPortalNavigation.tsx","admin/components/Dropdown/Dropdown.tsx","admin/components/ErrorBox/FormErrorBox.tsx","admin/components/ModalDelete/ModalDelete.tsx","admin/components/ModalUpdate/ModalUpdate.tsx","admin/components/ModalUpload/ModalUpload.tsx","admin/components/ModalUserActivity/ModalUserActivity.tsx","admin/components/SidebarAuthor/SidebarAuthor.tsx","admin/components/SidebarLink/SidebarLink.tsx","admin/components/SidebarTag/SidebarTag.tsx","admin/components/SidebarTagWithValue/SidebarTagWithValue.tsx","admin/components/SidebarTitle/SidebarTitle.tsx","admin/components/SubtitlePageViewHeader/SubtitlePageViewHeader.tsx","admin/components/StackFilter/StackFilter.tsx","admin/components/MenuItem/MenuItem.tsx","admin/components/SortByDropdown/MenuItemList.tsx","admin/components/SortByDropdown/SortByDropdown.tsx","admin/components/ActiveStepPage/ActiveStepPage.tsx","admin/components/Navigation/NavigationProgressBar.tsx","admin/components/Subtitle/Subtitle.tsx","admin/components/UploadSingleFile/VerticalPositioned/VerticalPositioned.tsx","admin/components/UploadSingleFile/HorizontalPositioned/HorizontalPositioned.tsx","admin/components/UploadSingleFile/BrowseButton/BrowseButton.tsx","admin/components/UploadSingleFile/UploadSingleFile.tsx","admin/components/UploadDraggableArea/UploadDraggableArea.tsx","admin/components/AdminNavMoreActionsButton/AdminNavMoreActionsButton.tsx","filters-selections/store/filters.selectors.ts","admin/resources/upload/enums/forms/FormName.enum.ts","admin/resources/upload/enums/forms/UploadFormLabel.enum.ts","admin/resources/upload/enums/UploadType.enum.ts","admin/library/instruments/enums/InstrumentsFilterNamesEnum.ts","admin/library/instruments/enums/InstrumentsOrderingEnum.ts","admin/library/instruments/enums/InstrumentsFormNameEnum.ts","admin/library/instruments/enums/InstrumentStatusNamesEnum.ts","admin/library/instruments/enums/InstrumentDropdownName.enum.ts","admin/library/instruments/enums/InstrumentType.enum.ts","admin/library/instruments/enums/AdminRolesInstruments.enum.ts","admin/library/items/enums/ItemSortingEnum.ts","admin/library/items/enums/ItemStatusEnum.ts","admin/library/items/enums/ItemStatusNamesEnum.ts","admin/library/items/enums/ItemQuestionAnswersType.enum.ts","admin/library/items/enums/AdminRolesItems.enum.ts","admin/library/items/enums/InstrumentViewType.enum.ts","admin/library/items/enums/ItemsOrdering.enum.ts","admin/library/items/enums/ActiveMode.enum.ts","admin/resources/files/views/all/enums/DigitalResourcesOrdering.enum.ts","admin/resources/files/views/all/enums/DigitalResourceDropdownName.enum.ts","admin/resources/files/views/all/enums/FilesOrderingAll.enum.ts","admin/resources/files/views/all/enums/FilesAllFilterNames.enum.ts","admin/resources/files/views/all/enums/FileAllTableColumns.enum.ts","admin/library/instruments/store/index.ts","layout/index.ts","admin/resources/index.ts","admin/resources/learning-paths/views/all/enums/LearningPathsAllFilterNames.enum.ts","admin/resources/learning-paths/views/all/enums/LearningPathsOrderingAll.enum.ts","admin/resources/learning-paths/views/all/enums/LearningPathsDropdownName.enum.ts","admin/resources/learning-paths/views/all/enums/LearningPathDropdown.enum.ts","admin/integrations/all/utils/integrationAllConstants.ts","admin/integrations/all/utils/filters/integrationFilterList.ts","admin/integrations/all/utils/filters/integrationFilterToFilterNameMap.ts","admin/integrations/all/utils/common/getMenuItemsList.ts","admin/integrations/all/utils/common/integrationsOrderingMap.ts","admin/integrations/all/components/SidebarIntegrationsAll/config/sidebarIntegrationFormBaseConfig.ts","admin/integrations/all/components/SidebarIntegrationsAll/SidebarIntegrationsAll.tsx","admin/integrations/all/components/IntegrationsAllSortBy/IntegrationsAllSortBy.tsx","admin/integrations/hooks/useIntegrationStoreState.ts","admin/integrations/Integrations.tsx","admin/integrations/all/IntegrationsAllView.tsx","enums/integrations/IntegrationType.enum.ts","enums/integrations/IntegrationStatusType.enum.ts","enums/integrations/IntegrationTypeNum.enum.ts","enums/integrations/IntegrationStatusNum.enum.ts","enums/integrations/IntegrationBaseResponseStatusNum.enum.ts","admin/library/items/store/index.ts","admin/integrations/store/thunks/config.ts","admin/integrations/store/thunks/fetchIntegrationsPaged.thunk.ts","admin/integrations/store/thunks/fetchIntegrationTypes.thunk.ts","admin/integrations/store/thunks/fetchIntegrationStatuses.thunk.ts","admin/integrations/store/thunks/fetchServiceEmail.thunk.ts","admin/integrations/store/thunks/fetchIntegrationDetails.thunk.ts","admin/integrations/store/thunks/fetchAuditLog.thunk.ts","admin/integrations/store/thunks/fetchPublishedSourceDetails.thunk.ts","admin/integrations/store/thunks/createGoogleVirtualClass.thunk.ts","admin/integrations/store/thunks/createGoogleSitesSource.thunk.ts","admin/integrations/store/thunks/createGoogleSitesDestination.thunk.ts","admin/integrations/store/thunks/createMicrosoftTeams.thunk.ts","admin/integrations/store/thunks/updateIntegration.thunk.ts","admin/integrations/store/thunks/updateGoogleClassroomIntegration.thunk.ts","admin/integrations/store/thunks/updateGoogleSitesSourceIntegration.thunk.ts","admin/integrations/store/thunks/updateMicrosoftTeamsIntegration.thunk.ts","admin/integrations/store/thunks/updateGoogleSitesDestinationIntegration.thunk.ts","admin/integrations/store/thunks/deleteIntegration.thunk.ts","admin/integrations/store/thunks/publishIntegration.thunk.ts","admin/integrations/store/thunks/testMicrosoftTeams.thunk.ts","admin/integrations/store/thunks/testGoogleClassroom.thunk.ts","admin/integrations/store/thunks/testGoogleSitesSource.thunk.ts","admin/integrations/store/thunks/testGoogleSitesDestination.thunk.ts","styles/colors.ts","config.ts","utils/layout/layoutConstants.ts","admin/programs/details/index.ts","filters-selections/store/thunks/config.ts","filters-selections/store/thunks/fetchAdministrations.thunk.ts","filters-selections/store/thunks/fetchAudience.thunk.ts","filters-selections/store/thunks/fetchCompetencies.thunk.ts","filters-selections/store/thunks/fetchConcepts.thunk.ts","filters-selections/store/thunks/fetchDomains.thunk.ts","filters-selections/store/thunks/fetchEvaluationTypes.thunk.ts","filters-selections/store/thunks/fetchGradeLevels.thunk.ts","filters-selections/store/thunks/fetchInstrumentStatuses.thunk.ts","filters-selections/store/thunks/fetchInstrumentTypes.thunk.ts","filters-selections/store/thunks/fetchItemTypes.thunk.ts","filters-selections/store/thunks/fetchPhases.thunk.ts","filters-selections/store/thunks/fetchPillars.thunk.ts","filters-selections/store/thunks/fetchPrograms.thunk.ts","filters-selections/store/thunks/fetchProgramYears.thunk.ts","filters-selections/store/thunks/fetchAreas.thunk.ts","filters-selections/store/thunks/fetchSessions.thunk.ts","filters-selections/store/thunks/fetchTagGradeLevels.thunk.ts","filters-selections/store/thunks/fetchSkillsAndBehaviors.thunk.ts","filters-selections/store/thunks/fetchLanguages.thunk.ts","filters-selections/store/thunks/fetchSessionsByProgramIds.thunk.ts","filters-selections/store/thunks/fetchDefualtKeyTermsThunk.thunk.ts","filters-selections/store/thunks/fetchKeyTerms.thunk.ts","filters-selections/store/thunks/fetchLearningObjectives.thunk.ts","filters-selections/store/thunks/fetchDigitalResourcesConcepts.thunk.ts","filters-selections/store/thunks/fetchDigitalResourceTypes.thunk.ts","filters-selections/store/thunks/fetchInstrumentMainTypes.thunk.ts","filters-selections/store/thunks/fetchUploadFileTypeOptions.thunk.ts","filters-selections/store/thunks/fetchAllFileTypeOptions.thunk.ts","filters-selections/store/thunks/fetchFutureProgramYears.thunk.ts","filters-selections/store/thunks/fetchResources.thunk.ts","filters-selections/store/thunks/fetchInstruments.thunk.ts","filters-selections/store/thunks/fetchContentItemStatuses.thunk.ts","filters-selections/store/thunks/fetchFileStatuses.thunk.ts","filters-selections/store/thunks/items/fetchSchoolLevel.thunk.ts","filters-selections/store/thunks/items/config.ts","filters-selections/store/thunks/integrations/fetchIntegrationListDropdown.thunk.ts","filters-selections/store/thunks/integrations/config.ts","filters-selections/store/thunks/integrations/fetchIntegrationTypes.thunk.ts","filters-selections/store/thunks/integrations/searchSchools.thunk.ts","filters-selections/store/thunks/integrations/fetchSchoolDistrict.thunk.ts","admin/library/items/store/thunks/createItem.thunk.ts","admin/library/items/store/thunks/createQuestion.thunk.ts","admin/library/items/store/thunks/fetchItem.thunk.ts","admin/library/items/store/thunks/fetchListItems.thunk.ts","admin/library/items/store/thunks/fetchNewItem.thunk.ts","admin/library/items/store/thunks/fetchQuestions.thunk.ts","admin/library/items/store/thunks/fetchSortByColumns.thunk.ts","admin/library/items/store/thunks/fetchSortOrderTypes.thunk.ts","admin/library/items/store/thunks/publishAllAnswerStacksForQuestion.thunk.ts","admin/library/items/store/thunks/publishItemAnswerStack.thunk.ts","admin/library/items/store/thunks/unPublishItemAnswerStack.thunk.ts","admin/library/items/store/thunks/createUpdateItem.thunk.ts","admin/library/items/store/thunks/deleteItem.thunk.ts","admin/library/items/store/thunks/fetchPossibleDefaultAnswerStacks.thunk.ts","admin/library/items/store/thunks/addDefaultAnswerStack.thunk.ts","admin/library/items/store/thunks/addCustomAnswerStack.thunk.ts","admin/library/items/store/thunks/updateItem.thunk.ts","admin/library/items/store/thunks/updateAnswerStack.thunk.ts","utils/functions/capitalize.ts","utils/functions/cloneDeep.ts","utils/functions/filter.ts","utils/functions/findIndex.ts","utils/functions/groupBy.ts","utils/functions/intersection.ts","utils/functions/isEmpty.ts","utils/functions/isFunction.ts","utils/functions/isNumber.ts","utils/functions/isObject.ts","utils/functions/isString.ts","utils/functions/noop.ts","utils/functions/toNumber.ts","utils/functions/uniqueId.ts","utils/functions/values.ts","utils/functions/camelToTitle.ts","utils/functions/debounce.ts","utils/functions/orderBy.ts","utils/functions/isEqual.ts","utils/functions/arrayOfStringsToString.ts","utils/functions/uniq.ts","utils/functions/uniqBy.ts","admin/library/instruments/store/thunks/config.ts","admin/library/components/Answers/AnswersViewDrag.tsx","admin/library/components/Answers/Answers.tsx","admin/library/components/AnswersMatrix/AnswersMatrixView.tsx","admin/library/components/AnswersMatrix/AnswersMatrix.tsx","admin/library/components/AnswerInstructionalText/AnswerInstructionaText.tsx","admin/library/components/AnswerBuilderRating/AnswerBuilderRating.tsx","admin/library/components/EntityHeaderName/EntityHeaderName.tsx","admin/library/components/EntityHeaderInstructionalText/EntityHeaderInstructionalText.tsx","admin/library/components/EntityCard/EntityCardBody.tsx","admin/library/components/EntityCard/EntityCard.tsx","admin/library/components/EntityItems/EntityItems.tsx","admin/library/components/LibraryNavBar/LibraryNavBar.tsx","admin/library/components/Status/Status.tsx","admin/programs/details/enums/ClassTypes.enum.ts","admin/programs/details/enums/ExportTypes.enum.ts","admin/programs/details/enums/ReportExportFormats.enum.ts","admin/programs/details/enums/ReportTypes.enum.ts","admin/programs/details/enums/ReportTypeNames.enum.ts","admin/programs/details/enums/ReportTypeTerms.enum.ts","admin/programs/details/enums/ProgramDetailsViewType.enum.ts","admin/programs/details/enums/DefaultProgramMenuItemOption.enum.ts","admin/programs/details/enums/ExportTypeNames.enum.ts","utils/common/datetime/datetimeFormats.ts","utils/common/datetime/getDatetimeAMPMinUTC.ts","utils/common/datetime/getDateMMDDyyyy.ts","utils/common/datetime/getDateFromISOString.ts","utils/common/datetime/convertToISOString.ts","utils/common/datetime/getIsBeforeDate.ts","utils/common/updateSelectLabel.ts","utils/common/prepareMultiPartFormData.ts","utils/common/getSortingOptions.ts","utils/common/getIsAscSortOrder.ts","utils/common/emailRegex.ts","utils/common/createUniqueId.ts","utils/common/splitStringByNewLine.ts","utils/common/getFirstTwoCharsFromFullName.ts","admin/resources/learning-paths/views/session-builder/hooks/useLearningPathBuilderItemsEntities.ts","admin/resources/learning-paths/views/session-builder/hooks/useSessionBuilderStoreActions.ts","admin/resources/learning-paths/views/session-builder/hooks/useSessionBuilderMode.ts","admin/integrations/enums/IntegrationSortingEnum.ts","admin/integrations/enums/IntegrationsOrdering.enum.ts","admin/integrations/enums/IntegrationDropdownName.enum.ts","admin/integrations/enums/NavigationProgressBarText.enum.ts","admin/integrations/enums/IntegrationCertificate.enum.ts","admin/integrations/enums/IntegrationLabel.enum.ts","admin/integrations/enums/IntegrationMode.enum.ts","admin/library/instruments/store/thunks/cloneInstrument.thunk.ts","admin/library/instruments/store/thunks/createNewInstrument.thunk.ts","admin/library/instruments/store/thunks/deleteInstrument.thunk.ts","admin/library/instruments/store/thunks/duplicateInstrument.thunk.ts","admin/library/instruments/store/thunks/fetchInstrument.thunk.ts","admin/library/instruments/store/thunks/fetchListInstruments.thunk.ts","admin/library/instruments/store/thunks/fetchInstrumentItemsAndParticipants.thunk.ts","admin/library/instruments/store/thunks/fetchMatrixRelatedPoolItems.thunk.ts","admin/library/instruments/store/thunks/fetchPoolItems.thunk.ts","admin/library/instruments/store/thunks/unPublishSessionInstrument.thunk.ts","admin/library/instruments/store/thunks/updateDraftInstrument.thunk.ts","admin/library/instruments/store/thunks/fetchPossiblePretest.thunk.ts","admin/library/instruments/store/thunks/uploadInstrumentHeaderLogo.thunk.ts","admin/library/instruments/store/thunks/updateInstrumentInfo.thunk.ts","admin/library/instruments/store/thunks/uploadInstrumentFooterLogo.thunk.ts","admin/library/instruments/store/thunks/fetchGeneralInstrumentExport.thunk.ts","admin/library/instruments/store/thunks/fetchAreaProgramClassExport.thunk.ts","admin/library/instruments/store/thunks/publishMasterInstrument.thunk.ts","admin/library/instruments/store/thunks/fetchInstrumentForPreview.thunk.ts","admin/library/instruments/store/thunks/updateInstrument.thunk.ts","admin/library/instruments/store/thunks/fetchAreaProgramClassDetailedExport.thunk.ts","admin/resources/files/views/edit/utils/constants/fileEditMessages.ts","admin/resources/files/views/edit/utils/fileDetailsMessages.ts","admin/resources/files/views/edit/utils/mapEditFileInitialValues.ts","admin/resources/files/views/edit/utils/getFileEditLearningPathColumns.ts","admin/resources/files/views/edit/utils/mapResourceMetadata.ts","admin/resources/files/views/edit/utils/mapUpdateResourceBasePayload.ts","admin/resources/files/views/edit/utils/mapUpdateResourceFilePayload.ts","admin/resources/files/views/edit/utils/mapUpdateResourceScormPayload.ts","admin/resources/files/views/edit/utils/mapUpdateResourceWebLinkPayload.ts","admin/resources/files/views/edit/utils/getContentResponseHeaders.ts","admin/resources/files/views/edit/utils/getEditFileFirstColumnExtendedList.ts","admin/resources/files/views/edit/utils/getFileStatus.ts","admin/integrations/add-integration/enums/AddIntegrationLabel.enum.ts","utils/constants.ts","admin/library/items/builder/utils/builderUtils.ts","admin/library/items/builder/utils/createUpdateItemUtils.ts","admin/library/items/builder/utils/updateAnswerStackUtils.ts","admin/library/items/builder/utils/editAnswerStackUtils.ts","admin/library/items/builder/utils/createAnswerStackUtils.ts","admin/library/items/builder/utils/getIsDomainKnowledge.ts","admin/library/items/builder/utils/getQuestionMode.ts","admin/resources/google-sites/store/thunks/config.ts","admin/resources/google-sites/store/thunks/fetchGoogleSitesSourceDetails.thunk.ts","admin/resources/google-sites/store/thunks/fetchGoogleSitesSourceHistory.thunk.ts","admin/resources/google-sites/store/thunks/fetchGoogleSitesCopySite.thunk.ts","admin/resources/google-sites/store/thunks/fetchGoogleSitesList.thunk.ts","admin/resources/google-sites/store/googleSites.reducer.ts","admin/resources/google-sites/store/googleSites.selectors.ts","admin/resources/google-sites/store/googleSites.initialState.ts","admin/resources/google-sites/store/normalizationSchemas.ts","admin/resources/google-sites/store/googleSitesExtra.reducer.ts","admin/library/utils/getFormValue.ts","admin/library/utils/answersMapUtil.ts","admin/library/utils/getSortMenuItemsList.ts","admin/library/instruments/builder/hooks/useBuilderItemsEntities.ts","admin/library/instruments/builder/hooks/useBuilderPoolItemsEntities.ts","admin/library/instruments/builder/hooks/useBuilder.ts","admin/library/instruments/builder/hooks/useBuilderDrop.ts","admin/library/instruments/builder/hooks/useBuilderEditMode.ts","admin/library/instruments/builder/hooks/useBuilderItemDrag.ts","admin/library/instruments/builder/hooks/useBuilderItemDrop.ts","admin/library/instruments/builder/hooks/useBuilderState.ts","admin/library/instruments/builder/hooks/usePoolItemsPagination.ts","enums/common/ActiveStep.enum.ts","enums/common/MuiTableCell.enum.ts","enums/common/NavigationProgressSteps.enum.ts","enums/common/EnvironmentConfiguration.enum.ts","enums/common/ResponseApiStatus.enum.ts","forms/formik/FormContextProvider.tsx","admin/integrations/add-integration/index.ts","admin/resources/enums/ResourceTypeNum.enum.ts","admin/resources/enums/ResourceType.enum.ts","admin/resources/enums/IBaseFileItemStatus.enum.ts","admin/library/items/store/thunks/config.ts","admin/library/instruments/builder/utils/builder.utils.ts","admin/library/instruments/builder/utils/builder.filter.utils.ts","admin/resources/google-sites/index.ts","admin/programs/details/classes/details/instruments/enums/FilterBackendNamesEnum.ts","admin/programs/details/classes/details/instruments/enums/ProgramClassInstrumentsOrdering.enum.ts","admin/programs/details/classes/details/instruments/enums/ProgramClassInstrumentsDropdownNameEnum.ts","admin/library/enums/BuilderItemDragType.enum.ts","admin/library/enums/QuestionColumnCell.enum.ts","admin/library/enums/cardTypeMap.ts","admin/resources/learning-paths/views/session-builder/store/normalizationSchemas.ts","admin/resources/learning-paths/views/session-builder/store/sessionBuilder.initialState.ts","admin/resources/learning-paths/views/session-builder/store/sessionBuilder.reducer.ts","admin/resources/learning-paths/views/session-builder/store/sessionBuilderExtra.reducer.ts","admin/resources/learning-paths/views/session-builder/store/sessionBuilder.selectors.ts","admin/resources/learning-paths/views/session-builder/store/sessionBuilder.slice.ts","forms/components/Field.tsx","enums/admin-roles/AdminRoles.enum.ts","styles/GlobalCss.tsx","styles/mui.theme.ts","styles/variables.ts","admin/integrations/utils/schema/integrationDetailsFormBaseValidationSchema.ts","admin/programs/details/hooks/useProgram.ts","admin/programs/details/hooks/useSortArea.ts","admin/programs/details/hooks/useProgramReports.ts","admin/programs/details/hooks/useProgramReportsStoreActions.ts","admin/resources/files/views/all/utils/mapFileToUpdate.ts","admin/resources/files/views/all/utils/filters/filesAllFilterList.ts","admin/resources/files/views/all/utils/filters/filesAllFilterToFilterNameMap.ts","admin/resources/files/views/all/utils/constants/filesAllMessages.ts","admin/resources/files/views/all/utils/digitalResourcesOrderingMap.ts","admin/resources/files/views/all/utils/getFilesAllMenuItemsList.ts","admin/resources/files/views/all/utils/mapFetchFilesAllPayload.ts","admin/resources/files/views/all/utils/mapFilesAllFilters.ts","admin/resources/files/views/all/utils/getFilteredFilesColumns.ts","admin/resources/files/views/all/utils/filesDropdownList.ts","admin/resources/files/views/all/utils/mapFilesDropdownList.ts","admin/items-import/index.ts","admin/items-import/store/thunks/config.ts","admin/items-import/store/thunks/importItems.thunk.ts","admin/items-import/store/thunks/fetchImportTemplate.thunk.ts","admin/items-import/store/thunks/fetchImportInstructionalText.thunk.ts","admin/items-import/store/thunks/uploadItemBank.thunk.ts","admin/items-import/store/thunks/fetchItemBankPreviewTableRows.thunk.ts","admin/items-import/store/thunks/fetchImportCriticalIssues.thunk.ts","admin/library/instruments/hooks/useGeneralInstrumentMeta.ts","admin/library/instruments/hooks/useInstruments.ts","admin/library/instruments/hooks/useInstrumentItem.ts","admin/library/instruments/hooks/usePossiblePretestItem.ts","admin/library/instruments/utils/getInstrumentIcon.tsx","admin/library/instruments/utils/mapInstrumentCreateModalMetadata.util.ts","admin/library/instruments/utils/getSortInstrumentMenuItemsList.ts","admin/resources/files/views/all/store/thunks/fetchFilesAllPaged.thunk.ts","admin/resources/files/views/all/store/thunks/config.ts","admin/resources/files/views/all/store/thunks/downloadFile.thunk.ts","admin/resources/files/views/all/store/filesAll.initialState.ts","admin/resources/files/views/all/store/normalizationSchemas.ts","admin/resources/files/views/all/store/filesAllExtra.reducer.ts","admin/resources/files/views/all/store/filesAll.reducer.ts","admin/resources/files/views/all/store/filesAll.slice.ts","admin/resources/files/views/all/store/filesAll.selectors.ts","admin/resources/learning-paths/views/create/LearningPathViewCreate.tsx","admin/integrations/utils/helpers/getDefaultPreviewFirstColumnList.ts","admin/integrations/utils/helpers/getDefaultPreviewSecondColumnList.ts","admin/integrations/utils/helpers/getIsGoogleClassroom.ts","admin/integrations/utils/helpers/getIsMicrosoftTeams.ts","admin/integrations/utils/helpers/getIsGoogleSitesSource.ts","admin/integrations/utils/helpers/getEditorPermissionCheckboxText.ts","admin/integrations/utils/helpers/getIsGoogleSitesDestination.ts","admin/integrations/utils/helpers/mapUpdateMicrosoftTeamsPayload.ts","admin/integrations/utils/helpers/mapUpdateGoogleClassroomPayload.ts","admin/integrations/utils/helpers/mapGoogleSitesSourcePayload.ts","admin/integrations/utils/helpers/mapGoogleSitesDestinationPayload.ts","admin/integrations/utils/helpers/replaceWithNullIfEmptyString.ts","user/store/thunks/fetchUserId.thunk.ts","user/store/thunks/config.ts","user/store/thunks/fetchUserIdAndAreaId.thunk.ts","user/store/user.selectors.ts","user/store/userExtra.reducer.ts","user/store/user.slice.ts","user/store/user.initialState.ts","user/store/user.reducer.ts","user/hooks/useUser.ts","user/hooks/useUserId.ts","user/services/AuthenticationManager.ts","admin/integrations/store/mock/integrations.mock.ts","admin/integrations/store/utils/getIntegrationQueryFilter.ts","admin/programs/details/masterInstruments/enums/FilterBackendNamesEnum.ts","admin/programs/details/masterInstruments/enums/ProgramsMasterInstrumentsOrdering.enum.ts","admin/programs/details/masterInstruments/enums/ProgramMasterInstrumentsDropdownName.enum.ts","admin/library/items/utils/messages.ts","dragAndDrop/index.ts","admin/resources/learning-paths/views/all/utils/schema/learningPathsAllValidationSchema.ts","admin/resources/learning-paths/views/all/utils/filters/mapLearningPathsAllFilters.ts","admin/resources/learning-paths/views/all/utils/filters/filesAllLearningPathsFilterList.ts","admin/resources/learning-paths/views/all/utils/filters/learningPathsAllFilterToFilterNameMap.ts","admin/resources/learning-paths/views/all/utils/constants/learningPathsMessages.ts","admin/resources/learning-paths/views/all/utils/columns.ts","admin/resources/learning-paths/views/all/utils/mapFetchLearningPathsAllPayload.ts","admin/resources/learning-paths/views/all/utils/getLearningPathsAllMenuItemsList.ts","admin/resources/learning-paths/views/all/utils/getFilteredLPColumns.ts","admin/programs/all/enums/FilterNamesEnum.ts","admin/programs/all/enums/ProgramsAllOrdering.enum.ts","admin/programs/all/enums/ProgramDropdownName.enum.ts","pages/ErrorPage/ErrorPage.tsx","pages/AuthFailedPage/AuthFailedPage.tsx","resources/images/permissionsRequired.svg","pages/NoPermissionsPage/NoPermissionsPage.tsx","pages/FileNotFoundPage/FileNotFoundPage.tsx","pages/FileDownloadPage/FileDownloadPage.tsx","admin/upload/utils/uploader.utils.ts","admin/upload/utils/messages.ts","admin/integrations/add-integration/utils/constants/addIntegrationConstants.ts","admin/integrations/add-integration/utils/constants/integrationTypeMap.ts","admin/integrations/add-integration/utils/constants/addIntegrationMessages.ts","admin/integrations/add-integration/utils/constants/addIntegrationValidationWarnings.ts","admin/integrations/add-integration/utils/constants/supportedCertificateFormats.ts","admin/integrations/details/utils/constants/integrationDetailsContstants.ts","admin/resources/learning-paths/components/NoResources/NoResources.tsx","admin/resources/learning-paths/components/LearningPathListItem/LearningPathListItem.tsx","admin/resources/learning-paths/components/LearningPathSessions/components/AddSessionResourcesForm/config/addSessionFormBaseConfig.ts","admin/resources/learning-paths/components/LearningPathSessions/components/AddSessionResourcesForm/AddSessionResourcesForm.tsx","admin/resources/learning-paths/components/LearningPathSessions/components/SessionList/SessionList.tsx","admin/resources/learning-paths/components/LearningPathSessions/components/LearningPathSessionsListItem/LearningPathSessionsListItem.tsx","admin/resources/learning-paths/components/LearningPathSessions/components/SessionResourceListItem/SessionResourceListItem.tsx","admin/resources/learning-paths/components/LearningPathSessions/components/SessionDetailsDivider/SessionDetailsDivider.tsx","admin/resources/learning-paths/views/session-builder/utils/schema/learningPathSessionsFormBaseValidationSchema.ts","admin/resources/learning-paths/components/LearningPathSessions/components/LearningPathSessionsForm/LearningPathSessionsForm.tsx","admin/resources/learning-paths/components/LearningPathSessions/components/SessionsListItemActionButtons/SessionsListItemActionButtons.tsx","admin/resources/learning-paths/components/LearningPathSessions/components/SessionResourceListEdit/SessionResourceListEdit.tsx","admin/resources/learning-paths/components/LearningPathSessions/components/AddSessionResources/AddSessionResources.tsx","admin/resources/learning-paths/components/LearningPathSessions/components/AddResourcesActionButtons/AddResourcesActionButtons.tsx","admin/resources/learning-paths/components/LearningPathSessions/components/AddSessionAdditionalContent/AddSessionAdditionalContent.tsx","admin/resources/learning-paths/components/LearningPathSessions/components/LinkExistingResources/LinkExistingResources.tsx","admin/resources/learning-paths/components/LearningPathSessions/components/AddResourcesDrawerList/AddResourcesDrawerList.tsx","admin/resources/learning-paths/components/LearningPathSessions/components/AddResourcesDrawerListItem/AddResourcesDrawerListItem.tsx","admin/resources/learning-paths/components/LearningPathSessions/components/AddSessionInstruments/AddSessionInstruments.tsx","admin/resources/learning-paths/components/LearningPathSessions/components/LinkExistingInstruments/LinkExistingInstruments.tsx","admin/resources/learning-paths/components/LearningPathSessions/components/AddSessionInstrumentsForm/config/addSessionInstrumentsFormBaseConfig.ts","admin/resources/learning-paths/components/LearningPathSessions/components/AddSessionInstrumentsForm/AddSessionInstrumentsForm.tsx","admin/resources/learning-paths/components/LearningPathSessions/components/SessionInstrumentListEdit/SessionInstrumentsDetailsEdit.tsx","admin/resources/learning-paths/components/LearningPathSessions/components/SessionDetails/SessionDetails.tsx","admin/resources/learning-paths/components/LearningPathSessions/components/SessionDetailsEdit/SessionDetailsEdit.tsx","admin/resources/learning-paths/components/LearningPathSessions/components/SessionDetailsPreview/SessionDetailsPreview.tsx","admin/resources/learning-paths/components/LearningPathSessions/components/AdditionalResourcesList/AdditionalResourcesList.tsx","admin/resources/learning-paths/components/LearningPathSessions/components/AddInstrumentsDrawerList/AddInstrumentsDrawerList.tsx","admin/resources/learning-paths/components/LearningPathSessions/components/AddBaseDrawerListItem/AddBaseDrawerListItem.tsx","admin/resources/learning-paths/components/LearningPathSessions/components/AddInstrumentsDrawerListItem/AddInstrumentsDrawerListItem.tsx","admin/resources/learning-paths/components/LearningPathSessions/components/SessionInstrumentListItem/SessionInstrumentListItem.tsx","admin/resources/learning-paths/components/LearningPathSessions/components/SessionListDragItem/SessionListDragItem.tsx","admin/resources/learning-paths/components/LearningPathSessions/components/SessionResourceDragListItem/SessionResourceDragListItem.tsx","admin/resources/learning-paths/components/LearningPathSessions/LearningPathSessions.tsx","admin/resources/learning-paths/components/LearningPathFooter/LearningPathFooter.tsx","admin/resources/learning-paths/components/LearningPathDetails/LearningPathDetails.tsx","admin/resources/learning-paths/components/LearningPathDetailsFirstCol/LearningPathDetailsFirstCol.tsx","admin/resources/learning-paths/components/LearningPathDetailsSecondCol/LearningPathDetailsSecondCol.tsx","enums/learning-paths/SessionBuilderEditMode.enum.ts","admin/library/instruments/components/ModalCreateNewInstrument/ModalCreateNewInstrumentWithForm.tsx","admin/library/instruments/components/buttonsWithAdminPermissions.tsx","admin/library/instruments/components/ModalCreateNewInstrument/ModalCreateNewInstrument.tsx","admin/library/instruments/components/Card/CardLinkInfoTooltip.tsx","admin/programs/details/store/index.ts","admin/resources/learning-paths/enums/LearningPathLabel.enum.ts","admin/resources/learning-paths/views/all/hooks/useLearningPaths.ts","admin/resources/learning-paths/views/all/hooks/useLearningPathsAllStoreActions.ts","admin/resources/learning-paths/views/all/components/ActionButtons/LearningPathsDropdown.tsx","admin/resources/learning-paths/views/all/components/ActionButtons/LearningPathsActionButtons.tsx","admin/resources/learning-paths/views/all/components/Modals/ModalClone/cloneLearningPathBaseConfig.ts","admin/resources/learning-paths/views/all/components/Modals/ModalClone/ModalCloneForm.tsx","admin/resources/learning-paths/views/all/components/Modals/ModalClone/ModalCloneContent.tsx","admin/resources/learning-paths/views/all/components/Modals/ModalClone/ModalClone.tsx","admin/resources/learning-paths/views/all/components/Sidebar/LearningPathsSidebar.tsx","admin/resources/learning-paths/views/all/components/Content/components/ContentFooter/LearningPathContentFooter.tsx","admin/resources/learning-paths/views/all/components/Content/components/LearningPathsHeaderSortBy/LearningPathsHeaderSortBy.tsx","admin/resources/learning-paths/views/all/components/Content/components/ContentHeader/LearningPathContentHeader.tsx","admin/resources/learning-paths/views/all/components/Content/LearningPathsContent.tsx","admin/resources/learning-paths/LearningPaths.tsx","admin/resources/learning-paths/views/all/LearningPathsViewAll.tsx","admin/library/instruments/details/hooks/useInstrumentIdParams.ts","admin/library/instruments/details/hooks/useInstrument.ts","admin/library/instruments/details/hooks/useInstrumentModals.ts","enums/paper-assessments/ProgramClassesPaperAssessmentsFilterNames.enum.ts","enums/paper-assessments/ProgramClassPaperAssessmentsOrdering.enum.ts","enums/paper-assessments/PaperAssessmentsSortDropdownName.enum.ts","admin/library/instruments/builder/components/ActionsBuilderView/ActionsBuilderView.tsx","admin/library/instruments/builder/components/CardItem/CardItem.tsx","admin/library/instruments/builder/components/BuilderItem/BuilderItem.tsx","admin/library/instruments/builder/components/Builder/Builder.tsx","admin/library/instruments/builder/components/MatrixEditExtraHeader/MatrixEditExtraHeader.tsx","admin/library/instruments/builder/components/PoolItem/PoolItem.tsx","admin/library/instruments/builder/components/PoolItemMatrixMode/PoolItemMatrixMode.tsx","admin/library/instruments/builder/components/PoolItemsList/PoolItemsList.tsx","admin/library/instruments/builder/components/PoolItemsMatrixList/PoolItemsMatrixList.tsx","admin/library/instruments/builder/components/SidebarBuilderView/sidebarBuilderBaseConfig.ts","admin/library/instruments/builder/components/SidebarBuilderView/SidebarBuilderView.tsx","admin/library/instruments/builder/components/InstrumentEditName/InstrumentEditName.tsx","admin/library/instruments/builder/components/ModalLinkItems/ModalLinkItems.tsx","admin/library/instruments/builder/components/ModalLinkItemsForm/ModalLinkItemsForm.tsx","admin/library/instruments/builder/components/ModalInfoLinkItem/ModalInfoLinkItem.tsx","admin/library/instruments/builder/components/ModalStackRelatedFilters/ModalStackRelatedFilters.tsx","admin/library/instruments/builder/components/InstrumentEditInstructionalText/InstrumentEditInstructionalText.tsx","admin/library/instruments/builder/components/InstrumentEditHeaderAndFooter/InstrumentEditHeaderAndFooter.tsx","admin/library/instruments/builder/components/BuilderInstructionalText/builderInstructionalTextFormBaseConfig.ts","admin/library/instruments/builder/components/BuilderInstructionalText/BuilderInstructionalText.tsx","admin/library/instruments/builder/components/BuilderInstructionalText/BuilderInstructionalTextForm.tsx","admin/library/instruments/builder/components/InstrumentEditContainer/InstrumentEditContainer.tsx","admin/library/instruments/builder/components/DynamicCharacters/DynamicCharacters.tsx","admin/resources/upload/components/FilesUpload/SingleFileUpload/SingleFileUpload.tsx","admin/resources/upload/components/RadioGroup/AccessibleToStudentsRadioGroup/AccessibleToStudentsRadioGroup.tsx","admin/resources/upload/components/Input/FileUploadFormInput/FileUploadFormInput.tsx","admin/resources/upload/components/Datepicker/UploadResourceDatePicker/UploadResourceDatePicker.tsx","admin/resources/upload/components/TextArea/FileUploadFormTextArea/FileUploadFormTextArea.tsx","admin/resources/upload/components/Footer/UploadFooter/UploadFooter.tsx","admin/resources/learning-paths/views/edit/store/mock/mockKSAsList.ts","admin/resources/learning-paths/views/edit/store/thunks/config.ts","admin/resources/learning-paths/views/edit/store/thunks/fetchLearningPathById.thunk.ts","admin/resources/learning-paths/views/edit/store/thunks/updateLearningPath.thunk.ts","admin/resources/learning-paths/views/edit/store/thunks/deleteLearningPath.thunk.ts","admin/resources/learning-paths/views/edit/store/thunks/publishLearningPath.thunk.ts","admin/resources/learning-paths/views/edit/store/thunks/exportLearningPath.thunk.ts","admin/resources/learning-paths/views/edit/store/learningPathsEdit.initialState.ts","admin/resources/learning-paths/views/edit/store/learningPathsEdit.reducer.ts","admin/resources/learning-paths/views/edit/store/learningPathsEdit.selectors.ts","admin/resources/learning-paths/views/edit/store/learningPathsEditExtra.reducer.ts","admin/resources/learning-paths/views/edit/store/learningPathsEdit.slice.ts","admin/items-import/store/itemsImport.selectors.ts","admin/programs/all/store/index.ts","admin/library/instruments/builder/enums/BuilderEditModeEnum.ts","admin/library/instruments/builder/enums/FormNameEnum.ts","admin/library/items/enums/ItemFilterNamesEnum.ts","layout/components/ProfileMenu/ProfileMenu.tsx","layout/components/Header/Header.tsx","layout/components/Layout/Layout.tsx","layout/components/PageLayoutWithFixedAreas/PageLayoutWithFixedAreas.tsx","admin/library/instruments/details/utils/instrumentDetailsForm.ts","admin/library/instruments/details/utils/instuments.utils.ts","admin/library/instruments/details/utils/prepareFileFromBlob.ts","admin/library/instruments/details/utils/convertBase64ToBlob.ts","admin/library/instruments/details/utils/mapAreaProgramClassExport.ts","admin/library/instruments/details/utils/downloadExport.ts","admin/library/instruments/details/utils/getInstrumentLogo.ts","admin/library/instruments/details/utils/prepareContentTypeImage.ts","admin/library/instruments/details/utils/mapUpdateInstrument.ts","toast-notifications/enums/ToastNotificationTypeEnum.ts","admin/programs/details/classes/details/instruments/store/index.ts","admin/integrations/add-integration/hooks/useAddIntegration.ts","admin/integrations/add-integration/hooks/useAddIntegrationType.ts","admin/integrations/add-integration/hooks/useAddIntegrationStateActions.ts","admin/programs/details/store/programDetails.initialState.ts","admin/resources/google-sites/details/enums/IGoogleSitesAreasTable.enum.ts","admin/resources/google-sites/details/enums/GoogleSitesDetailOrdering.enum.ts","admin/resources/google-sites/details/enums/GoogleSiteDetailsName.enum.ts","admin/resources/google-sites/details/enums/HistoryTableStatus.enum.ts","admin/resources/google-sites/details/enums/HistoryTableButtonText.enum.ts","admin/resources/google-sites/details/enums/BoxSize.enum.ts","admin/upload/enums/UploadFileStatus.enum.ts","admin/programs/details/masterInstruments/store/index.ts","admin/programs/details/classes/all/enums/FilterNamesEnum.ts","admin/programs/details/classes/all/enums/OrderingEnum.ts","admin/programs/details/classes/all/enums/ProgramClassesDropdownName.enum.ts","admin/integrations/details/enums/AuditLogsColumnsTable.enum.ts","admin/integrations/details/enums/AuditLogsLabel.enum.ts","survey-taker/index.ts","admin/resources/learning-paths/utils/constants/messages.ts","admin/programs/details/classes/all/store/index.ts","admin/resources/upload/store/thunks/config.ts","admin/resources/upload/store/thunks/uploadFile.thunk.ts","admin/resources/upload/store/thunks/uploadScorm.thunk.ts","admin/resources/upload/store/thunks/createWebLink.thunk.ts","admin/resources/files/views/edit/store/thunks/config.ts","admin/resources/files/views/edit/store/thunks/fetchFileById.thunk.ts","admin/resources/files/views/edit/store/thunks/deleteFile.thunk.ts","admin/resources/files/views/edit/store/thunks/updateResourcesFile.thunk.ts","admin/resources/files/views/edit/store/thunks/updateScormResource.thunk.ts","admin/resources/files/views/edit/store/thunks/updateWebLinkResource.thunk.ts","admin/resources/files/views/edit/store/thunks/downloadFileById.thunk.ts","admin/resources/files/views/edit/store/fileDetails.initialState.ts","admin/resources/files/views/edit/store/fileDetails.reducer.ts","admin/resources/files/views/edit/store/fileDetailsExtra.reducer.ts","admin/resources/files/views/edit/store/fileDetails.selectors.ts","admin/resources/files/views/edit/store/fileDetails.slice.ts","admin/integrations/components/IntegrationInput/IntegrationInput.tsx","admin/integrations/components/PreviewList/PreviewList.tsx","admin/integrations/components/IntegrationConfirmCheckbox/IntegrationConfirmCheckbox.tsx","admin/integrations/add-integration/utils/helpers/getIntegrationTypeStringValue.ts","admin/integrations/add-integration/utils/helpers/getSchoolDistrictStringValue.ts","admin/integrations/add-integration/utils/helpers/getSchoolNameStringValue.ts","admin/integrations/add-integration/utils/helpers/getAreaStringValue.ts","admin/integrations/add-integration/utils/helpers/mapAddIntegrationDataForPayload.ts","admin/integrations/add-integration/utils/helpers/getPreviewFirstColumnList.ts","admin/integrations/add-integration/utils/helpers/getPreviewSecondColumnList.ts","admin/integrations/add-integration/utils/helpers/getAddIntegrationGoogleSitesList.ts","admin/integrations/add-integration/utils/helpers/getAddIntegrationMicrosoftTeamsList.ts","admin/library/items/builder/hooks/useCustomAnswerStack.ts","admin/library/items/builder/hooks/useRangeAnswerStack.ts","admin/library/items/builder/hooks/useEditAnswerStack.ts","admin/library/items/builder/hooks/useMapChoicesBasedOnDomainKnowledge.ts","admin/library/items/store/items.initialState.ts","admin/library/items/store/item.reducer.ts","admin/library/items/store/normalizationSchemas.ts","admin/library/items/store/itemsExtra.reducer.ts","admin/library/items/store/items.slice.ts","admin/programs/details/classes/details/paper-assessments/store/programClassesPaperAssessments.selectors.ts","utils/items/answerstacks/answerStackContants.ts","utils/items/itemConstants.ts","utils/items/isDomainKnowledge.ts","enums/upload/ModalTypes.enum.ts","admin/resources/utils/mapStringListToStringWithSemicolon.ts","admin/resources/learning-paths/views/edit/utils/helpers/mapEditLearningPathPayload.ts","admin/resources/learning-paths/views/edit/utils/helpers/getUserDetails.ts","admin/resources/learning-paths/views/edit/utils/constants/learningPathEditMessages.ts","survey-taker/utils/TimeSpentTracker.ts","survey-taker/components/SurveyTaker/SurveyTaker.tsx","survey-taker/components/SurveyTakerContent/SurveyTakerContent.tsx","survey-taker/components/ViewError/ViewError.tsx","resources/images/successPage/thankYou.svg","survey-taker/components/ViewSuccess/ViewSuccess.tsx","survey-taker/components/PrintSurveyTaker/PrintSurveyTaker.tsx","survey-taker/components/FooterLogo/FooterLogo.tsx","admin/resources/google-sites/all/enums/GoogleSitesListOrdering.enum.ts","admin/resources/learning-paths/views/all/store/mocks/learningPaths.mock.ts","admin/resources/learning-paths/views/all/store/thunks/config.ts","admin/resources/learning-paths/views/all/store/thunks/fetchLearningPathsPaged.thunk.ts","admin/resources/learning-paths/views/all/store/thunks/fetchExportLearningPath.thunk.ts","admin/resources/learning-paths/views/all/store/thunks/duplicateLearningPath.thunk.ts","admin/resources/learning-paths/views/all/store/learningPathsAll.reducer.ts","admin/resources/learning-paths/views/all/store/learningPathsAll.selectors.ts","admin/resources/learning-paths/views/all/store/learningPathsAll.initialState.ts","admin/resources/learning-paths/views/all/store/normalizationSchemas.ts","admin/resources/learning-paths/views/all/store/learningPathsAllExtra.reducer.ts","admin/resources/learning-paths/views/all/store/learningPathsAll.slice.ts","admin/integrations/add-integration/utils/index.ts","admin/resources/google-sites/details/index.ts","admin/programs/details/components/ViewExpansionPanel/ViewExpansionPanel.tsx","admin/programs/details/components/LevelReportingMenu/config/menuConfig.ts","admin/programs/details/components/LevelReportingMenu/LevelReportingMenu.tsx","admin/programs/details/components/LevelReportingMenuItemList/LevelReportingMenuItemList.tsx","admin/programs/details/components/LevelReportingMenuItem/LevelReportingMenuItem.tsx","admin/programs/details/components/NoDataMenuItem/NoDataMenuItem.tsx","admin/programs/details/components/LevelReportingMenuForm/config/levelReportingMenuFormBaseConfig.ts","admin/programs/details/components/LevelReportingMenuForm/LevelReportingMenuForm.tsx","toast-notifications/store/toastNotifications.selectors.ts","toast-notifications/store/toastNotifications.reducer.ts","toast-notifications/store/toastNotifications.slice.ts","toast-notifications/store/toastNotifications.initialState.ts","admin/library/instruments/store/instruments.initialState.ts","admin/library/instruments/store/instruments.reducer.ts","admin/library/instruments/store/normalizationSchemas.ts","admin/library/instruments/store/instrumentsExtra.reducer.ts","admin/library/instruments/store/instruments.slice.ts","admin/integrations/store/normalizationSchemas.ts","admin/integrations/store/integrationsExtra.reducer.ts","admin/integrations/store/integrations.slice.ts","admin/integrations/enums/IIntegrationsPagedFilter.enum.ts","admin/programs/details/classes/details/paper-assessments/store/programClassesPaperAssessments.initialState.ts","admin/programs/details/classes/details/paper-assessments/store/programClassesPaperAssessments.reducer.ts","admin/programs/details/classes/details/paper-assessments/store/normalizationSchemas.ts","admin/programs/details/classes/details/paper-assessments/store/programClassesPaperAssessmentsExtra.reducer.ts","admin/programs/details/classes/details/paper-assessments/store/programClassesPaperAssessments.slice.ts","admin/programs/details/store/thunks/config.ts","admin/programs/details/store/thunks/fetchProgram.thunk.ts","admin/programs/details/store/thunks/fetchLevelsOfReportingList.thunk.ts","admin/programs/details/classes/details/paper-assessments/store/thunks/config.ts","admin/programs/details/classes/details/paper-assessments/store/thunks/uploadPaperAssessments.thunk.ts","admin/programs/details/classes/details/paper-assessments/store/thunks/fetchClassPaperAssessmentsPaged.thunk.ts","utils/instruments/instrumentConstants.ts","utils/instruments/generalInstrumentMetaConstants.ts","enums/upload/ModalResources.enum.ts","enums/upload/IResourceContentType.enum.ts","enums/upload/IResourceContentTypeName.enum.ts","components-lib/sidebar/SidebarBase.tsx","admin/components/ActiveHeader/ActiveHeader.tsx","admin/library/instruments/builder/components/CardQuestionSimple/CardQuestionSimple.tsx","admin/items-import/utils/constants/messages.ts","admin/resources/upload/store/upload.selectors.ts","admin/resources/upload/utils/helpers/getAccessibleToStudentsOptions.ts","admin/resources/upload/utils/helpers/getFileName.ts","admin/resources/upload/utils/helpers/getLastDot.ts","admin/resources/upload/utils/helpers/recognizeTypeByFileMimeType.ts","admin/resources/upload/utils/helpers/mapUploadResourceFile.ts","admin/resources/upload/utils/helpers/getUploadFirstColList.ts","admin/resources/upload/utils/helpers/mapUploadResourceMetadata.ts","admin/resources/upload/utils/helpers/mapUploadResourceScorm.ts","admin/resources/upload/utils/helpers/mapCreateResourceWebLink.ts","admin/resources/upload/utils/helpers/isValidFormValue.ts","admin/resources/upload/utils/helpers/recognizeFillablePdf.ts","admin/resources/upload/utils/helpers/getIsDateEarlierFromToday.ts","admin/resources/upload/utils/schema/uploadFileFormBaseValidationSchema.ts","admin/resources/upload/utils/schema/addWebLinkFormBaseValidationSchema.ts","admin/resources/upload/utils/schema/uploadScormFormBaseValidationSchema.ts","admin/resources/upload/utils/constants/allowedMimeTypeFormats.ts","admin/resources/upload/utils/constants/messages.ts","admin/resources/upload/utils/constants/zipMimeType.ts","admin/resources/upload/utils/constants/videoMimeType.ts","admin/resources/upload/utils/constants/audioMimeType.ts","admin/resources/upload/utils/constants/excelMimeTypes.ts","admin/resources/upload/utils/constants/imageMimeTypes.ts","admin/resources/upload/utils/constants/documentMimeTypes.ts","admin/resources/upload/utils/constants/pdfMimeType.ts","admin/resources/upload/file/components/Header/UploadFileHeader.tsx","admin/resources/upload/hooks/useLanguages.ts","admin/resources/upload/hooks/useUploadActionButtons.ts","admin/resources/upload/file/components/Footer/UploadFileFooter.tsx","admin/resources/upload/file/components/ContentStart/UploadFileContentStart.tsx","admin/resources/upload/utils/helpers/mapFileTypeNumber.ts","admin/resources/upload/utils/helpers/getFileType.ts","admin/resources/upload/file/components/ContentMiddle/UploadFileContentMiddle.tsx","admin/resources/upload/file/UploadResourceFile.tsx","admin/resources/upload/file/hooks/useUploadFile.ts","admin/resources/upload/scorm/components/ScormContentStart/ScormContentStart.tsx","admin/resources/upload/scorm/components/ScormContentMiddle/ScormContentMiddle.tsx","admin/resources/upload/scorm/components/ScormContentHeader/ScormContentHeader.tsx","admin/resources/upload/scorm/components/ScormContentFooter/ScormContentFooter.tsx","admin/resources/upload/scorm/UploadResourceScorm.tsx","admin/resources/upload/scorm/hooks/useUploadScorm.ts","admin/resources/upload/web-link/components/ContentStart/ContentStart.tsx","admin/resources/upload/web-link/components/WebLinkHeader/WebLinkHeader.tsx","admin/resources/upload/web-link/components/WebLinkFooter/WebLinkFooter.tsx","admin/resources/upload/web-link/components/WebLinkInput/WebLinkInput.tsx","admin/resources/upload/web-link/UploadResourceWebLink.tsx","admin/resources/upload/web-link/hooks/useCreateWebLink.ts","admin/resources/upload/UploadResources.tsx","admin/resources/learning-paths/views/create/utils/schema/learningPathViewCreateFormBaseValidationSchema.ts","admin/resources/learning-paths/views/create/utils/helpers/createEmptySession.ts","admin/resources/learning-paths/views/create/utils/helpers/mapAddResourceItemsPayload.ts","admin/resources/learning-paths/views/create/utils/helpers/getResourcesCollectionByIds.ts","admin/resources/learning-paths/views/create/utils/helpers/filterResourceCollectionById.ts","admin/resources/learning-paths/views/create/utils/helpers/getInstrumentsCollectionByIds.ts","admin/resources/learning-paths/views/create/utils/helpers/filterInstrumentCollectionById.ts","admin/resources/learning-paths/views/create/utils/helpers/mapAddInstrumentItemsPayload.ts","admin/resources/learning-paths/views/create/utils/constants/sessionResourceTooltipMessages.ts","admin/resources/learning-paths/views/create/utils/helpers/getAccessibleToStudentsTooltip.ts","admin/resources/learning-paths/views/create/utils/helpers/getLinkTooltip.ts","admin/items-import/hooks/useItemsImport.ts","resources/images/instruments/Illustration_trash.svg","admin/integrations/details/index.ts","admin/library/components/Answer/Answer.tsx","admin/library/components/Answers/AnswerHeader.tsx","admin/library/components/Answers/AnswerComponentWrapper.tsx","admin/library/components/Answers/AnswersView.tsx","admin/library/instruments/index.ts","admin/integrations/enums/IntegrationsFilterNames.enum.ts","admin/programs/details/classes/details/paper-assessments/store/index.ts","admin/programs/details/utils/form/constants.ts","admin/programs/details/utils/constants/reportMessages.ts","admin/programs/details/utils/exportUtils/exportTypes.ts","admin/programs/details/classes/details/instruments/store/programClassInstruments.initialState.ts","admin/programs/details/classes/details/instruments/store/programClassInstruments.reducer.ts","admin/programs/details/classes/details/instruments/store/normalizationSchemas.ts","admin/programs/details/classes/details/instruments/store/programClassInstrumentsExtra.reducer.ts","admin/programs/details/classes/details/instruments/store/programClassInstruments.slice.ts","admin/programs/details/classes/details/store/index.ts","admin/integrations/store/integrations.initialState.ts","admin/library/instruments/details/components/modals/ModalEditClassRelatedInstrument.tsx","resources/images/instruments/Illustration_paperplane.svg","admin/library/instruments/components/ModalCloneInstrument/ModalCloneInstrument.tsx","admin/library/instruments/components/CloneInstrumentForm/cloneInstrumentValidationSchema.ts","admin/library/instruments/components/CloneInstrumentForm/CloneInstrumentForm.tsx","admin/library/instruments/components/ModalCloneInstrument/ModalCloneInstrumentWithForm.tsx","admin/library/instruments/details/components/modals/ModalsInstrumentDetails.tsx","admin/library/instruments/details/components/HeaderActionButtons/HeaderActionButtons.tsx","admin/library/instruments/details/components/SidebarInstrumentDetails/SidebarInstrumentDetailsEdit.tsx","admin/library/instruments/details/components/SidebarInstrumentDetails/SidebarInstrumentDetailsView.tsx","admin/library/instruments/details/components/SidebarInstrumentDetails/SidebarInstrumentDetails.tsx","admin/library/instruments/details/components/PreviewDropdown/PreviewDropdown.tsx","admin/library/instruments/details/InstrumentDetailsView.tsx","admin/resources/learning-paths/views/create/store/learningPathsCreate.reducer.ts","admin/resources/learning-paths/views/create/store/thunks/createLearningPath.thunk.ts","admin/resources/learning-paths/views/create/store/thunks/config.ts","admin/resources/learning-paths/views/create/store/learningPathsCreateExtra.reducer.ts","admin/resources/learning-paths/views/create/store/learningPathsCreate.slice.ts","admin/resources/learning-paths/views/create/store/learningPathsCreate.initialState.ts","admin/resources/learning-paths/views/create/store/learningPathsCreate.selectors.ts","admin/programs/details/classes/all/enums/ProgramsClassesOrdering.enum.ts","admin/programs/details/classes/details/reports/enums/IReportApi.enum.ts","admin/resources/google-sites/all/enums/GoogleSitesListSortName.enum.ts","admin/items-import/enums/ItemImportActiveStep.enum.ts","admin/items-import/enums/FileFieldTable.enum.ts","admin/items-import/enums/ISystemFieldOption.enum.ts","admin/items-import/enums/MappingTableLabel.enum.ts","admin/upload/store/uploader.types.ts","admin/upload/store/thunks/upload.thunks.ts","admin/upload/store/uploader.selectors.ts","admin/upload/store/uploader.reducer.ts","admin/programs/details/classes/all/store/programClasses.initialState.ts","admin/programs/details/classes/all/store/programClasses.reducer.ts","admin/programs/details/classes/all/store/normalizationSchemas.ts","admin/programs/details/classes/all/store/programClassesExtra.reducer.ts","admin/programs/details/classes/all/store/programClasses.slice.ts","admin/programs/details/masterInstruments/store/programMasterInstruments.initialState.ts","admin/programs/details/masterInstruments/store/programMasterInstruments.reducer.ts","admin/programs/details/masterInstruments/store/normalizationSchemas.ts","admin/programs/details/masterInstruments/store/programMasterInstrumentsExtra.reducer.ts","admin/programs/details/masterInstruments/store/programMasterInstruments.slice.ts","utils/api/getApiMultipartFormDataHeadersConfig.ts","utils/api/redirectWhenErrorStatusCode.ts","utils/api/getApiJsonBlobDataHeadersConfig.ts","components-lib/layout/Column/Column.tsx","components-lib/layout/Container/Container.tsx","components-lib/layout/Row/Row.tsx","admin/integrations/details/utils/helpers/getIntegrationDetailsFirstColumnList.ts","admin/integrations/details/utils/helpers/getIntegrationDetailsSecondColumnList.ts","admin/integrations/details/utils/helpers/getAuditLogsColumns.ts","admin/integrations/details/utils/helpers/getIsNotIntegrationFailedOrHasError.ts","admin/resources/learning-paths/views/create/components/AddSessionButton/AddSessionButton.tsx","admin/resources/learning-paths/views/create/components/CreateLearningPathFooter/CreateLearningPathFooter.tsx","admin/resources/learning-paths/views/create/components/CreateLearningPathDetailsForm/CreateLearningPathDetailsForm.tsx","admin/resources/learning-paths/views/create/components/CreateLearningPathDetails/CreateLearningPathDetails.tsx","admin/resources/learning-paths/views/create/components/LearningPathViewCreateContainer/LearningPathViewCreateContainer.tsx","admin/resources/learning-paths/views/create/hooks/useCreateLearningPath.ts","admin/resources/learning-paths/views/create/hooks/useCreateLearningPathResources.ts","permissions/utils/hasRequiredPermissions.ts","permissions/store/thunks/config.ts","admin/programs/details/classes/details/hooks/index.ts","admin/integrations/store/integrations.selectors.ts","permissions/store/permissions.selectors.ts","permissions/store/thunks/fetchUserRole.thunk.ts","permissions/store/thunks/fetchUserRoleList.thunk.ts","permissions/store/permissionsExtra.reducer.ts","permissions/store/permissions.slice.ts","permissions/store/permissions.initialState.ts","admin/components/ErrorBox/components/ErrorIcon/ErrorIcon.tsx","admin/components/ErrorBox/components/ErrorMessage/ErrorMessage.tsx","admin/components/ErrorBox/components/ErrorBoxMessage/ErrorBoxMessage.tsx","admin/components/ErrorBox/components/ErrorBoxMessageList/ErrorBoxMessageList.tsx","admin/components/ErrorBox/ErrorBox.tsx","admin/programs/details/classes/details/instruments/store/thunks/config.ts","admin/programs/details/classes/details/instruments/store/thunks/fetchProgramClassInstruments.thunk.ts","admin/programs/details/classes/details/instruments/store/thunks/fetchSortByColumns.thunk.ts","admin/programs/details/classes/details/reports/utils/reportUrlUtil.ts","admin/programs/details/classes/details/reports/utils/programClassReportTypes.ts","admin/programs/details/classes/details/reports/utils/programClassExportUtil.ts","admin/programs/details/classes/details/store/thunks/fetchProgramClass.thunk.ts","admin/programs/details/classes/details/store/thunks/config.ts","admin/programs/details/classes/all/store/thunks/fetchProgramClassesPaged.thunk.ts","admin/programs/details/classes/all/store/thunks/config.ts","admin/programs/details/masterInstruments/store/thunks/fetchProgramMasterInstrumentsPaged.thunk.ts","admin/programs/details/masterInstruments/store/thunks/config.ts","admin/programs/all/store/thunks/fetchProgramsPaged.thunk.ts","admin/programs/all/store/thunks/config.ts","admin/programs/details/classes/details/components/ViewExpansionPanel/ViewExpansionPanel.tsx","admin/library/instruments/builder/components/CardItem/CardItemPositionTag.tsx","admin/library/instruments/builder/components/CardItem/CardBody.tsx","admin/library/instruments/builder/components/DroppableArea/DroppableArea.tsx","admin/library/items/store/thunks/promoteItemAnswerStack.thunk.ts","admin/integrations/add-integration/components/Subtitle/Subtitle.tsx","admin/integrations/add-integration/components/AddIntegrationActiveStepPage/AddIntegrationActiveStepPage.tsx","admin/integrations/add-integration/components/AddIntegrationContentFooter/AddIntegrationContentFooter.tsx","admin/integrations/add-integration/components/ModalCancelAddIntegration/ModalCancelAddIntegration.tsx","admin/integrations/add-integration/components/AddIntegrationMetadata/AddIntegrationMetadata.tsx","admin/integrations/add-integration/components/AddIntegrationGoogleClassRoom/AddIntegrationGoogleClassRoom.tsx","admin/integrations/add-integration/components/AddIntegrationMicrosoftTeams/components/MicrosoftTeamsContent/MicrosoftTeamsContent.tsx","admin/integrations/add-integration/components/AddIntegrationMicrosoftTeams/AddIntegrationMicrosoftTeams.tsx","admin/integrations/add-integration/components/UploadCertificate/UploadCertificate.tsx","admin/integrations/add-integration/components/PreviewAndTest/PreviewAndTest.tsx","admin/integrations/add-integration/components/AddIntegrationGoogleSitesDestination/components/GoogleSitesDestinationContent.tsx","admin/integrations/add-integration/components/AddIntegrationGoogleSitesDestination/AddIntegrationGoogleSitesDestination.tsx","admin/integrations/add-integration/components/AddIntegrationGoogleSitesSource/AddIntegrationGoogleSitesSource.tsx","admin/integrations/add-integration/components/PickIntegrationTypeComponent/PickIntegrationTypeComponent.tsx","admin/integrations/add-integration/components/AddIntegrationInputList/AddIntegrationInputList.tsx","survey-taker/store/thunks/config.ts","survey-taker/store/thunks/getActiveSurvey.thunk.ts","survey-taker/store/thunks/getGeneralSurvey.thunk.ts","survey-taker/store/thunks/saveActiveSurvey.thunk.ts","survey-taker/store/thunks/saveGeneralSurvey.thunk.ts","admin/library/components/AnswerOpenEnded/AnswerOpenEnded.tsx","admin/resources/files/views/all/enums/DropdownItemTextEnum.enum.ts","admin/resources/google-sites/utils/constants/messages.ts","admin/integrations/details/components/Subheading/components/SubheadingActions.tsx","admin/integrations/details/components/Subheading/Subheading.tsx","admin/integrations/details/components/Header/Header.tsx","admin/integrations/details/components/AuditLogs/AuditLogs.tsx","admin/integrations/details/components/IntegrationDetailsContent/IntegrationDetailsContent.tsx","admin/integrations/details/components/IntegrationDetails/IntegrationDetails.tsx","admin/integrations/details/components/EditIntegrationCertificate/EditIntegrationCertificate.tsx","admin/integrations/details/components/EditorPermissionsCheckbox/EditorPermissionsCheckbox.tsx","enums/instruments/EntityStatus.enum.ts","enums/instruments/QuestionAnswersType.enum.ts","enums/instruments/QuestionPropertiesType.enum.ts","enums/instruments/QuestionType.enum.ts","enums/instruments/QuestionDomain.enum.ts","enums/instruments/QuestionDomainNum.enum.ts","admin/utils/messages.ts","admin/utils/adminPortalNavigationUtils.ts","layout/config/layout.config.ts","admin/integrations/components/IntegrationFormInput/IntegrationFormInput.tsx","toast-notifications/hooks/useToastNotification.ts","enums/SortingOrder.enum.ts","admin/programs/details/classes/details/hooks/useProgramClass.ts","permissions/utils/mapUserActivityExport.ts","permissions/store/thunks/fetchUserActivityExport.thunk.ts","admin/library/instruments/utils/messages.ts","admin/library/instruments/components/CreateInstrumentForm/CreateInstrumentFormFields.tsx","admin/library/components/Rating/AnswersRating/AnswerRating.tsx","admin/library/components/Rating/RatingToggleGroup/RatingToggleGroup.tsx","admin/library/components/AreaTitle/AreaTitle.tsx","admin/library/instruments/builder/components/MatrixQuestionItem/MatrixQuestionItem.tsx","admin/resources/upload/store/upload.reducer.ts","admin/resources/upload/store/upload.initialState.ts","admin/resources/upload/utils/helpers/getInitialFileToUploadPayload.ts","admin/resources/upload/utils/helpers/calculateLoadedPercent.ts","admin/resources/files/store/files.reducer.ts","admin/integrations/store/integrations.reducer.ts","admin/integrations/add-integration/AddIntegrationView.tsx","admin/integrations/hooks/useIntegration.ts","admin/integrations/hooks/useIntegrations.ts","admin/integrations/details/IntegrationsDetailView.tsx","admin/resources/google-sites/store/googleSites.slice.ts","admin/resources/google-sites/all/enums/index.ts","admin/items-import/store/itemsImportExtra.reducer.ts","admin/library/index.ts","admin/programs/index.ts","admin/library/items/all/utils/itemFilterToTilterNameMap.ts","admin/library/items/all/utils/itemAllColumns.ts","admin/library/items/all/utils/itemAllOrderingMap.ts","admin/library/items/all/utils/itemsFilterList.ts","admin/library/items/all/components/ItemsAllSortBy/ItemsAllSortBy.tsx","admin/library/items/all/components/FiltersPanelItems/FiltersPanelItems.tsx","admin/library/items/hooks/useActiveItem.ts","admin/library/items/hooks/useItem.ts","admin/library/items/hooks/useItemIdParam.ts","admin/library/items/hooks/useItemStateActions.ts","admin/library/items/hooks/usePageLoading.ts","admin/library/items/hooks/usePublish.ts","admin/library/items/hooks/useItems.ts","admin/library/items/hooks/useItemFilters.ts","admin/library/items/hooks/useItemSavingActions.ts","admin/library/items/all/components/ItemsAllFilters/config/itemsAllFiltersFormBaseConfig.ts","admin/library/items/all/components/ItemsAllFilters/ItemsAllFilters.tsx","admin/library/items/components/buttonsWithAdminPermissions/buttonsWithAdminPermissions.tsx","admin/library/items/components/HeaderActionButtons/HeaderActionButtons.tsx","admin/library/items/components/ModalDeleteItem/ModalDeleteItem.tsx","admin/library/items/components/ModalDeleteAnswerStack/ModalDeleteAnswerStack.tsx","admin/library/items/all/ItemsAllView.tsx","admin/library/items/all/utils/constants/instrumentAllConstants.ts","admin/library/items/views/ItemBaseView.tsx","admin/library/items/builder/components/ItemQuestion/ItemQuestion.tsx","admin/library/items/builder/components/AddEditQuestion/AddEditQuestion.tsx","admin/library/items/builder/components/ItemCard/ItemCard.tsx","admin/library/items/builder/components/ItemQuestion/ItemQuestionEdit.tsx","admin/library/items/builder/components/ItemQuestion/ItemQuestionName.tsx","admin/library/items/builder/components/ItemAnswerStack/ItemAnswerStack.tsx","admin/library/items/builder/components/ItemAnswerStackCustom/ItemAnswerStackCustom.tsx","admin/library/items/builder/components/SectionContainer/SectionContainer.tsx","admin/library/items/builder/components/ItemAnswers/ItemAnswers.tsx","admin/library/items/builder/components/SidebarItem/SidebarItem.tsx","admin/library/items/builder/components/SidebarBuilderCreateItem/SidebarBuilderCreateItem.tsx","admin/library/items/builder/components/ResponseTypeGroup/ResponseTypeGroup.tsx","admin/library/items/builder/components/ModalSelectAnswerStack/ModalSelectAnswerStackContent.tsx","admin/library/items/builder/components/ModalSelectAnswerStack/ModalSelectAnswerStack.tsx","admin/library/items/builder/components/ModalSelectAnswerStack/modalSelectAnswerStackValidationSchema.ts","admin/library/items/builder/components/ModalSelectAnswerStack/ModalSelectAnswerStackForm.tsx","admin/library/items/builder/components/ModalCreateAnswerStack/config/modalCreateAnswerStackValidationSchema.ts","admin/library/items/builder/components/ModalCreateAnswerStack/ModalCreateAnswerStackContent.tsx","admin/library/items/builder/components/ModalCreateAnswerStack/ModalCreateAnswerStack.tsx","admin/library/items/builder/components/ModalCreateAnswerStack/ModalCreateAnswerStackForm.tsx","admin/library/items/builder/components/DefaultAnswerStacks/DefaultAnswerStacks.tsx","admin/library/items/builder/components/ItemEditAnswerStack/ItemEditAnswerStack.tsx","admin/library/items/builder/components/ItemAnswerOpenEnded/ItemAnswerOpenEnded.tsx","admin/library/items/builder/components/ItemAnswersCustom/ItemAnswersCustom.tsx","admin/library/items/builder/components/ItemAnswersRange/ItemAnswersRange.tsx","admin/library/items/builder/components/ItemAnswerRangeInput/ItemAnswerRangeInput.tsx","admin/library/items/builder/components/EditRangeAnswerStack/EditRangeAnswerStack.tsx","admin/library/items/builder/components/CreateQuestionEditor/CreateQuestionEditor.tsx","admin/library/items/builder/components/EditAnswerStack/EditAnswerStack.tsx","admin/library/items/builder/components/EditQuestionEditor/EditQuestionEditor.tsx","admin/library/items/builder/components/ItemAnswersMultiSelect/ItemAnswersMultiSelect.tsx","admin/library/items/builder/views/create/components/ItemBuilderCreateContent/ItemBuilderCreateContent.tsx","admin/library/items/builder/views/create/components/ItemBuilderCreate/ItemBuilderCreate.tsx","admin/library/items/builder/views/create/components/ItemBuilderCreateForm/config/itemBuilderCreateFormBaseValuesConfig.ts","admin/library/items/builder/views/create/components/ItemBuilderCreateForm/ItemBuilderCreateForm.tsx","admin/library/items/builder/views/edit/itemBuilderEditForm.ts","admin/library/items/builder/views/edit/ItemBuilderEditAnswerStackView.tsx","admin/library/items/builder/ItemBuilderView.tsx","admin/library/items/builder/views/create/ItemBuilderCreateView.tsx","admin/library/items/details/components/SidebarItemDetails/SidebarItemDetails.tsx","admin/library/items/details/ItemDetailsView.tsx","admin/library/items/Items.tsx","admin/resources/google-sites/all/hooks/useGoogleSitesSortOrder.ts","admin/resources/google-sites/all/utils/forms/all/googleSitesBaseConfig.ts","admin/resources/google-sites/all/utils/getFormattedGoogleSitesListDate.ts","admin/resources/google-sites/all/utils/getGoogleSitesListColumns.ts","admin/resources/google-sites/all/utils/getSortGoogleSiteListMenuItemsList.ts","admin/resources/google-sites/all/utils/googleSiteListOrderingMap.ts","admin/resources/google-sites/all/hooks/useGoogleSitesSearch.ts","admin/resources/google-sites/utils/constants/pagination.ts","admin/resources/google-sites/all/utils/calculatePaginationResult.ts","admin/resources/google-sites/all/utils/filterGoogleSites.ts","admin/resources/google-sites/all/utils/isIncludesTerm.ts","admin/resources/google-sites/all/hooks/useGoogleSitesAll.ts","admin/resources/google-sites/all/components/GoogleSitesAllHeaderSearch/GoogleSitesAllHeaderSearch.tsx","admin/resources/google-sites/all/components/GoogleSitesForm/GoogleSitesForm.tsx","admin/resources/google-sites/all/components/GoogleSitesTable/GoogleSitesTable.tsx","admin/resources/google-sites/all/components/GoogleSitesSortBy/GoogleSitesSortBy.tsx","admin/resources/google-sites/all/components/GoogleSitesContent/GoogleSitesContent.tsx","admin/resources/google-sites/all/components/GoogleSitesHeader/GoogleSitesHeader.tsx","admin/resources/google-sites/all/GoogleSitesAllView.tsx","admin/resources/components/ResourcesNavBar/ResourcesNavBar.tsx","admin/resources/components/ResourcesFormInput/ResourcesFormInput.tsx","admin/resources/components/ResourcesFormTextArea/ResourcesFormTextArea.tsx","admin/resources/components/ResourceInput/ResourceInput.tsx","admin/resources/components/ResourcesDatePicker/ResourcesDatePicker.tsx","admin/resources/components/ResourceTextArea/ResourceTextArea.tsx","admin/resources/components/ResourceHeader/ResourceHeader.tsx","admin/resources/components/ResourceDetails/ResourceDetails.tsx","admin/resources/components/ResourceUserDetails/ResourceUserDetails.tsx","admin/resources/components/ResourceFooterButtons/ResourceFooterButtons.tsx","admin/resources/components/ResourceListColumn/ResourceListColumn.tsx","layout/components/page/styles.ts","layout/components/page/PageLayoutThreeCol.tsx","layout/components/page/PageLayoutTwoCol.tsx","layout/components/page/PageLayoutOneOrTwoEqualCols.tsx","layout/components/page/PageLayoutHorizontalRows.tsx","layout/components/page/PageLayoutTwoVerticalCols.tsx","layout/components/page/PageLayoutOneVerticalCol.tsx","admin/items-import/utils/constants/fileSupportedFormats.ts","admin/items-import/utils/constants/filePreviewTableConstants.ts","admin/items-import/utils/schema/itemsImportFormBaseValidationSchema.ts","admin/integrations/details/hooks/useIntegrationIdParam.ts","admin/integrations/details/hooks/useIntegrationStateActions.ts","admin/integrations/details/hooks/useIntegrationDetailsFormValues.ts","admin/integrations/details/hooks/useIntegrationDetailType.ts","permissions/enums/Roles.enum.ts","permissions/enums/AdminRoles.enum.ts","permissions/hooks/usePermissions.ts","permissions/hooks/useUserActivity.ts","filters-selections/store/filtersSelections.initialState.ts","filters-selections/store/filters.reducer.ts","filters-selections/store/filtersSelections.slice.ts","admin/resources/learning-paths/utils/forms/createUpdateFormBaseConfig.ts","admin/resources/learning-paths/utils/forms/mapCreateUpdateLearningPathPayload.ts","store/reducers/rootReducer.ts","toast-notifications/services/ToastNotificationsManager.ts","filters-selections/store/normalizationSchemas.ts","filters-selections/store/filtersSelectionExtra.reducer.ts","admin/integrations/utils/constants/integrationsConstants.ts","filters-selections/store/thunks/programs/fetchProgramClassesFilters.thunk.ts","filters-selections/store/thunks/programs/config.ts","admin/resources/upload/store/uploadExtra.reducer.ts","admin/resources/upload/store/upload.slice.ts","admin/integrations/add-integration/utils/schema/addIntegrationFormBaseValidationSchema.ts","store/index.ts","resources/images/errorPage/Illustration_Error_404.svg","admin/library/components/EntityCard/EntityCardAnswers.tsx","admin/resources/learning-paths/views/edit/hooks/useEditLearningPath.ts","admin/resources/learning-paths/views/edit/hooks/useLearningPathIdParam.ts","admin/resources/learning-paths/views/edit/components/DetailsFields/DetailsFields.tsx","admin/resources/learning-paths/views/edit/components/EditLearningPathDetails/EditLearningPathDetails.tsx","admin/resources/learning-paths/views/edit/components/EditLearningPathDetailsForm/config/learningPathViewEditFormBaseConfig.ts","admin/resources/learning-paths/views/edit/components/EditLearningPathDetailsForm/EditLearningPathDetailsForm.tsx","admin/resources/learning-paths/views/edit/components/EditLearningPathFooter/EditLearningPathFooter.tsx","admin/resources/learning-paths/views/edit/components/EditLearningPathHeader/EditLearningPathHeader.tsx","admin/resources/learning-paths/views/edit/components/KnowledgeSkillAndAbilitiesDetails/KnowledgeSkillAndAbilitiesDetails.tsx","admin/resources/learning-paths/views/edit/components/DetailsKSAItem/DetailsKSAItem.tsx","admin/resources/learning-paths/views/edit/components/EditLearningPathDetailsHeaderActions/EditLearningPathDetailsHeaderActions.tsx","admin/resources/learning-paths/views/edit/components/EditLearningPathDetailsHeader/EditLearningPathDetailsHeader.tsx","admin/resources/learning-paths/views/edit/components/UserDetails/UserDetails.tsx","admin/resources/learning-paths/views/edit/components/LearningPathViewEditContainer/LearningPathViewEditContainer.tsx","admin/resources/learning-paths/views/edit/LearningPathViewEdit.tsx","admin/resources/learning-paths/views/edit/hooks/useEditLearningPathStateActions.ts","admin/items-import/store/itemsImport.initialState.ts","admin/items-import/store/itemsImport.reducer.ts","admin/items-import/store/itemsImport.slice.ts","admin/library/instruments/components/CreateInstrumentForm/createInstrumentValidationSchema.ts","admin/library/instruments/components/CreateInstrumentForm/CreateInstrumentForm.tsx","permissions/services/PermissionsManager.ts","admin/AdminPortal.tsx","admin/programs/details/store/programDetails.selectors.ts","admin/programs/details/classes/details/store/programClassDetails.selectors.ts","admin/programs/details/classes/details/instruments/store/programClassInstruments.selectors.ts","dragAndDrop/DragAndDropProvider.tsx","admin/library/instruments/store/instruments.selectors.ts","survey-taker/models/index.ts","survey-taker/SurveyTakerGeneralInstrument.tsx","survey-taker/SurveyTakerMasterInstrument.tsx","survey-taker/SurveyTakerPreview.tsx","admin/programs/details/classes/index.ts","admin/programs/details/classes/all/store/programClasses.selectors.ts","admin/programs/details/classes/details/index.ts","admin/programs/details/classes/details/reports/index.ts","admin/programs/details/classes/details/reports/ProgramClassReportsAndExportsView.tsx","admin/programs/details/classes/details/reports/models/index.ts","admin/programs/details/classes/details/reports/enums/index.ts","models/interfaces/index.ts","models/library/index.ts","models/library/instruments/index.ts","models/library/items/index.ts","models/navigation/index.ts","models/resources/index.ts","admin/resources/store/index.ts","admin/resources/Resources.tsx","admin/resources/files/models/index.ts","admin/resources/files/store/index.ts","admin/resources/google-sites/GoogleSites.tsx","admin/programs/details/masterInstruments/store/programMasterInstruments.selectors.ts","toast-notifications/hooks/index.ts","toast-notifications/models/index.ts","admin/items-import/store/index.ts","admin/library/Library.tsx","admin/library/items/store/items.selectors.ts","admin/library/store/index.ts","admin/library/store/library.reducer.ts","admin/programs/all/store/programsAll.selectors.ts","admin/programs/store/index.ts","admin/programs/store/programs.reducer.ts","admin/upload/index.ts","admin/upload/UploadManager.tsx","store/state/index.ts","admin/resources/files/views/edit/hooks/useFileEdit.ts","admin/resources/files/views/edit/hooks/useFileIdParam.ts","admin/resources/files/views/edit/hooks/useFileType.ts","admin/resources/files/views/edit/hooks/useFileEditPermissions.ts","admin/resources/files/views/edit/components/FilesEditHeader/FilesEditHeader.tsx","admin/resources/files/views/edit/components/FilesEditFooter/FilesEditFooter.tsx","admin/resources/files/views/edit/components/FilesEditDetails/FilesEditDetails.tsx","admin/resources/files/views/edit/components/FilesEditUserDetails/FilesEditUserDetails.tsx","admin/resources/files/views/edit/components/FilesEditLearningPaths/FilesEditLearningPaths.tsx","admin/resources/files/views/edit/components/FilesEditWebLink/FilesEditWebLink.tsx","admin/resources/files/views/edit/components/FilesEditScorm/FilesEditScorm.tsx","admin/resources/files/views/edit/components/FilesEditResource/FilesEditResource.tsx","admin/resources/files/views/edit/components/FilesEditMetadata/FilesEditMetadata.tsx","admin/resources/files/views/edit/components/PickFileMetadata/PickFileMetadata.tsx","admin/resources/files/views/edit/components/FilesEditResourceForm/config/editFileMetadataFormBaseConfig.ts","admin/resources/files/views/edit/components/FilesEditResourceForm/FilesEditResourceForm.tsx","admin/resources/files/views/edit/components/FilesDetailsActions/FilesDetailsActions.tsx","admin/resources/files/views/edit/components/FilesEditDetailsHeader/FilesEditDetailsHeader.tsx","admin/resources/files/views/edit/FilesEditView.tsx","admin/resources/files/views/all/hooks/useFilesAll.ts","admin/resources/files/views/all/hooks/useFilesAllStoreActions.ts","admin/resources/files/components/Dropdowns/VerticalDropdown/DropdownItem/DropdownItem.tsx","admin/resources/files/components/Dropdowns/VerticalDropdown/VerticalDropdown.tsx","admin/resources/files/components/Dropdowns/UploadDropdown/UploadDropdown.tsx","admin/resources/files/views/all/components/FilesViewAllSortBy/FilesViewAllSortBy.tsx","admin/resources/files/views/all/components/FilesViewAllHeader/FilesViewAllHeader.tsx","admin/resources/files/views/all/components/FilesViewAllFooter/FilesViewAllFooter.tsx","admin/resources/files/views/all/components/FilesViewAllContent/FilesViewAllContent.tsx","admin/resources/files/views/all/components/FilesViewAllSidebar/config/filesAllFormBaseConfig.ts","admin/resources/files/views/all/components/FilesViewAllSidebar/FilesViewAllSidebar.tsx","admin/resources/files/views/all/FilesViewAll.tsx","admin/resources/files/Files.tsx","admin/items-import/components/ItemsImportInstructions/ItemsImportInstructions.tsx","admin/items-import/components/UploadFile/UploadFile.tsx","admin/items-import/components/FileFiledName/FileFieldName.tsx","admin/items-import/components/ItemsImportFilePreview/components/FilePreviewTable.tsx","admin/items-import/components/ItemsImportFilePreview/components/DownloadIssuesButton.tsx","admin/items-import/components/ItemsImportFilePreview/components/IssuesWarningBox/IssuesWarningBox.tsx","admin/items-import/components/ItemsImportFilePreview/ItemsImportFilePreview.tsx","admin/items-import/components/ModalCancelDataImport/ModalCancelDataImport.tsx","admin/items-import/components/ContentFooter/ContentFooter.tsx","admin/items-import/components/HeaderSubHeading/HeaderSubHeading.tsx","admin/items-import/components/ItemImportActiveStepPage/ItemImportActiveStepPage.tsx","admin/items-import/components/MappingTable/MappingTable.tsx","admin/items-import/import-view/ItemsImportView.tsx","admin/items-import/ItemImport.tsx","admin/programs/details/classes/details/paper-assessments/utils/constants/paperAssessmentsColumns.ts","admin/programs/details/classes/details/paper-assessments/utils/constants/uploadPaperAssessmentMessages.ts","admin/programs/details/classes/details/paper-assessments/utils/sort/paperAssessmentsOrderingMap.ts","admin/programs/details/classes/details/paper-assessments/utils/sort/getPaperAssessmentsMenuItemsList.ts","admin/programs/details/classes/details/paper-assessments/hooks/useClassPaperAssessments.ts","admin/programs/details/classes/details/paper-assessments/utils/form/mapUploadPaperAssessmentPayload.ts","admin/programs/details/classes/details/paper-assessments/utils/mapFetchClassPaperAssessmentsPayload.ts","admin/programs/details/classes/details/paper-assessments/hooks/useUploadPaperAssessmentModal.ts","admin/programs/details/classes/details/paper-assessments/hooks/useProgramClassDetails.ts","admin/programs/details/classes/details/paper-assessments/hooks/useClassPaperAssessmentsStoreActions.ts","admin/programs/details/classes/details/paper-assessments/components/UploadPaperAssessmentForm/uploadPaperAssessmentsBaseConfig.ts","admin/programs/details/classes/details/paper-assessments/components/UploadPaperAssessmentForm/UploadPaperAssessmentForm.tsx","admin/programs/details/classes/details/paper-assessments/components/SidebarFilters/SidebarFilters.tsx","admin/programs/details/classes/details/paper-assessments/components/UploadPaperAssessmentDroppableArea/UploadPaperAssessmentDroppableArea.tsx","admin/programs/details/classes/details/paper-assessments/components/UploadPaperAssessmentContent/UploadPaperAssessmentContent.tsx","admin/programs/details/classes/details/paper-assessments/components/UploadPaperAssessmentModal/UploadPaperAssessmentModal.tsx","admin/programs/details/classes/details/paper-assessments/components/PaperAssessmentsAllSortBy/PaperAssessmentsAllSortBy.tsx","admin/programs/details/classes/details/paper-assessments/components/PaperAssessmentsHeader/PaperAssessmentsHeader.tsx","admin/programs/details/classes/details/paper-assessments/ProgramClassPaperAssessmentsView.tsx","admin/programs/details/classes/details/paper-assessments/hooks/useProgramClassDetailsActions.ts","admin/resources/google-sites/details/hooks/useGoogleSitesDetails.ts","admin/resources/google-sites/details/hooks/useGoogleSiteIdParam.ts","admin/resources/google-sites/details/hooks/useGoogleSiteHistory.ts","admin/resources/google-sites/details/hooks/useGoogleSitesStoreState.ts","admin/resources/google-sites/details/components/GoogleSitesDetails/components/GoogleSitesDetailsContent/GoogleSitesDetailsContent.tsx","admin/resources/google-sites/details/components/GoogleSitesDetails/GoogleSitesDetails.tsx","admin/resources/google-sites/details/components/GoogleSiteAreasDetails/components/GoogleSiteAreasCheckbox/GoogleSiteAreasCheckbox.tsx","admin/resources/google-sites/details/components/GoogleSiteAreasDetails/components/GoogleSitesAreasSearch/GoogleSitesAreasSearch.tsx","admin/resources/google-sites/details/components/GoogleSiteAreasDetails/components/GoogleSitesAreasSortBy/GoogleSitesAreasSortBy.tsx","admin/resources/google-sites/details/hooks/useGoogleSiteDetailsSortOrder.ts","admin/resources/google-sites/details/components/GoogleSiteAreasDetails/components/GoogleSitesAreasForm/GoogleSitesAreasForm.tsx","admin/resources/google-sites/details/components/GoogleSiteAreasDetails/components/GoogleSitesAreas/GoogleSitesAreas.tsx","admin/resources/google-sites/details/components/GoogleSiteAreasDetails/components/GoogleSiteAreasTable/GoogleSiteAreasTable.tsx","admin/resources/google-sites/details/components/GoogleSiteAreasDetails/GoogleSiteAreasDetails.tsx","admin/resources/google-sites/details/components/GoogleSitesDetailsHeader/Subheading/Subheading.tsx","admin/resources/google-sites/details/components/GoogleSitesDetailsHeader/Header/Header.tsx","admin/resources/google-sites/details/hooks/useGoogleSites.ts","admin/resources/google-sites/details/GoogleSitesViewDetails.tsx","admin/library/instruments/all/utils/instrumentAllOrderingMap.ts","admin/library/instruments/all/utils/instrumentsAllColumns.ts","admin/library/instruments/all/utils/instrumentAllFilterList.ts","admin/library/instruments/all/utils/instrumentAllFilterToFilterNameMap.ts","admin/library/instruments/all/components/InstrumentsAllFilters/config/instrumentsAllFiltersFormBaseConfig.ts","admin/library/instruments/all/components/InstrumentsAllFilters/InstrumentsAllFilters.tsx","admin/library/instruments/all/components/InstrumentsAllSortBy/InstrumentsAllSortBy.tsx","admin/library/instruments/all/InstrumentsAllView.tsx","admin/library/instruments/builder/components/BuilderMatrix/BuilderMatrix.tsx","admin/library/instruments/preview/InstrumentPreviewView.tsx","admin/library/instruments/previewWithAnswers/InstrumentPreviewWithAnswersView.tsx","admin/library/instruments/Instruments.tsx","admin/library/instruments/builder/views/InstrumentBuilderView.tsx","admin/programs/details/classes/details/instruments/utils/filters/classInstrumentFilterList.ts","admin/programs/details/classes/details/instruments/utils/schema/sidebarFiltersValidationSchema.ts","admin/programs/details/classes/details/instruments/utils/sort/programClassInstrumentsOrderingMap.ts","admin/programs/details/classes/details/instruments/utils/sort/getProgramClassInstrumentsMenuItemsList.ts","admin/programs/details/classes/details/instruments/hooks/useProgramClassInstruments.ts","admin/programs/details/classes/details/instruments/components/SidebarFilters/SidebarFilters.tsx","admin/programs/details/classes/details/instruments/components/ViewExpansionPanel/ViewExpansionPanel.tsx","admin/programs/details/classes/details/instruments/components/SortBy/ProgramsClassInstrumentsSortBy.tsx","admin/programs/details/classes/details/instruments/ProgramClassInstrumentsView.tsx","admin/programs/all/hooks/usePrograms.ts","admin/programs/all/utils/form/mapProgramsPayload.ts","admin/programs/all/components/SidebarFilters/config/filtersFormBaseValuesConfig.ts","admin/programs/all/components/SidebarFilters/ProgramsAllSidebarFilters.tsx","admin/programs/all/utils/form/mapProgramsAllPayload.ts","admin/programs/all/components/ProgramsAllSortBy/ProgramsAllSortBy.tsx","admin/programs/all/ProgramsAllView.tsx","admin/programs/Programs.tsx","admin/programs/details/classes/all/utils/schema/sidebarProgramClassesValidationSchema.ts","admin/programs/details/classes/all/utils/form/getProgramYearsCollectionString.ts","admin/programs/details/classes/all/utils/programClassesOrderingMap.ts","admin/programs/details/classes/all/utils/getProgramClassesMenuItemsList.ts","admin/programs/details/classes/all/hooks/useProgramClasses.ts","admin/programs/details/classes/all/utils/form/mapProgramClassesPayload.ts","admin/programs/details/classes/all/components/ProgramClassesAllSidebarFilters/ProgramClassesAllSidebarFilters.tsx","admin/programs/details/classes/all/components/ProgramsClassesSortBy/ProgramsClassesSortBy.tsx","admin/programs/details/classes/all/ProgramClassesView.tsx","admin/programs/details/masterInstruments/utils/programMasterInstrumentsOrderingMap.ts","admin/programs/details/masterInstruments/utils/getProgramMasterInstrumentsMenuItemsList.ts","admin/programs/details/masterInstruments/hooks/useProgramMasterInstruments.ts","admin/programs/details/masterInstruments/components/SidebarFilters/SidebarFilters.tsx","admin/programs/details/masterInstruments/components/SortBy/ProgramsMasterInstrumentsSortBy.tsx","admin/programs/details/masterInstruments/ProgramMasterInstrumentsView.tsx","admin/resources/google-sites/details/utils/filters/googleSiteDetailsOrderingMap.ts","admin/resources/google-sites/details/utils/filters/getSortGoogleSiteDetailsMenuItemsList.ts","admin/resources/google-sites/details/utils/forms/details/googleSiteAreasDetailsBaseConfig.ts","admin/resources/google-sites/details/utils/getGoogleSiteTableColumns.ts","admin/programs/all/store/programsAll.initialState.ts","admin/programs/all/store/programsAll.reducer.ts","admin/programs/all/store/normalizationSchemas.ts","admin/programs/all/store/programsAllExtra.reducer.ts","admin/programs/all/store/programsAll.slice.ts","toast-notifications/components/ToastIcon/ToastIcon.tsx","toast-notifications/components/Notification/Notification.tsx","toast-notifications/components/ToastNotification/ToastNotification.tsx","admin/programs/utils/messages.ts","admin/programs/utils/getProgramsMenuItemsList.ts","admin/programs/utils/programsOrderingMap.ts","admin/programs/details/components/AreaSelect/AreaSelect.tsx","admin/programs/details/reports/ProgramReportsAndExportsView.tsx","admin/programs/details/classes/details/store/programClassDetails.initialState.ts","admin/programs/details/classes/details/store/programClassDetails.reducer.ts","admin/programs/details/classes/details/store/programClassDetailsExtra.reducer.ts","admin/programs/details/classes/details/store/programClassDetails.slice.ts","dragAndDrop/hooks/useItemDrag.ts","dragAndDrop/hooks/useItemDrop.ts","dragAndDrop/components/DragItem.tsx","dragAndDrop/components/DropContainer.tsx","admin/programs/details/store/programDetails.reducer.ts","admin/programs/details/store/programDetailsExtra.reducer.ts","admin/programs/details/store/programDetails.slice.ts","store/store.ts","store/middleware/saveAuthToken.ts","permissions/hoc/withRole.tsx","survey-taker/hooks/useSurvey.ts","admin/upload/hooks/useUploadManager.ts","admin/resources/learning-paths/store/learningPaths.reducer.ts","admin/resources/store/resources.reducer.ts","resources/logos/Logo.svg","admin/resources/files/index.ts","resources/fonts/OpenSans-Regular.ttf","resources/fonts/OpenSans-SemiBold.ttf","models/index.ts","admin/library/instruments/printPreview/enums/PaperNodeTypeEnum.ts","admin/library/instruments/printPreview/resources/checkbox.svg","admin/library/instruments/printPreview/components/PaperSurveyBaseItem/PaperSurveyBaseItem.tsx","admin/library/instruments/printPreview/components/InstructionalTextForQuestion/InstructionalTextForQuestion.tsx","admin/library/instruments/printPreview/components/Question/Question.tsx","admin/library/instruments/printPreview/components/MatrixQuestion/MatrixQuestion.tsx","admin/library/instruments/printPreview/components/ParticipantsTable/ParticipantsTable.tsx","admin/library/instruments/printPreview/components/SurveyHeadline/SurveyHeadline.tsx","admin/library/instruments/printPreview/components/SurveyPage/SurveyPage.tsx","admin/library/instruments/printPreview/utils/splitPaperNode.tsx","admin/library/instruments/printPreview/utils/createSurveyPages.tsx","admin/library/instruments/printPreview/components/SurveyForPrint/SurveyForPrint.tsx","admin/library/instruments/printPreview/components/Footer/FooterText.tsx","admin/library/instruments/printPreview/components/Footer/FooterLogo.tsx","admin/library/instruments/printPreview/components/Footer/Footer.tsx","admin/library/instruments/printPreview/components/Header/HeaderLogo.tsx","admin/library/instruments/printPreview/components/InstructionalText/InstructionalText.tsx","admin/library/instruments/printPreview/InstrumentPrintPreviewView.tsx","routes/Routes.tsx","shared/components/ErrorBoundary/ErrorBoundary.tsx","App.tsx","index.tsx"],"names":["ButtonBack","clickHandler","className","disabled","root","useStyles","onClick","classnames","makeStyles","theme","color","palette","primary","main","cursor","ButtonDropdown","items","withText","text","hideOnResize","iconButtonWithText","container","addToastNotification","useToastNotifications","useState","anchorEl","setAnchorEl","open","Boolean","handleClose","useEffect","window","addEventListener","copyHandler","useCallback","disableRipple","event","currentTarget","MoreIcon","Menu","keepMounted","onClose","map","item","idx","menuItem","MenuItem","key","isCopyLink","copyText","onCopy","display","justifyContent","alignItems","grey","padding","lineHeight","borderRadius","fontSize","textAlign","marginRight","colors","backgroundColor","ButtonIcon","children","size","classes","opacity","ButtonBase","endIcon","startIcon","variant","type","isFirst","isLast","Button","disableElevation","isLarge","space","spacing","margin","minWidth","textTransform","ButtonPrimary","ButtonSecondary","dark","ButtonText","ButtonCopyLink","icon","title","defaultIcon","useMemo","disabledFilter","aria-label","CopyLinkIcon","filter","AddIcon","Add","AllInboxIcon","CheckIcon","Check","CloseIcon","Close","_extends","Object","assign","target","i","arguments","length","source","prototype","hasOwnProperty","call","apply","this","_objectWithoutProperties","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","createElement","id","transform","fill","stroke","strokeWidth","width","height","rx","x","y","d","strokeLinecap","strokeLinejoin","_ref","svgRef","props","viewBox","ref","ForwardRef","forwardRef","DeleteIcon","DeleteOutline","DescriptionIcon","DragHandleIcon","DragHandle","DragIndicatorIcon","DragIndicator","EditIcon","Edit","ErrorIcon","ErrorRounded","ErrorNotFound","ExpandIcon","FailIcon","FileIcon","FilterListIcon","FilterList","style","isolation","FolderIcon","SvgIcon","fontFamily","fontWeight","GeneralInstrumentIcon","cx","cy","r","InfoIcon","justify","align","LinkIcon","MasterTemplateIcon","MinimizeIcon","Minimize","PermMediaIcon","RemoveRedEye","SearchIcon","SettingsIcon","SubjectIcon","TrashIcon","TrendingLeft","TrendingFlat","TrendingRight","x2","y2","strokeMiterlimit","UploadFileIcon","UploadIcon","VirtualClassIcon","VisibilityOnIcon","Visibility","VisibilityOffIcon","VisibilityOff","WarningIcon","Warning","info","WebIcon","ChevronRightIcon","ChevronRight","IconButton","ariaLabel","edge","CopyLinkSmallIcon","y1","DownloadIcon","ViewResourceIcon","MenuIcon","ExportXlsIcon","DividerHorizontal","as","fullWidth","Divider","component","marginTop","marginBottom","DividerVertical","orientation","flexItem","marginLeft","FiltersHeader","clearButtonClickHandler","searchFieldName","customSearch","buttonsRow","Heading","ButtonClear","ButtonSubmit","searchRow","Search","debounceDelay","name","borderBottom","paddingTop","paddingBottom","FiltersPanel","filters","disableAll","scrollableContainer","overflow","paddingLeft","paddingRight","layoutConfig","scrollableAreaSubtrahend","overflowY","index","Caption","Typography","ErrorText","withBottomMargin","FormHelperText","styles","error","Paragraph","withMargin","CititizensPoweredBy","Horizontal","attachmentArea","fileInputName","accept","file","fileInputRef","browseButtonText","buttonSize","withIcon","isActive","addFileCallback","withOnlyBrowseButton","openFileDialogClickHandler","heading","droppableArea","caption","inputRef","Secondary","Error","backgroundStyle","contrastText","secondary","light","background","borderGeneral","borderWidth","borderStyle","borderColor","Vertical","downloadLinkTitle","downloadCallback","shouldRenderLink","buttonContainer","flexDirection","closeClickHandler","menuItemClickHandler","batch","isFunction","displayName","MenuItemList","ThreeDotsVerticalIconMenu","openClickHandler","menuIconButton","EntitiesPerPageDropdown","entitiesPerPage","onEntitiesPerPageChosen","menuItems","EntitiesPerPageEnum","isNaN","toNumber","label","itemClickHandler","value","PageButton","isPrimary","common","white","pointerEvents","isVisible","borderTop","count","memo","currentPage","PaginationNumEnum","ZERO","perPage","FIFTY","totalCount","onPageChange","onPerPageChange","overallPages","Math","ceil","calcOverallPages","shouldDisablePrevButton","ONE","shouldDisableNextButton","onPageClicked","page","onPrevPageBtnClicked","onNextPageBtnClicked","generatePages","pageNumberMapper","Map","keyId","set","pn","DISPLAY_PAGE_MARGIN","currentPageNum","listOfPages","pageIndexes","Array","from","dn","push","get","resultsText","perPageDropdown","pagination","getIconColor","shouldDisable","prevButtonIconColor","nextButtonIconColor","Icon","TableHeader","columns","header","cell","column","border","TableRow","role","tabIndex","row","textError","calculateCellValue","format","MuiTableCellEnum","Id","errorMsg","hasError","HasError","ClassName","TableRowWithError","withSecondRow","tableBody","rows","withTableHead","withMainRow","hasRows","stickyHeader","every","el","Accordion","headingAs","headingActionLeft","headingActionRight","withBorder","initialIsExpanded","withGrayBackground","draggable","isExpanded","setIsExpanded","isHeadingString","expanded","rootOverride","expandedOverride","AccordionSummary","expandIcon","AccordionDetails","minHeight","boxShadow","Avatar","avatarUrl","src","isSmall","isClickable","additionalStyles","Bullet","bullet","listStyleType","listStylePosition","Card","actions","CardHeader","CardContent","content","CardActions","Checkbox","checked","changeHandler","rest","FormControlLabel","onChange","control","DatePicker","maxWidth","disableFuture","disablePast","minDateMessage","maxDateMessage","utils","DateFnsUtils","disableToolbar","autoOk","invalidDateMessage","errorMessages","invalidDate","InputProps","input","disableUnderline","divider","connect","formik","checkedIcon","AutocompleteWithSelect","options","placeholder","onStopTyping","noOptionsText","isMultipleSelect","handleChange","currentOptions","setCurrOptions","timeout","setCurrTimeout","searchText","setSearchText","onTextChange","form","a","textValue","clearTimeout","setTimeout","existing","values","opts","concat","setFieldValue","AUTOCOMPLETE_TIMEOUT","onFocus","State","Autocomplete","freeSolo","multiple","disableCloseOnSelect","opt","reason","chosenOpts","getOptionLabel","option","getOptionSelected","chosenValue","trim","renderOption","selected","renderInput","params","TextField","textInput","useRef","Fragment","DatePickerCustom","date","withButton","currDate","setCurrDate","handleDateChange","Date","Primary","handleResetDate","MultiSelect","newSelect","replace","optElements","findIndex","p","Select","labelId","Input","renderValue","s","join","menuItemRootOverride","isChecked","ListItemText","op","CustomizedSearchButton","isDisabled","ev","submitDisabled","isSubmitting","COMPONENTS","undefined","field","search","_form","password","email","textarea","TextareaAutosize","checkbox","nextValue","includes","autocomplete","customAutocomplete","multiselect","datePicker","FormField","otherProps","React","uniqueId","Component","isArray","arrayHelpers","array","defaultProps","Field","Form","initialValues","validate","submit","enableReinitialize","onSubmit","setSubmitting","resetForm","handleSubmit","submitForm","ErrorMessage","ButtonReset","onReset","iconPosition","helperText","onKeyUp","loading","autoFocus","positionProp","InputAdornment","position","Label","withFontBold","withLeftMargin","withMarginBottom","leftMargin","ListInfinite","hasMorePages","loadMoreHandler","infiniteRef","useInfiniteScroll","hasNextPage","onLoadMore","scrollContainer","threshold","LoadingSpinner","Loading","fullHeight","halfHeight","LoadingSmall","spinner","top","left","right","Modal","isOpen","withButtons","buttonsContent","customButtons","disableBackdropClick","modalContent","modalActionButtons","shouldRenderCustomContent","shouldRenderCustomButtons","overrideSizeStyles","ModalTypes","small","medium","large","getSizeStyle","Dialog","paper","transitionDuration","DialogTitle","DialogContent","DialogActions","cancel","handleCancel","action","handleAction","ModalWidth","whiteSpace","textOverflow","borderBottomWidth","borderBottomStyle","borderBottomColor","closeButton","alignSelf","withExtraSpace","Navigation","AppBar","Toolbar","toolbar","secondaryActiveStyle","primaryActiveStyle","NavigationLink","to","withDisabled","activeStyle","baseHeight","textDecoration","PageViewHeader","sort","subHeading","extraHeading","extraSubHeading","withBackButton","withDivider","shouldDisableBackButton","backButtonClickHandler","headingColor","fullFlexWidth","withColumnPadding","hasFilters","flex","headingContainer","Back","backButton","flexWrap","Radio","direction","button","changeHandlerInner","multi","clearable","optionRenderer","Option","autoBlur","selectValue","updatedLabel","updateSelectLabel","typography","OuterElementContext","createContext","OuterElementType","outerProps","useContext","renderRow","data","cloneElement","ListboxComponent","itemData","Children","toArray","itemCount","gridRef","current","resetAfterIndex","useResetCache","Provider","innerElementType","outerElementType","itemSize","overscanCount","SelectAutocomplete","inputChangeHandler","blurHandler","withCheckboxRenderOption","withFontWeightBold","filterOptions","getSingleSelectOption","getMultiSelectOption","SingleOptionAutoComplete","onBlur","onInputChange","_","disableListWrap","listbox","boxSizing","tag","zIndex","inputRoot","muiAutocompleteInputFirstChildStyles","gray","SearchOnTypeSelectAutocomplete","isFilter","showSelectedValues","getOption","shouldRenderDots","popper","Switch","Tag","deleteHandler","withFilterChip","Chip","onDelete","deleteIcon","marginWithoutLeftStyle","chipsContainer","chips","TextArea","withPadding","multiline","TooltipMaxWidthEnum","CopyToClipboardToolTip","successNotificationText","copyClickHandler","disableTouchListener","Tooltip","disableFocusListener","disableHoverListener","onOpen","placement","showTooltip","setShowTooltip","handleOnTooltipClose","handleOnToolTipOpen","tooltip","Small","Large","PreviewEditor","htmlStr","EditorState","createEmpty","editorState","setEditorState","getDraftFromHTML","draft","htmlToDraft","contentState","ContentState","createFromBlockArray","contentBlocks","createWithContent","newState","readOnly","toolbarHidden","useRichTextEditor","fieldName","useFormikContext","getEditorText","raw","getPlainText","prepareDraftFromHTML","blockMap","getCurrentContent","getBlockMap","last","getKey","getLength","selection","SelectionState","anchorKey","anchorOffset","focusKey","focusOffset","forceSelection","moveSelectionToEnd","RichTextEditor","withEdit","withInstructionalText","editorOptions","inline","inDropdown","editorValue","FormNameEnum","questionTextHtml","handleEditorStateChange","currentEditorContent","rawData","convertToRaw","htmlText","draftToHtml","plainText","builderInstructionalText","contentWithEdit","stripPastedStyles","editorClassName","editor","toolbarClassName","onEditorStateChange","RangeButtons","list","useRangeAnswerStack","positiveScores","withLabel","withForm","ToggleButton","toggleButton","Wrapper","Link","withNewTab","link","rel","FileInput","DraggableArea","hightlight","onDragOver","onDrop","onDragLeave","draggableArea","ImageUploadWithPreview","url","buttonText","textSize","textFormat","fileName","setHightlight","imgPreview","setImgPreview","setFile","openFileDialog","click","defineDimensions","checkDimensions","defineProperty","setValues","URL","createObjectURL","onFilesAddedChange","e","files","extendedFile","preventDefault","dataTransfer","Promise","resolve","reader","FileReader","readAsDataURL","onload","img","Image","result","aspectRatio","useImageUploadWithPreview","fileSize","convertBytesToMegaBytes","iconContainer","logoPreview","alt","textContainer","fileInput","iconDelete","PasswordInput","usePasswordInput","toggleIconClickHandler","InputTypeEnum","Password","AttachmentArea","deleteCallback","fileIconContainer","BoxContent","userInitials","withLink","withButtonLink","linkCallback","shouldRenderAvatart","linkContent","cropText","disableGutters","pr","CopyLink","avatarContainer","Box","CircularProgress","Drawer","actionButtons","setIsOpen","confirmButtonTitle","confirmButtonCallback","disableConfirmButton","closeDrawerClickHandler","drawerHeader","drawerHeaderTitle","drawerFooter","drawerActionButtons","drawer","anchor","drawerPaper","navHeight","footerHeight","flexShrink","LinkWithTooltip","tooltipTitle","isDeletedOrExpired","th","borderRight","resizer","touchAction","startDateContainer","endDateContainer","IntegrationTypeFilter","selectionType","integrationTypes","isMultiSelectFilter","useSelector","filterIntegrationTypesEntitiesCollectionSelector","integrationType","displayText","LearningObjectiveFilter","learningObjective","useIsDomainKnowledgeSelected","domain","filtersDomainsEntitiesSelector","isDomainKnowledgeSelected","isDomainKnowledge","formValues","ProgramFilter","dispatch","useDispatch","programs","programsEntitiesCollectionSelector","isMultiSelect","fetchProgramsThunk","program","select","ProgramYearFilter","programYear","programYears","filtersYearsEntitiesCollectionSelector","fetchProgramYearsThunk","useIsPillarSelected","pillars","pillarsEntitiesCollectionSelector","pillarId","hasPillarsSelected","getHasPillarsSelected","useIsProgramSelected","programIds","isProgramSelected","useSchoolNameBasedOnAreaSelect","useAppDispatch","clearSchoolNameSelectItems","clearSchools","useIsCompetencySelected","comptencies","filtersCompetenciesEntitiesCollectionSelector","comptencyIds","competencies","hasCompetenciesSelected","mapOptions","sessions","f","FileTypeFilter","fileTypes","filterFileTypesEntitiesCollectionSelector","fetchAllFileTypeOptionsThunk","fileType","filterComponentMap","FiltersEnum","Audience","audiences","filtersAudiencesEntitiesCollectionSelector","fetchAudienceThunk","audience","GradeLevel","gradeLevels","filtersGradeLevelsEntitiesCollectionSelector","fetchGradeLevelsThunk","gradeLevel","Metadata","metadata","Phase","phases","filtersPhasesEntitiesCollectionSelector","fetchPhasesThunk","phase","Pillar","fetchPillarsThunk","pillar","PillarMulti","ProgramSingle","ProgramMulti","ProgramYearCheckbox","years","ProgramYearMulti","Educators","educators","filtersEducatorsEntitiesCollectionSelector","Areas","areas","filtersAreasEntitiesCollectionSelector","sortedOptions","sortBy","useSortOrder","SortingOrderEnum","ASC","fetchAreasThunk","area","Districts","districts","filtersDistrictsSelector","district","FromToDate","filtersPeriodSelector","ItemWithPlaceholder","hasItems","startDate","withMaxDate","maxDateFormField","endDate","withMinDate","minDateFormField","InstrumentType","types","filtersInstrumentTypesEntitiesCollectionSelector","fetchInstrumentTypesThunk","instrumentType","InstrumentStatus","statuses","filtersInstrumentStatusesEntitiesCollectionSelector","fetchInstrumentStatusesThunk","status","instrumentStatus","Domain","domains","filtersDomainsEntitiesCollectionSelector","fetchDomainsThunk","EvaluationType","evaluationTypes","filtersEvaluationTypeEntitiesCollectionSelector","fetchEvaluationTypesThunk","evaluationType","Competency","fetchCompetenciesThunk","competency","Competencies","Concept","concepts","filtersConceptsEntitiesCollectionSelector","currentCompetenciesSelected","fetchConceptsThunk","concept","Category","category","Administration","administrations","filtersAdministrationsEntitiesCollectionSelector","fetchAdministrationsThunk","administration","SchoolLevel","schoolLevels","filtersSchoolLevelsEntitiesCollectionSelector","fetchSchoolLevelThunk","schoolLevel","ItemType","itemTypes","filtersItemTypesEntitiesCollectionSelector","fetchItemTypesThunk","itemType","ItemStatus","RadioGroup","itemStatus","ItemStatusNamesEnum","ItemStatusEnum","InstrumentViewType","instrumentViewType","InstrumentViewTypeEnum","Session","setSessions","fetchSessionsByProgramIdsThunk","then","unwrapResult","response","DigitalResourcesConcepts","DigitalResourcesFiltersConceptsSelector","fetchDigitalResourcesConceptsThunk","KeyTerms","keyTerms","KeyTermsSelector","fetchKeyTermsThunk","term","LearningObjectives","learningObjectives","LearningObjectivesSelector","fetchLearningObjectivesThunk","objective","SkillsAndBehaviors","skillsAndBehaviors","filtersSkillsAndBehaviorsEntitiesCollectionSelector","fetchSkillsAndBehaviorsThunk","skills","Languages","languages","filtersLanguagesEntitiesCollectionSelector","fetchLanguagesThunk","language","TagGradeLevels","levels","filtersTagGradeLevelsEntitiesCollectionSelector","fetchTagGradeLevelsThunk","level","DigitalResourceTypes","filtersDigitalResourceTypesEntitiesCollectionSelector","fetchDigitalResourceTypesThunk","digitalResourceTypes","DrmExpirationDate","drmExpirationDate","LearningObjective","LearningObjectiveWithDomainDependency","learningObjectiveValue","IntegrationTypeSingle","IntegrationTypeMulti","IntegrationStatusMulti","integrationStatuses","filterIntegrationStatusesEntitiesCollectionSelector","SchoolNameBasedOnAreaAndDistrict","setOptions","schoolNames","schoolNamesEntitiesCollectionSelector","getLoadingStateSchoolNames","minLength","schoolName","debouncedSearchSchools","useDebounce","areaIds","districtIds","searchSchoolsThunk","schoolNameQuery","delayTime","handleInputChange","schoolDistricts","SearchSelectAutocomplete","dynamicSearchMessages","noOptionsSchoolName","AreasAutocompleteMulti","AreasMultiAutocompleteExternalData","ClassesOnlyVirtual","onlyVirtualClass","ClassTypes","FileType","FileTypeMulti","SchoolDistrictMulti","schoolDistrictsEntitiesCollectionSelector","loadingStateDistricts","schoolDistrict","debouncedSearch","query","fetchSchoolDistrictThunk","noOptionsSchoolDistrict","LearningPathStatusesCheckbox","learningPathStatuses","filtersLearningPathStatusesEntitiesCollectionSelector","fetchContentItemStatusesThunk","learningPathStatus","KnowledgeSkillsAndAbilities","knowledgeSkillsAndAbilities","shouldDisableKSAs","knowledgeSkill","AccessibleToStudentsRadio","accessibleToStudents","filterAccessibleToStudentsEntitiesCollectionSelector","accessibleToStudentsOptions","reverse","isAccessibleToStudents","PublishedByRadio","userArea","userAreaSelector","publishedBy","filterPublishedByEntitiesCollectionSelector","publishedByExtendedList","getPublishedByExtendedList","publishedByOptions","FileStatusesCheckbox","fileStatuses","filtersFileStatusesEntitiesCollectionSelector","fetchFileStatusesThunk","fileStatus","FiltersList","FilterComponent","infoText","CompetenciesByPillarSelect","pillarIds","filteredRecords","filteredList","forEach","c","TextInputSelection","InputWithField","LanguagesSelect","PillarSelect","shouldFetch","ProgramSelect","RangeSelect","BUTTON_NUM_LIST","errors","scale","toString","selectError","LearningObjectiveSelect","AreaSelect","SchoolNameBasedOnAreaSelect","reduce","obj","SchoolDistrictSelect","AreaSingleSelectBasedGoogleSites","Number","isGoogleSitesSource","getIsGoogleSitesSource","jaUSAId","KnowledgeSkillsAndAbilitiesSelect","knowledge","shouldDisableAutocomplete","ProgramYearSelect","FutureProgramYearSelect","futureProgramYears","filtersFutureYearsEntitiesCollectionSelector","fetchFutureProgramYearsThunk","futureProgramYear","KeyTermsTextInput","TextAreaSelection","LearningObjectiveTextInput","DatePickerSelection","ExpirationDatePicker","expirationDate","TimeTextInput","time","PermissionCheckbox","hasUploadPermissions","AccessibleToStudentsRadioGroup","getAccessibleToStudentsOptions","TableVersions","versions","uploadedUtc","uploadedBy","getDateMMDDyyyy","ModalVersions","fileUpload","selectionComponentMap","SelectionEnum","PillarMultiSelect","evaluation","currentDomainValue","currentProgramsValue","domainsEntities","currentDomainEntity","currentOption","isCurrentDomainKnowledge","isNextDomainKnowledge","newValues","shift","ProgramMultiSelection","ProgramSelectWithDomainDependency","Concepts","AdministrationType","mainTypes","filtersInstrumentMainTypesEntitiesCollectionSelector","fetchInstrumentMainTypesThunk","Sessions","filtersSessionsEntitiesCollectionSelector","fetchSessionsThunk","session","InstrumentName","instrumentName","GradeLevels","CompetenciesByPillar","K12KeyTerms","filtersDefaultKeyTermsEntitiesCollectionSelector","fetchDefualtKeyTermsThunk","keyTerm","CompetencyByDomain","SessionsByProgram","DomainWithoutKnowledge","filteredDomains","RangeFrom","rangeFrom","RangeTo","rangeFromIdx","rangeToList","slice","rangeTo","InstrumentSubType","hasTypePreAndPostSession","hasPreAndPostSessionSelected","shouldDisabale","subTypes","t","filterSubTypesCondition","subType","instrumentSubType","Role","allUserRoles","usePermissions","fetchUserRoleListThunk","IntegrationTypeSelect","isGoogleClassRooom","getIsGoogleClassRoom","isGoogleSitesDestination","getIsGoogleSitesDestination","isMicrosoftTeams","getIsMicrosoftTeams","fetchIntegrationTypesThunk","IntegrationFormNameEnum","isGoogleClassroom","AreasSingleSelection","AreasMultiSelection","SchoolNameBasedOnArea","SchoolDistrict","SchoolDistrictBasedOnGoogleSites","serviceSourceEmail","useAddIntegration","AreaSingleBasedOnGoogleSites","SchoolNameBasedOnAreaSelectAndGoogleSites","FileTypeSelectBasedOnAttachedFile","filtersUploadFileTypesEntitiesCollectionSelector","fetchUploadFileTypeOptionsThunk","shouldDisableFileType","PrimaryPillar","primaryPillar","SecondaryPillar","secondaryPillar","ProgramYearSingle","LanguagesSingle","LanguagesMulti","ProgramsSingle","FutureProgramYearSingle","FutureProgramYearMultiple","Resources","resources","resourcesEntitiesCollectionSelector","loadingStateResources","fetchResourcesThunk","clearResources","newValue","noOptionsResource","Instruments","instruments","initialMappedInstrumentsCollectionSelector","loadingStateInstruments","fetchInstrumentsThunk","clearInstruments","noOptionsInstrument","LearningPathName","learningPathName","KeyTermsInput","KeyTermsWithInfo","BriefDescriptionTextArea","briefDescription","LearningObjectiveInput","LearningObjectiveInputWithInfo","EditableExpirationDatePicker","ExpirationWithInfoDatePicker","SchoolDistrictBasedOnArea","shouldDisableDistricts","AreaSingleBasedOnDistrictAndGoogleSites","shouldDisableAreas","IntegrationNameInput","integrationName","UserToImpersonateInput","masterClassroomEmailAccount","ServiceEmailInput","DisplayNameInput","WebLinkInput","webLink","TimeInput","TimeWithInfoInput","AdminPermissionCheckbox","hasAdminPermission","hasPermission","SuperAndNationalAdminroles","VersionFileUpload","useModal","isModalVersionsOpen","setIsModalVersionsOpen","shouldDisableReUploadButton","canEdit","resourceMimeTypes","ALLOWED_MIMETYPE_FORMATS","allowedFormats","fileTypeRecognition","isVideo","videoMimeType","isAudio","audioMimeType","isImage","imageMimeTypes","isDocument","documentMimeTypes","isExcel","excelMimeTypes","isPDF","pdfMimeType","isArchive","isScormPackage","zipMimeType","openModalVersionsClickHandler","fileVersion","disableDragAndDrop","AccessibleToStudentsWithInfo","CompetenciesByPillarWithInfo","KnowledgeSkillsAndAbilitiesWithInfo","ToDatePicker","FromDatePicker","SelectionListItems","withFullWidth","SelectionComponent","noOptions","startTypingMessage","checkIfTypeStartsWithPreOrPostSessionFirstDigit","startsWith","PRE_SESSION_FIRST_DIGIT","POST_SESSION_FIRST_DIGIT","hasTypeSelected","isStartsWithDigit","selectedType","PRE_SESSION_NUM","POST_SESSION_NUM","FEEDBACK_NUM","getPublishedByExtendedEntities","filterPublishedByEntities","UserStore","localStorage","getItem","setItem","removeItem","currentAuthToken","setToken","token","getCurrentAccessToken","returnQueryStringWithParams","queryString","parseToJsonObject","str","JSON","parse","getLocationOrigin","location","origin","redirectWindowLocation","href","createLinkForDownload","document","download","openFileInNewWindow","getDateFromISOString","dateString","ResourceTypeHeadingNameEnum","ApiPathsEnum","ErrorStatusCodesEnum","ButtonSize","FileTypeEnum","ProgramsSectionNavigatorEnum","UploadResourceTypeEnum","DigitalResourceMetaDataEnum","OrderEnum","SortDropdownNameEnum","OrderingBackendNameEnum","validationSchema","submitHandler","validateOnMount","validateOnChange","validateOnBlur","formikRef","innerRef","FormArray","render","FormButtonClear","dirty","hasValues","some","resetFormHandler","FormButtonSubmit","withFormDirtyValidation","submitCallback","isValid","validateForm","submitFormHandler","isEmpty","isDisabledBase","FormCheckbox","customValueChangeHandler","withDefaultChangeHandler","CheckboxDecorated","helpertext","isNumber","isString","valueNumber","checkboxValue","next","isObject","v","handlers","FormDatePicker","DatePickerDecorated","minDate","maxDate","FormInput","InputDecorated","FormInputWithField","min","max","initialVal","initialValue","useDebounceUserInput","FormRadio","FormRadioGroup","RadioGroupDecorated","selectedId","radioValue","isValueAnArray","updatedValue","prop","updateArrayValue","meta","FormSearch","SearchDecorated","FormSelect","SelectDecorated","find","FormSelectAutocomplete","withSearchOnType","SelectAutocompleteDecorated","isValueArray","FormSearchSelectAutocomplete","FormSwitch","SwitchDecorated","FormTextArea","TextAreaDecorated","FormRichTextEditor","FormToggleButtonGroup","ToggleButtonGroupDecorated","ToggleButtonGroup","FormImageUpload","ImageWithPreview","FormPasswordInput","PasswordInputDecorated","ActiveModeEnum","useViewEditMode","view","activeMode","setActiveMode","useEntityCard","answersComponentMap","questionId","message","ToastNotificationTypeEnum","useNavigate","history","useHistory","locationState","state","path","goBackOptionally","prevPath","useQueryParams","useLocation","fromEntries","URLSearchParams","setValue","delay","useDelay","changeValue","persist","timer","setTimer","clear","fn","useMenu","useActiveStep","ActiveStepEnum","First","activeStep","setActiveStep","isFirstStep","isSecondStep","Second","isThirdStep","Third","callback","debouncedFn","debounce","setType","Text","useDrawer","useMainNavigation","redirectToResources","pages","adminPortal","redirectToPrograms","redirectToLibrary","library","useDragAndDrop","addFileClickHandler","newFile","deleteClickHandler","TagsEnum","apiConfig","config","jaEeTestApi","axiosApiInstance","axios","create","interceptors","request","use","headers","Authorization","Accept","subscriptionKey","reject","CancelToken","http","fetch","res","body","ok","errorCode","getResponseParsedBody","getResponseData","parsedBody","getResponseBody","catch","err","makeCall","useAuthentication","args","method","returnBasicHeaders","Request","stringify","post","put","del","patch","Headers","append","messages","jaEeApi","filtersApi","getInstrumentPhases","baseUrlSurvey","ENUMERATORS","getInstrumentTypes","getInstrumentMainTypes","getQuestionTypes","getInstrumentAudiences","getAvailableGradeLevels","baseUrlUms","UMS","getInstrumentStatuses","getActivePillars","getProgramYears","getFilterProgramYears","baseUrlPam","HELPERS","getFutureProgramYears","getPrograms","getAreas","getClassFilterOptions","programId","getEvaluationTypes","getDomains","getCompetencies","getSessionsByProgramIds","getConcepts","getDigitalResourcesConcepts","baseUrlDigitalResources","DIGITAL_RESOURCE","getAdministrations","getSchoolLevels","getSessions","getTaggingGradeLevels","getSkillsAndBehaviors","getLanguages","getDefualtKeyTerms","getKeyTerms","getKLearningObjectives","getDigitalResourcesTypes","getSchoolDistrictsByQuery","baseUrlIntegrations","getFilterContentItemStatuses","getFilterFileStatuses","instrumentsApi","getInstrumentById","TEMPLATE","createNewTemplate","metaData","isGeneral","postCloneTemplate","templateId","postDeleteTemplate","postDuplicateTemplate","programSessionId","getInstrumentItemsAndParticipantsById","updateInstrumentMetaData","payload","updateInstrumentInfo","updateInstrument","getApiMultipartFormDataHeadersConfig","unPublishSessionInstrument","getMatrixRelatedItems","defaultAnswerStackId","pageNumber","builderFilter","ITEM","pageSize","updateDraftInstrumentById","instrumentId","INSTRUMENT","getItems","itemTypesFilter","isPublished","areaId","getQuestions","isApproved","QUESTION","createQuestion","getActiveSurvey","userId","masterTemplateId","getGeneralSurvey","GENERAL_TEMPLATE","saveSurvey","results","assignmentResults","userIpAddress","saveGeneralSurvey","timeSpent","getPageOfInstruments","sortOptions","getPossiblePretestItems","getGeneralInstrumentExport","getAreaProgramClassExport","getAreaProgramClassDetailedExport","getInstrumentForPreview","putPublishMasterTemplate","programsApi","getActiveProgramsByIds","getActiveProgramsPaged","getProgramClassesPaged","getProgramMasterInstrumentsPaged","getProgramClassInstrumentsPaged","classId","getProgramClassById","getSortOrderColumns","getImpactSummaryReport","getAchievementSummaryReport","getStudentGradeBookReport","getStudentAchievementSummaryReport","getClassPaperAssessmentsPaged","PAPER_ASSESSMENTS","getLevelsOfReportingListByProgramId","queryParams","itemsApi","getNewItem","getItemById","itemId","getPageOfItems","getItemsSortByColumns","getItemsSortOrderTypes","promoteItemAnswerStack","answerStackId","publishItemAnswerStack","unPublishItemAnswerStack","publishAllAnswerStacksForQuestion","createUpdateItem","deleteItem","updateItem","updateAnswerStack","getPossibleDefaultAnswerStacks","addDefaultAnswerStack","addCustomAnswerStack","permissionsApi","getUserRole","baseUrlPermissions","PERMISSION","getUserRolesList","getUserActivityExport","userApi","getUserIdByUserEmail","getUserIdAndAreaByUserEmail","fileManagerApi","uploadHeaderLogo","baseUrl","baseUrlUploader","HEADER_AND_FOOTER","uploadFooterLogo","integrationsApi","getIntegrations","INTEGRATION","getDetailsIntegration","integrationId","updateIntegration","getIntegrationAuditLog","deleteIntegration","publishIntegration","getIntegrationTypes","getIntegrationStatuses","getIntegrationListDropdownData","searchSchools","createGoogleVirtualClass","VIRTUAL_CLASS","GOOGLE_CLASSROOM","CREATE","updateGoogleClassroomIntegration","testGoogleClassroomIntegration","createGoogleSitesSource","GOOGLE_SITES","SOURCE","updateGoogleSiteSourceIntegration","testGoogleSitesSourceIntegration","getGoogleSitesSourceHistory","googleSiteId","SITE","createGoogleSitesDestination","DESTINATION","updateGoogleSiteDestinationIntegration","testGoogleSiteDestinationIntegration","getServiceEmail","getPublishedSourceDetails","PUBLISHED","createMicrosoftTeamsVirtualClass","MICROSOFT_TEAMS","updateMicrosoftTeamsIntegration","testMicrosoftTeamsIntegration","getAuditLog","itemImportApi","getImportTemplate","ITEM_IMPORT","getImportInstructionalText","getImportCriticalIssues","itemImportId","uploadItemBank","getItemBankVerification","startItemBankImport","googleSitesApi","getDetailsGoogleSiteSource","siteFieldId","getGoogleSitesList","LIST_SITES","getDetailsGoogleSiteDestination","getGoogleSitesCopySite","COPY_SITE","learningPathsApi","getAllLearningPaths","sortOrder","LEARNING_PATH","createLearningPath","getLearningPathById","updateLearningPath","deleteLearningPath","contentItemId","publishLearningPath","getExportLearningPath","getApiJsonBlobDataHeadersConfig","postDuplicateLearningPath","pamApi","getAllFileTypeOptions","getAllFiles","RESOURCES","getFileById","getAllResources","deleteFileById","updateFileResource","configHeaders","FILE","updateScormResource","SCORM","updateWebLinkResource","WEB_LINK","downloadFileByResourceId","getAllInstruments","uploadResourcesApi","getUploadFileTypeOptions","uploadFile","onUploadProgress","cancelToken","uploadScorm","createWebLink","uploadPaperAssessment","paths","dashboard","pathways","resource","upload","itemImport","learningPaths","edit","all","googleSites","details","scorm","learningPath","reports","build","preview","previewWithAnswers","editAnswerStack","printPreview","masterInstruments","exports","class","classReports","classExports","classPaperAssessments","integrations","add","survey","surveyGeneral","fileDownload","notFound","fileNotFound","noPermission","withId","withItemId","withAnswerStackId","withProgramId","withClassId","withInstrumentId","withShortenerUrlId","withIntegrationId","authenticationCallback","detailsLink","editLink","editAnswerStackLink","masterInstrumentsLink","reportsLink","exportsLink","classLink","classReportsLink","classExportsLink","classPaperAssessmentsLink","detailsRoot","buildLink","previewLink","previewWithAnswersLink","printPreviewLink","takerLink","taker","downloadLink","authentication","withRole","SuperAdminRole","AreaAdminRole","USAAdminRole","StaffRole","EducatorRole","VolunteerRole","StudentRole","AdminRoles","AllRolesWithoutStudent","ButtonWithAdminPermissions","withPrimary","withSuperAdminRole","withUSAAndSuperAdminRole","ButtonPrimaryWithUSAAndSuperAdminPermissions","ButtonPrimaryWithAdminPermissions","ButtonSecondaryWithUSAAndSuperAdminPermissions","ButtonSecondaryWithAdminPermissions","ButtonPrimaryWithSuperAdminPermissions","Dropdown","ButtonSecondaryWithSuperAdminPermissions","ButtonDropdownWithSuperAdminPermissions","USAAndSuperAdminRoles","modalUserActivityFormValidationSchema","Yup","shape","required","requiredWithFieldName","nullable","typeError","of","customValidation","test","parent","copiedDate","getTime","oneMonthAfter","setMonth","getMonth","isSameMonth","largeThanOneMonth","ModalUserActivityForm","useUserActivity","rolesList","AdminNavEnhanced","isUserActivityModalOpen","setIsUserActivityModalOpen","shouldRenderLibraryLink","handleOpenUserActivityModal","handleIntegrations","handleImportItems","handleLogInAs","adminToolsOptions","getAdminToolsOptions","breakpoints","down","withTextButton","withSecondaryButton","withRow","menuPosition","setMenuPosition","buttonClickHandler","pageY","pageX","dropdownButton","dropdownContent","anchorReference","anchorPosition","black","FormErrorBox","ErrorBox","defaultMessage","ModalDelete","confirmHandler","cancelButtonText","confirmButtonText","withNewLineText","splittedText","splitStringByNewLine","newLineText","paragraph","closeHandler","confirmActionHandler","ModalUpdate","withSubmitButton","ModalUpload","buttonsSize","disableSubmit","ModalUserActivity","exporting","debouncedReset","useBeforeunload","exportUserActivityMessages","warning","datePickerErrors","renderFromDatepicker","firstColList","datepicker","renderToDatepicker","secondColList","DatePickers","datePickersContainer","RoleList","roleList","when","SidebarAuthor","author","creatorArea","questionType","dateFormatted","moment","SidebarLink","SidebarTag","SidebarTagWithValue","SidebarTitle","titles","SubtitlePageViewHeader","withColor","subheading","StackFilter","isSelected","stackFilter","withMainColor","StackFilterParagraph","containerStyles","labelStyles","clickHandlerCallback","handleItemClick","getMenuItemsList","SortByDropdown","dropdownText","order","ActiveStepPage","pageLayoutFirst","pageLayoutSecond","pageLayoutThird","renderActiveStep","NavigationProgressBar","stepOneText","stepTwoText","stepThreeText","addSpacingToText","stepOne","stepTwo","stepThree","progressBar","ActiveHeader","Subtitle","HorizontalPositioned","BrowseButton","UploadSingleFile","IntegrationCertificateEnum","P12","isPositionVertical","UploadDraggableArea","setFieldTouched","handleFileDrop","stopPropagation","handleDragOver","AdminNavMoreActionsButton","dropdownItems","menuIconContainer","up","filtersSelections","programsEntitiesSelector","createSelector","entities","getSchoolNames","schoolNamesEntitiesSelector","loadingSchoolNames","getResources","loadingResources","getResourcesBase","resourcesBase","resourcesBaseEntitiesSelector","resourcesBaseEntitiesCollectionSelector","getResourcesConcatenatedBase","resourcesConcatenatedBase","resourcesConcatenatedBaseEntitiesSelector","resourcesConcatenatedBaseEntitiesCollectionSelector","getInstruments","loadingInstruments","initialMappedInstruments","getInstrumentsBase","instrumentsBase","instrumentsBaseEntitiesSelector","instrumentsBaseEntitiesCollectionSelector","getInstrumentsConcatenatedBase","instrumentsConcatenatedBase","instrumentsConcatenatedBaseEntitiesSelector","instrumentsConcatenatedBaseEntitiesCollectionSelector","getFiltersYears","filtersYearsSelector","filtersYearsEntitiesSelector","getFiltersFutureYears","futureYears","filtersFutureYearsSelector","filtersFutureYearsEntitiesSelector","getFiltersGradeLevels","filtersGradeLevelsEntitiesSelector","filtersEntitiesSelector","filtersEntitiesCollectionSelector","getFiltersAreas","filtersAreasEntitiesSelector","getFiltersEducators","filtersEducatorsEntitiesSelector","period","schools","filtersClassEntitiesCollectionSelector","filtersClassEntitiesSelector","getFiltersAudiences","filtersAudiencesEntitiesSelector","getFiltersPhases","filtersPhasesEntitiesSelector","filtersMasterInstrumentsEntitiesSelector","getFiltersInstrumentTypes","instrumentTypes","filtersInstrumentTypesEntitiesSelector","getFiltersInstrumentMainTypes","instrumentMainTypes","getFiltersInstrumentStatuses","instrumentStatuses","filtersInstrumentStatusesEntitiesSelector","getPillars","pillarsEntitiesSelector","getFiltersDomains","getFiltersEvaluationType","filtersEvaluationTypeEntitiesSelector","getFiltersCompetencies","filtersCompetenciesEntitiesSelector","getFiltersConcepts","filtersConceptsEntitiesSelector","digitalResourcesConcepts","getFiltersAdministrations","filtersAdministrationsEntitiesSelector","getFiltersSchoolLevels","filtersSchoolLevelsEntitiesSelector","getFiltersItemTypes","filtersItemTypesEntitiesSelector","getFiltersItemStatuses","itemStatuses","filtersItemStatusesEntitiesSelector","getFiltersSessions","getFiltersTagGradeLevels","tagGradeLevels","filtersTagGradeLevelsEntitiesSelector","getFiltersSkillsAndBehaviors","getFiltersLanguages","filtersLanguagesEntitiesSelector","getFiltersDefaultKeyTerms","defaultKeyTerms","getDigitalResourceTypes","getUploadFileTypes","uploadFileTypes","filterIntegrationTypesEntitiesSelector","getAccessibleToStudents","filterAccessibleToStudentsEntitiesSelector","getPublishedBy","filterPublishedByEntitiesSelector","getFileTypes","filterFileTypesEntitiesSelector","filterIntegrationStatusesEntitiesSelector","getSchoolDistricts","schoolDistrictsEntitiesSelector","loadingDistricts","getFiltersLearningPathStatuses","filtersLearningPathStatusesSelector","filtersLearningPathStatusesEntitiesSelector","getFiltersFileStatuses","filtersFileStatusesSelector","filtersFileStatusesEntitiesSelector","filtersProgramClassInstrumentsEntitiesSelector","itemFiltersEntitiesSelector","instrumentsFiltersEntitiesSelector","instrumentsBuilderFiltersEntitiesSelector","integrationFiltersEntitiesSelector","filesAllFiltersEntitiesSelector","learningPathsAllFiltersEntitiesSelector","UploadFormLabelEnum","UploadTypeEnum","InstrumentsFilterNamesEnum","InstrumentsOrderingEnum","InstrumentsFormNameEnum","InstrumentStatusNamesEnum","InstrumentDropdownNameEnum","InstrumentTypeEnum","AdminRolesInstruments","RolesEnum","SuperAdmin","USAAdmin","AdminRolesWithLocalAreaInstruments","AreaAdmin","AllRolesExceptStudent","Educator","Staff","Volunteer","ItemSortingEnum","ItemQuestionAnswersTypeEnum","AdminRolesItems","AdminRolesItemsWithoutArea","AdminWithStaffRolesItems","SuperAdminRolesItems","ItemsOrderingEnum","DigitalResourcesOrderingEnum","DigitalResourceDropdownNameEnum","FilesOrderingAllEnum","FilesAllFilterNamesEnum","FileAllTableColumnsEnum","LearningPathsAllFilterNamesEnum","LearningPathsOrderingAllEnum","LearningPathsDropdownNameEnum","LearningPathDropdownEnum","integrationFilterList","integrationFilterToFilterNameMap","IntegrationsFilterNamesEnum","INTEGRATION_TYPE","INTEGRATION_STATUSES","AREAS","SCHOOL_NAMES","SCHOOL_DISTRICTS","handleItemSortObj","IntegrationDropdownNameEnum","NAME_ASC","IntegrationsOrderingEnum","Name","NAME_DESC","DESC","CREATED_NEWEST","Created","CREATED_OLDEST","integrationsOrderingMap","integrationsAllValidationSchema","SidebarIntegrationsAll","useIntegrations","pageLoading","SEARCH_BY_NAME","resetHandler","resetFilterIntegrations","mapIntegrationAllFilters","setFilterIntegrations","renderFiltersList","IntegrationsAllSortBy","integrationsAllSortOrderSelector","setSortOrderIntegrationsAll","useIntegrationStoreState","clearIntegrationState","clearIntegrationAuditLogsState","clearAuditLogs","AdminPortalIntegrationsAllEnhanced","filterEntities","setCurrentPage","setPerPage","fetchIntegrations","fetchIntegrationListDropdown","integrationsList","setIntegrationFilterItems","handleAddIntegration","handleViewIntegrationDetails","sidebar","integration","areaName","districtName","integrationTypeEntity","integrationStatusEntity","integrationStatus","renderSortOrder","appliedFilters","updated","integrationFilter","mappedFilterName","currentFilter","propName","cloneDeep","pId","resetDropdownFilter","integrationTypeObj","INTEGRATION_TYPES","contentHeader","contentFooter","Table","withSecondaryNavigation","footer","AdminPortalIntegrationsDetailEnhanced","IntegrationsDetailView","AdminPortalAddIntegrationEnhanced","AddIntegrationView","Integrations","exact","IntegrationType","IntegrationStatus","IntegrationTypeNum","IntegrationStatusNum","IntegrationBaseResponseStatusNumEnum","prefix","fetchIntegrationsPagedThunk","createAsyncThunk","itemsPerPage","rejectWithValue","sortAsc","clonedFilter","queryFilter","getIntegrationQueryFilter","toastNotificationManager","createErrorToastAction","fetchIntegrationStatusesThunk","fetchServiceEmailThunk","fetchIntegrationDetailsThunk","fetchAuditLogThunk","fetchPublishedSourceDetailsThunk","createGoogleVirtualClassThunk","createSuccessToastAction","addIntegrationMessages","createIntegrationSuccess","errMsg","unknownIntegrationError","createGoogleSitesSourceThunk","createGoogleSitesDestinationThunk","createMicrosoftTeamsThunk","updateGoogleClassroomIntegrationThunk","integrationDetailsMessages","updateIntegrationSuccess","updateGoogleSitesSourceIntegrationThunk","updateMicrosoftTeamsIntegrationThunk","updateGoogleSitesDestinationIntegrationThunk","deleteIntegrationThunk","publishIntegrationThunk","testMicrosoftTeamsThunk","testIntegrationStarting","testGoogleClassroomThunk","testGoogleSitesSourceThunk","testIntegrationSuccess","testGoogleSitesDestinationThunk","primary20","primary40","primary60","primary80","primary100","secondary20","secondary40","secondary60","secondary80","secondary100","success","gray00","gray05","gray10","gray20","gray40","gray60","gray80","gray100","process","baseUrlReports","baseUrlExports","baseUrlNotFound","REACT_APP_JA_EE_NOT_FOUND_REDIRECT_URL","baseUrlDownloadDigitalResource","baseUrlLearningPaths","REACT_APP_JA_EE_TEST_API_BASE_URL","localBaseUrl","REACT_APP_JA_EE_LOCAL_TEST_API_BASE_URL","jaEEfileUploadApi","oidc","authority","client_id","redirect_uri","response_type","scope","post_logout_redirect_uri","silent_redirect_uri","automaticSilentRenew","loadUserInfo","monitorSession","accessTokenExpiringNotificationTime","checkSessionInterval","revokeAccessTokenOnSignout","endSessionUrl","isProduction","mainNavHeight","secondaryNavigation","secondaryNavigationLarge","heightThreeStepsActivity","heightUploadResources","statusText","fetchAreasFiltersThunk","fetchIntegrationListDropdownThunk","createItemThunk","itemsMessages","createSuccess","createQuestionThunk","createQuestionSuccess","fetchItemThunk","fetchListItemsPagedThunk","fetchNewItemThunk","fetchQuestionsThunk","fetchSortByColumnsThunk","fetchSortOrderTypesThunk","publishAllAnswerStacksForQuestionThunk","publishAllSuccess","publishItemAnswerStackThunk","publishAnswerStackSuccess","unPublishItemAnswerStackThunk","unPublishAnswerStackSuccess","createUpdateItemThunk","updateSuccess","deleteItemThunk","fetchPossibleDefaultAnswerStacksThunk","addDefaultAnswerStackThunk","addCustomAnswerStackThunk","updateItemThunk","updateAnswerStackThunk","capitalize","_capitalize","_cloneDeep","collection","predicate","_filter","_findIndex","groupBy","_groupBy","intersection","arr1","arr2","_intersection","_isEmpty","_isFunction","_isNumber","_isObject","_isString","_toNumber","_uniqueId","_values","camelToTitle","camelCase","match","toUpperCase","_debounce","orderBy","_orderBy","isEqual","other","_isEqual","arrayOfStringsToString","uniq","_uniq","uniqBy","_uniqBy","AnswersViewDrag","answers","stackId","dropHandler","headingActions","hasMatchedMetadata","itemDrag","BuilderItemDragTypeEnum","useBuilderItemDrag","drag","isDragging","AnswersView","Answers","AnswersMatrixView","TableContainer","TableHead","col","TableCell","TableBody","head","firstCell","circle","AnswersMatrix","columnsUpdated","addExtraColumn","questionAnswerStackId","choices","choice","mapColumns","AnswerInstructionaText","html","shouldRender","textArea","previewEditor","instructionalText","AnswerBuilderRating","withSmallButtons","mapToggleButtonOptions","ratingAnswer","EntityHeaderName","EntityHeaderInstructionalText","instructionText","EntityCardBody","itemPrefixText","withItemInfo","linkedQuestionAnswerStackId","openInfoLinkClickHandler","cardTypeMap","EntityCard","withTitle","questionOptionsTypeId","questionAnswerStackIdOriginal","entityType","entityId","isInstructionalTextQuestion","EntityCardAnswers","EntityItems","setCurrentItem","handleLinkModalOpen","openInfoLinkClickChanger","canBeUnpublished","LibraryNavBar","Status","isLive","EntityStatusEnum","live","published","isLiveOrPublished","getStatusText","ExportTypesEnum","ReportExportFormatsEnum","ReportTypesEnum","ReportTypesNamesEnum","ReportTypeTermsEnum","ProgramDetailsViewTypeEnum","DefaultProgramMenuItemOptionEnum","ExportTypesNamesEnum","getDatetimeAMPMinUTC","utcDate","utc","keepOffset","toISOString","convertToISOString","split","getIsBeforeDate","beforeDate","afterDate","today","beforeISOString","todayISOString","isBefore","slicedLabel","prepareMultiPartFormData","FormData","getSortingOptions","getIsAscSortOrder","emailRegex","createUniqueId","uuidv4","getFirstTwoCharsFromFullName","fullName","firstName","lastName","first","charAt","useLearningPathBuilderItemsEntities","builderSessionItemsEntities","builderSessionItemsEntitiesSelector","builderSessionItemsResult","builderSessionItemsResultSelector","builderSessionItemsCollection","builderSessionItemsCollectionSelector","isAllSessionsExpanded","learningPathsCreateBuilderIsAllSessionsExpanded","resourcesBaseEntities","resourcesBaseEntitiesCollection","resourcesConcatenatedBaseEntities","resourcesConcatenatedBaseEntitiesCollection","instrumentsBaseEntities","instrumentsBaseEntitiesCollection","instrumentsConcatenatedBaseEntities","instrumentsConcatenatedBaseEntitiesCollection","isSomeOfSessionsInEditMode","isSomeOfSessionsInEditModeSelector","isSomeOfSessionsWithEmptyName","isSomeOfSessionsWithEmptyNameSelector","hasSessions","ZERO_NUMBER","useSessionBuilderStoreActions","addSessionBuilderItem","deleteSessionBuilderItem","removeSessionBuilderItem","clearBuilder","mapUpdateSessionBuilderItem","sessionName","description","sessionDescription","isAccordionExpanded","updateSessionBuilderItem","updateSessionBuilderItemMode","mode","SessionBuilderEditModeEnum","View","collapseSessionBuilderItem","collapseAllSessionBuilderItems","addSessionBuilderResourceItem","resourceItem","addSessionBuilderResourceItems","addSessionBuilderInstrumentItems","deleteSessionBuilderResourceItem","removeSessionResourceBuilderItem","deleteSessionBuilderInstrumentItem","removeSessionInstrumentBuilderItem","clearBuilderItems","checkIfEmptySessionExist","checkIfEmptySession","moveSessionItem","dragIndex","hoverIndex","dragItem","moveSessionResourceItem","useSessionBuilderMode","setSessionBuilderMode","getSessionBuilderMode","IntegrationSortingEnum","NavigationProgressBarTextEnum","IntegrationLabel","IntegrationModeEnum","cloneInstrumentThunk","createNewInstrumentThunk","deleteInstrumentThunk","duplicateInstrumentThunk","fetchInstrumentThunk","fetchInstrumentsAllPagedThunk","fetchMatrixRelatedPoolItemsThunk","fetchPoolItemsThunk","unPublishSessionInstrumentThunk","updateDraftInstrumentThunk","onSuccess","instrumentsMessages","saveSuccess","defaultErrorMessage","fetchPossiblePretestItemsThunk","uploadInstrumentHeaderLogoThunk","uploadInstrumentFooterLogoThunk","EXPORTS_URL","fetchGeneralInstrumentExportThunk","exportSuccess","exportError","PROGRAM_CLASS_EXPORTS_URL","fetchAreaProgramClassExportThunk","publishMasterInstrumentThunk","publishSuccess","fetchInstrumentForPreview","updateInstrumentThunk","PROGRAM_CLASS_DETAILED_EXPORTS_URL","fetchAreaProgramClassDetailedExportThunk","fileEditMessages","scormPackage","cannotOpenArchive","hasNotShortUrl","clickToOpen","clickToDownload","clickToCopy","copied","expiredResource","warningUnsavedChanges","openInNewTab","fileDetailsMessages","deleteSuccess","mapEditFileInitialValues","fileDetails","fileMetadata","contentType","ksAs","versionNumber","versionDetails","lengthInMinutes","isResource","isWebLink","isFillablePdf","getFileEditLearningPathColumns","mapResourceMetadata","accessExpirationDate","mapUpdateResourceBasePayload","baseData","fileId","mapUpdateResourceFilePayload","mapUpdateResourceScormPayload","mapUpdateResourceWebLinkPayload","getContentResponseHeaders","mimeType","contentDispositionList","getEditFileFirstColumnExtendedList","extendedList","pop","getFileStatus","processingStatus","fileDetailsStatus","ResponseApiStatusEnum","AddIntegrationLabelEnum","invalidDatePeriod","queryParam","userNotLoggedIn","optionalText","requiredWithInputName","questionTextRequired","instrumentNameRequired","audienceRequired","phaseRequired","pillarRequired","instrumentTypeRequired","programRequired","subTypeRequired","onlyFeedbackTypeAllowed","onlyGeneralAllowed","MIN_INSTRUMENT_NAME_LENGTH","dateFormat","ARCHIVE_FORMATS","ALLOWED_PAPER_ASSESSMENTS_FORMAT","ALLOWED_VIDEO_FORMATS","NOT_ALLOWED_VIDEO_FORMATS","ALLOWED_AUDIO_FORMATS","ALLOWED_DOC_FORMATS","ALLOWED_IMG_FORMATS","VIRTUAL_CLASS_TYPE","PAPER_ASSSESSMENT","DIGITAL","MAX_ALLOWED_SIZE","MAX_PERCENT","FIVE_PERCENT","SEC_DURATION","UPLOAD_ITEM_HEIGHT","UPLOAD_ITEM_WIDTH","ROUNDED_BY_TWO_DIGITS","RESOURCE_NUMBER_TYPE","virtualClass","video","audio","image","paperAssessment","k12Resource","chatBot","others","ALLOWED_LOGO_SIZE","SUPPORTED_LOGO_FORMATS","allowedHeaderLogoDimensions","allowedFooterLogoDimensions","ALLOWED_INSTRUCTIONAL_TEXT_LENGTH","ALL_AREAS_INDEX","RANDOM_MULTIPLIER","RANDOM_COLLECTIVELY","NEGATIVE_ONE","createEmptyAnswer","isCorrect","INITIAL_ANSWER_POSITION","createEmptyFourAnswers","listLength","MAX_EMPTY_ANSWERS","createEmptyCustomAnswerStack","QuestionAnswersTypeEnum","INITIAL_QUESTION_ID","INITIAL_QUESTION_ANSWERSTACK_ID","originalAnswerStackId","INITIAL_ORIGINAL_QUESTION_ANSWERSTACK_ID","canModifyAnswerQuestionAnswerstacks","updateNameConceptsWithKSAs","mapItemFormDataToUpdatePayload","isDeleted","mapItemFormDataPayload","buildMetadataPayload","answerTypeName","minimumRateDescription","maximumRateDescription","mapItemDefaultAnswerStacksPayload","answerStacks","stack","getDefaultAnswerStackFormData","mapItemFormDataToUpdateAnswerStackPayload","mapId","getIsJaUSA","getAnswerStackData","elements","getTypeRadioGroup","questionTypeAnswerStack","radioGroup","getTypeCheckbox","getTypeDropdown","dropdown","checkCorrectAnswer","getAnswerType","isAnswerTypeSingleChoice","answerTypeEnum","singleSelectAnswerEnum","isAnswerTypeMultiChoice","matrixMultiSelectAnswerEnum","isAnswerTypeDropdown","dropdownAnswerEnum","isAnswerTypeSingleOrMultiOrDropdownChoice","isAnswerTypeSingleDropdownChoice","isAnswerTypeOpenEnded","openEndedAnswerEnum","isAnswerTypeNumericScale","ratingAnswerEnum","getIsDomainKnowledge","selectedDomain","domainKnowledgeId","getQuestionMode","isCreateMode","isEditMode","fetchGoogleSitesSourceDetailsThunk","fetchGoogleSitesSourceHistoryThunk","fetchGoogleSitesCopySiteThunk","googleSitesMessages","copySuccess","copyError","fetchGoogleSiteListThunk","googleSitesReducer","googleSite","googleSitesInitialState","clearSortOrder","clearHistory","clearHistoryCopyIntegrationId","copyData","setCopyIntegrationId","setSortOrderGoogleSiteDetails","setSortOrderGoogleSites","setCurrentPageGoogleSites","setPerPageGoogleSites","resetPagination","setTotalCountGoogleSites","getGoogleSitesState","getGoogleSiteDetailsState","getGoogleSitesAllState","paginationSelector","pageLoadingSelector","googleSitesListSelector","googleSitesAll","googleSitesListItemIdsSelector","googleSitesEntitiesSelector","googleSitesEntitiesBaseCollectionSelector","ids","listItems","createdTime","lastModifiedTime","mimetype","googleSitesListSortOrderSelector","googleSiteIntegrationDetailsSelector","googleSiteDetailsSortOrderSelector","googleSiteDetails","googleSiteDetailsHistorySelector","googleSiteDetailsHistoryListSelector","historyList","googleSiteDetailsHistoryItemsEntitiesSelector","googleSiteDetailsHistoryItemsResultSelector","googleSiteDetailsHistoryItemsCollectionSelector","googleSiteDetailsHistoryListLoadingSelector","googleSiteHistory","googleSiteDetailsHistoryListItemCopyDataSelector","googleSiteDetailsHistoryListItemCopyingSelector","copying","googleSiteDetailsHistoryListItemCopyIntegrationIdSelector","googleSiteDefault","lastModifyingUser","emailAddress","siteOwner","version","googleSiteDetailsDefault","GoogleSitesDetailOrderingEnum","LastCopiedDate","paginationDefault","GoogleSitesOrderingEnum","LastModifiedDate","integrationsListEntity","Schema","Entity","idAttribute","historyListEntity","historyListSchema","googleSitesListEntity","googleSitesListSchema","googleSitesExtraReducer","fulfilled","pending","rejected","normalize","idProp","getFormValue","getAnswersComponentMap","withBuilder","0","AnswerOpenEnded","rating","AnswersRating","questionAnswerEnum","matrix","matrixEnum","getSortMenuItemsList","useBuilderItemsEntities","builderItemsEntities","builderItemsEntitiesSelector","builderItemsResult","builderItemsResultSelector","builderItemsEntitiesCollection","builderItemsCollectionSelector","useBuilderPoolItemsEntities","builderPoolItemsEntities","builderPoolItemsEntitiesSelector","useBuilder","urlParams","useParams","instrumentsAllFilterSelector","instrumentsPageSelector","saving","savingSelector","pristine","setPristine","builderItems","builderItem","questionIdOriginal","mapDomain","mapBuilderItem","pristineStateHandler","deleteBuilderItem","instrumentsActions","removeBuilderItem","linkBuilderItem","moveBuilderItem","movedItemIdx","newPosition","addBuilderItems","itemRaw","isMatrix","element","answerId","getBuilderItem","isMatrixQuestion","addBuilderItem","addMatrixRow","addInstructionalText","generateRandomQuestionId","updateInstructionalText","mapBuilderItemInstructionalText","deleteMatrixRow","rowIdx","removeMatrixRow","moveMatrixRow","dragIdx","hoverIdx","save","acc","parentQuestionAnswerStackId","instructionalTextId","mapItemsForSave","setFilter","setFilterInstruments","pageSaving","useBuilderDrop","useDrop","drop","allowedDropEffect","canDrop","collect","monitor","isOver","defaultBuilderEditModeAllTypes","BuilderEditModeEnum","allTypes","useBuilderEditMode","builderEditMode","setBuilderEditMode","isAllTypesMode","isEditMatrixMode","isEditInstructionalText","useDrag","end","dropResult","getDropResult","useBuilderItemDrop","moveHandler","hover","useBuilderState","useInstruments","poolItemsLoading","builderPoolBaseItems","builderPoolItemsEntitiesBaseCollectionSelector","builderPossiblePretestItems","builderPossiblePretestEntitiesBaseCollectionSelector","searchTextSelector","instrumentsBuilderFilterSelector","builderFilterEntities","getPoolItems","initialBuilderFilter","mapBuilderFilterPayload","clearState","clearPoolItems","getMatrixRelatedPoolItems","setSearch","setFilterInstrumentsAction","updatedFilter","setBuilderFilterInstruments","resetBuilderFilter","resetBuilderFilterInstruments","resetTemporaryBuilderItems","setTemporaryBuilderItems","setBuilderItems","usePoolItemsPagination","poolItemsPagesTotal","pagesTotalSelector","poolItems","initialPage","NavigationProgressStepsEnum","EnvironmentConfigurationEnum","FormContext","FormContextProvider","formikFormRef","isDirty","setIsDirty","refresher","setRefresher","store","forceUpdate","submitFormikForm","resetIsDirty","ResourceTypeNumEnum","ResourceTypeEnum","IBaseFileItemStatusEnum","getLinkedItem","getChildQuestion","childQuestion","childQuestionAnswerStackId","mapInitialValues","parentItem","childItem","newLinkedQuestionAnswerStackId","matrixInitialLinkedQuestionAnswerStackIdList","QuestionPropertiesType","applyItemLinkChanges","checkIfValidFormValues","mapBuilderFilter","areasFilter","pillarsFilter","evaluationTypesFilter","domainsFilter","programsFilter","categoryFilter","learningObjectiveFilter","conceptsFilter","competenciesFilter","administrationsFilter","schoolLevelsFilter","floor","random","getCanLinkItem","instrumentTypeId","isLinkAllowed","isPostSessionSurvey","PostSessionSurvey","Feedback","PostProgramSurvey","getIsAllowedInstrumentLink","QuestionDomainNumEnum","Knowledge","getFilterList","getFilterToFilterNameMap","PILLARS","EVALUATION_TYPE","DOMAIN","PROGRAMS","LEARNING_OBJECTIVE","CATEGORY","COMPETENCY","CONCEPT","ADMINISTRATION","SCHOOL_LEVEL","SEARCH","FilterBackendNamesEnum","ProgramClassInstrumentsOrderingEnum","ProgramClassInstrumentsDropdownNameEnum","QuestionColumnCellEnum","sessionItemBuilderEntity","sessionBuilderItemsSchema","sessionBuilderInitialState","builder","builderSessionItems","sessionBuilderReducer","sessionId","sessionItem","sessionItems","getClonedSessionEntitiesCollection","sessionItemsObj","uniqueResources","uniqueInstruments","removeResourceItemUtil","instrument","removeInstrumentItemUtil","isEdit","checkIfSessionsWithEmptyNameUtil","clonedSessionItemsCollection","updatedSessionItems","update","$splice","normalizedSessionEntities","clonedBuilderSessionEntityItems","updatedResourceItems","clonedSessionItemsEntities","sessionBuilderExtraReducer","fetchLearningPathByIdThunk","updateLearningPathThunk","getSessionBuilderState","sessionBuilder","getBuilderState","getLearningPathsBuilderSessionItems","sessionBuilderSlice","createSlice","initialState","reducers","extraReducers","sessionBuilderSliceSitesActions","FastField","Student","GlobalCss","withStyles","muiTheme","responsiveFontSizes","createMuiTheme","50","100","200","300","500","700","800","900","hint","h1","h2","h3","h4","h5","h6","body1","body2","overrides","MuiOutlinedInput","MuiChip","MuiInputBase","integrationDetailsFormBaseValidationSchema","useIntegrationDetailType","isGoogleClassRoom","serviceEmail","certificate","SUPPORTED_CERTIFICATE_FORMATS","clientId","clientSecret","authorityUrl","googleDriveSourceFolderLink","GOOGLE_DRIVE_URL","googleDriveDestinationFolderLink","useProgram","activeEntitySelector","loadingSelector","fetchProgram","optional","resetActiveEntry","fetchProgramThunk","reset","setOrder","sorted","b","localeCompare","sensitivity","useProgramReports","setIsLoading","selectedAreaId","setSelectedAreaId","reportTypes","getReportTypes","exportTypes","getExportTypes","fetchProgramLevelsOfReporting","fetchLevelsOfReportingListThunk","fetchProgramClassLevelsOfReporting","useProgramReportsStoreActions","levelOfReportsLoadingSelector","selectedIdSelector","menuList","levelOfReportsMenuItemsSelector","selectedItem","defaultSelectedOption","defaultProgramClassMenuItemOption","defaultProgramMenuItemOption","clearProgramReportsState","clearLevelOfReports","setSelectedId","isProgramLevelAllOption","filesAllFilterList","filesAllFilterToFilterNameMap","FILE_TYPES","GRADE_LEVELS","COMPETENCIES","KSAS","LANGUAGES","IS_ACCESSIBLE_TO_STUDENTS","FILE_STATUSES","filesAllMessages","scormHasNotShortUrlMessage","fileExpiredMessage","resourceCopied","resourceDownloading","getFilesAllMenuItemsList","mapFetchFilesAllPayload","filterFilesAllPayload","contentTypes","kSAs","mapFilesAllFilters","SEARCH_BY_QUERY","PUBLISHED_BY","getFilteredFilesColumns","filterParam","filesDropdownList","DropdownItemTextEnum","isOpenInNewWindow","copyLink","isDownload","mapFilesDropdownList","isFileExpired","importItemsThunk","importItemsMessages","importStarting","fetchImportItemsTemplateThunk","downloadSuccess","fetchImportInstructionalTextThunk","uploadItemBankThunk","mappingSuccess","fetchItemBankPreviewTableRowsThunk","fetchImportCriticalIssuesThunk","downloadIssuesSuccess","useGeneralInstrumentMeta","feedbackType","feedbackTypeName","typeFeedbackId","audienceType","generalAudienceName","audienceGeneralId","deleting","deletingSelector","builderPoolItemsLoadingSelector","instrumentsAllSortOrderSelector","newPage","instrumentsList","instrumentsAllSelector","fetchInstruments","pageDeleting","useInstrumentItem","currentItem","usePretestItem","possiblePretestItems","getInstrumentIcon","isGeneralInstrument","isMasterInstrument","mapInstrumentCreateModalMetadata","newType","getSortInstrumentMenuItemsList","fetchFilesAllPagedThunk","downloadFileThunk","blob","filesAllpaginationDefault","filterDefault","filesAllInitialState","downloading","filesAllSchemaEntity","filesAllSchema","filesAllExtraReducer","arg","filesAllReducer","clearFile","setSortOrderFilesAll","setFilterFilesAll","resetFilterFilesAll","filesAllSlice","filesActions","getFilesAllState","filesAll","filesAllSortOrderSelector","filesAllFilterSelector","filesAllIdsSelector","filesAllEntitiesSelector","filesAllEntitiesCollectionSelector","fileDetailsSelector","fileDownloadingSelector","downloadingIdSelector","LearningPathViewCreate","useCreateLearningPath","getDefaultPreviewFirstColumnList","integrationTypeStringValue","schoolNameStringValue","certificateName","Area","SchoolName","Certificate","getDefaultPreviewSecondColumnList","schoolDistrictStringValue","IntegrationName","ServiceEmailAdress","GoogleDriveSourceFolderLink","GOOGLE_SITES_SOURCE","getEditorPermissionCheckboxText","EXAMPLE_EMAIL","GOOGLE_SITES_DESTINATION","mapUpdateMicrosoftTeamsPayload","isSecretStartsWithAsteristic","configClientId","replaceWithNullIfEmptyString","configAuthorityUrl","mapUpdateGoogleClassroomPayload","configServiceEmail","configIntegrationName","mapGoogleSitesSourcePayload","configDefaultFolderLink","mapGoogleSitesDestinationPayload","defaultFolderLink","fieldValue","fetchUserIdThunk","fetchUserIdAndAreaIdThunk","userStateLoadingSelector","user","userStateErrorSelector","userIdSelector","profile","userProfileSelector","userProfileLoadingSelector","isLoadingUser","userExtraReducer","userReducer","reducer","useUser","userProfile","userStateError","userEmail","useUserId","userLoading","userError","userAreaId","authenticationManager","createUserManager","clearStaleState","removeUser","revokeAccessToken","removeAllItems","separator","joinList","IIntegrationsPagedFilterEnum","AREA_IDS","SCHOOL_IDS","DISTRICT_IDS","ProgramsMasterInstrumentsOrderingEnum","ProgramMasterInstrumentsDropdownNameEnum","promoteAnswerStackSuccess","learningPathsAllValidationSchema","PROGRAM_YEARS","LEARNING_PATH_STATUSES","mapLearningPathsAllFilters","filesAllLearningPathsFilterList","learningPathsAllFilterToFilterNameMap","learningPathsMessages","cloning","errorDuplicating","learningPathsColumns","mapFetchLearningPathsAllPayload","programYearsCollection","programYearNames","getLearningPathsAllMenuItemsList","PROGRAM_YEAR_NEWEST","ProgramYear","PROGRAM_YEAR_OLDEST","getFilteredLPColumns","FilterNamesEnum","ProgramsAllOrderingEnum","ProgramDropdownNameEnum","ErrorPage","returnHomeClickHandler","returnButton","scrollableAreaWithoutSecondaryNavigationSubtrahend","AuthFailedPage","userStateLoading","_ref2","NoPermissionsPage","FileNotFoundPage","alignContent","bytes","digits","toFixed","updateFileUploadPercent","updatedFileUpload","existingFile","percentage","updateUploadFileStatus","toLowerCase","getUploadingFileNumber","markCancelFileUpload","isCanceledUpload","UploadFileStatusEnum","Failed","addFileToUpload","fileToUpload","calculateLengthText","uploadMessages","uploadSuccess","uploadError","abortRequest","fixedInputHeight","integrationTypeMap","createIntegrationStarting","addIntegrationValidationWarnings","hasSelectedAreaOrSchoolNameOrSchoolDistrictField","urlWarning","certificateSupportedFormatWarning","validationGoogleDriveLinkWarning","validationServiceEmailWarning","validationmMsterClassroomEmailAccountlWarning","NoResources","LearningPathListItem","linkTooltip","acessibleToStudentsTooltip","disableLink","disableDelete","isAvailableToStudents","linkClickHandler","openModalClickHandler","canDrag","isDraggable","addSessionResourcesFormValidationSchema","selectedResourcesIds","selectedResources","AddSessionResourcesForm","mapAddResourceItemsPayload","SessionList","moveSession","sessionBuilderMode","isNew","shouldExpand","sessionMode","LearningPathSessionsListItem","hasItemAssets","markFieldAsTouched","sm","md","lg","xl","isResourceList","openDrawerButtonText","setSessionBuilderModeCallback","emptyContainer","SessionResourceListItem","canDelete","isExpired","useCreateLearningPathResources","hasUrl","redirectToEditResourcePage","isDeleteSessionModalOpen","setIsDeleteSessionModalOpen","toolTip","getAccessibleToStudentsTooltip","getLinkTooltip","shouldDisableLink","SessionDetailsDivider","learningPathSessionsFormBaseValidationSchema","LearningPathSessionsForm","SessionsListItemActionButtons","isModalDeleteSession","setIsDeleteSessionModal","shouldDisableSaveButton","shouldRenderEditButton","openDeleteSessionModal","deleteSessionItem","saveClickHandler","setEditModeClickHandler","SessionResourceListEdit","moveResource","AddSessionResources","submitFormClickHandler","addResourcesActionButtons","submitClickHandler","setIsDirtyCallback","AddResourcesActionButtons","addResourcesFormContext","addInstrumentsFormContext","bottom","AddSessionAdditionalContent","LinkExistingResources","selectionList","AddResourcesDrawerList","uniqueCollectionIds","getResourcesCollectionByIds","List","AddResourcesDrawerListItem","deleteDrawerItemClickHandler","filteredResources","filterResourceCollectionById","filteredResouceIds","AddSessionInstruments","addSessionInstrumentsFormValidationSchema","selectedInstrumentsIds","selectedInstruments","AddSessionInstrumentsForm","mapAddInstrumentItemsPayload","SessionInstrumentListEdit","instrumentItem","SessionDetails","SessionDetailsEdit","SessionDetailsPreview","AdditionalResourcesList","isAddResourcesDrawerOpen","setIsAddResourcesDrawerOpen","isAddInstrumentsDrawerOpen","setIsAddInstrumentsDrawerOpen","openDrawerResourcesClickHandler","openDrawerInstrumentsClickHandler","AddInstrumentsDrawerList","filteredInstruments","getInstrumentsCollectionByIds","AddBaseDrawerListItem","redirectToEditInstrumentPage","redirectLink","AddInstrumentsDrawerListItem","filterInstrumentCollectionById","filteredInstrumentIds","SessionInstrumentListItem","isDeleteModalOpen","setIsDeleteModalOpen","SessionListDragItem","itemRef","useItemDrag","useItemDrop","handlerId","collapseAccordionCallback","SessionResourceDragListItem","sessionResourceItem","LearningPathSessions","sessionsContent","sessionList","LearningPathFooter","withPublishButton","withDeleteButton","withCancelButton","withSaveButton","disablePublish","disableSave","publishClickHandler","cancelClickHandler","LearningPathDetails","withSubtitle","LearningPathDetailsFirstCol","shouldDisableList","LearningPathDetailsSecondCol","ButtonPrimaryWithAdminAndLocalAreaPermissions","ButtonSecondaryWithAdminAndLocalAreaPermissions","ModalCreateNewInstrument","nextButton","ModalCreateNewInstrumentWithForm","setError","CreateInstrumentFormFields","renderNextButton","buttons","CreateInstrumentForm","CardLinkInfoTooltip","LearningPathLabelEnum","useLearningPaths","learningPathsAllPageLoadingSelector","learningPathsAllIds","learningPathsAllIdsSelector","learningPathsAllEntities","learningPathsAllListSelectorEntitiesSelector","exportingLearningPathsSelector","selectedLearningPathId","selectedLearningPathIdSelector","cloningLearningPathsSelector","learningPathsAllFilterSelector","learningPathsAllSortOrderSelector","learningPathsAllPaginationSelector","redirectToCreateLearningPath","redirectToEditLearningPath","fetchLearningPaths","queryFilters","fetchLearningPathsPagedThunk","fetchExportLearningPath","fetchExportLearningPathThunk","objectUrl","revokeObjectURL","cloneLearningPath","duplicateLearningPathThunk","useLearningPathsAllStoreActions","clearLearningPaths","setFilterLearningPathsAll","resetFilterLearningPathsAll","setCurrentPageLearningPaths","setPerPageLearningPaths","LearningPathsDropdown","openModalCloneClickHandler","showProgress","exportClickHandler","dropdownOptions","Clone","Export","progress","ThreeDots","LearningPathsActionButtons","showDropdown","cloneLearningPathFormBaseValidationSchema","getIsDateEarlierFromToday","ModalCloneForm","learningPathId","mapCloneLearningPath","ModalCloneContent","ModalClone","LearningPathsSidebar","shouldRenderStatusFilter","statusesFilterIndex","splice","LearningPathContentFooter","learningPathsAllOrderingMap","LearningPathsHeaderSortBy","LearningPathContentHeader","learningPathsAllFilter","buttonWithAdminPermissions","LearningPathsContent","isCloneModalOpen","setIsCloneModalOpen","shouldFilterColumns","hasSuperAndUSAAdminPermission","cloneLearningPathIdRef","resourcesCount","LearningPathsViewAllEnhanced","LearningPathViewCreateEnhanced","LearningPathViewEditEnhanced","LearningPathViewEdit","LearningPaths","useInstrumentIdParams","useInstrument","templateEntities","activeTemplateSelector","surveyForPreviewTemplateEntitites","surveyForPreviewTemplateSelector","fetchInstrumentById","fetchInstrumentForPreviewById","publishMasterTemplate","mapAreaProgramClassExport","downloadExport","isRoutePreviewWithAnswers","pathname","activeTemplate","surveyForPreviewTemplate","updateInstrumentAndSetViewMode","formData","mapUpdateInstrument","setActiveModeHandler","classRelatedInstrumentEditConfirmationHandler","editItemsClickHandler","previewClickHandler","previewWithAnswersClickHandler","exportGeneralClickHandler","useInstrumentModals","isPublishModalOpen","setIsPublishModalOpen","handleDeleteModalOpen","handleDeleteModalClose","handlePublishModalOpen","handlePublishModalClose","handleCloneModalOpen","ProgramClassesPaperAssessmentsFilterNamesEnum","ProgramClassPaperAssessmentsOrderingEnum","PaperAssessmentsSortDropdownNameEnum","ActionsBuilderView","shouldDisableButtons","shouldRenderButtons","discardClickHandler","dismissClickHandler","instructionalTextClickHandler","saveAndExitClickHandler","CardItem","totalItems","editClickHandler","isInstructionalText","cardId","AnswersComponent","answersContent","itemBuilder","CardBody","withDelete","BuilderItem","editInstructionalTextClickHandler","editClickHandlerChanger","linkClickHandlerChanger","Builder","deleteBuilderItemHandler","moveBuilderItemHandler","handleOpenModalLink","handleOpenInfoLinkModal","setCurrentBuilderItem","isDeleteBuilderItemModalOpen","setIsDeleteBuilderItemModalOpen","deleteBuilderItemRef","linkBuilderItemClickHandler","DroppableArea","asOverlay","canLinkBuilderItem","MatrixEditExtraHeader","PoolItem","shouldItemBeDisabled","isStackRelatedFiltersModalOpen","setIsStackRelatedFiltersModalOpen","handleOpenStackRelatedFiltersModal","CardQuestionSimple","PoolItemMatrixMode","itemRows","shouldBeDisabled","questionText","withExtraPadding","PoolItemsList","builderItemsBase","hasBuilderItems","loadingSize","loadingContainer","PoolItemsMatrixList","parentQuestionId","formValidationSchema","ensure","filterList","SidebarBuilderView","InstrumentEditName","templateName","ModalLinkItems","unlinkHandler","stackGroup","isStackGroupLengthNotEmpty","selectedStack","handleSelectElement","questionStackChoices","answerStackContainer","answersContainer","ModalLinkItemsForm","currentBuilderItem","linkBuilderItemHandler","updatedItem","modalLinkFormValidationSchema","ModalInfoLinkItem","linkedItem","ModalStackRelatedFilters","StackList","InstrumentEditInstructionalText","InstrumentEditHeaderAndFooter","headerUrl","footerUrl","headerLogo","ImageUpload","footerLogo","editTagsFormValidationSchema","builderInstructionalTextHTML","BuilderInstructionalText","withApply","withSubmit","BuilderInstructionalTextForm","applyClickHandler","InstrumentEditContainer","DynamicCharacters","maxCharacters","instructionTextLen","SingleFileUpload","singleFileUpload","FileUploadFormInput","Container","uploadResourceDatePicker","UploadFooter","showPrompt","redirectCallback","deleteLearningPathThunk","publishLearningPathThunk","exportLearningPathThunk","learningPathEditMessages","learningPathEditInitialState","createdUtc","learningPathEditReducer","clearLearningPath","getLearningPathsEditState","loadingLearningPathSelector","learningPathState","learningPathExportingSelector","learningPathDetailsSelector","learningPathEditExtraReducer","learningPathEditSlice","learningPathEditSliceSitesActions","getItemsImportState","itemsImport","downloadingSelector","uploadingSelector","uploading","importingSelector","importing","templateInstructionalTextSelector","templateInstructionalText","itemsImportFieldListSelector","mapping","fieldList","hasRequiredFieldErrorsSelector","hasRequiredFieldErrors","itemsImportFileNameSelector","itemImportIdSelector","itemImportPreviewRowsSelector","previewRows","itemImportCriticalIssueCountSelector","criticalIssueCount","itemImportPreviewLoadingSelector","downloadingCriticalIssuesSelector","downloadingCriticalIssues","ItemFilterNamesEnum","ProfileMenu","given_name","family_name","avatarClickHandler","menuCloseHandler","logoutClickHandler","logout","TransitionComponent","Fade","Header","navigation","withActions","elevation","JAEELogo","logo","pointer","flexGrow","Layout","PageLayoutWithFixedAreas","headerSize","withExtraHeight","hasFooter","headerHeight","footerPagginationHeight","overflowX","instrumentDetailsFormBaseValidationSchema","is","notRequired","otherwise","audienceStudentId","dimensions","checkIfAreaAdmin","prepareFileFromBlob","byteArray","b64Data","sliceSize","byteCharacters","atob","byteArrays","offset","byteNumbers","charCodeAt","Uint8Array","Blob","base64toBlob","File","isSingleArea","getInstrumentLogo","prepareContentTypeImage","extention","mapInstrumentMetadata","serviceSourceEmailSelector","googleSitesSourceErrorMessage","addIntegrationErrorMessageSelector","getAreaStringValue","getIntegrationTypeStringValue","getSchoolDistrictStringValue","getSchoolNameStringValue","hasServiceSourceEmail","canShowGoogleSitesErrorBox","useAddIntegrationType","integrationTextType","Step2Text","useAddIntegrationStateActions","redirectToViewListOfIntegrations","createGoogleClassroom","createMicrosoftTeams","fetchServiceEmail","fetchPublishedSourceDetails","defaultProgramMenuOptionId","ProgramLevel","ClassLevel","programDetailsInitialState","levelOfReports","IGoogleSitesAreasTableEnum","GoogleSiteDetailsNameEnum","HistoryTableStatusEnum","HistoryTableButtonTextEnum","BoxSizeEnum","OrderingNamesEnum","OrderingBackendEnum","ProgramClassesDropdownNameEnum","AuditLogsColumnsTableEnum","AuditLogsLabelEnum","learningPathMessages","uploadFileThunk","fileToUploadInitial","getInitialFileToUploadPayload","uploadProgress","progressEvent","loaded","total","percentageProgress","calculateLoadedPercent","uploadingFile","Uploading","Uploaded","setUploadProgress","UploaderActionTypes","POST_UPLOAD_FILE_REQUEST","setUploadFileStatus","removeFileFromUploadManager","uploadScormThunk","createWebLinkThunk","fetchFileByIdThunk","NotFound","redirectWhenErrorStatusCode","deleteFileThunk","updateResourcesFileThunk","updateScormResourceThunk","updateWebLinkResourceThunk","downloadFileByIdThunk","fileDetailsInitialState","fileDownloading","fileDetailsReducer","fileDetailsExtraReducer","getFileDetailsState","fileDetailsSlice","IntegrationInput","iconButton","PreviewList","IntegrationConfirmCheckbox","canGiveEditorPermissions","showError","schoolId","schoolNamesObj","prepareOptionalMultiPartFormDataForGoogle","schoolDistrictId","getGoogleClassRoomPayloadDetails","prepareMultiPartFormDataForGoogleClassRoom","getGoogleSitesSourcePayloadDetails","prepareMultiPartFormDataForGoogleSitesSource","getGoogleSitesDestinationPayloadDetails","prepareMultiPartFormDataForGoogleSitesDestination","getMicrosoftTeamsPayloadDetails","microsoftTeamsPayload","districtId","prepareJsonDataForMicrosoftTeams","mapAddIntegrationDataForPayload","getAddIntegrationPayload","getPreviewFirstColumnList","defaultList","googleSitesDestinationList","microsoftTeamsList","ClientID","getPreviewSecondColumnList","googleClassRoomList","UserToImpersonate","ClientSecret","AuthorityUrl","getAddIntegrationGoogleSitesList","GoogleDriveDestinationFolderLink","getAddIntegrationMicrosoftTeamsList","useCustomAnswerStack","addCustomStack","customStacksValue","customStacks","rangeToIdx","useEditAnswerStack","answerStack","isTypeRating","questionTypeId","isTypeDropdown","isTypeOpenEnded","isOtherType","isTypeMultiSelect","useMapChoicesBasedOnDomainKnowledge","restLength","itemDefault","canEditQuestionText","questionOptionsType","defaultAnswerStacks","createdOn","createdBy","ADMINISTRATIONS","CONCEPTS","DOMAINS","EVALUATION_TYPES","ITEM_TYPES","SCHOOL_LEVELS","ITEM_STATUSES","SORT_BY","ORDER_BY","itemsInitialState","itemList","itemQuestions","questions","publishingStack","loadingPageSection","promotingStack","itemReducer","setFilterItems","resetFilterItems","setSortOrderItemsAll","itemListEntity","itemListSchema","questionEntity","itemQuestionsSchema","itemsExtraReducer","updateAnswerStackQuestionId","fullPageLoad","questionsValues","sortByColumns","sortOrderTypes","promoteItemAnswerStackThunk","answerQuestionAnswerStackIdOriginal","answerQuestionAnswerStackId","itemsSlice","itemsActions","getPaperAssessmentsState","paperAssessments","paperAssessmentsSelector","paperAssessmentList","paperAssessmentsIdsSelector","paperAssessmentsEntitiesSelector","paperAssessmentsEntitiesCollectionSelector","filterPaperAssessmentsSelector","paperAssessmentsSortOrderSelector","uploadLoadingSelector","SINGLE_ANSWER","ONE_ANSWER_POSITION","TagIndicator","mapStringListToStringWithSemicolon","mapEditLearningPathPayload","learningPathDetails","futureProgramYearsCollection","futureProgramYearId","getFutureProgramYearsId","keyTermsStr","learningObjectiveStr","getUserDetails","updatedBy","modifiedUtc","emailCreator","emailUpdater","createdByInitials","updatedByInitials","clickToExport","TimeSpentTracker","delta","customCss","question","number","controlLabel","radiogroup","navigationButton","timeSpentTracker","SurveyTaker","saveResultsClickHandler","isPreview","isPreviewWithAnswers","start","useSurvey","setDefaultAnswersForPreview","checkIfSurveyHasSinglePage","getSurveyPagesLength","appendMaxCharsToTextField","clonedSurvey","isSinglePage","completeHandler","valuesHash","onAfterRenderQuestion","json","onComplete","css","SurveyTakerContent","surveyTaken","saveResultsHandler","printRef","isPreviewMode","reactToPrintContent","handlePrint","useReactToPrint","ViewError","ViewSuccess","_ref3","_ref4","_ref5","_ref6","_ref7","_ref8","_ref9","_ref10","_ref11","_ref12","_ref13","_ref14","_ref15","_ref16","_ref17","_ref18","_ref19","_ref20","_ref21","_ref22","PrintSurveyTaker","FooterLogo","getFooterLogo","responsePromise","errorMessage","mapPayloadForDuplicate","learningPathsAllReducer","learningPathsAllInitialState","setTotalCountLearningPaths","getLearningPathsAllState","getLearningPathState","learningPathsAll","learniningPaths","learningPathsAllListSelector","learningPathsAllSchemaEntity","learningPathsAllSchema","learningPathsAllExtraReducer","learningPathsAllSlice","learningPathsAllSitesActions","adminOptions","CLASSES","MASTER_INSTRUMENTS","REPORTS","otherOptions","pathToViewMap","viewToLinkMap","ViewExpansionPanel","useRouteMatch","viewButtonOptions","_event","menuConfig","LevelReportingMenu","programViewType","Program","openMenuClickHandler","closeMenuClickHandler","aria-controls","PaperProps","searchTerm","LevelReportingMenuItemList","filteredMenuItems","clonedList","LevelReportingMenuItem","formResetDelay","NoDataMenuItem","levelReportingValidationSchema","LevelReportingMenuForm","shouldFetchProgramLevelsOfReporting","shouldFetchProgramClassLevelsOfReporting","isProgramViewType","m","notificationsSelector","toastNotifications","notifications","notificationEntity","notificationsSchema","toastNotificationsReducer","notificationsValues","remove","notification","toastNotificationsSlice","toastNotificationsActions","PHASES","AUDIENCES","TYPES","STATUSES","INSTRUMENT_VIEW_TYPE","instrumentsInitialState","templates","previewTemplate","temporaryBuilderItems","pretestItems","pagesTotal","instrumentsReducer","resetFilterInstruments","setSortOrderInstrumentsAll","rowsUpdated","fromRow","itemPoolEntity","poolItemsSchema","itemBuilderEntity","builderItemsSchema","pretestItemEntity","pretestItemsSchema","instrumentsListEntity","instrumentsListSchema","instrumentsExtraReducer","mapMatrixElementAnswerStackId","newEntities","pageCount","surveyTemplate","instrumentsSlice","integrationsListSchema","integrationStatusesEntity","integrationsExtraReducer","integrationList","addIntegration","serviceEmailAccount","auditLogs","configuration","DEFAULT_CLIENT_SECRET","defaultFolderId","TEST_IN_PROGRESS","TEST_FAILED","TEST_SUCCESS","integrationsSlice","integrationsInitialState","integrationsReducer","integrationsActions","programClassesPaperAssessmentsInitialState","programClassesPaperAssessmentsReducer","resetFilter","setSortOrderPaperAssessments","paperAssessmentListEntity","paperAssessmentListSchema","programClassesPaperAssessmentsExtraReducer","uploadPaperAssessmentsThunk","fetchClassPaperAssessmentsPagedThunk","TWENTY_FIVE","programClassesPaperAssessmentsSlice","programClassesPaperAssessmentsActions","ModalResources","IResourceContentTypeEnum","IResourceContentTypeNameEnum","SidebarBase","withHeader","importSuccess","itemsImportWarning","getUploadState","getUploadFileState","uploadFilePageLoadingSelector","getUploadScormState","uploadScormPageLoadingSelector","getAddWebLinkState","createWebLinkPageLoadingSelector","getFileName","lastDot","getLastDot","substring","lastIndexOf","recognizeTypeByFileMimeType","mapUploadResourceFile","mapUploadResourceMetadata","getOriginalList","getUploadFirstColList","uploadType","originalList","WebLink","Scorm","mapBaseResourceMetadata","mapUploadResourceScorm","mapCreateResourceWebLink","isValidFormValue","recognizeFillablePdf","endsWith","uploadFileFormBaseValidationSchema","DisplayName","addWebLinkFormBaseValidationSchema","uploadScormFormBaseValidationSchema","UploadFileHeader","useLanguages","firstLanguage","englishName","englishId","useUploadActionButtons","redirectToViewListOfFiles","hasErrors","hasFile","hasFileType","hasAccessibleToStudentsField","hasWebLinkField","hasDisplayName","isFormValid","hasUploadRequiredFields","hasOneOfUploadRequiredFields","hasOneOfUploadScormRequiredFields","hasOneOfAddWebLinkRequiredFields","shouldDisableFileUpload","shouldDisableScormUpload","shouldDisableAddWebLink","UploadFileFooter","UploadFileContentStart","setFileType","fileTypeNum","deleteFileType","Video","Audio","Document","PDF","FillablePDF","Excel","Archive","mapFileTypeNumber","fileFullName","mappedType","getFileType","UploadFileContentMiddle","firstCollist","UploadResourceFile","useUploadFile","contentMiddle","contentStart","withDoubleFirst","withDoubleSecond","withFooter","ScormContentStart","ScormContentMiddle","ScormContentHeader","ScormContentFooter","UploadResourceScorm","uploadScormPackage","useUploadScorm","ContentStart","resourcesContent","WebLinkHeader","WebLinkFooter","webLinkInput","UploadResourceWebLink","useCreateWebLink","UploadResources","learningPathViewCreateFormBaseValidationSchema","ILearningPathValidationsShape","createEmptySession","contentItemIds","resourcesCollection","instrumentItemIds","instrumentsCollection","sessionResourceTooltipMessages","useItemsImport","previewLoading","itemImportPreviewRows","itemImportCriticalIssueCount","shouldDisableImport","redirectToViewListOfQuestions","downloadTemplate","downloadIssues","fetchImportInstructionalText","resetMappingState","resetMapping","fetchItemBankPreviewTableRows","resetFormCallback","SvgIllustrationTrash","Answer","answer","AnswerHeader","AreaTitle","AnswerComponentWrapper","showRating","showOtherTypes","showNoChoices","showOpenEnded","NoChoices","noChoices","AnswerComponent","base","openEnded","reportMessages","DataFile","programClassInstrumentsInitialState","pool","byId","INSTRUMENT_STATUSES","programClassInstrumentsReducer","setSortOrder","setSortOrderProgramClasseInstruments","poolListEntity","poolListSchema","programClassInstrumentsExtraReducer","fetchProgramClassInstrumentsThunk","programTemplates","programClassInstrumentsSlice","programClassInstrumentsActions","integrationDefault","expiryDateCertificate","integrationListDefault","ModalEditClassRelatedInstrument","textRow","ModalCloneInstrument","instrumentFields","cloneInstrumentValidationSchema","CloneInstrumentForm","isAreaAdmin","ModalCloneInstrumentWithForm","ModalsInstrumentDetails","template","deleteModalOnClose","publishModalOnClose","handleDeleteModalFinish","handlePublishModalFinish","isMetaDataValid","publishError","HeaderActionButtons","editMode","isGeneralTemplate","canPublish","updateModeClickHandler","deleteModalOpenHandler","publishModalOpenHandler","cloneModalOpenHandler","shouldDisablePublish","showEditAndPublishButton","showCloneButton","SidebarInstrumentDetailsEdit","SidebarInstrumentDetailsView","SidebarInstrumentDetails","isMasterTemplate","shouldRenderEdit","Base","PreviewDropdown","shouldRenderPreviewWithAnswers","previewListOptions","InstrumentDetailsView","isEditClassRelatedInstrumentModalOpen","setIsEditClassRelatedInstrumentModalOpen","isInfoLinkItemModalOpen","setIsInfoLinkItemModalOpen","isViewMode","EditTextWithPermissions","EditHeaderAndFooterWithPermissions","newSubType","parentId","headerSubHeading","headerAction","hasAssignmentResults","renderItems","instrumentContent","editItemsButton","logoGroup","createLearningPathThunk","learningPathsCreateExtraReducer","learningPathsCreateSlice","getLearningPathsCreateState","learningPathCreatePageLoadingSelector","learningPathCreate","ProgramsClassesOrderingEnum","IReportApiEnum","GoogleSiteListSortNameEnum","ItemImportActiveStepEnum","FileFieldTableEnum","ISystemFieldOptionEnum","MappingTableLabelEnum","SET_OPEN_UPLOAD_MODAL","SET_CLOSE_UPLOAD_MODAL","SET_FILE_UPLOAD_PERCENT","SET_UPLOAD_FILE_PROGRESS","SET_UPLOADED_FILE_STATUS","REMOVE_FILE_FROM_UPLOAD_MANAGER","SET_CLOSE_NOTIFICATION_MANAGER","SET_RESOURCE_TYPE_UPLOAD_MODAL","SET_IS_FILE_ATTACHED","SET_FILE_FOR_UPLOAD","SET_FILE_TO_UPLOAD","RESET_FILE_FOR_UPLOAD","RESET_IS_FILE_ATTACHED","RESET_RESOURCE_TYPE_UPLOAD_MODAL","CANCEL_FILE_UPLOAD","POST_UPLOAD_FILE_SUCCESS","POST_UPLOAD_FILE_ERROR","cancelUpload","getFilesNotificationManager","notificationManager","uploaderReducer","createReducer","isLoading","programClassesInitialState","EDUCATORS","DISTRICTS","START_DATE","END_DATE","YEARS","ONLY_VIRTUAL_CLASSES","Class","programClassesReducer","setSortOrderProgramClasses","programClassesExtraReducer","fetchProgramClassesPagedThunk","programClassesSlice","programClassesActions","programMasterInstrumentsInitialState","programMasterInstrumentsReducer","programMasterInstrumentsExtraReducer","fetchProgramMasterInstrumentsPagedThunk","remapProgramMasterInstruments","programName","programMasterInstrumentsSlice","programMasterInstrumentsActions","BadRequest","responseType","Column","Grid","Row","getIntegrationDetailsFirstColumnList","certificateExpirationDate","integrationTypeString","IntegrationTypeObj","shouldDisableFormIntegrationInput","ERROR","TEST_PENDING","googleClassroomList","ExpiryDateCertificate","googleSitesSourceList","DEFAULT_GOOGLE_DRIVE_FOLDER_LINK","getIntegrationDetailsSecondColumnList","IntegrationStatusObj","getAuditLogsColumns","DateOfChange","User","Activity","Outcome","Remarks","getIsNotIntegrationFailedOrHasError","AddSessionButton","shouldRenderButton","emptySession","shouldDisableAddSessionButton","addSessionClickHandler","CreateLearningPathFooter","submitFormCallback","redirectToViewListOLearningPaths","isModalCreateLPOpen","setIsModalCreateLPOpen","CreateLearningPathDetailsForm","CreateLearningPathDetails","LearningPathViewCreateContainer","withSubHeading","contentUp","contentDown","futureProgramYearObj","mapCreateUpdateLearningPathPayload","fetchResources","getResourcesIdsByLearningPathId","downloadResource","detailsId","hasRequiredPermissions","userRoles","requiredRoles","getIntegrationsState","integrationsAllSelector","integrationsAllFilterSelector","integrationDetailsSelector","integrationStatusesSelector","auditLogsSelector","auditLogsLoadingSelector","getPermissions","permissions","permissionsStateSelector","userRoleListStateSelector","exportingSelector","fetchUserRoleThunk","roles","permissionsManager","setActiveUserRoles","permissionsExtraReducer","requestTriggered","fetchUserActivityExportThunk","permissionsSlice","permissionsReducer","ErrorBoxMessage","ErrorBoxMessageList","withMarginLeft","hasMultipleErrorsList","IMPACT_SUMMARY_REPORT_URL","REPORT_GENERATOR","ImpactSummaryReport","ACHIEVEMENT_SUMMARY_REPORT_URL","AchievementSummaryReport","STUDENT_GRADEBOOK_REPORT_URL","StudentGradebookReport","STUDENT_ACHIEVEMENT_SUMMARY_REPORT_URL","StudentAchievementReport","generateReport","matchedSurveyTypesId","exportFormat","updatedParams","mapProgramClassReport","reportQueryUrl","ImpactSummary","AchievementSummary","StudentAchievementSummary","getReportUrl","deployPastTestFlag","StudentGradebook","RawDataFile","RawDataFileDetailed","DataFileDetailed","fetchProgramClassThunk","fetchProgramsPagedThunk","INSTRUMENTS","CardItemPositionTag","renderOptions","selectWrapper","shouldRenderActions","deleteButton","dragIcon","AddIntegrationActiveStepPage","StepOne","Step1Text","StepTwo","StepThree","Step3Text","uploadCertificateWrapper","addIntegrationComponent","contentLeft","contentRight","AddIntegrationContentFooter","shouldDisableCancelButton","nextClickHandler","openModalCancelAddIntegrationHandler","formikContext","hasFormikFields","hasGoogleClassRoomFields","hasGoogleClassRoomFieldsErrors","hasGoogleSitesSourceFields","hasGoogleSitesSourceFieldsErrors","hasGoogleSitesDestinationFields","hasGoogleSitesDestinationFieldsErrors","hasMicrosoftTeamsFields","hasMicrosoftTeamsFieldsErrors","shouldDisableSecondStepNextButton","canDisableNextButton","ModalCancelAddIntegration","handleCancelAddIntegration","cancelAddIntegrationClickHandler","AddIntegrationMetadata","renderContentFirstColList","selectionItem","renderContentSecondColList","errorBox","inputName","AddIntegrationGoogleClassRoom","MicrosoftTeamsContent","inputList","withHeightThreeStepsActivity","AddIntegrationMicrosoftTeams","UploadCertificate","subTitle","PreviewAndTest","firstColInputList","secondColInputList","contentFirstCol","contentSecondCol","firstCol","secondCol","GoogleSitesDestinationContent","hasServiceEmail","shouldShowError","checkboxText","AddIntegrationGoogleSitesDestination","AddIntegrationGoogleSitesSource","PickIntegrationTypeComponent","AddIntegrationInputList","inputContainer","IntegrationInputWrapper","getActiveSurveyThunk","getGeneralSurveyThunk","saveActiveSurveyThunk","saveGeneralSurveyThunk","unknownError","SubheadingActions","useIntegrationIdParam","useIntegration","isUpdateIntegrationModalOpen","setIsUpdateIntegrationModalOpen","isModalDeleteIntegration","setIsDeleteIntegrationModal","hasOnlyIntegrationNameChanged","useIntegrationDetailsFormValues","shouldDisableDelete","shouldDisableUpdateBasedOnGoogleIntegrations","shouldDisableUpdateButton","openDeleteModalClickHandler","openUpdateIntegrationModalHandler","updateClickIntegrationHandler","updateClickHandler","deleteIntegrationClickHandler","Subheading","activeHeaderText","activeHeaderContainer","AuditLogs","loadingAuditLogs","auditLog","activity","outcome","userName","dateOfChange","remarks","tableContent","IntegrationDetailsContent","detailsContainer","IntegrationDetails","shouldRenderEditorPermissionsCheckbox","shouldRenderEditIntegrationCertificate","isTestingFailedOrErrorOrPending","EditIntegrationCertificate","EditorPermissionsCheckbox","isNotTestingFailedOrErrorOrPending","shouldDisableConfirmCheckbox","QuestionTypeEnum","QuestionDomainEnum","openUserActivityModalClickHandler","integrationsClickHandler","importItemsClickHandler","logInAsClickHandler","IntegrationFormInput","createToastAction","removeToastNotification","useProgramClass","currentClass","fetchClass","mapUserActivityExport","fieldsListDefault","selectionListItems","fieldsListGeneralInstrument","buttonList","withPreview","RatingToggleGroup","defaultButtons","getToggleButtons","buttonGroup","toggleGroup","ButtonGroup","buttonGroupContainer","rangeLabel","MatrixQuestionItem","matrixItem","uploadReducer","uploadInitialState","cancelRequest","filesReducer","combineReducers","isModalCancelAddIntegration","setIsModalCancelAddIntegration","closeModalCancelAddIntegrationHandler","submitRequest","FiltersFormNameEnum","addIntegrationFormBaseValidationSchema","fetchIntegrationStatuses","useIntegrationStateActions","fetchIntegration","fetchAuditLog","updateMicrosoftTeams","configurationUpdated","updateGoogleClassroom","updateGoogleSitesSource","updateGoogleSitesDestination","formikValues","fetchIntegrationTypes","googleSitesSlice","googleSitesActions","itemsImportExtraReducer","validationResults","requiredFieldErrors","isRequired","validationError","getRequiredFieldErrors","itemFilterToTilterNameMap","itemAllColumns","itemAllOrderingMap","itemsFilterList","ItemsAllSortBy","itemSortOrderSelector","FiltersPanelItems","domainId","isDomainKnowledgeFunction","filterListItems","shouldRenderAreaFilter","competencyIndex","conceptIndex","useActiveItem","activeItemSelector","useItem","useItemStateActions","fetchItem","fetchNewItem","promoteAnswerStack","promoteAnswerStackClickHandler","useItemIdParam","usePageLoading","useItemSavingActions","promotingStackSelector","fetchQuestions","fetchPossibleDefaultAnswerStacks","deleteAnswerStack","itemPageLoadingStatusSelector","usePublish","publishingStackSelector","useItems","itemsFilterSelector","itemsList","itemsForPreviewSelector","itemsSortByColumnsSelector","fetchItems","itemsAllFiltersFormValidationSchema","searchByName","ItemsAllFilters","ButtonSecondaryWithAdminRolesItemsWithoutAreaPermissions","editModeClickHandler","deleteAnswerStackHandler","isCreateOrEditMode","publishHandler","submitContent","DeleteButton","DismissButton","deleteContent","ModalDeleteItem","ModalDeleteAnswerStack","questionIdQueryParam","mapDeleteAnswerStackPayload","ItemsAllView","selectedIds","setSelectedIds","useItemFilters","viewItemDetailsClickHandler","prevSelected","substr","isPaginationVisible","itemFilter","filterName","ItemBaseView","Sidebar","shouldClearItem","isDeleteItemModalOpen","setIsDeleteItemModalOpen","isDeleteAnswerStackModalOpen","setIsDeleteIAnswerStackModalOpen","hasAnswerStackId","hasEmptyAnswerStacks","buildHeader","questionHeader","answerStackHeader","headerSubHeadingTitle","ItemQuestion","SectionContainer","addButton","AddEditQuestion","typeValue","canEditText","hasQuestionText","isQuestionExist","group","ItemCard","showDetails","setShowDetails","showPromoteAnswerStack","canBePublished","toggleDetails","togglePublish","handleEdit","handleAddToJSA","Chips","entries","val","getChip","chip","ItemDetails","gap","ItemQuestionEdit","isMatrixType","itemQuestionId","shouldDisableButtonGroup","shouldRenderComponent","shouldDisableCreateAnswerStackButton","isSelectAnswerStackOpen","setIsSelectAnswerStackOpen","isCreateAnswerStackOpen","setIsCreateAnswerStackOpen","itemGroup","ItemQuestionName","PreviewTextEditor","ItemAnswerStack","accordionHeadingAction","stopPropagationHandler","accordionAction","answerIdx","section","titleInput","choiceInput","answerRow","addAnswerButton","PublishedTextEnum","withMarginTop","SidebarItem","ResponseTypeOptions","SidebarBuilderCreateItem","SidebarContent","sidebarInfo","ModalSelectAnswerStackContent","metatags","ModalSelectAnswerStack","modalSelectAnswerStackFormValidationSchema","choises","hasCorrectChoice","ModalSelectAnswerStackForm","modalCreateAnswerStackFormValidationSchema","isSingleChoice","isMultiChoice","isDropdown","choicesList","Set","getUniqueChoices","isUnique","ModalCreateAnswerStackContent","answerStackErrors","Metatags","answerStackError","ModalCreateAnswerStack","emptyChoices","ModalCreateAnswerStackForm","console","log","DefaultAnswerStacks","isCheckedSomeAnswerStack","getIsSomeAnswerStackChecked","isSelectedPropertyDoNotExists","isNotSelected","isNotSelectedStack","ItemEditAnswerStack","otherAnswerStacks","disableAdd","withRightButton","canEditAnswerInAnswerStack","ItemAnswerOpenEnded","openEndedQuestion","ItemAnswersCustom","answerPosition","hasSingleAsnwer","hasEditPermissions","choiceIdx","choiceNameBase","insert","ItemAnswersRange","rateListItems","positiveScoreItems","rateDescriptionItems","ContainerList","ItemAnswerRangeInput","descriptionItem","withWidth","EditRangeAnswerStack","PositiveScore","Rating","CreateQuestionEditor","EditQuestionEditor","ItemAnswersMultiSelect","responseTypeOptions","SingleSelect","OpenEnded","NumericScale","ResponseTypeGroup","ItemBuilderCreateContent","mt","mr","ItemBuilderCreate","itemCreateFormValidationSchema","ItemBuilderCreateForm","payloadData","itemEditFormValidationSchema","isTypeRadioGroup","isTypeCheckbox","questionContainer","ItemBuilderCreateViewEnhanced","ItemBuilderEditAnswerStackViewEnhanced","ItemBuilderView","SidebarItemDetails","mapValues","ItemDetailsView","stacks","Items","useGoogleSitesSortOrder","googleSitesList","useGoogleSitesAll","googleSitesFilteredList","sortGoogleSitesBy","sortedList","googleSitesFormValidationSchema","getFormattedGoogleSitesListDate","getGoogleSitesListColumns","getSortGoogleSiteLiesMenuItemsList","LAST_MODIFIED_DATE_ASC","LAST_MODIFIED_DATE_DESC","googleSiteListOrderingMap","useGoogleSitesSearch","setTotalCount","hasSearchTerm","cloneList","setFieldValues","resultList","calculatePaginationResult","searchWord","fieldVal","filterGoogleSites","googleSitesListItemIds","googleSitesEntities","fetchGoogleSiteList","GoogleSitesAllHeaderSearch","GoogleSitesForm","GoogleSitesTable","GoogleSitesSortBy","GoogleSitesContent","handleViewGoogleSitesDetails","GoogleSitesHeader","GoogleSitesAllView","ResourcesNavBar","shouldRenderLearningPaths","shouldRenderGoogleSites","ResourcesFormInput","ResourcesFormTextArea","ResourceInput","resourceDatePicker","ResourceTextArea","ResourceHeader","ResourceDetails","withBorderBottom","detailsContent","ResourceUserDetails","boxColumn","box","ResourceFooterButtons","submitButtonText","ResourceListColumn","maxHeight","contentEqualCols","contentOneOrTwoVerticalColsRoot","contentOneOrTwoVerticalColsFooter","contentOneOrTwoVerticalCols","contentLeftOneOrTwoVerticalCols","headerSecondaryNavigation","PageLayoutThreeCol","contentEnd","PageLayoutTwoCol","PageLayoutOneOrTwoEqualCols","fullContent","PageLayoutHorizontalRows","PageLayoutTwoVerticalCols","withFirstColBorderRight","secondRow","firstColSize","secondColSize","PageLayoutOneVerticalCol","SUPPORTED_FILE_FORMATS","itemsImportFormBaseValidationSchema","templateImportFile","isIntegrationNameChanged","isIntegrationAuthorityUrlChanged","isIntegrationClientSecretChanged","isIntegrationClientIdChanged","isIntegrationServiceEmailChanged","isIntegrationCertificateChanged","isIntegrationGoogleDriveSourceFolderLinkChanged","isIntegrationGoogleDriveDestinationFolderLinkChanged","AdminWithoutStaffRoles","permissionsLoading","permissionsRequestTriggered","getActiveUserRoles","fetchUserRole","filtersSelectionsInitialState","1","999999","filtersReducer","filtersSelectionsSlice","filtersSelectionExtra","filtersActions","filtersSelectionsReducer","checkIfDistinctPillars","Language","mapCreateUpdateLPMetadataPayload","mapCreateUpdateLPSessionsPayload","builderSessions","resourceIds","mapLearningPathResources","instrumentIds","mapLearningPathInstruments","rootReducer","programsReducer","resourcesReducer","libraryReducer","itemsImportSlice","duration","createSchema","entityName","entity","programsSchema","gradeLevelsSchema","areasSchema","educatorsSchema","schoolsSchema","audiencesSchema","phasesSchema","instrumentTypesSchema","instrumentMainTypesSchema","instrumentStatusesSchema","pillarsSchema","domainsSchema","evaluationTypesSchema","competenciesSchema","conceptsSchema","administrationsSchema","itemTypesSchema","schoolLevelSchema","sessionsSchema","tagGradeLevelsSchema","skillsAndBehaviorsSchema","languagesSchema","keyTermsSchema","digitalResourceTypesSchema","integrationStatusesSchema","integrationTypesSchema","integrationSchoolNamesSchema","schoolDistrictSchema","uploadFileTypesSchema","fileTypesSchema","resourcesSchema","resourcesBaseSchema","instrumentsSchema","instrumentsBaseSchema","futureYearsSchema","programYearsSchema","learningPathStatusesSchema","fileStatusesSchema","fetchProgramClassesFiltersThunk","resourcesData","uniqueConcatResources","instrumentsData","uniqueConcatInstruments","DELETED","uploadExtraReducer","uploadSlice","isChosenIntegrationType","IntegrationFiltersFormNameEnum","checkIfHasAField","matches","SvgIllustrationError404","useEditLearningPath","fetchLearningPathById","useLearningPathIdParam","DetailsFields","EditLearningPathDetails","learningPathViewEditFormBaseValidationSchema","EditLearningPathDetailsForm","EditLearningPathFooter","isModalEditLPOpen","setIsModalEditLPOpen","isModalDeleteLPOpen","setIsModalDeleteLPOpen","canPublishLearningPath","modalDelete","EditLearningPathHeader","KnowledgeSkillAndAbilitiesDetails","ksasContainer","DetailsKSAItem","EditLearningPathDetailsHeaderActions","EditLearningPathDetailsHeader","UserDetails","boxList","LearningPathViewEditContainer","useEditLearningPathStateActions","itemsImportMappingDefault","itemsImportInitialState","itemsImportReducer","itemsImportActions","createInstrumentValidationSchema","hasSubType","Programs","Library","ItemImport","getProgramsState","getLevelOfReportsState","programReports","activeEntity","classDetails","classInstruments","poolSelector","filterSelector","programClassInstrumentsSortOrderSelector","DragAndDropProvider","backend","HTML5Backend","getInstrumentsState","builderPoolItemsIdsSelector","builderPossiblePretestItemsIdsSelector","builderPossiblePretestItemsEntitiesSelector","SurveyTakerGeneralInstrument","instrumentIdRaw","areaIdRaw","aid","setLoading","setSurvey","setSurveyTaken","logoWidth","logoHeight","logoPosition","showCompletedPage","showPageNumbers","SurveyTakerMasterInstrument","surveySessionId","setSurveySessionId","SurveyTakerPreview","programsClassesSortOrderSelector","ProgramClassReportsAndExportsView","programIdParam","classIdParam","shouldDisableAchievementReports","filteredReportTypes","Achievement","getRawDataExport","getDetailedDataExport","getRawExport","isRawDataExport","reportRows","generateReportClickHandler","programsMessages","reportSuccess","reportError","viewBtn","CSV","exportRows","generateExportClickHandler","finally","headerSubheading","exportsTable","AdminPortalGoogleSitesAllEnhanced","GoogleSites","AdminPortalLearningPathsAllEnhanced","Files","GoogleSitesViewDetails","orderBySelector","programsMasterInstrumentsSortOrderSelector","AdminPortalItemsAllEnhanced","getItemsState","activeItemQuestionsSelector","activeItemQuestionsEntitiesCollectionSelector","programsSelector","programsAllSortOrderSelector","programsAllSlice","programDetailsSlice","programClassDetailsSlice","UploadManager","useUploadManager","uploadFiles","uploadingText","getFileManagerUploadingStatus","hasUploadingFiles","openUploadManager","closeUploadManager","handleCancelation","getIcon","missingFiles","noFiles","isLong","menuHeading","fileNameContainer","uploadingInfo","manuPaperProps","useFileEdit","useFileIdParam","fetchFileById","redirectToFilesAllPage","redirectToEditLearningPathPage","deleteFile","updateFile","updateScorm","updateWebLink","updateResource","downloadFileById","linkedLearningPaths","relatedLearningPaths","userDetails","useFileType","typeRef","ScormPackage","getType","useFileEditPermissions","hasFileEditPermissions","FilesEditHeader","fileProcessingStatus","processingDetails","FilesEditFooter","isModalDeleteResourceOpen","setIsModalDeleteResourceOpen","FilesEditDetails","FilesEditUserDetails","userList","emailList","FilesEditLearningPaths","noResultMessage","FilesEditWebLink","FilesEditScorm","originalFirstColList","FilesEditResource","FilesEditMetadata","PickFileMetadata","pickFileTypeMetadata","metataComponent","editResourceBaseMetadataValidationsShape","editFileMetadataValidationSchema","FilesEditResourceForm","FilesDetailsActions","isResourceExpired","expired","hasShortUrl","hasId","shouldDisableViewResource","viewLinkClickHandler","downloadClickHandler","getHasNotShortUrl","viewResourceTooltip","copyTooltip","copyToClipboardText","FilesEditDetailsHeader","FilesEditView","useFilesAll","filesAllIds","filesAllEntities","filesAllEntitiesCollection","filterAccessibleToStudentsEntities","downloadingId","fetchFilesAllPaged","downloadFile","openFileInNewTab","redirectToEditFilePage","useFilesAllStoreActions","clearFiles","DropdownItem","handleDropdownClose","isCopyable","isDownloadable","tooltipText","ScormResource","handleMenuItemClick","VerticalDropdown","WebLinkResource","UploadDropdown","redirectToUploadFilePage","redirectToUploadScormPage","redirectToUploadWebLinkPage","uploadItemsListOptions","filesAllOrderingMap","FilesViewAllSortBy","FilesViewAllHeader","publishedByEntities","filesAllFilter","isAccessibleToStudentsLabel","publishedByLabel","FilesViewAllFooter","fileColumns","FilesViewAllContent","shouldFilterColumnsBasedOnUsername","shouldFilterColumnsBasedOnStatus","shouldDisableViewExpiredResource","filteredCols","UserName","username","Expired","viewGroup","filesAllSidebarValidationSchema","FilesViewAllSidebar","hasAreaAdminPermission","hasUSAAndSuperAdminPermission","shouldRemovePublishedByFilter","shouldRemoveFileStatusesFilter","FilesViewAll","ItemsImportInstructions","contentInstructionText","subtitle","UploadFile","handleDownloadTemplate","handleAddFile","handleDelete","FileFieldName","FilePreviewTable","DownloadIssuesButton","loadingIndicator","downloadImportIssuesClickHandler","IssuesWarningBox","issuesWarningBox","ItemsImportFilePreview","shouldRenderDownloadCriticalIssuesButton","LoadingMemoized","actionButton","itemsImportFilePreviewContainer","ModalCancelDataImport","handleCancelDataImport","ContentFooter","shouldDisableImportButton","openModalCancelDataImportHandler","nextButtonText","ItemImportActiveStepPage","uploadFileWrapper","MappingTable","emptyList","SystemFieldName","systemFieldNameCell","RequiredField","requiredFieldCell","fileFieldNameCell","systemFieldName","fileFieldName","Required","Optional","tableContainer","ItemsImportViewEnhanced","isModalCancelDataImport","setIsModalCancelDataImport","closeModalCancelDataImportHandler","importDataClickHandler","paperAssessmentsColumns","uploadPaperAssessmentMessages","paperAssessmentsOrderingMap","getPaperAssessmentsMenuItemsList","useClassPaperAssessments","paperAssessmentsIds","paperAssessmentsEntities","paperAssessmentsEntitiesCollection","useClassPaperAssessmentsStoreActions","useProgramClassDetails","redirectToProgram","redirectToPaperAssessments","mapUploadPaperAssessmentPayload","downloadPaperAssessment","fetchClassPaperAssessmentsPaged","mapFetchClassPaperAssessmentsPayload","useUploadPaperAssessmentModal","uploadLoading","isUploadModalOpen","setIsUploadModalOpen","openUploadPaperAssessmentModal","closeUploadPaperAssessmentModal","programIdRaw","classIdRaw","clearPaperAssessments","uploadPaperAssessmentsFormBaseValidationSchema","UploadPaperAssessmentForm","closeModalClickHandler","SidebarFilters","UploadPaperAssessmentDroppableArea","UploadPaperAssessmentContent","mb","UploadPaperAssessmentModal","PaperAssessmentsAllSortBy","PaperAssessmentsHeader","shouldRenderHeader","ProgramClassPaperAssessmentsView","useProgramClassDetailsActions","shouldFetchPaperAssessments","downloadUrl","descriptionTooltipText","shouldDisableTooltip","paperAssessmentsName","useGoogleSitesDetails","redirectToViewGoogleSiteDetails","redirecToGoogleSite","siteUrl","fetchGoogleSiteDetails","useGoogleSiteIdParam","useGoogleSiteHistory","loadingHistory","copyingGoogleSite","copyingHistoryItemIntegrationId","googleSiteHistoryItemsEntities","googleSiteHistoryItemsResult","googleSiteHistoryItemsEntitiesCollection","fetchGoogleSitesSourceHistory","fetchGoogleSitesCopySite","useGoogleSiteStoreState","clearGoogleSiteState","clearSortOrderState","clearHistoryState","clearHistoryCopyIntegrationIdState","setCopyIntegrationIdState","GoogleSitesDetailsContent","createdTimeAMPMinUTC","lastModifiedTimeAMPMinUTC","avatar","firstRow","GoogleSitesDetails","googleSiteAreaCheckbox","GoogleSitesAreasSearch","isIncludesTerm","hasIncludesTermInName","hasIncludesTermInAreaName","historyFilteredList","GoogleSitesAreasSortBy","useGoogleSiteDetailsSortOrder","getSortGoogleSiteDetailsMenuItemsList","googleSiteDetailsOrderingMap","GoogleSitesAreasForm","googleSitesAreasFormValidationSchema","GoogleSitesAreas","getGoogleSiteTableColumns","copyGoogleSiteClickHandler","dateLastSent","datetimeAMPMinUTC","copyPayload","shouldDisableCopyButton","lastCopiedDate","copyId","copy","circularProgress","GoogleSiteAreasTable","GoogleSiteAreasDetails","hasGoogleSiteName","subHeadingName","redirectToViewListOfGoogleSites","useGoogleSites","instrumentAllOrderingMap","instrumentsAllColumns","instrumentAllFilterList","instrumentAllFilterToFilterNameMap","instrumentsAllFiltersFormValidationSchema","InstrumentsAllFilters","InstrumentsAllSortBy","locationOrigin","InstrumentsAllView","viewInstrumentDetailsClickHandler","surveyUrl","isDraftTemplate","share","mtIcon","programsList","rowRef","createRef","BuilderMatrix","moveRowHandler","deleteRowHandler","rowsBuilderItems","droppableAreaText","handleLinkClickHandler","itemRow","openInfoLinkHandler","InstrumentPreviewView","InstrumentBuilderViewEnhanced","isModalLinkItemsOpen","setIsModalLinkItemsOpen","handleCloseModalLink","unlinkClickHandler","getBuilderPoolItems","withInitialItems","searchSubmitHandler","filterToFilterNameMap","instrumentFilter","morePages","contentEndHeader","applyInstructionalTextClickHandler","contentEndBuilder","InstrumentPreviewWithAnswersEnhanced","classInstrumentFilterList","sidebarFiltersValidationSchema","programClassInstrumentsOrderingMap","Type","getProgramClassInstrumentsMenuItemsList","Name_ASC","Name_DESC","Type_PRE_POST","Type_POST_PRE","useProgramClassInstruments","fetchClassInstruments","shouldRenderFilters","EXPORTS","ProgramsClassInstrumentsSortBy","ProgramClassInstrumentsView","hasAllRolesWithoutStudentPermission","viewInstrumentDetails","duplicateMasterTemplate","newId","surveyGeneralUrl","DRAFT","otherDropdownItems","additionalDropdownItems","code","surveyType","headerSortOrder","usePrograms","filterEntitiesCollection","yearsCollection","fetchPrograms","filterProgramYears","programYearsFilter","getProgramYearsCollectionString","mapProgramsPayload","redirectToProgramDetails","filtersFormValidationSchema","ProgramsAllSidebarFilters","gradeLevelsFilter","newFilter","yearId","mapProgramsAllPayload","ProgramsAllSortBy","setSortOrderProgramsAll","getProgramsMenuItemsList","programsOrderingMap","ProgramsAllView","year","ProgramClassesView","ProgramReportsAndExportsView","ProgramMasterInstrumentsView","sidebarProgramClassesValidationSchema","default","programClassesOrderingMap","BCRMClassNumber","NumberOfStudents","getProgramClassesMenuItemsList","Class_ASC","Class_DESC","BCRMClassNumber_ASC","BCRMClassNumber_DESC","SchoolName_ASC","SchoolName_DESC","NumberOfStudents_ASC","NumberOfStudents_DESC","useProgramClasses","programClasses","fetchProgramClasses","mapProgramClassesPayload","fetchFilterEntities","ProgramClassesAllSidebarFilters","educatorsFilter","districtsFilter","schoolNamesFilter","onlyVirtualClasses","SchoolNameMulti","ProgramsClassesSortBy","showViewGroup","isVirtualClass","virtualClassUrl","hasVirtualClassUrl","toolTipText","entry","educatorsNames","educator","virtualClassIcon","virtualUrl","bcrmClassNumber","bcrmProgramYear","studentCount","btnSpacer","btnRightSpacer","programMasterInstrumentsOrderingMap","getProgramMasterInstrumentsMenuItemsList","useProgramMasterInstruments","ProgramsMasterInstrumentsSortBy","AreaName","AREA_NAME_ASC","AREA_NAME_DESC","LAST_COPIED_DATE_ASC","LAST_COPIED_DATE_DESC","Copy","programsAllInitialState","ORDER_ASC","programsAllReducer","programsListEntity","programsListSchema","programsAllExtraReducer","programsAllActions","ToastIcon","iconsMap","IconComponent","Notification","sliced","sliceMessage","closeIcon","ToastNotification","scheduled","updateSchedule","isScheduled","close","autoClose","renderNotifications","selectedArea","onSelectArea","withAllAreas","allAreasOption","extendedAreas","getRawDataExportForParticularArea","getDetailedDataExportForParticularArea","getRawExportForParticularArea","getRawDataExportForAllAreas","getDetailedDataExportForAllAreas","getRawExportForAllAreas","programClassDetailsInitialState","programClassDetailsReducer","programClassDetailsExtraReducer","programClassDetailsActions","dragging","moveCallback","getHandlerId","hoverBoundingRect","getBoundingClientRect","hoverMiddleY","hoverClientY","getClientOffset","DragItem","data-handler-id","DropContainer","programDetailsReducer","programDetailsExtraReducer","programDetailsActions","userManager","getUserManager","middleware","getDefaultMiddleware","serializableCheck","access_token","logger","configureStore","devTools","enhancers","reduxBatch","loadUser","redirectRoute","WrappedComponent","All","getCorrectAnswers","getAnswersField","updateDropdownMatrixQuestion","correctAnswers","rowValues","matrixdropdown","defaultValue","cellType","showInMultipleColumns","updateQuestionItem","pageElement","isRadioGroup","answersField","colCount","singlePage","calculateInputChars","currentElement","maxCharsLength","div","parentNode","calculateMaxCharsHandler","currLength","innerText","onkeyup","surveyPagesLen","htmlElement","getElementsByClassName","maxLength","uploadingFilesNum","learningPathsReducer","module","PaperNodeTypeEnum","pageBreakInside","table","borderCollapse","questionTextCell","leftQuestionIdCell","verticalAlign","svgCheckbox","answerIdCell","answerWrapper","PaperSurveyBaseItem","afterMount","ref2","heights","clientHeight","headerArea","questionAreas","questionTextRow","answerRows","choiceId","InstructionalTextForQuestion","Question","matrixQuestionRoot","matrixQuestionTable","matrixQuestionText","matrixQuestionLeftId","matrixQuestionTopRow","matrixAnswerLeftId","matrixQuestionRow","matrixQuestionCell","matrixHeaderRow","matrixScaleIdCell","matrixEmptyIdCell","matrixScaleTextCell","matrixScaleCheckboxCell","MatrixQuestion","mainRef","textRowRef","headerRowRefs","questionRowRefs","MatrixQuestionTextCell","colSpan","MatrixQuestionLeftId","MatrixQuestionTopRow","MatrixAnswerLeftIdCell","MatrixQuestionRow","MatrixQuestionCell","MatrixHeaderRow","MatrixScaleIDCell","MatrixEmptyIDCell","MatrixScaleTextCell","MatrixScaleCheckboxCell","colspan","topRow","headerIdCells","headerTextCols","headerRows","tds","fixedTable","tableLayout","overflowWrap","ParticipantsTable","participants","headerAreaRef","rowRefs","participantsTable","surveyHeadline","SurveyHeadline","headline","SurveyPage","surveyPage","surveyPageContainer","surveyPageHeader","surveyPageContent","flexFlow","surveyPageFooter","calcHeightOfSplit","startRowIndex","endRowIndex","paddingHeight","rowsHeight","rowHeight","createSplitNode","fullNode","createSurveyPages","objects","pageContentHeight","currentPageHeight","nextHeight","filledHeightOnCurrentPage","availableHeightPerPage","paperNode","node","questionAreasTotalHeight","rowIndex","newHeight","splitPaperNode","pageNumbers","SurveyForPrint","setPages","measurePageRef","afterQuestionMounted","qs","participantList","pagesToRender","extendedFooter","FooterText","footerText","Footer","HeaderLogo","InstructionalText","Marker","marker","InstructionText","DefaultText","ballotBoxWithX","InstrumentPrintPreviewView","instrumentData","setInstrumentData","templateData","fetchInstrumentData","getElementsByTagName","classList","htmlOverride","bodyOverride","surveysPerId","participantSummary","participant","sessionTemplateIdentifier","summaryElement","summary","noPrint","UIPages","print","AdminPortalEnhanced","AdminPortal","Routes","ErrorBoundary","LoadingComponent","App","shouldRenderRoutes","CssBaseline","isEnabled","notAuthorized","notAuthenticated","sessionLostComponent","callbackComponentOverride","authenticating","Moment","globalFormat","ReactDOM","StrictMode","StylesProvider","injectFirst","ThemeProvider","getElementById"],"mappings":"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AAAA,E,oBAAAA,M,sBCAAC,ECAAC,ECAAC,ECAAnpC,ECAAopC,ECAAC,ECAAC,E,kBNAAL,K,sBAAAA,E,gBAAAA,E,UAAAA,E,oBAAAA,E,oBAAAA,E,mCAAAA,E,yBAAAA,E,cAAAA,E,mCAAAA,E,wBAAAA,E,YAAAA,E,yBAAAA,E,wBAAAA,E,gBAAAA,E,gBAAAA,E,cAAAA,E,oCAAAA,E,mCAAAA,E,0BAAAA,E,6BAAAA,E,gBAAAA,E,2BAAAA,E,gBAAAA,E,0BAAAA,E,mCAAAA,E,iCAAAA,E,YAAAA,E,YAAAA,E,qBAAAA,E,uBAAAA,E,sBAAAA,E,+BAAAA,E,6BAAAA,E,wCAAAA,E,sBAAAA,E,cAAAA,E,YAAAA,E,mBAAAA,E,kBAAAA,E,kBAAAA,E,sCAAAA,M,cCAAC,O,6BAAAA,I,iCAAAA,I,2BAAAA,I,yBAAAA,I,+CAAAA,I,8BAAAA,M,cCAAC,K,cAAAA,E,eAAAA,M,cCAAnpC,O,8BAAAA,I,kBAAAA,I,wBAAAA,M,cCAAopC,K,cAAAA,E,UAAAA,E,sBAAAA,E,cAAAA,E,cAAAA,E,+BAAAA,M,cCAAC,O,aAAAA,I,qBAAAA,I,6BAAAA,I,qBAAAA,I,2CAAAA,I,qBAAAA,I,0CAAAA,M,cCAAC,K,8BAAAA,E,2CAAAA,M,SCAAC,E,mBAAAA,K,oBAAAA,E,oBAAAA,E,kBAAAA,E,4BAAAA,E,wCAAAA,E,sBAAAA,E,0BAAAA,E,gBAAAA,E,oBAAAA,E,oBAAAA,E,wCAAAA,E,6BAAAA,E,oBAAAA,E,kBAAAA,E,yCAAAA,M,SCAAC,ECAAC,ECAAC,ECAA1oC,E,iBHAAwoC,K,QAAAA,E,UAAAA,M,cCAAC,K,qBAAAA,E,sBAAAA,E,uCAAAA,E,wCAAAA,M,cCAAC,K,YAAAA,E,sBAAAA,E,kBAAAA,E,wBAAAA,E,2BAAAA,M,cCAA1oC,O,eAAAA,I,cAAAA,M,8/BCeL,SAAS2O,EAAT,GASY,IARjBC,EAQgB,EARhBA,cACA+5B,EAOgB,EAPhBA,iBACAC,EAMgB,EANhBA,cACAh5C,EAKgB,EALhBA,SAKgB,IAJhBi5C,uBAIgB,aAHhBC,wBAGgB,aAFhBC,sBAEgB,S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AL,IAAKuG,ECAAzL,ECAAid,ECAAoW,E,+GHAA5nB,O,iCAAAA,I,+BAAAA,I,6BAAAA,I,6CAAAA,I,uCAAAA,I,2BAAAA,I,uBAAAA,I,iBAAAA,I,mBAAAA,I,uBAAAA,I,kBAAAA,I,0BAAAA,I,0BAAAA,I,sBAAAA,I,4BAAAA,I,oCAAAA,I,wCAAAA,I,oCAAAA,I,oBAAAA,I,4BAAAA,I,gCAAAA,I,sBAAAA,I,wBAAAA,I,oCAAAA,I,8BAAAA,I,wBAAAA,I,4BAAAA,I,4CAAAA,I,sBAAAA,I,8BAAAA,I,wDAAAA,I,wBAAAA,I,4CAAAA,I,4CAAAA,I,0BAAAA,I,oCAAAA,I,gDAAAA,I,0CAAAA,I,0CAAAA,I,kFAAAA,I,oBAAAA,I,kDAAAA,I,gDAAAA,I,oDAAAA,I,sCAAAA,I,8CAAAA,I,oDAAAA,I,4CAAAA,I,wBAAAA,I,kCAAAA,I,wEAAAA,I,gEAAAA,I,8DAAAA,I,0DAAAA,I,wCAAAA,I,4EAAAA,I,iDAAAA,M,cCAAzL,K,QAAAA,E,cAAAA,E,oBAAAA,E,sBAAAA,E,sBAAAA,E,sBAAAA,E,kBAAAA,E,0BAAAA,E,gCAAAA,E,4BAAAA,E,0BAAAA,E,8BAAAA,E,sBAAAA,E,4BAAAA,E,oBAAAA,E,cAAAA,E,gBAAAA,E,kBAAAA,E,kBAAAA,E,oBAAAA,E,0CAAAA,E,cAAAA,E,gCAAAA,E,kCAAAA,E,gBAAAA,E,wBAAAA,E,4BAAAA,E,kBAAAA,E,oBAAAA,E,wCAAAA,E,oBAAAA,E,4BAAAA,E,kBAAAA,E,oBAAAA,E,4BAAAA,E,gCAAAA,E,0BAAAA,E,4BAAAA,E,oBAAAA,E,wBAAAA,E,wCAAAA,E,4BAAAA,E,oBAAAA,E,gBAAAA,E,YAAAA,E,YAAAA,E,gBAAAA,E,wCAAAA,E,sBAAAA,E,oBAAAA,E,sCAAAA,E,oCAAAA,E,oBAAAA,E,wCAAAA,E,sCAAAA,E,wBAAAA,E,wCAAAA,E,0BAAAA,E,4CAAAA,E,oBAAAA,E,8BAAAA,E,oCAAAA,E,wBAAAA,E,kBAAAA,E,4CAAAA,E,gCAAAA,E,kBAAAA,E,YAAAA,E,4BAAAA,E,kDAAAA,E,8CAAAA,E,sBAAAA,E,kCAAAA,E,sBAAAA,E,sBAAAA,E,wBAAAA,E,gCAAAA,E,wBAAAA,E,gCAAAA,E,sCAAAA,E,sBAAAA,E,kBAAAA,E,gDAAAA,E,gDAAAA,E,gCAAAA,E,YAAAA,E,QAAAA,E,iBAAAA,E,oDAAAA,E,4DAAAA,E,oCAAAA,E,0CAAAA,E,0BAAAA,E,kCAAAA,E,kCAAAA,E,YAAAA,E,wBAAAA,E,gCAAAA,E,kCAAAA,E,sCAAAA,E,wBAAAA,E,0BAAAA,E,0CAAAA,E,0DAAAA,E,oBAAAA,E,sBAAAA,E,8BAAAA,E,kCAAAA,E,0BAAAA,E,4BAAAA,E,sCAAAA,E,wCAAAA,E,sBAAAA,E,0BAAAA,E,oCAAAA,E,oCAAAA,E,gCAAAA,E,0DAAAA,E,cAAAA,E,0BAAAA,E,kBAAAA,E,YAAAA,E,4CAAAA,E,gDAAAA,E,4CAAAA,E,0BAAAA,E,6BAAAA,M,cCAAid,O,uBAAAA,I,mBAAAA,I,yCAAAA,I,mCAAAA,I,mBAAAA,I,iDAAAA,I,yEAAAA,I,+BAAAA,I,uBAAAA,I,2CAAAA,I,oCAAAA,I,kBAAAA,I,8BAAAA,I,wBAAAA,I,oCAAAA,I,wBAAAA,I,oCAAAA,I,4CAAAA,I,0BAAAA,I,8BAAAA,I,gDAAAA,I,8BAAAA,I,4CAAAA,I,0CAAAA,I,oDAAAA,I,0BAAAA,I,sBAAAA,I,0CAAAA,I,kFAAAA,I,0CAAAA,I,gBAAAA,I,kDAAAA,I,gDAAAA,I,8CAAAA,I,kDAAAA,I,oCAAAA,I,wEAAAA,I,gEAAAA,I,0FAAAA,I,8DAAAA,I,wBAAAA,I,0EAAAA,I,kCAAAA,I,sCAAAA,I,wCAAAA,I,0CAAAA,I,sCAAAA,I,oCAAAA,I,oCAAAA,I,sDAAAA,I,0DAAAA,I,0BAAAA,I,8BAAAA,I,wCAAAA,I,kCAAAA,I,oDAAAA,I,wDAAAA,I,gDAAAA,I,0DAAAA,I,wEAAAA,I,sFAAAA,I,gDAAAA,I,oDAAAA,I,0CAAAA,I,wCAAAA,I,gCAAAA,I,0BAAAA,I,4CAAAA,I,sDAAAA,I,oEAAAA,I,0CAAAA,I,gEAAAA,I,wCAAAA,I,oEAAAA,I,gEAAAA,I,8EAAAA,I,gEAAAA,I,0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","file":"static/js/main.850a9397.chunk.js","sourcesContent":["import React from 'react';\nimport classnames from 'classnames';\nimport {IconButton} from '@material-ui/core';\nimport {makeStyles} from '@material-ui/core';\nimport KeyboardBackspaceRoundedIcon from '@material-ui/icons/KeyboardBackspaceRounded';\n\nimport {IComponentWithClassName} from 'models';\n\ninterface IButtonBackProps extends IComponentWithClassName {\n clickHandler: () => void;\n disabled?: boolean;\n}\n\nexport const ButtonBack = ({clickHandler, className, disabled = false}: IButtonBackProps) => {\n const {root} = useStyles();\n return (\n <IconButton disabled={disabled} onClick={clickHandler} className={classnames(root, className)}>\n <KeyboardBackspaceRoundedIcon />\n </IconButton>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n color: theme.palette.primary.main,\n '&:hover': {\n cursor: 'pointer',\n },\n },\n}));\n","import React, {FC, MouseEvent, useCallback, useEffect, useState} from 'react';\nimport CopyToClipboard from 'react-copy-to-clipboard';\nimport {IconButton, makeStyles} from '@material-ui/core';\nimport Menu from '@material-ui/core/Menu';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport {colors} from 'styles/colors';\nimport {Icon, Wrapper} from 'components-lib';\nimport {useToastNotifications} from 'toast-notifications';\n\nexport interface IDropdownItemProps {\n text: string;\n isCopyLink?: boolean;\n copyText?: string;\n disabled?: boolean;\n clickHandler?: () => void;\n}\n\ninterface IButtonDropdownProps {\n items: IDropdownItemProps[];\n withText?: boolean;\n text?: string;\n hideOnResize?: boolean;\n}\n\nexport const ButtonDropdown: FC<IButtonDropdownProps> = ({items, withText, text, hideOnResize = false}) => {\n const {iconButtonWithText, container} = useStyles();\n const {addToastNotification} = useToastNotifications();\n\n const [anchorEl, setAnchorEl] = useState(null);\n const open = Boolean(anchorEl);\n\n const handleClick = (event: MouseEvent<HTMLElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n useEffect(() => {\n if (hideOnResize) {\n window.addEventListener('resize', handleClose);\n }\n }, [hideOnResize]);\n\n const copyHandler = useCallback(() => addToastNotification('The text has been copied to your clipboard.'), [\n addToastNotification,\n ]);\n\n return (\n <Wrapper className={container}>\n <IconButton disableRipple onClick={handleClick} className={withText && iconButtonWithText}>\n {withText ? text : <Icon.MoreIcon />}\n </IconButton>\n\n <Menu anchorEl={anchorEl} keepMounted onClose={handleClose} open={open}>\n {items.map((item: IDropdownItemProps, idx: number) => {\n const menuItem = (\n <MenuItem\n key={`dropdown-item-${idx}`}\n disabled={item.disabled}\n onClick={() => {\n item.clickHandler && item.clickHandler();\n handleClose();\n }}\n >\n {item.text}\n </MenuItem>\n );\n\n if (item.isCopyLink) {\n return (\n <CopyToClipboard key={`copy-to-clip-board-item-${idx}`} text={item.copyText} onCopy={copyHandler}>\n {menuItem}\n </CopyToClipboard>\n );\n } else {\n return menuItem;\n }\n })}\n </Menu>\n </Wrapper>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n },\n iconButtonWithText: {\n color: theme.palette.grey[700],\n padding: 0,\n lineHeight: 0.63,\n borderRadius: 0,\n fontSize: '14px',\n textAlign: 'center',\n marginRight: '48px',\n\n '&:hover': {\n color: theme.palette.grey[800],\n },\n\n '&:active': {\n color: colors.primary,\n },\n\n '&:hover, &:focus, &:active': {\n backgroundColor: 'transparent',\n },\n },\n}));\n","import {IconButton, makeStyles} from '@material-ui/core';\nimport {IComponentWithChildren} from 'models';\nimport React, {SyntheticEvent} from 'react';\n\ninterface IButtonIconProps extends IComponentWithChildren {\n size?: 'small' | 'medium';\n clickHandler: (event?: SyntheticEvent) => void;\n disabled?: boolean;\n}\n\nexport function ButtonIcon({children, clickHandler, disabled = false, size = 'small'}: IButtonIconProps) {\n const classes = useStyles();\n return (\n <IconButton size={size} onClick={clickHandler} disabled={disabled} classes={{disabled: classes.disabled}}>\n {children}\n </IconButton>\n );\n}\n\nconst useStyles = makeStyles({\n disabled: {\n opacity: 0.5,\n },\n});\n","import Button from '@material-ui/core/Button';\nimport {makeStyles} from '@material-ui/core/styles';\nimport classnames from 'classnames';\nimport {IComponentWithClassName} from 'models';\nimport React from 'react';\nimport {IButtonBaseProps} from './IButtonBaseProps';\n\ninterface IButtonBaseComponentProps extends IButtonBaseProps, IComponentWithClassName {\n color: 'primary' | 'secondary' | 'inherit';\n variant: 'contained' | 'outlined' | 'text';\n isFirst?: boolean;\n isLast?: boolean;\n}\n\nexport function ButtonBase({\n children,\n clickHandler,\n disabled = false,\n endIcon = null,\n startIcon = null,\n size = 'large',\n color,\n variant,\n className = '',\n type = 'button',\n isFirst = false,\n isLast = false,\n}: IButtonBaseComponentProps) {\n const classes = useStyles({size, isFirst, isLast});\n return (\n <Button\n variant={variant}\n color={color}\n onClick={clickHandler}\n disabled={disabled}\n endIcon={endIcon}\n startIcon={startIcon}\n className={classnames(classes.root, className)}\n disableElevation\n type={type}\n >\n {children}\n </Button>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: ({size, isFirst, isLast}: Pick<IButtonBaseComponentProps, 'size' | 'isFirst' | 'isLast'>) => {\n const isLarge = size === 'large';\n const space = theme.spacing(2);\n\n let margin = `${space}px`;\n\n if (isFirst) {\n margin = `${space}px ${space}px ${space}px 0`;\n }\n\n if (isLast) {\n margin = `${space}px 0 ${space}px ${space}px`;\n }\n\n return {\n minWidth: isLarge ? 80 : 48,\n margin,\n padding: isLarge ? '12px 24px' : '4px 8px',\n textTransform: 'none',\n };\n },\n}));\n","import React from 'react';\nimport {ButtonBase} from './ButtonBase';\nimport {IButtonBaseProps} from './IButtonBaseProps';\n\ninterface IButtonPrimaryProps extends IButtonBaseProps {\n isFirst?: boolean;\n isLast?: boolean;\n}\n\nexport function ButtonPrimary({\n children,\n clickHandler,\n disabled = false,\n endIcon = null,\n size = 'large',\n type = 'button',\n isFirst = false,\n isLast = false,\n className = '',\n}: IButtonPrimaryProps) {\n return (\n <ButtonBase\n variant=\"contained\"\n color=\"primary\"\n clickHandler={clickHandler}\n disabled={disabled}\n endIcon={endIcon}\n size={size}\n type={type}\n isFirst={isFirst}\n isLast={isLast}\n className={className}\n >\n {children}\n </ButtonBase>\n );\n}\n","import {makeStyles} from '@material-ui/core';\nimport classnames from 'classnames';\nimport {IComponentWithClassName} from 'models';\nimport React from 'react';\nimport {ButtonBase} from './ButtonBase';\nimport {IButtonBaseProps} from './IButtonBaseProps';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface IButtonSecondaryProps extends IButtonBaseProps, IComponentWithClassName {\n isFirst?: boolean;\n}\n\nexport function ButtonSecondary({\n children,\n clickHandler,\n disabled = false,\n endIcon = null,\n size = 'large',\n type = 'button',\n isFirst = false,\n className,\n}: IButtonSecondaryProps) {\n const classes = useStyles();\n return (\n <ButtonBase\n variant=\"outlined\"\n color=\"secondary\"\n clickHandler={clickHandler}\n disabled={disabled}\n endIcon={endIcon}\n isFirst={isFirst}\n size={size}\n type={type}\n className={classnames(classes.root, className)}\n >\n {children}\n </ButtonBase>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n color: theme.palette.primary.main,\n '&:hover': {\n color: theme.palette.primary.dark,\n },\n },\n}));\n","import {makeStyles} from '@material-ui/core';\nimport classnames from 'classnames';\nimport {IComponentWithClassName} from 'models';\nimport React from 'react';\nimport {ButtonBase} from './ButtonBase';\nimport {IButtonBaseProps} from './IButtonBaseProps';\n\ninterface IButtonTextProps extends IButtonBaseProps, IComponentWithClassName {\n color?: 'primary' | 'secondary' | 'inherit';\n}\n\nexport function ButtonText({\n children,\n clickHandler,\n disabled = false,\n endIcon = null,\n startIcon = null,\n size = 'large',\n color = 'inherit',\n className = '',\n}: IButtonTextProps) {\n const classes = useStyles();\n return (\n <ButtonBase\n variant=\"text\"\n color={color}\n clickHandler={clickHandler}\n disabled={disabled}\n startIcon={startIcon}\n endIcon={endIcon}\n size={size}\n className={classnames(className, classes.root)}\n >\n {children}\n </ButtonBase>\n );\n}\n\nconst useStyles = makeStyles({\n root: {\n padding: 0,\n },\n});\n","import React, {FC, ReactNode, useMemo} from 'react';\nimport {IconButton, makeStyles} from '@material-ui/core';\nimport {CopyToClipboardToolTip, Icon} from 'components-lib';\nimport {IWithDisabled} from 'models';\n\ninterface IButtonCopyLinkProps extends IWithDisabled {\n text: string;\n title?: string;\n icon?: ReactNode;\n}\n\nexport const ButtonCopyLink: FC<IButtonCopyLinkProps> = ({text, icon, disabled = false, title}) => {\n const classes = useStyles();\n\n const defaultIcon = useMemo(\n () => (\n <IconButton classes={{disabled: classes.disabledFilter}} aria-label=\"link\" disabled={disabled}>\n <Icon.CopyLinkIcon />\n </IconButton>\n ),\n [classes.disabledFilter, disabled]\n );\n\n return (\n <CopyToClipboardToolTip title={title} text={text}>\n {icon ? icon : defaultIcon}\n </CopyToClipboardToolTip>\n );\n};\n\nexport const useStyles = makeStyles(() => ({\n disabledFilter: {\n filter: `grayscale(1)`,\n },\n}));\n","import {Add} from '@material-ui/icons';\nimport React from 'react';\n\nexport function AddIcon() {\n return <Add fontSize=\"small\" color=\"primary\" />;\n}\n","import React from 'react';\nimport AllInboxRoundedIcon from '@material-ui/icons/AllInboxRounded';\n\nexport function AllInboxIcon() {\n return <AllInboxRoundedIcon fontSize=\"small\" />;\n}\n","import {Check} from '@material-ui/icons';\nimport React from 'react';\n\nexport function CheckIcon() {\n return <Check fontSize=\"small\" color=\"primary\" />;\n}\n","import {Close} from '@material-ui/icons';\nimport React from 'react';\n\nexport function CloseIcon() {\n return <Close fontSize=\"small\" color=\"primary\" />;\n}\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"icon_button_link_1\",\n transform: \"translate(-20853 -1563.482)\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Rectangle_2342\",\n \"data-name\": \"Rectangle 2342\",\n transform: \"translate(20853 1563.482)\",\n fill: \"rgba(255,255,255,0)\",\n stroke: \"rgba(143, 196, 64, 0.5)\",\n strokeWidth: 1\n}, /*#__PURE__*/React.createElement(\"rect\", {\n width: 36,\n height: 34,\n rx: 4,\n stroke: \"none\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 0.5,\n y: 0.5,\n width: 35,\n height: 33,\n rx: 3.5,\n fill: \"none\"\n})), /*#__PURE__*/React.createElement(\"g\", {\n id: \"link\",\n transform: \"translate(20864.057 1573.744)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1301\",\n \"data-name\": \"Path 1301\",\n d: \"M10,9.733a3.514,3.514,0,0,0,5.3.38L17.408,8a3.514,3.514,0,1,0-4.97-4.97l-1.209,1.2\",\n transform: \"translate(-4.438 -2.005)\",\n fill: \"none\",\n stroke: \"#01763d\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.5\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1302\",\n \"data-name\": \"Path 1302\",\n d: \"M10.433,10.4a3.514,3.514,0,0,0-5.3-.38L3.025,12.133a3.514,3.514,0,1,0,4.97,4.97l1.2-1.2\",\n transform: \"translate(-1.995 -4.132)\",\n fill: \"none\",\n stroke: \"#01763d\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.5\n})));\n\nvar SvgCopyLink = function SvgCopyLink(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 36,\n height: 34,\n viewBox: \"0 0 36 34\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgCopyLink, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/copy_link.facdf63a.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\nimport {ReactComponent as CopyLinkSvg} from 'resources/icons/copy_link.svg';\n\nexport const CopyLinkIcon = () => {\n return <CopyLinkSvg />;\n};\n","import {DeleteOutline} from '@material-ui/icons';\nimport React, {FC} from 'react';\n\ninterface IDeleteIconProps {\n color?: 'inherit' | 'primary' | 'secondary' | 'action' | 'disabled' | 'error';\n}\n\nexport const DeleteIcon: FC<IDeleteIconProps> = ({color = 'error'}) => {\n return <DeleteOutline fontSize=\"small\" color={color} />;\n};\n","import React from 'react';\nimport DescriptionOutlinedIcon from '@material-ui/icons/DescriptionOutlined';\n\nexport function DescriptionIcon() {\n return <DescriptionOutlinedIcon fontSize=\"small\" />;\n}\n","import {DragHandle} from '@material-ui/icons';\nimport React, {FC} from 'react';\n\ninterface IDragHandleIconProps {\n color?: 'inherit' | 'primary' | 'secondary' | 'action' | 'disabled' | 'error';\n}\n\nexport const DragHandleIcon: FC<IDragHandleIconProps> = ({color = 'disabled'}) => {\n return <DragHandle fontSize=\"small\" color={color} />;\n};\n","import {DragIndicator} from '@material-ui/icons';\nimport React from 'react';\n\nexport function DragIndicatorIcon() {\n return <DragIndicator fontSize=\"small\" color=\"disabled\" />;\n}\n","import {Edit} from '@material-ui/icons';\nimport React from 'react';\n\nexport function EditIcon() {\n return <Edit fontSize=\"small\" color=\"primary\" />;\n}\n","import {ErrorRounded} from '@material-ui/icons';\nimport React from 'react';\n\nexport function ErrorIcon() {\n return <ErrorRounded fontSize=\"small\" color=\"error\" />;\n}\n","import React from 'react';\nimport {ReactComponent as PageNotFoundImageSvg} from 'resources/images/errorPage/Illustration_Error_404.svg';\n\nexport function ErrorNotFound() {\n return <PageNotFoundImageSvg />;\n}\n","import ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport React from 'react';\n\ninterface IExpandIconProps {\n color?: 'primary' | 'secondary' | 'inherit';\n}\n\nexport function ExpandIcon({color = 'inherit'}: IExpandIconProps) {\n return <ExpandMoreIcon color={color} />;\n}\n","import React from 'react';\n\nimport {Close} from '@material-ui/icons';\n\nexport function FailIcon() {\n return <Close fontSize=\"small\" color=\"error\" />;\n}\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1197\",\n \"data-name\": \"Path 1197\",\n d: \"M0,0H24V24H0Z\",\n fill: \"none\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1198\",\n \"data-name\": \"Path 1198\",\n d: \"M9.17,6l2,2H20V18H4V6H9.17M10,4H4A2,2,0,0,0,2.01,6L2,18a2.006,2.006,0,0,0,2,2H20a2.006,2.006,0,0,0,2-2V8a2.006,2.006,0,0,0-2-2H12Z\",\n fill: \"#8FC440\"\n});\n\nvar SvgFileIcon = function SvgFileIcon(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Icon_-_file\",\n \"data-name\": \"Icon - file\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2, _ref3);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgFileIcon, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/file_icon.5ef8559c.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\nimport {ReactComponent as FileIconSvg} from 'resources/icons/file_icon.svg';\n\nexport function FileIcon() {\n return <FileIconSvg />;\n}\n","import React from 'react';\nimport {FilterList} from '@material-ui/icons';\n\nexport function FilterListIcon() {\n return <FilterList color=\"primary\" />;\n}\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle_1299\",\n \"data-name\": \"Rectangle 1299\",\n width: 64,\n height: 64,\n fill: \"none\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1007\",\n \"data-name\": \"Path 1007\",\n d: \"M66.843,337.045H82.324a1.148,1.148,0,0,0,1.079-1l.243-1.328a1.147,1.147,0,0,1,1.079-1h8.848a1.222,1.222,0,0,1,1.079,1.512l-.055.3a1.221,1.221,0,0,0,1.079,1.512H109.13a1.221,1.221,0,0,1,1.078,1.512L103.777,373.7a1.148,1.148,0,0,1-1.078,1l-42.291.022a1.221,1.221,0,0,1-1.08-1.512l6.437-35.167A1.147,1.147,0,0,1,66.843,337.045Z\",\n transform: \"translate(-50.933 -333.006)\",\n fill: \"#fef1e3\"\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1010\",\n \"data-name\": \"Path 1010\",\n d: \"M60.1,375.121a1.742,1.742,0,0,1-1.353-.666,2.1,2.1,0,0,1-.419-1.7l6.435-35.143a1.862,1.862,0,0,1,1.772-1.591H82.015a.447.447,0,0,0,.385-.408l.243-1.326a1.862,1.862,0,0,1,1.772-1.591h8.847a1.744,1.744,0,0,1,1.354.668,2.106,2.106,0,0,1,.418,1.7l-.055.3a.636.636,0,0,0,.117.508.348.348,0,0,0,.267.143h13.451a1.745,1.745,0,0,1,1.355.668,2.1,2.1,0,0,1,.418,1.7l-6.431,35.121a1.861,1.861,0,0,1-1.77,1.59l-42.283.022Zm6.436-37.654a.447.447,0,0,0-.385.407l-6.435,35.144a.635.635,0,0,0,.117.509.348.348,0,0,0,.267.143h0l42.283-.023a.446.446,0,0,0,.385-.407l6.431-35.121a.635.635,0,0,0-.118-.508.347.347,0,0,0-.268-.144H95.364a1.742,1.742,0,0,1-1.354-.668,2.1,2.1,0,0,1-.418-1.7l.055-.3a.633.633,0,0,0-.118-.508.347.347,0,0,0-.267-.144H84.416a.448.448,0,0,0-.386.408l-.242,1.327a1.863,1.863,0,0,1-1.772,1.59Z\",\n transform: \"translate(-50.623 -332.691)\",\n fill: \"#fd8204\"\n});\n\nvar _ref5 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1011\",\n \"data-name\": \"Path 1011\",\n d: \"M89.626,345.5H75.771a1.06,1.06,0,0,0-1.026,1.282l.055.267a1.06,1.06,0,0,1-1.026,1.281l-8.446,0a1.052,1.052,0,0,1-1.026-.847l-.233-1.132a1.051,1.051,0,0,0-1.026-.847H49.292a1.06,1.06,0,0,0-1.026,1.282L54.4,376.648a1.053,1.053,0,0,0,1.026.847l40.337.019a1.06,1.06,0,0,0,1.027-1.281l-6.139-29.886A1.052,1.052,0,0,0,89.626,345.5Z\",\n transform: \"translate(-47.543 -335.795)\",\n fill: \"#fff\"\n});\n\nvar _ref6 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1012\",\n \"data-name\": \"Path 1012\",\n d: \"M95.455,377.91l-40.339-.019a1.765,1.765,0,0,1-1.711-1.413L47.27,346.611a1.786,1.786,0,0,1,.354-1.482,1.731,1.731,0,0,1,1.358-.656H62.734a1.763,1.763,0,0,1,1.712,1.413l.232,1.133a.351.351,0,0,0,.34.281l8.445,0a.342.342,0,0,0,.27-.13.354.354,0,0,0,.071-.3l-.055-.268a1.788,1.788,0,0,1,.354-1.481,1.731,1.731,0,0,1,1.358-.656H89.316a1.764,1.764,0,0,1,1.712,1.413l6.139,29.887a1.79,1.79,0,0,1-.355,1.483A1.733,1.733,0,0,1,95.455,377.91ZM48.983,345.9a.341.341,0,0,0-.27.13.351.351,0,0,0-.071.294l6.136,29.868a.351.351,0,0,0,.34.28l40.337.019a.343.343,0,0,0,.27-.13.352.352,0,0,0,.07-.3l-6.138-29.886a.35.35,0,0,0-.34-.28H75.462a.342.342,0,0,0-.27.13.35.35,0,0,0-.071.293l.055.269a1.789,1.789,0,0,1-.356,1.483,1.732,1.732,0,0,1-1.357.655l-8.446,0a1.763,1.763,0,0,1-1.711-1.413l-.233-1.133a.35.35,0,0,0-.34-.28Z\",\n transform: \"translate(-47.233 -335.48)\",\n fill: \"#fd8204\"\n});\n\nvar _ref7 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_428-2\",\n \"data-name\": \"Group 428\",\n transform: \"translate(710 251.335)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_935\",\n \"data-name\": \"Path 935\",\n d: \"M74.275,177.469A8.322,8.322,0,1,0,82.6,185.79,8.321,8.321,0,0,0,74.275,177.469Z\",\n transform: \"translate(-65.953 -177.469)\",\n fill: \"#8fc440\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_936\",\n \"data-name\": \"Path 936\",\n d: \"M76.405,184.581l3.869,3.668h-2.5V191.4H74.449v-3.155h-2.5l3.869-3.668A.432.432,0,0,1,76.405,184.581Z\",\n transform: \"translate(-67.792 -179.615)\",\n fill: \"#fff\"\n}));\n\nvar SvgIllustrationFolder = function SvgIllustrationFolder(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Illustration_Upload\",\n \"data-name\": \"Illustration Upload\",\n width: 64,\n height: 64,\n viewBox: \"0 0 64 64\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_438\",\n \"data-name\": \"Group 438\",\n transform: \"translate(-708 -212)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_428\",\n \"data-name\": \"Group 428\",\n transform: \"translate(710 220)\"\n }, _ref3, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1009\",\n \"data-name\": \"Path 1009\",\n d: \"M94.945,346.525H80.988a1.062,1.062,0,0,0-1.034,1.282l.056.267a1.063,1.063,0,0,1-1.035,1.282l-8.508,0a1.058,1.058,0,0,1-1.033-.847l-.234-1.132a1.058,1.058,0,0,0-1.034-.847H54.313a1.062,1.062,0,0,0-1.034,1.282l6.181,29.867a1.057,1.057,0,0,0,1.033.847l40.517-.558c.67,0,1.027-.217.89-.879l-5.922-29.712A1.057,1.057,0,0,0,94.945,346.525Z\",\n transform: \"translate(-49.08 -336.109)\",\n fill: \"#fdb973\",\n opacity: 0.48,\n style: {\n isolation: \"isolate\"\n }\n }), _ref4, _ref5, _ref6), _ref7));\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIllustrationFolder, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/illustration_folder.c939c6b1.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle_1299\",\n \"data-name\": \"Rectangle 1299\",\n width: 64,\n height: 64,\n fill: \"none\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1007\",\n \"data-name\": \"Path 1007\",\n d: \"M66.843,337.045H82.324a1.148,1.148,0,0,0,1.079-1l.243-1.328a1.147,1.147,0,0,1,1.079-1h8.848a1.222,1.222,0,0,1,1.079,1.512l-.055.3a1.221,1.221,0,0,0,1.079,1.512H109.13a1.221,1.221,0,0,1,1.078,1.512L103.777,373.7a1.148,1.148,0,0,1-1.078,1l-42.291.022a1.221,1.221,0,0,1-1.08-1.512l6.437-35.167A1.147,1.147,0,0,1,66.843,337.045Z\",\n transform: \"translate(-50.933 -333.006)\",\n fill: \"#e5e9ed\"\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1010\",\n \"data-name\": \"Path 1010\",\n d: \"M60.1,375.121a1.742,1.742,0,0,1-1.353-.666,2.1,2.1,0,0,1-.419-1.7l6.435-35.143a1.862,1.862,0,0,1,1.772-1.591H82.015a.447.447,0,0,0,.385-.408l.243-1.326a1.862,1.862,0,0,1,1.772-1.591h8.847a1.744,1.744,0,0,1,1.354.668,2.106,2.106,0,0,1,.418,1.7l-.055.3a.636.636,0,0,0,.117.508.348.348,0,0,0,.267.143h13.451a1.745,1.745,0,0,1,1.355.668,2.1,2.1,0,0,1,.418,1.7l-6.431,35.121a1.861,1.861,0,0,1-1.77,1.59l-42.283.022Zm6.436-37.654a.447.447,0,0,0-.385.407l-6.435,35.144a.635.635,0,0,0,.117.509.348.348,0,0,0,.267.143h0l42.283-.023a.446.446,0,0,0,.385-.407l6.431-35.121a.635.635,0,0,0-.118-.508.347.347,0,0,0-.268-.144H95.364a1.742,1.742,0,0,1-1.354-.668,2.1,2.1,0,0,1-.418-1.7l.055-.3a.633.633,0,0,0-.118-.508.347.347,0,0,0-.267-.144H84.416a.448.448,0,0,0-.386.408l-.242,1.327a1.863,1.863,0,0,1-1.772,1.59Z\",\n transform: \"translate(-50.623 -332.691)\",\n fill: \"#c6ccd3\"\n});\n\nvar _ref5 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1011\",\n \"data-name\": \"Path 1011\",\n d: \"M89.626,345.5H75.771a1.06,1.06,0,0,0-1.026,1.282l.055.267a1.06,1.06,0,0,1-1.026,1.281l-8.446,0a1.052,1.052,0,0,1-1.026-.847l-.233-1.132a1.051,1.051,0,0,0-1.026-.847H49.292a1.06,1.06,0,0,0-1.026,1.282L54.4,376.648a1.053,1.053,0,0,0,1.026.847l40.337.019a1.06,1.06,0,0,0,1.027-1.281l-6.139-29.886A1.052,1.052,0,0,0,89.626,345.5Z\",\n transform: \"translate(-47.543 -335.795)\",\n fill: \"#fff\"\n});\n\nvar _ref6 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1012\",\n \"data-name\": \"Path 1012\",\n d: \"M95.455,377.91l-40.339-.019a1.765,1.765,0,0,1-1.711-1.413L47.27,346.611a1.786,1.786,0,0,1,.354-1.482,1.731,1.731,0,0,1,1.358-.656H62.734a1.763,1.763,0,0,1,1.712,1.413l.232,1.133a.351.351,0,0,0,.34.281l8.445,0a.342.342,0,0,0,.27-.13.354.354,0,0,0,.071-.3l-.055-.268a1.788,1.788,0,0,1,.354-1.481,1.731,1.731,0,0,1,1.358-.656H89.316a1.764,1.764,0,0,1,1.712,1.413l6.139,29.887a1.79,1.79,0,0,1-.355,1.483A1.733,1.733,0,0,1,95.455,377.91ZM48.983,345.9a.341.341,0,0,0-.27.13.351.351,0,0,0-.071.294l6.136,29.868a.351.351,0,0,0,.34.28l40.337.019a.343.343,0,0,0,.27-.13.352.352,0,0,0,.07-.3l-6.138-29.886a.35.35,0,0,0-.34-.28H75.462a.342.342,0,0,0-.27.13.35.35,0,0,0-.071.293l.055.269a1.789,1.789,0,0,1-.356,1.483,1.732,1.732,0,0,1-1.357.655l-8.446,0a1.763,1.763,0,0,1-1.711-1.413l-.233-1.133a.35.35,0,0,0-.34-.28Z\",\n transform: \"translate(-47.233 -335.48)\",\n fill: \"#c6ccd3\"\n});\n\nvar _ref7 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_428-2\",\n \"data-name\": \"Group 428\",\n transform: \"translate(710 251.335)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_935\",\n \"data-name\": \"Path 935\",\n d: \"M74.275,177.469A8.322,8.322,0,1,0,82.6,185.79,8.321,8.321,0,0,0,74.275,177.469Z\",\n transform: \"translate(-65.953 -177.469)\",\n fill: \"#d5dae0\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_936\",\n \"data-name\": \"Path 936\",\n d: \"M76.405,184.581l3.869,3.668h-2.5V191.4H74.449v-3.155h-2.5l3.869-3.668A.432.432,0,0,1,76.405,184.581Z\",\n transform: \"translate(-67.792 -179.615)\",\n fill: \"#fff\"\n}));\n\nvar SvgIllustrationFolderDisabled = function SvgIllustrationFolderDisabled(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Illustration_Upload_-_Diabled\",\n \"data-name\": \"Illustration Upload - Diabled\",\n width: 64,\n height: 64,\n viewBox: \"0 0 64 64\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_438\",\n \"data-name\": \"Group 438\",\n transform: \"translate(-708 -212)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_428\",\n \"data-name\": \"Group 428\",\n transform: \"translate(710 220)\"\n }, _ref3, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1009\",\n \"data-name\": \"Path 1009\",\n d: \"M94.945,346.525H80.988a1.062,1.062,0,0,0-1.034,1.282l.056.267a1.063,1.063,0,0,1-1.035,1.282l-8.508,0a1.058,1.058,0,0,1-1.033-.847l-.234-1.132a1.058,1.058,0,0,0-1.034-.847H54.313a1.062,1.062,0,0,0-1.034,1.282l6.181,29.867a1.057,1.057,0,0,0,1.033.847l40.517-.558c.67,0,1.027-.217.89-.879l-5.922-29.712A1.057,1.057,0,0,0,94.945,346.525Z\",\n transform: \"translate(-49.08 -336.109)\",\n fill: \"#c6ccd3\",\n opacity: 0.48,\n style: {\n isolation: \"isolate\"\n }\n }), _ref4, _ref5, _ref6), _ref7));\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIllustrationFolderDisabled, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/illustration_folder_disabled.66e1b7cd.svg\";\nexport { ForwardRef as ReactComponent };","import {SvgIcon, makeStyles} from '@material-ui/core';\nimport React, {FC} from 'react';\nimport {ReactComponent as IllustrationFolderImg} from 'resources/images/uploader/illustration_folder.svg';\nimport {ReactComponent as DisabledIllustrationFolderImg} from 'resources/images/uploader/illustration_folder_disabled.svg';\ninterface IProps {\n disabled?: boolean;\n}\n\nexport const FolderIcon: FC<IProps> = ({disabled}) => {\n const classes = useStyles();\n\n return (\n <SvgIcon className={classes.icon} viewBox=\"0 0 64 64\">\n {disabled ? <DisabledIllustrationFolderImg /> : <IllustrationFolderImg />}\n </SvgIcon>\n );\n};\n\nconst useStyles = makeStyles(() => ({\n icon: {\n fontSize: 64,\n width: 64,\n height: 64,\n },\n}));\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"closed_caption-24px\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1066\",\n \"data-name\": \"Path 1066\",\n d: \"M0,0H24V24H0Z\",\n fill: \"none\"\n}), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Rectangle_1475\",\n \"data-name\": \"Rectangle 1475\",\n transform: \"translate(3 4)\",\n fill: \"#d5dae0\",\n stroke: \"#697586\",\n strokeWidth: 1\n}, /*#__PURE__*/React.createElement(\"rect\", {\n width: 18,\n height: 16,\n rx: 2,\n stroke: \"none\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 0.5,\n y: 0.5,\n width: 17,\n height: 15,\n rx: 1.5,\n fill: \"none\"\n})));\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"text\", {\n id: \"G\",\n transform: \"translate(12 16)\",\n fill: \"#697586\",\n fontSize: 11,\n fontFamily: \"OpenSans-Extrabold, Open Sans\",\n fontWeight: 800\n}, /*#__PURE__*/React.createElement(\"tspan\", {\n x: -4.071,\n y: 0\n}, \"G\"));\n\nvar SvgIconGeneralInstrument = function SvgIconGeneralInstrument(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Icon_-_general_instruments\",\n \"data-name\": \"Icon - general instruments\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2, _ref3);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIconGeneralInstrument, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/iconGeneralInstrument.92819907.svg\";\nexport { ForwardRef as ReactComponent };","import {SvgIcon} from '@material-ui/core';\nimport React from 'react';\nimport {ReactComponent as GeneralInstrumentSvg} from 'resources/icons/iconGeneralInstrument.svg';\n\nexport function GeneralInstrumentIcon() {\n return (\n <SvgIcon>\n <GeneralInstrumentSvg />\n </SvgIcon>\n );\n}\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"style\", null, \".a{fill:none;}.b{fill:#01763d;}\"));\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"a\",\n d: \"M0,0H24V24H0Z\"\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"b\",\n d: \"M12,2A10,10,0,1,0,22,12,10,10,0,0,0,12,2Zm0,18a8,8,0,1,1,8-8A8.011,8.011,0,0,1,12,20Z\"\n});\n\nvar _ref5 = /*#__PURE__*/React.createElement(\"rect\", {\n className: \"b\",\n width: 2,\n height: 6,\n rx: 1,\n transform: \"translate(11 11)\"\n});\n\nvar _ref6 = /*#__PURE__*/React.createElement(\"circle\", {\n className: \"b\",\n cx: 1,\n cy: 1,\n r: 1,\n transform: \"translate(11 7)\"\n});\n\nvar SvgInfoLarge = function SvgInfoLarge(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2, _ref3, _ref4, _ref5, _ref6);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgInfoLarge, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/info-large.b6c74fd7.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_447\",\n \"data-name\": \"Path 447\",\n d: \"M0,0H24V24H0Z\",\n fill: \"none\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_448\",\n \"data-name\": \"Path 448\",\n d: \"M12,2A10,10,0,1,0,22,12,10,10,0,0,0,12,2Zm0,18a8,8,0,1,1,8-8A8.011,8.011,0,0,1,12,20Z\",\n fill: \"#a7afb9\"\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle_1125\",\n \"data-name\": \"Rectangle 1125\",\n width: 2,\n height: 6,\n rx: 1,\n transform: \"translate(11 11)\",\n fill: \"#a7afb9\"\n});\n\nvar _ref5 = /*#__PURE__*/React.createElement(\"circle\", {\n id: \"Ellipse_41\",\n \"data-name\": \"Ellipse 41\",\n cx: 1,\n cy: 1,\n r: 1,\n transform: \"translate(11 7)\",\n fill: \"#a7afb9\"\n});\n\nvar SvgInfoLargeDisabled = function SvgInfoLargeDisabled(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Icon_-_Info_disabled\",\n \"data-name\": \"Icon - Info_disabled\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2, _ref3, _ref4, _ref5);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgInfoLargeDisabled, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/info-large-disabled.9293e344.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\nimport {Row} from 'components-lib';\nimport {ReactComponent as SVGInfo} from 'resources/icons/info-large.svg';\nimport {ReactComponent as DisabledSVGInfo} from 'resources/icons/info-large-disabled.svg';\nimport {IWithDisabled} from 'models';\n\nexport function InfoIcon({disabled}: IWithDisabled) {\n return (\n <Row justify=\"center\" align=\"center\">\n {disabled ? <DisabledSVGInfo /> : <SVGInfo />}\n </Row>\n );\n}\n","import {Link} from '@material-ui/icons';\nimport React from 'react';\n\ninterface ILinkIconProps {\n color?: 'primary' | 'secondary' | 'inherit';\n}\n\nexport function LinkIcon({color = 'inherit'}: ILinkIconProps) {\n return <Link fontSize=\"small\" color={color} />;\n}\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"closed_caption-24px\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1066\",\n \"data-name\": \"Path 1066\",\n d: \"M0,0H24V24H0Z\",\n fill: \"none\"\n}), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Rectangle_1475\",\n \"data-name\": \"Rectangle 1475\",\n transform: \"translate(3 4)\",\n fill: \"#fdd67c\",\n stroke: \"#fd8204\",\n strokeWidth: 1\n}, /*#__PURE__*/React.createElement(\"rect\", {\n width: 18,\n height: 16,\n rx: 2,\n stroke: \"none\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 0.5,\n y: 0.5,\n width: 17,\n height: 15,\n rx: 1.5,\n fill: \"none\"\n})));\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1069\",\n \"data-name\": \"Path 1069\",\n d: \"M10,14l2,3,2-3v4h2V11H14l-2,3-2-3H8v7h2Z\",\n transform: \"translate(0 -2)\",\n fill: \"#fd8204\"\n});\n\nvar SvgIconMasterInstrument = function SvgIconMasterInstrument(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Master_Instrument\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2, _ref3);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIconMasterInstrument, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/Icon-Master_Instrument.425a3d35.svg\";\nexport { ForwardRef as ReactComponent };","import {SvgIcon} from '@material-ui/core';\nimport React from 'react';\nimport {ReactComponent as MasterTemplateSvg} from 'resources/icons/Icon-Master_Instrument.svg';\n\n// TODO refactor\nexport function MasterTemplateIcon() {\n return (\n <SvgIcon>\n <MasterTemplateSvg />\n </SvgIcon>\n );\n}\n","import {Minimize} from '@material-ui/icons';\nimport React from 'react';\n\nexport function MinimizeIcon() {\n return <Minimize fontSize=\"small\" color=\"primary\" />;\n}\n","import MoreVertIcon from '@material-ui/icons/MoreVert';\nimport React from 'react';\n\nexport function MoreIcon({disabled = false}) {\n return <MoreVertIcon fontSize=\"small\" color={disabled ? 'disabled' : 'primary'} />;\n}\n","import React from 'react';\nimport PermMediaOutlinedIcon from '@material-ui/icons/PermMediaOutlined';\n\nexport function PermMediaIcon() {\n return <PermMediaOutlinedIcon style={{marginRight: 2}} fontSize=\"small\" />;\n}\n","import React from 'react';\nimport {RemoveRedEye as RemoveRedEyeIcon} from '@material-ui/icons';\n\nexport const RemoveRedEye = () => {\n return <RemoveRedEyeIcon />;\n};\n","import Search from '@material-ui/icons/Search';\nimport React from 'react';\n\nexport function SearchIcon() {\n return <Search />;\n}\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle_1299\",\n \"data-name\": \"Rectangle 1299\",\n width: 120,\n height: 120,\n fill: \"none\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_719\",\n \"data-name\": \"Group 719\",\n transform: \"translate(30.735 26.331)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1090\",\n \"data-name\": \"Path 1090\",\n d: \"M514.817,295.642l-5.455,5.349a1.548,1.548,0,0,0-.107,2.158,1.437,1.437,0,0,0,1.021.491h.032a1.441,1.441,0,0,0,1.029-.4l5.519-5.421a1.543,1.543,0,0,0,0-2.129,1.44,1.44,0,0,0-2.035-.051h0Z\",\n transform: \"translate(-508.868 -284.617)\",\n fill: \"#bcd181\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1091\",\n \"data-name\": \"Path 1091\",\n d: \"M520.688,289.994l-5.455,5.349a1.551,1.551,0,0,0-.107,2.157,1.442,1.442,0,0,0,1.021.489h.032a1.441,1.441,0,0,0,1.029-.4l5.521-5.423a1.545,1.545,0,0,0-.01-2.129,1.439,1.439,0,0,0-2.031-.051l0,0h0Z\",\n transform: \"translate(-503.695 -289.595)\",\n fill: \"#8cb42d\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1092\",\n \"data-name\": \"Path 1092\",\n d: \"M514.752,321.227l-5.455,5.349a1.551,1.551,0,0,0-.107,2.157,1.452,1.452,0,0,0,1.021.491h.032a1.441,1.441,0,0,0,1.029-.4l5.519-5.421a1.545,1.545,0,0,0,0-2.131,1.44,1.44,0,0,0-2.035-.051v0h0Z\",\n transform: \"translate(-461.901 -262.079)\",\n fill: \"#bcd181\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1093\",\n \"data-name\": \"Path 1093\",\n d: \"M520.624,315.577l-5.455,5.349a1.551,1.551,0,0,0-.107,2.157,1.444,1.444,0,0,0,1.021.491h.032a1.449,1.449,0,0,0,1.031-.4l5.519-5.421a1.541,1.541,0,0,0-.009-2.129,1.438,1.438,0,0,0-2.033-.051h0Z\",\n transform: \"translate(-456.728 -267.055)\",\n fill: \"#8cb42d\"\n}));\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_797\",\n \"data-name\": \"Group 797\",\n transform: \"translate(35.738 31.976)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1171\",\n \"data-name\": \"Path 1171\",\n d: \"M310.781,439l-1.383-.681a2.535,2.535,0,0,1-1.27-3.066l.5-1.461a5.757,5.757,0,0,0-1.392-5.965l-2.686-2.686a5.836,5.836,0,0,0-5.966-1.39l-1.46.495a2.532,2.532,0,0,1-3.066-1.27l-.681-1.383a5.766,5.766,0,0,0-5.2-3.237h-3.8a5.766,5.766,0,0,0-5.2,3.237l-.681,1.383a2.535,2.535,0,0,1-3.066,1.27l-1.46-.5A5.854,5.854,0,0,0,268,425.146l-2.686,2.686a5.759,5.759,0,0,0-1.392,5.965l.5,1.461a2.537,2.537,0,0,1-1.27,3.066l-1.382.681a5.767,5.767,0,0,0-3.237,5.2v3.8a5.768,5.768,0,0,0,3.237,5.2l1.382.681a2.539,2.539,0,0,1,1.27,3.066l-.5,1.46a5.764,5.764,0,0,0,1.392,5.966L268,467.07a5.857,5.857,0,0,0,5.966,1.388l1.46-.5a2.561,2.561,0,0,1,1.787.075,2.48,2.48,0,0,1,1.279,1.2l.681,1.384a5.764,5.764,0,0,0,5.2,3.235h3.8a5.764,5.764,0,0,0,5.2-3.235l.683-1.384a2.506,2.506,0,0,1,1.305-1.209,2.467,2.467,0,0,1,1.759-.062l1.458.5a5.867,5.867,0,0,0,5.97-1.388l2.684-2.688a5.76,5.76,0,0,0,1.392-5.966l-.5-1.458a2.539,2.539,0,0,1,1.27-3.068l1.383-.681a5.765,5.765,0,0,0,3.237-5.2v-3.8A5.763,5.763,0,0,0,310.781,439Zm-5.329,14.267-.038-.017-.568,1.381.041.011a5.838,5.838,0,0,0,.109,3.373l.5,1.461a2.473,2.473,0,0,1-.6,2.564l-2.686,2.688a2.517,2.517,0,0,1-2.564.6l-1.461-.5a5.846,5.846,0,0,0-7.095,2.94l-.681,1.383a2.481,2.481,0,0,1-2.237,1.39h-3.8a2.479,2.479,0,0,1-2.236-1.39l-.681-1.383a5.83,5.83,0,0,0-2.315-2.468l.021-.039-1.352-.557-.017.032a5.825,5.825,0,0,0-3.433.092l-1.46.5a2.51,2.51,0,0,1-2.564-.6l-2.686-2.688a2.475,2.475,0,0,1-.6-2.564l.5-1.461a5.84,5.84,0,0,0-2.94-7.095l-1.383-.681a2.477,2.477,0,0,1-1.392-2.236v-3.8a2.475,2.475,0,0,1,1.39-2.236l1.384-.681a5.844,5.844,0,0,0,2.94-7.1l-.5-1.458a2.478,2.478,0,0,1,.6-2.566l2.686-2.686a2.5,2.5,0,0,1,2.564-.6l1.462.495a5.836,5.836,0,0,0,7.095-2.938l.681-1.384a2.479,2.479,0,0,1,2.236-1.39h3.8a2.481,2.481,0,0,1,2.237,1.39l.681,1.384a5.837,5.837,0,0,0,7.1,2.938l1.458-.495a2.51,2.51,0,0,1,2.566.6l2.686,2.686a2.474,2.474,0,0,1,.6,2.564l-.5,1.46a5.85,5.85,0,0,0,2.94,7.1l1.382.681a2.476,2.476,0,0,1,1.392,2.236v3.8a2.481,2.481,0,0,1-1.392,2.236l-1.382.681A5.8,5.8,0,0,0,305.452,453.272Z\",\n transform: \"translate(-258.526 -418.361)\",\n fill: \"#fd8204\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1172\",\n \"data-name\": \"Path 1172\",\n d: \"M280.36,425.072a15.123,15.123,0,1,0,15.123,15.123A15.141,15.141,0,0,0,280.36,425.072Zm11.816,15.123a11.816,11.816,0,1,1-11.816-11.816A11.831,11.831,0,0,1,292.176,440.195Z\",\n transform: \"translate(-252.614 -412.449)\",\n fill: \"#fd8204\"\n}));\n\nvar SvgIllustrationSettings = function SvgIllustrationSettings(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Illustration_settings\",\n width: 120,\n height: 120,\n viewBox: \"0 0 120 120\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2, _ref3, _ref4);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIllustrationSettings, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/Illustration_settings.e3a51490.svg\";\nexport { ForwardRef as ReactComponent };","import React, {FC} from 'react';\nimport {ReactComponent as SettingsSvg} from 'resources/images/instruments/Illustration_settings.svg';\nimport {IComponentWithClassName} from 'models';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface ISettingsIconProps extends IComponentWithClassName {}\n\nexport const SettingsIcon: FC<ISettingsIconProps> = ({className}) => {\n return <SettingsSvg className={className} />;\n};\n","import React from 'react';\nimport SubjectRoundedIcon from '@material-ui/icons/DescriptionOutlined';\n\nexport function SubjectIcon() {\n return <SubjectRoundedIcon fontSize=\"small\" />;\n}\n","import {IComponentWithClassName} from 'models';\nimport React from 'react';\nimport {ReactComponent as TrashSvg} from 'resources/images/instruments/Illustration_trash.svg';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface ITrashIconProps extends IComponentWithClassName {}\n\nexport function TrashIcon({className}: ITrashIconProps) {\n return <TrashSvg className={className} />;\n}\n","import {makeStyles} from '@material-ui/core';\nimport {TrendingFlat} from '@material-ui/icons';\nimport React from 'react';\n\ninterface ITrendingLeftProps {\n color?: 'primary' | 'disabled' | 'action';\n}\n\nexport function TrendingLeft({color = 'primary'}: ITrendingLeftProps) {\n const classes = useStyles();\n return <TrendingFlat fontSize=\"small\" color={color} classes={{root: classes.root}} />;\n}\n\nconst useStyles = makeStyles({\n root: {\n transform: 'rotate(180deg)',\n },\n});\n","import {TrendingFlat} from '@material-ui/icons';\nimport React from 'react';\n\ninterface ITrendingLeftProps {\n color?: 'primary' | 'disabled' | 'action';\n}\n\nexport function TrendingRight({color = 'primary'}: ITrendingLeftProps) {\n return <TrendingFlat fontSize=\"small\" color={color} />;\n}\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_3262\",\n \"data-name\": \"Group 3262\",\n transform: \"translate(-406.595 -381.736)\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_257\",\n \"data-name\": \"Group 257\",\n transform: \"translate(417.357 398.223)\"\n}, /*#__PURE__*/React.createElement(\"line\", {\n id: \"Line_490\",\n \"data-name\": \"Line 490\",\n x2: 5.815,\n y2: 5.815,\n transform: \"translate(5.814)\",\n fill: \"none\",\n stroke: \"#c6ccd3\",\n strokeLinecap: \"round\",\n strokeMiterlimit: 10,\n strokeWidth: 1.7\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_656\",\n \"data-name\": \"Path 656\",\n d: \"M512.976,524.906l-5.814,5.815\",\n transform: \"translate(-507.162 -524.906)\",\n fill: \"none\",\n stroke: \"#c6ccd3\",\n strokeLinecap: \"round\",\n strokeMiterlimit: 10,\n strokeWidth: 1.7\n})), /*#__PURE__*/React.createElement(\"line\", {\n id: \"Line_491\",\n \"data-name\": \"Line 491\",\n y2: 11.678,\n transform: \"translate(422.941 398.909)\",\n fill: \"none\",\n stroke: \"#c6ccd3\",\n strokeLinecap: \"round\",\n strokeMiterlimit: 10,\n strokeWidth: 1.7\n}), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_258\",\n \"data-name\": \"Group 258\",\n transform: \"translate(407.447 382.586)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_657\",\n \"data-name\": \"Path 657\",\n d: \"M428.986,399.262V390.7l-8.28-8.112H409.113c-1.159,0-1.656.487-1.656,1.622v22.712a1.467,1.467,0,0,0,1.3,1.622,1.531,1.531,0,0,0,.352,0h6.624\",\n transform: \"translate(-407.447 -382.586)\",\n fill: \"none\",\n stroke: \"#c6ccd3\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.7\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_658\",\n \"data-name\": \"Path 658\",\n d: \"M531.006,392.277h-7.753a1.744,1.744,0,0,1-1.938-1.526,1.7,1.7,0,0,1,0-.412v-7.753\",\n transform: \"translate(-509.467 -382.586)\",\n fill: \"none\",\n stroke: \"#c6ccd3\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.7\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_659\",\n \"data-name\": \"Path 659\",\n d: \"M436,439.514\",\n transform: \"translate(-432.113 -433.025)\",\n fill: \"none\",\n stroke: \"#c6ccd3\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.7\n})));\n\nvar SvgUploadFileIcon = function SvgUploadFileIcon(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 23.593,\n height: 29.701,\n viewBox: \"0 0 23.593 29.701\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgUploadFileIcon, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/upload_file_icon.2bbeeb67.svg\";\nexport { ForwardRef as ReactComponent };","import {SvgIcon} from '@material-ui/core';\nimport React, {FC} from 'react';\nimport {IComponentWithClassName} from 'models';\nimport {ReactComponent as IllustrationFolderImg} from 'resources/images/uploader/upload_file_icon.svg';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface IUploadFileIconProps extends IComponentWithClassName {}\n\nexport const UploadFileIcon: FC<IUploadFileIconProps> = ({className}) => {\n return (\n <SvgIcon viewBox=\"0 0 23.593 29.701\" className={className}>\n {<IllustrationFolderImg />}\n </SvgIcon>\n );\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"publish-24px_3_\",\n \"data-name\": \"publish-24px (3)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1353\",\n \"data-name\": \"Path 1353\",\n d: \"M0,0H24V24H0Z\",\n fill: \"none\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1356\",\n \"data-name\": \"Path 1356\",\n d: \"M5.325,4h13.35A.326.326,0,0,1,19,4.325v1.35A.326.326,0,0,1,18.675,6H5.325A.326.326,0,0,1,5,5.675V4.325A.326.326,0,0,1,5.325,4ZM11.77,7.23,5.555,13.445a.325.325,0,0,0,.23.555h2.89A.326.326,0,0,1,9,14.325v4.613A1.061,1.061,0,0,0,10.062,20h3.876A1.061,1.061,0,0,0,15,18.938V14.325A.326.326,0,0,1,15.325,14h2.89a.325.325,0,0,0,.23-.555L12.23,7.23A.325.325,0,0,0,11.77,7.23ZM13,12v5.675a.326.326,0,0,1-.325.325h-1.35A.326.326,0,0,1,11,17.675V12H9.83l1.94-1.94a.325.325,0,0,1,.46,0L14.17,12Z\",\n fill: \"#8FC440\"\n}));\n\nvar SvgIconUpload = function SvgIconUpload(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"icon_-_Upload\",\n \"data-name\": \"icon - Upload\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIconUpload, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/icon_upload.303c8458.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\nimport {SvgIcon} from '@material-ui/core';\nimport {ReactComponent as UploadIconSvg} from 'resources/icons/icon_upload.svg';\n\nexport function UploadIcon() {\n return (\n <SvgIcon>\n <UploadIconSvg />\n </SvgIcon>\n );\n}\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"style\", null, \".a{fill:none;}.b{fill:#c0de94;stroke:#01763d;}.c{fill:#01763d;font-size:11px;font-family:OpenSans-ExtraBold, Open Sans;font-weight:800;}.d{stroke:none;}\"));\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"a\",\n d: \"M0,0H24V24H0Z\"\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"g\", {\n className: \"b\",\n transform: \"translate(3 4)\"\n}, /*#__PURE__*/React.createElement(\"rect\", {\n className: \"d\",\n width: 18,\n height: 16,\n rx: 2\n}), /*#__PURE__*/React.createElement(\"rect\", {\n className: \"a\",\n x: 0.5,\n y: 0.5,\n width: 17,\n height: 15,\n rx: 1.5\n}));\n\nvar _ref5 = /*#__PURE__*/React.createElement(\"text\", {\n className: \"c\",\n transform: \"translate(12 16)\"\n}, /*#__PURE__*/React.createElement(\"tspan\", {\n x: -3.816,\n y: 0\n}, \"V\"));\n\nvar SvgIconVirtualClass = function SvgIconVirtualClass(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2, _ref3, _ref4, _ref5);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIconVirtualClass, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/Icon-VirtualClass.0c1f4203.svg\";\nexport { ForwardRef as ReactComponent };","import {SvgIcon} from '@material-ui/core';\nimport React from 'react';\nimport {ReactComponent as IconVirtualClass} from 'resources/icons/Icon-VirtualClass.svg';\n\nexport function VirtualClassIcon() {\n return (\n <SvgIcon>\n <IconVirtualClass />\n </SvgIcon>\n );\n}\n","import React from 'react';\nimport {Visibility} from '@material-ui/icons';\n\nexport const VisibilityOnIcon = () => {\n return <Visibility />;\n};\n","import React from 'react';\nimport {VisibilityOff} from '@material-ui/icons';\n\nexport const VisibilityOffIcon = () => {\n return <VisibilityOff />;\n};\n","import {makeStyles} from '@material-ui/core';\nimport {Warning} from '@material-ui/icons';\nimport React from 'react';\n\nexport function WarningIcon() {\n const classes = useStyles();\n return <Warning fontSize=\"small\" color=\"error\" classes={{root: classes.root}} />;\n}\n\nconst useStyles = makeStyles((theme) => ({root: {color: theme.palette.info.main}}));\n","import React from 'react';\nimport WebRoundedIcon from '@material-ui/icons/WebRounded';\n\nexport function WebIcon() {\n return <WebRoundedIcon style={{marginRight: 2}} fontSize=\"small\" />;\n}\n","import React from 'react';\nimport {ChevronRight} from '@material-ui/icons';\n\nexport const ChevronRightIcon = () => {\n return <ChevronRight />;\n};\n","import React, {FC} from 'react';\nimport {IconButton as MUIIconButton, makeStyles} from '@material-ui/core';\nimport {IWithChildren, IWithDisabled} from 'models/common';\ninterface IIconButtonProps extends IWithChildren, IWithDisabled {\n clickHandler?: () => void;\n ariaLabel?: string;\n edge?: 'start' | 'end';\n size?: 'small' | 'medium';\n color?: 'inherit' | 'primary' | 'secondary' | 'default';\n}\n\nexport const IconButton: FC<IIconButtonProps> = ({\n children,\n disabled,\n clickHandler,\n ariaLabel = 'info',\n edge = 'start',\n color,\n size,\n}) => {\n const {root} = useStyles();\n return (\n <MUIIconButton\n onClick={clickHandler}\n disabled={disabled}\n aria-label={ariaLabel}\n edge={edge}\n color={color}\n size={size}\n className={root}\n >\n {children}\n </MUIIconButton>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n color: theme.palette.primary.main,\n },\n}));\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_3378\",\n \"data-name\": \"Group 3378\",\n transform: \"translate(-20853 -1564)\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Rectangle_2342\",\n \"data-name\": \"Rectangle 2342\",\n transform: \"translate(20853 1564)\",\n fill: \"#fff\",\n stroke: \"#8fc440\",\n strokeWidth: 1\n}, /*#__PURE__*/React.createElement(\"rect\", {\n width: 28,\n height: 26,\n rx: 4,\n stroke: \"none\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 0.5,\n y: 0.5,\n width: 27,\n height: 25,\n rx: 3.5,\n fill: \"none\"\n})), /*#__PURE__*/React.createElement(\"g\", {\n id: \"link\",\n transform: \"translate(20858.006 1567.995)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1301\",\n \"data-name\": \"Path 1301\",\n d: \"M10,9.749a3.522,3.522,0,0,0,5.311.38l2.113-2.113a3.521,3.521,0,1,0-4.98-4.98l-1.211,1.2\",\n transform: \"translate(-2.46 0)\",\n fill: \"none\",\n stroke: \"#01763d\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.5\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1302\",\n \"data-name\": \"Path 1302\",\n d: \"M10.451,10.407a3.522,3.522,0,0,0-5.311-.38L3.027,12.14a3.521,3.521,0,1,0,4.98,4.98l1.2-1.2\",\n transform: \"translate(0 -2.146)\",\n fill: \"none\",\n stroke: \"#01763d\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.5\n})));\n\nvar SvgCopyLinkSmall = function SvgCopyLinkSmall(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 28,\n height: 26,\n viewBox: \"0 0 28 26\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgCopyLinkSmall, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/copy_link_small.38b9c68a.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"link\",\n transform: \"translate(-20853 -1564)\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Rectangle_2342\",\n \"data-name\": \"Rectangle 2342\",\n transform: \"translate(20853 1564)\",\n fill: \"#fff\",\n stroke: \"#a7afb9\",\n strokeWidth: 1\n}, /*#__PURE__*/React.createElement(\"rect\", {\n width: 28,\n height: 26,\n rx: 4,\n stroke: \"none\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 0.5,\n y: 0.5,\n width: 27,\n height: 25,\n rx: 3.5,\n fill: \"none\"\n})), /*#__PURE__*/React.createElement(\"g\", {\n id: \"link-2\",\n \"data-name\": \"link\",\n transform: \"translate(20858.006 1567.995)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1301\",\n \"data-name\": \"Path 1301\",\n d: \"M10,9.749a3.522,3.522,0,0,0,5.311.38l2.113-2.113a3.521,3.521,0,1,0-4.98-4.98l-1.211,1.2\",\n transform: \"translate(-2.46 0)\",\n fill: \"none\",\n stroke: \"#a7afb9\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.5\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1302\",\n \"data-name\": \"Path 1302\",\n d: \"M10.451,10.407a3.522,3.522,0,0,0-5.311-.38L3.027,12.14a3.521,3.521,0,1,0,4.98,4.98l1.2-1.2\",\n transform: \"translate(0 -2.146)\",\n fill: \"none\",\n stroke: \"#a7afb9\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.5\n})));\n\nvar SvgCopyLinkSmallDisabled = function SvgCopyLinkSmallDisabled(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 28,\n height: 26,\n viewBox: \"0 0 28 26\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgCopyLinkSmallDisabled, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/copy_link_small_disabled.ec7459ff.svg\";\nexport { ForwardRef as ReactComponent };","import React, {FC, Fragment} from 'react';\nimport {ReactComponent as CopyLinkSmallSvg} from 'resources/icons/copy_link_small.svg';\nimport {ReactComponent as CopyLinkSmallDisabledSvg} from 'resources/icons/copy_link_small_disabled.svg';\nimport {IWithDisabled} from 'models';\n\ntype ICopyLinkSmallIconProps = IWithDisabled;\n\nexport const CopyLinkSmallIcon: FC<ICopyLinkSmallIconProps> = ({disabled = false}) => {\n return <Fragment>{disabled ? <CopyLinkSmallDisabledSvg /> : <CopyLinkSmallSvg />}</Fragment>;\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_3483\",\n \"data-name\": \"Group 3483\",\n transform: \"translate(-20853 -1564)\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Rectangle_2342\",\n \"data-name\": \"Rectangle 2342\",\n transform: \"translate(20853 1564)\",\n fill: \"#fff\",\n stroke: \"#8fc440\",\n strokeWidth: 1\n}, /*#__PURE__*/React.createElement(\"rect\", {\n width: 28,\n height: 26,\n rx: 4,\n stroke: \"none\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 0.5,\n y: 0.5,\n width: 27,\n height: 25,\n rx: 3.5,\n fill: \"none\"\n})), /*#__PURE__*/React.createElement(\"g\", {\n id: \"download\",\n transform: \"translate(20857 1566.7)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1368\",\n \"data-name\": \"Path 1368\",\n d: \"M17,15v3.178a1.572,1.572,0,0,1-1.556,1.589H4.556A1.572,1.572,0,0,1,3,18.178V15\",\n transform: \"translate(0 -2.467)\",\n fill: \"none\",\n stroke: \"#01763d\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.5\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1369\",\n \"data-name\": \"Path 1369\",\n d: \"M7,10l3.822,3.972L14.644,10\",\n transform: \"translate(-0.822 -1.439)\",\n fill: \"none\",\n stroke: \"#01763d\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.5\n}), /*#__PURE__*/React.createElement(\"line\", {\n id: \"Line_6\",\n \"data-name\": \"Line 6\",\n y1: 9,\n transform: \"translate(9.853 3.3)\",\n fill: \"none\",\n stroke: \"#01763d\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.5\n})));\n\nvar SvgDownloadResource = function SvgDownloadResource(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 28,\n height: 26,\n viewBox: \"0 0 28 26\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgDownloadResource, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/download_resource.3b1e790b.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"download\",\n transform: \"translate(-20853 -1564)\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Rectangle_2342\",\n \"data-name\": \"Rectangle 2342\",\n transform: \"translate(20853 1564)\",\n fill: \"#fff\",\n stroke: \"#a7afb9\",\n strokeWidth: 1\n}, /*#__PURE__*/React.createElement(\"rect\", {\n width: 28,\n height: 26,\n rx: 4,\n stroke: \"none\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 0.5,\n y: 0.5,\n width: 27,\n height: 25,\n rx: 3.5,\n fill: \"none\"\n})), /*#__PURE__*/React.createElement(\"g\", {\n id: \"download-2\",\n \"data-name\": \"download\",\n transform: \"translate(20857 1566.7)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1368\",\n \"data-name\": \"Path 1368\",\n d: \"M17,15v3.178a1.572,1.572,0,0,1-1.556,1.589H4.556A1.572,1.572,0,0,1,3,18.178V15\",\n transform: \"translate(0 -2.467)\",\n fill: \"none\",\n stroke: \"#a7afb9\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.5\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1369\",\n \"data-name\": \"Path 1369\",\n d: \"M7,10l3.822,3.972L14.644,10\",\n transform: \"translate(-0.822 -1.439)\",\n fill: \"none\",\n stroke: \"#a7afb9\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.5\n}), /*#__PURE__*/React.createElement(\"line\", {\n id: \"Line_6\",\n \"data-name\": \"Line 6\",\n y1: 9,\n transform: \"translate(9.853 3.3)\",\n fill: \"none\",\n stroke: \"#a7afb9\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.5\n})));\n\nvar SvgDownloadResourceDisabled = function SvgDownloadResourceDisabled(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 28,\n height: 26,\n viewBox: \"0 0 28 26\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgDownloadResourceDisabled, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/download_resource_disabled.8f88eacb.svg\";\nexport { ForwardRef as ReactComponent };","import React, {FC, Fragment} from 'react';\nimport {ReactComponent as DownloadSvg} from 'resources/icons/download_resource.svg';\nimport {ReactComponent as DownloadDisabledSvg} from 'resources/icons/download_resource_disabled.svg';\nimport {IWithDisabled} from 'models';\n\ntype IDownloadIconProps = IWithDisabled;\n\nexport const DownloadIcon: FC<IDownloadIconProps> = ({disabled = false}) => {\n return <Fragment>{disabled ? <DownloadDisabledSvg /> : <DownloadSvg />}</Fragment>;\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_3484\",\n \"data-name\": \"Group 3484\",\n transform: \"translate(-20853 -1564)\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Rectangle_2342\",\n \"data-name\": \"Rectangle 2342\",\n transform: \"translate(20853 1564)\",\n fill: \"#fff\",\n stroke: \"#8fc440\",\n strokeWidth: 1\n}, /*#__PURE__*/React.createElement(\"rect\", {\n width: 28,\n height: 26,\n rx: 4,\n stroke: \"none\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 0.5,\n y: 0.5,\n width: 27,\n height: 25,\n rx: 3.5,\n fill: \"none\"\n})), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_3501\",\n \"data-name\": \"Group 3501\",\n transform: \"translate(20466.625 1193.292)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1382\",\n \"data-name\": \"Path 1382\",\n d: \"M399.1,375.709a6.728,6.728,0,1,0,4.158,12.019l.1-.082,3.87,3.87a.67.67,0,0,0,.947-.947l-3.87-3.87.082-.1a6.729,6.729,0,0,0-5.29-10.887Zm3.9,10.63a5.517,5.517,0,1,1,1.616-3.9A5.481,5.481,0,0,1,403,386.339Z\",\n fill: \"#01763d\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1383\",\n \"data-name\": \"Path 1383\",\n d: \"M533.49,695.983a.588.588,0,0,0,0,.764c.09.105,2.225,2.575,4.946,2.575s4.857-2.471,4.947-2.576a.589.589,0,0,0,0-.764c-.09-.105-2.23-2.575-4.946-2.575S533.58,695.877,533.49,695.983Zm4.946,2.16a5.908,5.908,0,0,1-3.675-1.778,4.687,4.687,0,0,1,7.35,0A5.9,5.9,0,0,1,538.436,698.143Z\",\n transform: \"translate(-139.291 -313.942)\",\n fill: \"#01763d\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1384\",\n \"data-name\": \"Path 1384\",\n d: \"M838.71,821.891a1.441,1.441,0,1,0,1.441-1.441A1.441,1.441,0,0,0,838.71,821.891Z\",\n transform: \"translate(-441.045 -439.47)\",\n fill: \"#01763d\"\n})));\n\nvar SvgView = function SvgView(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 28,\n height: 26,\n viewBox: \"0 0 28 26\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgView, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/view.46b9ed07.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"view\",\n transform: \"translate(-20853 -1564)\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Rectangle_2342\",\n \"data-name\": \"Rectangle 2342\",\n transform: \"translate(20853 1564)\",\n fill: \"#fff\",\n stroke: \"#a7afb9\",\n strokeWidth: 1\n}, /*#__PURE__*/React.createElement(\"rect\", {\n width: 28,\n height: 26,\n rx: 4,\n stroke: \"none\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 0.5,\n y: 0.5,\n width: 27,\n height: 25,\n rx: 3.5,\n fill: \"none\"\n})), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_3501\",\n \"data-name\": \"Group 3501\",\n transform: \"translate(20466.625 1193.292)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1382\",\n \"data-name\": \"Path 1382\",\n d: \"M399.1,375.709a6.728,6.728,0,1,0,4.158,12.019l.1-.082,3.87,3.87a.67.67,0,0,0,.947-.947l-3.87-3.87.082-.1a6.729,6.729,0,0,0-5.29-10.887Zm3.9,10.63a5.517,5.517,0,1,1,1.616-3.9A5.481,5.481,0,0,1,403,386.339Z\",\n fill: \"#a7afb9\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1383\",\n \"data-name\": \"Path 1383\",\n d: \"M533.49,695.983a.588.588,0,0,0,0,.764c.09.105,2.225,2.575,4.946,2.575s4.857-2.471,4.947-2.576a.589.589,0,0,0,0-.764c-.09-.105-2.23-2.575-4.946-2.575S533.58,695.877,533.49,695.983Zm4.946,2.16a5.908,5.908,0,0,1-3.675-1.778,4.687,4.687,0,0,1,7.35,0A5.9,5.9,0,0,1,538.436,698.143Z\",\n transform: \"translate(-139.291 -313.942)\",\n fill: \"#a7afb9\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1384\",\n \"data-name\": \"Path 1384\",\n d: \"M838.71,821.891a1.441,1.441,0,1,0,1.441-1.441A1.441,1.441,0,0,0,838.71,821.891Z\",\n transform: \"translate(-441.045 -439.47)\",\n fill: \"#a7afb9\"\n})));\n\nvar SvgViewDisabled = function SvgViewDisabled(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 28,\n height: 26,\n viewBox: \"0 0 28 26\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgViewDisabled, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/view_disabled.b046ba1f.svg\";\nexport { ForwardRef as ReactComponent };","import React, {FC, Fragment} from 'react';\nimport {ReactComponent as ViewResourceSvg} from 'resources/icons/view.svg';\nimport {ReactComponent as ViewResourceDisabledSvg} from 'resources/icons/view_disabled.svg';\nimport {IWithDisabled} from 'models';\n\ntype IViewResourceIconProps = IWithDisabled;\n\nexport const ViewResourceIcon: FC<IViewResourceIconProps> = ({disabled = false}) => {\n return <Fragment>{disabled ? <ViewResourceDisabledSvg /> : <ViewResourceSvg />}</Fragment>;\n};\n","import React from 'react';\nimport MUIMenuIcon from '@material-ui/icons/Menu';\n\ninterface IExpandIconProps {\n color?: 'primary' | 'secondary' | 'inherit';\n}\n\nexport const MenuIcon = ({color = 'inherit'}: IExpandIconProps) => {\n return <MUIMenuIcon color={color} />;\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"style\", null, \".a{fill:#fff;stroke:#8fc440;}.b{fill:#01763d;}.c{stroke:none;}.d{fill:none;}\"));\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(-20853 -1564)\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n className: \"a\",\n transform: \"translate(20853 1564)\"\n}, /*#__PURE__*/React.createElement(\"rect\", {\n className: \"c\",\n width: 28,\n height: 26,\n rx: 4\n}), /*#__PURE__*/React.createElement(\"rect\", {\n className: \"d\",\n x: 0.5,\n y: 0.5,\n width: 27,\n height: 25,\n rx: 3.5\n})), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(20827.332 1567.782)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n className: \"b\",\n d: \"M46.8,6.594h-.443V4.458a.347.347,0,0,0,0-.04.355.355,0,0,0-.086-.234L42.711.124l0,0a.359.359,0,0,0-.072-.06L42.612.047a.379.379,0,0,0-.071-.03L42.522.01A.362.362,0,0,0,42.439,0H33.7a.724.724,0,0,0-.723.723V6.594h-.443A1.033,1.033,0,0,0,31.5,7.628V13a1.034,1.034,0,0,0,1.033,1.033h.443v3.678a.724.724,0,0,0,.723.723H45.632a.724.724,0,0,0,.723-.723V14.034H46.8A1.034,1.034,0,0,0,47.831,13V7.628A1.033,1.033,0,0,0,46.8,6.594ZM33.7.723h8.374v3.7a.362.362,0,0,0,.361.361h3.193V6.594H33.7ZM41.815,11.86v1.048H38.366V7.387H39.62V11.86Zm-8.88,1.048,1.6-2.793-1.54-2.728h1.434l.483,1.007c.164.336.287.606.418.918h.016c.131-.352.238-.6.377-.918l.467-1.007h1.425l-1.557,2.7,1.639,2.826H36.253l-.5-1c-.2-.385-.336-.672-.491-.991h-.016c-.115.32-.254.606-.426.991l-.459,1H32.935Zm12.7,4.609H33.7V14.034H45.632v3.483ZM43.9,12.991a3.614,3.614,0,0,1-1.564-.336l.254-1.032a3.189,3.189,0,0,0,1.385.344c.574,0,.877-.238.877-.6,0-.344-.262-.541-.926-.778-.917-.32-1.516-.827-1.516-1.631,0-.942.786-1.663,2.089-1.663a3.388,3.388,0,0,1,1.409.279l-.279,1.008a2.623,2.623,0,0,0-1.155-.262c-.541,0-.8.246-.8.533,0,.352.311.508,1.024.778.975.36,1.434.868,1.434,1.646C46.132,12.2,45.42,12.991,43.9,12.991Z\",\n transform: \"translate(0 0)\"\n})));\n\nvar SvgExportXls = function SvgExportXls(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 28,\n height: 26,\n viewBox: \"0 0 28 26\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2, _ref3);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgExportXls, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/export_xls.e94a5f69.svg\";\nexport { ForwardRef as ReactComponent };","import React, {FC} from 'react';\nimport {ReactComponent as ExportXlsSvg} from 'resources/icons/export_xls.svg';\n\nexport const ExportXlsIcon: FC = () => {\n return <ExportXlsSvg />;\n};\n","import {Divider, makeStyles} from '@material-ui/core';\nimport React from 'react';\n\ninterface IDividerHorizontalProps {\n as?: 'div' | 'li';\n fullWidth?: boolean;\n}\n\nexport function DividerHorizontal({as = 'div', fullWidth = false}: IDividerHorizontalProps) {\n const classes = useStyles({fullWidth});\n return <Divider component={as} className={classes.root} />;\n}\n\nconst useStyles = makeStyles((theme) => {\n const margin = theme.spacing(3);\n return {\n root: ({fullWidth}: Pick<IDividerHorizontalProps, 'fullWidth'>) => ({\n width: fullWidth && '100%',\n marginTop: margin,\n marginBottom: margin,\n }),\n };\n});\n","import {Divider} from '@material-ui/core';\nimport {makeStyles} from '@material-ui/core/styles';\nimport React from 'react';\n\ninterface IDividerVerticalProps {\n size?: 'small' | 'medium';\n}\n\nexport function DividerVertical({size}: IDividerVerticalProps) {\n const classes = useStyles({size});\n return <Divider orientation=\"vertical\" flexItem className={classes.root} />;\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: ({size}: IDividerVerticalProps) => {\n const margin = size === 'small' ? theme.spacing(3) : theme.spacing(4);\n return {\n marginRight: margin,\n marginLeft: margin,\n };\n },\n}));\n","import React, {ReactNode} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Row, Text} from 'components-lib';\nimport {Form} from 'forms';\n\ninterface IFiltersHeaderProps {\n clearButtonClickHandler: () => void;\n searchFieldName?: string;\n customSearch?: ReactNode;\n disabled?: boolean;\n}\n\nexport function FiltersHeader({\n clearButtonClickHandler,\n searchFieldName,\n customSearch = null,\n disabled,\n}: IFiltersHeaderProps) {\n const classes = useStyles();\n return (\n <Row justify=\"flex-start\" classes={{root: classes.root}}>\n <Row justify=\"space-between\" classes={{root: classes.buttonsRow}}>\n <Text.Heading as=\"h2\">Filter</Text.Heading>\n <div>\n <Form.ButtonClear clickHandler={clearButtonClickHandler} />\n <Form.ButtonSubmit text=\"Apply\" isLast />\n </div>\n </Row>\n <Row justify=\"flex-start\" classes={{root: classes.searchRow}}>\n {!!customSearch ? customSearch : <Form.Search debounceDelay={100} name={searchFieldName} disabled={disabled} />}\n </Row>\n </Row>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n borderBottom: `1px solid ${theme.palette.grey[200]}`,\n },\n buttonsRow: {\n paddingTop: theme.spacing(3),\n '& button': {\n marginLeft: theme.spacing(2),\n },\n },\n searchRow: {\n paddingTop: theme.spacing(3),\n paddingBottom: theme.spacing(3),\n },\n}));\n","import React, {ReactNode} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Column, Container, Row} from 'components-lib';\nimport {layoutConfig} from 'layout';\nimport {FiltersHeader} from './FiltersHeader';\n\ninterface IFiltersPanelProps {\n clearButtonClickHandler: () => void;\n filters: ReactNode;\n searchFieldName?: string;\n customSearch?: ReactNode;\n disableAll?: boolean;\n}\n\nexport function FiltersPanel({\n filters,\n searchFieldName,\n clearButtonClickHandler,\n customSearch,\n disableAll,\n}: IFiltersPanelProps) {\n const classes = useStyles();\n return (\n <Container classes={{root: classes.root}}>\n <Column>\n <FiltersHeader\n searchFieldName={searchFieldName}\n clearButtonClickHandler={clearButtonClickHandler}\n customSearch={customSearch}\n disabled={disableAll}\n />\n <Row justify=\"flex-start\" align=\"flex-start\" classes={{root: classes.scrollableContainer}}>\n <div>{filters}</div>\n </Row>\n </Column>\n </Container>\n );\n}\n\nconst useStyles = makeStyles(\n (theme) => ({\n root: {\n overflow: 'hidden',\n paddingLeft: theme.spacing(2) + theme.spacing(3), // 24px\n paddingRight: theme.spacing(2) + theme.spacing(3), // 24px\n },\n scrollableContainer: {\n height: `calc(100vh - ${layoutConfig.scrollableAreaSubtrahend + 190}px)`,\n paddingRight: theme.spacing(1) + theme.spacing(2), // 12px\n paddingTop: theme.spacing(2),\n overflowY: 'auto',\n '& > div': {\n width: '100%',\n },\n },\n }),\n // Webpack production build causes CSS to be injected in different order\n // See: https://github.com/mui-org/material-ui/issues/18919\n // index - 0 by default - determines DOM rendering order, higher number = higher specificity (inserted after).\n {\n index: 1,\n }\n);\n","import React from 'react';\nimport {Typography} from '@material-ui/core';\nimport {IComponentWithChildren} from 'models';\n\ninterface ICaptionProps extends IComponentWithChildren {\n classes?: {[key: string]: any};\n}\n\nexport function Caption({children, classes}: ICaptionProps) {\n return (\n <Typography variant=\"caption\" classes={classes}>\n {children}\n </Typography>\n );\n}\n","import {FormHelperText, makeStyles} from '@material-ui/core';\nimport {IComponentWithChildren} from 'models';\nimport React from 'react';\ninterface IErrorTextProps extends IComponentWithChildren {\n withBottomMargin?: boolean;\n}\n\nexport function ErrorText({children, withBottomMargin = true}: IErrorTextProps) {\n const classes = useStyles({withBottomMargin});\n return <FormHelperText classes={classes}>{children}</FormHelperText>;\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: ({withBottomMargin}: {withBottomMargin: boolean}) => {\n let styles: any = {\n color: theme.palette.error.main,\n };\n\n if (withBottomMargin) {\n styles = {...styles, marginBottom: theme.spacing(2)};\n }\n\n return styles;\n },\n}));\n","import {Typography} from '@material-ui/core';\nimport {IComponentWithChildren} from 'models';\nimport React from 'react';\ninterface IHeadingProps extends IComponentWithChildren {\n classes?: {[key: string]: any};\n as: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n color?: 'inherit' | 'primary' | 'secondary' | 'textPrimary' | 'error';\n}\n\nexport function Heading({as, classes, children, color}: IHeadingProps) {\n return (\n <Typography variant={as} classes={classes} color={color}>\n {children}\n </Typography>\n );\n}\n","import {makeStyles, Typography} from '@material-ui/core';\nimport {IComponentWithChildren, IComponentWithClassName} from 'models';\nimport React from 'react';\n\ninterface IParagraphProps extends IComponentWithChildren, IComponentWithClassName {\n align?: 'inherit' | 'center';\n color?: 'primary' | 'secondary' | 'textPrimary' | 'error';\n variant?: 'body1' | 'body2';\n withMargin?: boolean;\n classes?: {[key: string]: any};\n}\n\nexport function Paragraph({\n children,\n color,\n align = 'inherit',\n variant = 'body1',\n withMargin = false,\n className,\n}: IParagraphProps) {\n const classes = useStyles(withMargin);\n\n return (\n <div className={classes.root}>\n <Typography variant={variant} color={color} align={align} className={className}>\n {children}\n </Typography>\n </div>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: (withMargin: boolean) => {\n if (withMargin) {\n const spacing = theme.spacing(2);\n return {\n marginTop: spacing,\n marginBottom: spacing,\n };\n }\n },\n}));\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"JA_Citizens_PoweredBy_1_\",\n \"data-name\": \"JA_Citizens_PoweredBy (1)\",\n transform: \"translate(-17.4 -51.375)\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_3396\",\n \"data-name\": \"Group 3396\",\n transform: \"translate(17.4 59.739)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1310\",\n \"data-name\": \"Path 1310\",\n d: \"M17.4,73.813V67.4h2.007a4.154,4.154,0,0,1,1,.112,1.542,1.542,0,0,1,.725.613,2.388,2.388,0,0,1-.167,2.509,1.722,1.722,0,0,1-1.506.558H18.125v2.621H17.4Zm.725-3.346h1.338a1.476,1.476,0,0,0,.948-.279,1.082,1.082,0,0,0,.279-.892,1.325,1.325,0,0,0-.167-.669,2.426,2.426,0,0,0-.335-.39,1.938,1.938,0,0,0-.725-.112H18.125Z\",\n transform: \"translate(-17.4 -67.4)\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1311\",\n \"data-name\": \"Path 1311\",\n d: \"M25.6,72.8a2.724,2.724,0,0,1,.5-1.784,1.648,1.648,0,0,1,2.565,0,2.724,2.724,0,0,1,.5,1.784,2.791,2.791,0,0,1-.5,1.84,1.648,1.648,0,0,1-2.565,0A3.005,3.005,0,0,1,25.6,72.8Zm.669,0a2.144,2.144,0,0,0,.335,1.338,1.059,1.059,0,0,0,.836.446,1.045,1.045,0,0,0,.781-.446,2.844,2.844,0,0,0,0-2.677,1.059,1.059,0,0,0-.836-.446,1.045,1.045,0,0,0-.781.446A2.378,2.378,0,0,0,26.269,72.8Z\",\n transform: \"translate(-21.027 -68.727)\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1312\",\n \"data-name\": \"Path 1312\",\n d: \"M33.671,75.228,32.5,70.6h.669l.613,2.677.223,1,.223-.948.613-2.732h.669l.558,2.677.167.892.223-.892.669-2.677h.613l-1.171,4.628H35.9l-.613-2.788-.167-.781-.781,3.569h-.669Z\",\n transform: \"translate(-24.08 -68.816)\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1313\",\n \"data-name\": \"Path 1313\",\n d: \"M45.288,73.634l.669.112a1.958,1.958,0,0,1-.613,1.115,1.472,1.472,0,0,1-1.059.39A1.586,1.586,0,0,1,43,74.638a2.724,2.724,0,0,1-.5-1.784,3.005,3.005,0,0,1,.5-1.84,1.508,1.508,0,0,1,1.283-.613,1.558,1.558,0,0,1,1.227.613,2.724,2.724,0,0,1,.5,1.784v.223H43.169a2.244,2.244,0,0,0,.335,1.171.974.974,0,0,0,.781.39C44.731,74.582,45.065,74.248,45.288,73.634Zm-2.119-1.283h2.119a1.683,1.683,0,0,0-.279-.892.961.961,0,0,0-.781-.446.9.9,0,0,0-.725.335A1.557,1.557,0,0,0,43.169,72.352Z\",\n transform: \"translate(-28.503 -68.727)\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1314\",\n \"data-name\": \"Path 1314\",\n d: \"M50.1,75.14V70.512h.558v.725a2.986,2.986,0,0,1,.39-.669.6.6,0,0,1,.39-.167,1.159,1.159,0,0,1,.669.279l-.223.725a.89.89,0,0,0-.446-.167.6.6,0,0,0-.39.167.9.9,0,0,0-.223.39,4.911,4.911,0,0,0-.112.948v2.4Z\",\n transform: \"translate(-31.865 -68.727)\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1315\",\n \"data-name\": \"Path 1315\",\n d: \"M56.888,73.634l.669.112a1.958,1.958,0,0,1-.613,1.115,1.472,1.472,0,0,1-1.06.39,1.586,1.586,0,0,1-1.283-.613,2.724,2.724,0,0,1-.5-1.784,3.005,3.005,0,0,1,.5-1.84,1.508,1.508,0,0,1,1.283-.613,1.558,1.558,0,0,1,1.227.613,2.724,2.724,0,0,1,.5,1.784v.223H54.769a2.244,2.244,0,0,0,.335,1.171.974.974,0,0,0,.781.39C56.386,74.582,56.721,74.248,56.888,73.634Zm-2.119-1.283h2.119a1.683,1.683,0,0,0-.279-.892.961.961,0,0,0-.781-.446.9.9,0,0,0-.725.335A2.665,2.665,0,0,0,54.769,72.352Z\",\n transform: \"translate(-33.635 -68.727)\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1316\",\n \"data-name\": \"Path 1316\",\n d: \"M64.032,73.813v-.558a1.317,1.317,0,0,1-.446.5,1.124,1.124,0,0,1-.613.167,1.537,1.537,0,0,1-1.171-.613,2.724,2.724,0,0,1-.5-1.784,3.374,3.374,0,0,1,.223-1.338,2.431,2.431,0,0,1,.558-.836,1.044,1.044,0,0,1,.781-.279,1.271,1.271,0,0,1,.613.167,1.7,1.7,0,0,1,.446.446V67.4h.669v6.413h-.558Zm-2.063-2.342a2.144,2.144,0,0,0,.335,1.338.949.949,0,0,0,.725.446.819.819,0,0,0,.725-.446,2.194,2.194,0,0,0,.279-1.283,2.753,2.753,0,0,0-.279-1.394.89.89,0,0,0-.781-.446.95.95,0,0,0-.725.446A2.661,2.661,0,0,0,61.969,71.471Z\",\n transform: \"translate(-36.82 -67.4)\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1317\",\n \"data-name\": \"Path 1317\",\n d: \"M73.313,73.813H72.7V67.4h.669v2.286a.864.864,0,0,1,.446-.446,1.076,1.076,0,0,1,.558-.167,1.332,1.332,0,0,1,.781.279,1.662,1.662,0,0,1,.558.781,3.047,3.047,0,0,1,.223,1.338,3.005,3.005,0,0,1-.5,1.84,1.383,1.383,0,0,1-1.171.613,1.124,1.124,0,0,1-.613-.167,1.317,1.317,0,0,1-.446-.5v.558Zm0-2.342a4.323,4.323,0,0,0,.112,1.059,1.023,1.023,0,0,0,.39.558.879.879,0,0,0,1.283-.279,2.144,2.144,0,0,0,.335-1.338,2.661,2.661,0,0,0-.279-1.338.87.87,0,0,0-.725-.446.949.949,0,0,0-.725.446A1.684,1.684,0,0,0,73.313,71.471Z\",\n transform: \"translate(-41.863 -67.4)\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1318\",\n \"data-name\": \"Path 1318\",\n d: \"M79.779,77.013l-.056-.725a1.089,1.089,0,0,0,.39.056.707.707,0,0,0,.335-.056.557.557,0,0,0,.223-.279c0-.056.112-.279.279-.781L79.5,70.6h.669l.781,2.677c.112.335.167.669.279,1.06a7.43,7.43,0,0,1,.279-1.06l.836-2.677h.669l-1.561,4.684a6.685,6.685,0,0,1-.446,1.227,1.033,1.033,0,0,1-.39.446.6.6,0,0,1-.446.112A.949.949,0,0,1,79.779,77.013Z\",\n transform: \"translate(-44.871 -68.816)\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1319\",\n \"data-name\": \"Path 1319\",\n d: \"M86.9,71.492V70.6h.725v.892Zm0,3.736v-.892h.725v.892Z\",\n transform: \"translate(-48.145 -68.816)\"\n})), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_3398\",\n \"data-name\": \"Group 3398\",\n transform: \"translate(73.081 51.375)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1320\",\n \"data-name\": \"Path 1320\",\n d: \"M168.808,86.208a1.815,1.815,0,0,1-2.577,0l-4.2-4.2.048,2.911a1.667,1.667,0,0,1-1.766,1.813A1.783,1.783,0,0,1,158.5,84.92V81.293a1.725,1.725,0,0,1,1.145-1.67,4.428,4.428,0,0,0,2.577-2.577,1.841,1.841,0,0,1,1.67-1.145h3.627a1.813,1.813,0,0,1,1.813,1.813,1.667,1.667,0,0,1-1.813,1.766l-2.911-.048,4.2,4.2a1.815,1.815,0,0,1,0,2.577\",\n transform: \"translate(-146.844 -62.745)\",\n fill: \"#008656\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1321\",\n \"data-name\": \"Path 1321\",\n d: \"M168.808,51.925a1.815,1.815,0,0,1,0,2.577l-4.2,4.2,2.911-.048a1.667,1.667,0,0,1,1.813,1.766,1.783,1.783,0,0,1-1.813,1.813h-3.627a1.725,1.725,0,0,1-1.67-1.145,4.428,4.428,0,0,0-2.577-2.577,1.841,1.841,0,0,1-1.145-1.67V53.213a1.813,1.813,0,0,1,1.814-1.813,1.667,1.667,0,0,1,1.766,1.813l-.048,2.911,4.2-4.2a1.859,1.859,0,0,1,2.577,0\",\n transform: \"translate(-146.844 -51.388)\",\n fill: \"#008656\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1322\",\n \"data-name\": \"Path 1322\",\n d: \"M134.612,51.912a1.815,1.815,0,0,1,2.577,0l4.2,4.2-.048-2.911a1.667,1.667,0,0,1,1.766-1.813A1.783,1.783,0,0,1,144.92,53.2v3.627a1.725,1.725,0,0,1-1.145,1.67,4.428,4.428,0,0,0-2.577,2.577,1.771,1.771,0,0,1-1.67,1.145H135.9a1.813,1.813,0,0,1-1.813-1.813,1.667,1.667,0,0,1,1.813-1.766l2.911.048-4.2-4.2a1.815,1.815,0,0,1,0-2.577\",\n transform: \"translate(-134.075 -51.375)\",\n fill: \"#008656\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1323\",\n \"data-name\": \"Path 1323\",\n d: \"M134.612,86.208a1.815,1.815,0,0,1,0-2.577l4.2-4.2-2.911.048a1.667,1.667,0,0,1-1.813-1.766A1.783,1.783,0,0,1,135.9,75.9h3.627a1.725,1.725,0,0,1,1.67,1.145,4.428,4.428,0,0,0,2.577,2.577,1.841,1.841,0,0,1,1.145,1.67V84.92a1.813,1.813,0,0,1-1.813,1.813,1.667,1.667,0,0,1-1.766-1.813l.048-2.911-4.2,4.2a1.859,1.859,0,0,1-2.577,0\",\n transform: \"translate(-134.075 -62.745)\",\n fill: \"#008656\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1324\",\n \"data-name\": \"Path 1324\",\n d: \"M202.8,76c-7.159,0-9.5-5.1-9.5-10.563,0-6.94,3.388-11.838,10.261-11.838a17.22,17.22,0,0,1,4.343.561l-.43,3.827a14.17,14.17,0,0,0-4.152-.663c-3.818,0-5.727,3.113-5.727,7.348,0,4.8,1.861,7.45,5.965,7.45a10.3,10.3,0,0,0,3.961-.919L208,74.981A13.619,13.619,0,0,1,202.8,76\",\n transform: \"translate(-162.347 -52.538)\",\n fill: \"#008656\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1325\",\n \"data-name\": \"Path 1325\",\n d: \"M230.982,59.275H234.9V75.454h-3.913Zm1.909-1.327a2.428,2.428,0,0,1,0-4.848,2.426,2.426,0,0,1,0,4.848\",\n transform: \"translate(-180.479 -52.277)\",\n fill: \"#008656\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1326\",\n \"data-name\": \"Path 1326\",\n d: \"M252.215,75.844c-3.341,0-4.391-1.326-4.391-5.05V62.583H245.2V59.37h2.577V54.422L251.69,53.3v6.07h3.675v3.213H251.69v7.09c0,2.091.477,2.652,1.813,2.652a7.854,7.854,0,0,0,1.909-.255v3.366a13.419,13.419,0,0,1-3.2.408\",\n transform: \"translate(-187.296 -52.381)\",\n fill: \"#008656\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1327\",\n \"data-name\": \"Path 1327\",\n d: \"M273.682,59.275H277.6V75.454h-3.913Zm1.909-1.327a2.428,2.428,0,0,1,0-4.848,2.426,2.426,0,0,1,0,4.848\",\n transform: \"translate(-201.007 -52.277)\",\n fill: \"#008656\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1328\",\n \"data-name\": \"Path 1328\",\n d: \"M289.5,80.328V77.56l6.061-8.924c-.573.048-1.766.048-3.245.048h-2.673V65.2h10.595v2.768L294.272,76.8c.62-.048,2.291-.048,3.436-.048h2.625v3.579Z\",\n transform: \"translate(-208.48 -57.152)\",\n fill: \"#008656\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1329\",\n \"data-name\": \"Path 1329\",\n d: \"M324.42,67.363c-1.623,0-2.72,1.193-2.959,3.007h5.584c.048-1.861-.954-3.007-2.625-3.007m6.395,5.679h-9.354c-.048,2.816,1.384,4.2,4.152,4.2A10.525,10.525,0,0,0,330,76.288l.382,3.007a15.44,15.44,0,0,1-5.393.954c-4.82,0-7.493-2.386-7.493-7.731,0-4.629,2.577-8.018,7.063-8.018,4.391,0,6.347,3.007,6.347,6.729,0,.573-.048,1.145-.1,1.813\",\n transform: \"translate(-221.72 -56.786)\",\n fill: \"#008656\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1330\",\n \"data-name\": \"Path 1330\",\n d: \"M361.706,79.962V70.275c0-1.575-.429-2.529-1.861-2.529-1.957,0-3.532,2.243-3.532,4.916v7.3H352.4V64.834h3.675a17.6,17.6,0,0,1-.191,2.673l.048.048a5.494,5.494,0,0,1,5.154-3.054c3.388,0,4.486,2.2,4.486,4.82V79.915h-3.866Z\",\n transform: \"translate(-238.414 -56.786)\",\n fill: \"#008656\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1331\",\n \"data-name\": \"Path 1331\",\n d: \"M390.536,80.249a21.445,21.445,0,0,1-3.15-.286l.1-3.2a13.625,13.625,0,0,0,3.245.477c1.479,0,2.482-.62,2.482-1.623,0-2.673-6.109-1.145-6.109-6.3,0-2.625,2.148-4.82,6.395-4.82a18.793,18.793,0,0,1,2.768.286l-.143,3.054a10.84,10.84,0,0,0-2.816-.382c-1.527,0-2.243.62-2.243,1.527,0,2.482,6.2,1.384,6.2,6.252,0,3.007-2.625,5.011-6.729,5.011\",\n transform: \"translate(-254.455 -56.786)\",\n fill: \"#008656\"\n}), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_3397\",\n \"data-name\": \"Group 3397\",\n transform: \"translate(145.292 6.838)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1332\",\n \"data-name\": \"Path 1332\",\n d: \"M415.032,65.229v2.816h-.525V65.229H413.6V64.8h2.338v.43Z\",\n transform: \"translate(-413.6 -64.752)\",\n fill: \"#008656\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1333\",\n \"data-name\": \"Path 1333\",\n d: \"M421.993,67.993l-.239-1.718a6.091,6.091,0,0,1-.1-.811h0a4.431,4.431,0,0,1-.191.62l-.62,1.909h-.573l-.573-1.766a2.247,2.247,0,0,1-.191-.764h0a5.9,5.9,0,0,1-.1.859l-.191,1.67H418.7l.477-3.245h.62l.62,1.861a4.9,4.9,0,0,1,.191.668h0a4.9,4.9,0,0,1,.191-.668l.668-1.909h.62l.477,3.245-.573.048Z\",\n transform: \"translate(-416.266 -64.7)\",\n fill: \"#008656\"\n}))));\n\nvar SvgJaCitizensPoweredBy = function SvgJaCitizensPoweredBy(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 207.273,\n height: 24,\n viewBox: \"0 0 207.273 24\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgJaCitizensPoweredBy, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/JA_Citizens_PoweredBy.711bcd36.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\nimport {ReactComponent as CititizensPoweredBySvg} from 'resources/logos/JA_Citizens_PoweredBy.svg';\n\nexport function CititizensPoweredBy() {\n return <CititizensPoweredBySvg />;\n}\n","import React, {ChangeEvent, FC, ReactNode} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Button, FileInput, Icon, Wrapper, Text, Row} from 'components-lib';\nimport {IInputFile, IWithDisabled} from 'models';\nimport {borderGeneral} from 'styles';\ninterface IHorizontalFileUploaderProps extends IWithDisabled {\n attachmentArea: ReactNode;\n fileInputName: string;\n accept: string;\n file: IInputFile;\n fileInputRef: any;\n error: string;\n text?: string;\n title?: string;\n withIcon?: boolean;\n isActive?: boolean;\n browseButtonText?: string;\n withOnlyBrowseButton?: boolean;\n buttonSize?: 'small' | 'large';\n align?: 'flex-start' | 'center' | 'flex-end';\n justify?: 'flex-start' | 'center' | 'flex-end' | 'space-between';\n addFileCallback?: (event: ChangeEvent<HTMLInputElement>) => void;\n openFileDialogClickHandler?: () => void;\n}\n\nexport const Horizontal: FC<IHorizontalFileUploaderProps> = ({\n attachmentArea,\n fileInputName,\n accept,\n file,\n fileInputRef,\n error,\n text = 'Drag and drop a file here or',\n title = 'Upload File',\n browseButtonText = 'Browse',\n buttonSize = 'large',\n withIcon = true,\n isActive = false,\n disabled,\n addFileCallback,\n align = 'center',\n justify = 'space-between',\n withOnlyBrowseButton,\n openFileDialogClickHandler,\n}) => {\n const classes = useStyles({isActive, withOnlyBrowseButton});\n\n return (\n <Row justify=\"flex-start\">\n {title && (\n <Text.Heading as=\"h4\" color=\"textPrimary\" classes={{root: classes.heading}}>\n {title}\n </Text.Heading>\n )}\n {file && <Row>{attachmentArea}</Row>}\n {!file && (\n <Row justify={justify} align={align} classes={{root: classes.droppableArea}}>\n {withIcon && <Icon.FolderIcon disabled={disabled} />}\n {text && <Text.Caption classes={{root: classes.caption}}>{text}</Text.Caption>}\n <Wrapper>\n <FileInput name={fileInputName} inputRef={fileInputRef} accept={accept} clickHandler={addFileCallback} />\n <Button.Secondary disabled={disabled} clickHandler={openFileDialogClickHandler} size={buttonSize} isFirst>\n {browseButtonText}\n </Button.Secondary>\n </Wrapper>\n </Row>\n )}\n {error && <Text.Error>{error}</Text.Error>}\n </Row>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n droppableArea: ({isActive, withOnlyBrowseButton}: {isActive: boolean; withOnlyBrowseButton: boolean}) => {\n let backgroundStyle = theme.palette.grey[50];\n\n if (withOnlyBrowseButton) {\n backgroundStyle = theme.palette.primary.contrastText;\n }\n\n if (isActive) {\n backgroundStyle = theme.palette.secondary.light;\n }\n\n return {\n width: '100%',\n padding: !withOnlyBrowseButton && '11px 11px 11px 16px',\n background: backgroundStyle,\n borderRadius: !withOnlyBrowseButton && borderGeneral.borderRadius,\n borderWidth: !withOnlyBrowseButton && borderGeneral.borderWidth,\n borderStyle: withOnlyBrowseButton ? 'none' : 'dashed',\n borderColor: !withOnlyBrowseButton && borderGeneral.borderColor,\n };\n },\n text: {\n padding: theme.spacing(1),\n },\n heading: {\n width: '100%',\n },\n caption: {\n fontWeight: 400,\n },\n}));\n","import React, {ChangeEvent, FC, ReactNode} from 'react';\nimport {Button, FileInput, Icon, Link, Wrapper, Text} from 'components-lib';\nimport {makeStyles} from '@material-ui/core';\nimport {IInputFile, IWithDisabled} from 'models';\n\ninterface IVerticalFileUploaderProps extends IWithDisabled {\n attachmentArea: ReactNode;\n fileInputName: string;\n accept: string;\n file: IInputFile;\n fileInputRef?: any;\n error: string;\n downloadLinkTitle?: string;\n downloadCallback?: () => void;\n addFileCallback?: (event: ChangeEvent<HTMLInputElement>) => void;\n openFileDialogClickHandler?: () => void;\n}\n\nexport const Vertical: FC<IVerticalFileUploaderProps> = ({\n disabled,\n downloadLinkTitle = 'Download Template',\n attachmentArea,\n fileInputName,\n accept,\n file,\n fileInputRef,\n error,\n downloadCallback,\n addFileCallback,\n openFileDialogClickHandler,\n}) => {\n const classes = useStyles();\n const shouldRenderLink = downloadLinkTitle && downloadCallback;\n\n return (\n <Wrapper>\n {file && <Wrapper>{attachmentArea}</Wrapper>}\n {!file && (\n <Wrapper className={classes.droppableArea}>\n <Icon.FolderIcon disabled={disabled} />\n <Wrapper className={classes.text}>Drag and drop a file here or</Wrapper>\n <Wrapper className={classes.buttonContainer}>\n <FileInput name={fileInputName} inputRef={fileInputRef} accept={accept} clickHandler={addFileCallback} />\n <Button.Secondary disabled={disabled} clickHandler={openFileDialogClickHandler}>\n Browse\n </Button.Secondary>\n {error && <Text.Error>{error}</Text.Error>}\n </Wrapper>\n {shouldRenderLink && <Link clickHandler={downloadCallback}>{downloadLinkTitle}</Link>}\n </Wrapper>\n )}\n </Wrapper>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n droppableArea: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n flexDirection: 'column',\n },\n buttonContainer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexDirection: 'column',\n padding: `${theme.spacing(0)}px ${theme.spacing(3)}px ${theme.spacing(3)}px ${theme.spacing(3)}px`,\n },\n text: {\n padding: theme.spacing(1),\n },\n}));\n","import React, {forwardRef, useCallback} from 'react';\nimport {batch} from 'react-redux';\nimport {MenuItem as MUIMenuItem, makeStyles} from '@material-ui/core';\nimport {IMenuItem, IWithChildren} from 'models/common';\nimport {isFunction} from 'utils/functions';\n\ninterface IMenuItemProps extends IWithChildren {\n item: IMenuItem;\n closeClickHandler: () => void;\n}\n\nexport const MenuItem = forwardRef(({item, children, closeClickHandler}: IMenuItemProps, ref: any) => {\n const classes = useStyles();\n\n const menuItemClickHandler = useCallback(\n (item: IMenuItem) =>\n batch(() => {\n closeClickHandler();\n isFunction(item.clickHandler) && item.clickHandler();\n }),\n [closeClickHandler]\n );\n\n return (\n <MUIMenuItem\n classes={{root: classes.root}}\n ref={ref}\n disabled={item.disabled}\n onClick={() => menuItemClickHandler(item)}\n >\n {children}\n </MUIMenuItem>\n );\n});\n\nconst useStyles = makeStyles(() => ({\n root: {\n fontWeight: 500,\n },\n}));\n\nMenuItem.displayName = 'MenuItem';\n","import React, {forwardRef, Fragment} from 'react';\nimport {IMenuItem} from 'models/common';\nimport {MenuItem} from './MenuItem';\n\ninterface IMenuItemListProps {\n items: IMenuItem[];\n closeClickHandler: () => void;\n}\n\nexport const MenuItemList = forwardRef(({items, closeClickHandler}: IMenuItemListProps, ref) => {\n return (\n <Fragment>\n {items.length &&\n items?.map((item, idx: number) => (\n <MenuItem ref={ref} key={idx} item={item} closeClickHandler={closeClickHandler}>\n {item.text}\n </MenuItem>\n ))}\n </Fragment>\n );\n});\n\nMenuItemList.displayName = 'MenuItemList';\n","import React, {forwardRef, ReactNode, useCallback, useMemo, useState} from 'react';\nimport {IconButton, Menu} from '@material-ui/core';\nimport {MenuItemList} from './MenuItemList';\nimport {IWithDisabled} from 'models';\nimport {Icon, Wrapper} from 'components-lib';\n\ninterface IMenuItem {\n text: string;\n clickHandler: () => void;\n}\n\ninterface IThreeDotsVerticalIconMenuProps extends IWithDisabled {\n items: IMenuItem[];\n icon?: ReactNode;\n}\n\nexport const ThreeDotsVerticalIconMenu = forwardRef(\n ({items, icon, disabled}: IThreeDotsVerticalIconMenuProps, ref: any) => {\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n\n const openClickHandler = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => setAnchorEl(event.currentTarget),\n []\n );\n\n const closeClickHandler = useCallback(() => setAnchorEl(null), []);\n\n const defaultIcon = useMemo(() => <Icon.MoreIcon disabled={disabled} />, [disabled]);\n\n const menuIconButton = useMemo(\n () => (\n <IconButton disabled={disabled} onClick={openClickHandler}>\n {icon ? icon : defaultIcon}\n </IconButton>\n ),\n [disabled, openClickHandler, icon, defaultIcon]\n );\n\n return (\n <Wrapper>\n {menuIconButton}\n <Menu ref={ref} anchorEl={anchorEl} keepMounted open={Boolean(anchorEl)} onClose={closeClickHandler}>\n {items.length && <MenuItemList items={items} closeClickHandler={closeClickHandler} />}\n </Menu>\n </Wrapper>\n );\n }\n);\n\nThreeDotsVerticalIconMenu.displayName = 'ThreeDotsVerticalIconMenu';\n","import React, {useMemo} from 'react';\nimport {MenuItem} from '@material-ui/core';\nimport {Dropdown} from 'admin';\nimport {EntitiesPerPageEnum} from 'enums';\nimport {toNumber} from 'utils';\n\ninterface IEntitiesPerPageDropdownProps {\n entitiesPerPage: EntitiesPerPageEnum;\n onEntitiesPerPageChosen: (num: number) => void;\n disabled?: boolean;\n}\n\nexport function EntitiesPerPageDropdown({\n entitiesPerPage,\n onEntitiesPerPageChosen,\n disabled = false,\n}: IEntitiesPerPageDropdownProps) {\n const menuItems = useMemo(\n () => Object.keys(EntitiesPerPageEnum).filter((key) => !isNaN(toNumber(EntitiesPerPageEnum[key]))),\n []\n );\n\n return (\n <Dropdown text={`${entitiesPerPage} per page`} label=\"Show: \">\n {(itemClickHandler: () => void) =>\n menuItems.map((key: string) => {\n const value = toNumber(EntitiesPerPageEnum[key]);\n return (\n <MenuItem\n disabled={disabled}\n key={key}\n onClick={() => {\n itemClickHandler();\n onEntitiesPerPageChosen(value);\n }}\n >\n {value}\n </MenuItem>\n );\n })\n }\n </Dropdown>\n );\n}\n","import React from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {IComponentWithChildren} from 'models';\n\ninterface IPageButtonProps extends IComponentWithChildren {\n clickHandler?: () => void;\n variant?: 'primary' | 'light';\n disabled?: boolean;\n}\n\nexport function PageButton({children, variant = 'light', clickHandler, disabled = false}: IPageButtonProps) {\n const classes = useStyles({variant, disabled});\n return (\n <div onClick={clickHandler} className={classes.root}>\n {children}\n </div>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: ({variant, disabled}: Pick<IPageButtonProps, 'variant' | 'disabled'>) => {\n const isPrimary = variant === 'primary';\n\n return {\n padding: `${theme.spacing(1)}px ${theme.spacing(2)}px`,\n background: isPrimary ? theme.palette.primary.main : 'transparent',\n color: isPrimary ? theme.palette.common.white : theme.palette.grey[400],\n borderRadius: theme.spacing(1),\n cursor: isPrimary ? 'default' : 'pointer',\n pointerEvents: disabled ? 'none' : 'auto',\n };\n },\n}));\n","import React, {memo, useCallback, useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\n\nimport {Button, Divider, Icon, Row, Text, Wrapper} from 'components-lib';\nimport {EntitiesPerPageDropdown} from './EntitiesPerPageDropdown';\nimport {PageButton} from './PageButton';\nimport {EntitiesPerPageEnum, PaginationNumEnum} from 'enums';\nimport {DISPLAY_PAGE_MARGIN} from 'utils';\n\ninterface IProps {\n currentPage: number;\n perPage: EntitiesPerPageEnum;\n totalCount: number;\n isVisible?: boolean;\n disabled?: boolean;\n onPageChange: (newPage: number) => void;\n onPerPageChange: (perPage: EntitiesPerPageEnum) => void;\n}\n\nfunction calcOverallPages(totalCount: number, perPage: number): number {\n return Math.ceil(totalCount / perPage);\n}\n\nfunction PaginationLocal({\n currentPage = PaginationNumEnum.ZERO,\n perPage = EntitiesPerPageEnum.FIFTY,\n totalCount = PaginationNumEnum.ZERO,\n onPageChange,\n onPerPageChange,\n isVisible = true,\n disabled,\n}: IProps) {\n const classes = useStyles({isVisible});\n const overallPages = calcOverallPages(totalCount, perPage);\n const shouldDisablePrevButton = currentPage === PaginationNumEnum.ONE || disabled;\n const shouldDisableNextButton = currentPage === overallPages || disabled;\n\n const onPageClicked = useCallback(\n (page: number) => {\n onPageChange(page);\n },\n [onPageChange]\n );\n\n const onPrevPageBtnClicked = useCallback(() => {\n if (currentPage > PaginationNumEnum.ONE) {\n onPageChange(currentPage - PaginationNumEnum.ONE);\n }\n }, [currentPage, onPageChange]);\n\n const onNextPageBtnClicked = useCallback(() => {\n if (currentPage < overallPages) {\n onPageChange(currentPage + PaginationNumEnum.ONE);\n }\n }, [currentPage, overallPages, onPageChange]);\n\n const generatePages = useCallback(() => {\n const pageNumberMapper: Map<number, any> = new Map();\n let keyId = 1;\n\n if (currentPage !== PaginationNumEnum.ONE) {\n pageNumberMapper.set(\n PaginationNumEnum.ONE,\n <PageButton clickHandler={() => onPageClicked(1)} key={`pn${keyId}`} variant=\"light\">\n 1\n </PageButton>\n );\n }\n\n // do it with recursion\n for (let pn = -DISPLAY_PAGE_MARGIN; pn <= DISPLAY_PAGE_MARGIN; pn++) {\n if (pn === PaginationNumEnum.ZERO) {\n keyId++;\n pageNumberMapper.set(\n currentPage,\n <PageButton\n disabled={disabled}\n variant=\"primary\"\n clickHandler={() => onPageClicked(currentPage)}\n key={`pn${keyId}`}\n >\n {currentPage}\n </PageButton>\n );\n } else {\n if (currentPage + pn > PaginationNumEnum.ZERO && currentPage + pn < overallPages) {\n keyId++;\n const currentPageNum = currentPage + pn;\n pageNumberMapper.set(\n currentPageNum,\n <PageButton\n disabled={disabled}\n variant=\"light\"\n key={`pn${keyId}`}\n clickHandler={() => onPageClicked(currentPageNum)}\n >\n {currentPageNum}\n </PageButton>\n );\n }\n }\n }\n\n keyId++;\n if (currentPage !== overallPages) {\n pageNumberMapper.set(\n overallPages,\n <PageButton\n disabled={disabled}\n key={`pn${keyId}`}\n variant=\"light\"\n clickHandler={() => onPageClicked(overallPages)}\n >\n {overallPages}\n </PageButton>\n );\n }\n\n const listOfPages: any[] = [];\n const pageIndexes = Array.from(pageNumberMapper.keys());\n\n for (let index = 0; index < pageIndexes.length; index++) {\n if (index === 0 || index === pageIndexes.length - 1) {\n listOfPages.push(pageNumberMapper.get(pageIndexes[index]));\n continue;\n }\n\n for (let dn = -1; dn <= 1; dn++) {\n if (dn === 0) {\n listOfPages.push(pageNumberMapper.get(pageIndexes[index]));\n } else {\n if (pageIndexes[index] + dn !== pageIndexes[index + dn]) {\n keyId++;\n listOfPages.push(\n <PageButton disabled={disabled} key={`pn${keyId}`} variant=\"light\">\n ...\n </PageButton>\n );\n }\n }\n }\n }\n\n return listOfPages;\n }, [currentPage, disabled, overallPages, onPageClicked]);\n\n const resultsText = useMemo(() => (totalCount !== 1 ? 'Results' : 'Result'), [totalCount]);\n\n const perPageDropdown = useMemo(\n () => (\n <>\n <Divider.Vertical />\n <EntitiesPerPageDropdown\n disabled={disabled}\n entitiesPerPage={perPage}\n onEntitiesPerPageChosen={onPerPageChange}\n />\n </>\n ),\n [disabled, perPage, onPerPageChange]\n );\n\n const pagination = useMemo(() => {\n const getIconColor = (shouldDisable: boolean) => {\n return shouldDisable ? 'disabled' : 'primary';\n };\n\n const prevButtonIconColor = getIconColor(shouldDisablePrevButton);\n const nextButtonIconColor = getIconColor(shouldDisableNextButton);\n\n return (\n <>\n <Button.Icon clickHandler={onPrevPageBtnClicked} disabled={shouldDisablePrevButton}>\n <Icon.TrendingLeft color={prevButtonIconColor} />\n </Button.Icon>\n <div key={currentPage} className={classes.item}>\n {generatePages()}\n </div>\n <Button.Icon clickHandler={onNextPageBtnClicked} disabled={shouldDisableNextButton}>\n <Icon.TrendingRight color={nextButtonIconColor} />\n </Button.Icon>\n </>\n );\n }, [\n classes.item,\n currentPage,\n generatePages,\n onNextPageBtnClicked,\n onPrevPageBtnClicked,\n shouldDisableNextButton,\n shouldDisablePrevButton,\n ]);\n\n return (\n <Row justify=\"space-between\" classes={{root: classes.root}}>\n <Wrapper className={classes.item}>\n <Wrapper className={classes.count}>\n <Text.Caption>\n {totalCount} {resultsText}\n </Text.Caption>\n </Wrapper>\n {totalCount > PaginationNumEnum.ONE && perPageDropdown}\n </Wrapper>\n <Wrapper className={classes.item}>{totalCount > perPage && pagination}</Wrapper>\n </Row>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: ({isVisible}: Pick<IProps, 'isVisible'>) => ({\n display: isVisible ? '' : 'none',\n paddingTop: theme.spacing(3),\n borderTop: `1px solid ${theme.palette.grey[100]}`,\n }),\n count: {\n minWidth: 80,\n },\n item: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'flex-start',\n alignItems: 'center',\n },\n}));\n\nexport default memo(PaginationLocal);\n","import React, {FC} from 'react';\nimport {\n makeStyles,\n TableCell as MUITableCell,\n TableHead as MUITableHead,\n TableRow as MUITableRow,\n} from '@material-ui/core';\nimport classnames from 'classnames';\nimport {IColumn} from 'models';\n\ninterface ITableHeaderProps {\n columns: IColumn[];\n}\n\nexport const TableHeader: FC<ITableHeaderProps> = ({columns}) => {\n const {header, cell} = useStyles();\n\n return (\n <MUITableHead>\n <MUITableRow>\n {columns.map((column) => (\n <MUITableCell key={column.id} size=\"small\" align={column.align} className={classnames(header, cell)}>\n {column.label}\n </MUITableCell>\n ))}\n </MUITableRow>\n </MUITableHead>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n header: {\n color: theme.palette.grey[700],\n fontWeight: 600,\n backgroundColor: theme.palette.common.white,\n },\n\n /**\n * Resizable feature is available in the MUI Grid component (see: @mui/x-data-grid-pro - under Commercial License)\n * https://material-ui.com/store/items/material-ui-pro/\n * React table supports MUI lib but there isn't enough information in the docs, please see the github issue for more information:\n * https://github.com/tannerlinsley/react-table/issues/3314\n */\n\n cell: {\n border: 0,\n /*\n Not optimized version\n\n '&:hover, &:active': {\n resize: 'horizontal',\n overflow: 'hidden',\n }, */\n },\n}));\n","import React, {FC, Fragment, useCallback} from 'react';\nimport {TableRow as MUITableRow, TableCell as MUITableCell, makeStyles} from '@material-ui/core';\nimport classnames from 'classnames';\nimport {MuiTableCellEnum} from 'enums/common';\nimport {IColumn} from 'models';\n\ninterface ITableRowProps {\n role: string;\n tabIndex: number;\n columns: IColumn[];\n row: any;\n}\n\nexport const TableRow: FC<ITableRowProps> = ({role, tabIndex, columns, row}) => {\n const {cell, textError} = useStyles();\n\n const calculateCellValue = useCallback(\n (column, value) => (column.format && typeof value === 'number' ? column.format(value) : value),\n []\n );\n\n return (\n <MUITableRow role={role} tabIndex={tabIndex}>\n {columns.map((column) => {\n const value = row[column[MuiTableCellEnum.Id]] as number;\n const errorMsg = row[MuiTableCellEnum.Error];\n const hasError = column[MuiTableCellEnum.HasError];\n const className = column[MuiTableCellEnum.ClassName];\n\n return (\n <Fragment key={column.id}>\n <MUITableCell\n align={column.align}\n className={classnames(cell, errorMsg && hasError && textError, className)}\n >\n {calculateCellValue(column, value)}\n </MUITableCell>\n </Fragment>\n );\n })}\n </MUITableRow>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n cell: () => ({\n border: 0,\n }),\n textError: {\n color: theme.palette.error.main,\n },\n}));\n","import React, {Fragment} from 'react';\nimport {TableRow as MUITableRow, TableCell as MUITableCell, makeStyles} from '@material-ui/core';\n\nexport const TableRowWithError = ({columns, row, withSecondRow}) => {\n const {textError} = useStyles();\n return (\n <Fragment>\n {columns.map((column) => {\n const value = row[column.id];\n const errorMsg = row['error'];\n return (\n <Fragment key={column.id}>\n <MUITableRow>\n <MUITableCell align={column.align} className={errorMsg && textError}>\n {column.format && typeof value === 'number' ? column.format(value) : value}\n </MUITableCell>\n </MUITableRow>\n {withSecondRow && errorMsg && (\n <MUITableRow>\n <MUITableCell className={textError} align={column.align}>\n {errorMsg}\n </MUITableCell>\n </MUITableRow>\n )}\n </Fragment>\n );\n })}\n </Fragment>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n textError: {\n color: theme.palette.error.main,\n },\n}));\n","import React, {FC, Fragment, memo} from 'react';\nimport {Table as MUITable, TableBody as MUITableBody, TableContainer as MUITableContainer} from '@material-ui/core';\nimport {makeStyles} from '@material-ui/core/styles';\nimport {IColumn} from 'models/library/common';\nimport {TableHeader} from './TableHeader';\nimport {TableRow} from './TableRow';\nimport {TableRowWithError} from './TableRowWithError';\n\ninterface ITableProps {\n columns: IColumn[];\n rows: any[];\n withTableHead?: boolean;\n withMainRow?: boolean;\n hasRows?: boolean;\n}\n\nconst Table: FC<ITableProps> = ({columns, rows, withTableHead = true, withMainRow = true, hasRows = true}) => {\n const {tableBody} = useStyles();\n const isEmptyString = (el: IColumn) => el.label === '';\n\n return (\n <Fragment>\n {hasRows ? (\n <MUITableContainer>\n <MUITable stickyHeader aria-label=\"sticky table\" className=\"simple-table\">\n {withTableHead && !columns.every(isEmptyString) && <TableHeader columns={columns} />}\n {rows && (\n <MUITableBody className={tableBody}>\n {rows?.map((row: any, idx: number) => {\n return (\n <Fragment key={idx}>\n {withMainRow && <TableRow role=\"checkbox\" tabIndex={tabIndex} columns={columns} row={row} />}\n {!withMainRow && <TableRowWithError columns={columns} row={row} withSecondRow />}\n </Fragment>\n );\n })}\n </MUITableBody>\n )}\n </MUITable>\n </MUITableContainer>\n ) : (\n <Fragment>No results found</Fragment>\n )}\n </Fragment>\n );\n};\n\nconst tabIndex = -1;\n\nconst useStyles = makeStyles((theme) => ({\n tableBody: {\n '& tr:nth-child(even)': {\n backgroundColor: theme.palette.grey[50],\n },\n },\n}));\n\nexport default memo(Table);\n","import React, {ReactNode, useCallback, useState, useEffect} from 'react';\nimport {Accordion as AccordionMui, AccordionDetails, AccordionSummary, makeStyles} from '@material-ui/core';\nimport classnames from 'classnames';\nimport {Icon, Row, Text} from 'components-lib';\nimport {IComponentWithChildren, IComponentWithClassName} from 'models';\nimport {borderGeneral} from 'styles';\ninterface IAccordionProps extends IComponentWithChildren, IComponentWithClassName {\n heading: string | ReactNode;\n headingAs?: 'h2' | 'h3' | 'h4';\n headingActionLeft?: ReactNode;\n headingActionRight?: ReactNode;\n withBorder?: boolean;\n disabled?: boolean;\n draggable?: boolean;\n initialIsExpanded?: boolean;\n withGrayBackground?: boolean;\n}\n\nexport function Accordion({\n heading,\n children,\n className,\n headingAs = 'h4',\n headingActionLeft,\n headingActionRight,\n withBorder = false,\n disabled = false,\n initialIsExpanded = false,\n withGrayBackground = false,\n draggable = false,\n}: IAccordionProps) {\n const [isExpanded, setIsExpanded] = useState(initialIsExpanded);\n const classes = useStyles({isExpanded, withBorder, withGrayBackground, draggable});\n\n const clickHandler = useCallback(() => {\n setIsExpanded(!isExpanded);\n }, [isExpanded]);\n\n const isHeadingString = typeof heading === 'string';\n\n useEffect(() => {\n setIsExpanded(initialIsExpanded);\n }, [initialIsExpanded]);\n\n return (\n <div className={classnames(classes.root, className)}>\n <AccordionMui\n expanded={isExpanded}\n classes={{root: classes.rootOverride, expanded: classes.expandedOverride, disabled: classes.disabled}}\n disabled={disabled}\n >\n <AccordionSummary\n expandIcon={isExpanded ? <Icon.MinimizeIcon /> : <Icon.AddIcon />}\n onClick={clickHandler}\n classes={{root: classes.rootOverride, expanded: classes.expandedOverride}}\n >\n <Row justify=\"flex-start\">\n {headingActionLeft && headingActionLeft}\n {isHeadingString ? (\n <Text.Heading as={headingAs} classes={{root: classes.heading}}>\n {heading}\n </Text.Heading>\n ) : (\n heading\n )}\n {headingActionRight && <div className={classes.headingActionRight}>{headingActionRight}</div>}\n </Row>\n </AccordionSummary>\n {isExpanded && <AccordionDetails>{children}</AccordionDetails>}\n </AccordionMui>\n </div>\n );\n}\n\nconst useStyles = makeStyles((theme) => {\n const minHeight = theme.spacing(2) + theme.spacing(3);\n\n return {\n root: ({withBorder, withGrayBackground}: Pick<IAccordionProps, 'withBorder' | 'withGrayBackground'>) => {\n let styles = {\n width: '100%',\n margin: `${theme.spacing(2)}px ${theme.spacing(3)}px ${theme.spacing(2)}px 0`,\n backgroundColor: withGrayBackground ? theme.palette.grey[50] : 'transparent',\n };\n\n if (withBorder) {\n styles = {...styles, ...borderGeneral};\n }\n\n return styles;\n },\n rootOverride: ({isExpanded, draggable}: {isExpanded: boolean; draggable: boolean}) => ({\n minHeight,\n backgroundColor: 'transparent',\n boxShadow: 'none',\n '& > .MuiButtonBase-root': {\n display: 'flex',\n justifyContent: 'space-between',\n padding: `0 &{theme.spacing(2)} 0 0`,\n },\n '& > .MuiAccordionSummary-content': {\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n cursor: draggable ? 'move' : 'pointer',\n },\n '& > .MuiAccordionSummary-expandIcon': {\n transform: isExpanded ? 'translateY(-8px)' : 'translateY(0)',\n },\n }),\n expandedOverride: {\n minHeight: `${minHeight}px!important`,\n marginTop: '0!important',\n marginBottom: '0!important',\n },\n heading: {\n margin: '0!important',\n },\n headingActionRight: {\n marginLeft: 'auto',\n },\n disabled: {\n backgroundColor: 'rgba(204,203,203,0.12)!important',\n },\n };\n});\n","import React, {SyntheticEvent} from 'react';\nimport {Avatar as AvatarMui, makeStyles} from '@material-ui/core';\nimport {IComponentWithChildren} from 'models';\nimport {isFunction} from 'utils';\n\ninterface IAvatarProps extends IComponentWithChildren {\n clickHandler?: (event: SyntheticEvent) => void;\n avatarUrl?: string;\n size?: 'small' | 'large';\n variant?: 'circle' | 'rounded' | 'square';\n}\n\nexport function Avatar({children, clickHandler, avatarUrl, size = 'large'}: IAvatarProps) {\n const classes = useStyles({size, clickHandler});\n return (\n <AvatarMui src={avatarUrl} onClick={clickHandler} classes={{root: classes.root}}>\n {children}\n </AvatarMui>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: ({size, clickHandler}: Pick<IAvatarProps, 'size' | 'clickHandler'>) => {\n const isSmall = size === 'small';\n const isClickable = isFunction(clickHandler);\n\n let additionalStyles = {};\n\n if (isSmall) {\n additionalStyles = {\n width: 24,\n height: 24,\n marginTop: theme.spacing(1),\n marginRight: theme.spacing(2),\n fontSize: 13,\n };\n }\n\n return {\n cursor: isClickable ? 'pointer' : 'auto',\n background: theme.palette.primary.main,\n ...additionalStyles,\n };\n },\n}));\n","import {makeStyles} from '@material-ui/core';\nimport classnames from 'classnames';\nimport {IComponentWithClassName} from 'models';\nimport React from 'react';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface IBulletProps extends IComponentWithClassName {}\n\nexport function Bullet({className}: IBulletProps) {\n const classes = useStyles();\n return <div className={classnames(classes.bullet, className)}></div>;\n}\n\nconst useStyles = makeStyles((theme) => ({\n bullet: {\n display: 'list-item',\n listStyleType: 'disc',\n listStylePosition: 'inside',\n color: theme.palette.secondary.main,\n },\n}));\n","import React, {ReactNode} from 'react';\nimport {CardHeader} from '@material-ui/core';\nimport CardMui from '@material-ui/core/Card';\nimport CardActions from '@material-ui/core/CardActions';\nimport CardContent from '@material-ui/core/CardContent';\nimport {makeStyles} from '@material-ui/core/styles';\nimport classnames from 'classnames';\nimport {IComponentWithChildren, IComponentWithClassName} from 'models';\ninterface ICardProps extends IComponentWithChildren, IComponentWithClassName {\n header?: string;\n actions?: () => ReactNode;\n}\n\nexport function Card({header, children, actions, className}: ICardProps) {\n const classes = useStyles();\n return (\n <CardMui className={classnames(classes.root, className)} variant=\"outlined\">\n {!!header && <CardHeader className={classes.header} title={header} />}\n <CardContent className={classes.content}>{children}</CardContent>\n {!!actions && <CardActions className={classes.actions}>{actions()}</CardActions>}\n </CardMui>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n minWidth: 300,\n width: '100%',\n marginBottom: theme.spacing(3),\n padding: `${theme.spacing(3)}px ${theme.spacing(2) + theme.spacing(3)}px`,\n overflowY: 'auto',\n },\n header: {\n padding: 0,\n marginBottom: theme.spacing(3),\n },\n content: {\n padding: 0,\n '&:last-child': {\n paddingBottom: 0,\n },\n },\n actions: {\n padding: 0,\n },\n}));\n","import {Checkbox as CheckboxMui, FormControlLabel, makeStyles} from '@material-ui/core';\nimport React, {SyntheticEvent} from 'react';\n\ninterface ICheckboxProps {\n checked?: boolean;\n name?: string;\n label?: string;\n color?: 'primary' | 'secondary';\n disabled?: boolean;\n value?: string;\n changeHandler?: (event: SyntheticEvent, selected?: boolean) => void;\n}\n\nexport function Checkbox({\n checked,\n color = 'primary',\n name,\n label,\n value,\n changeHandler,\n disabled = false,\n ...rest\n}: ICheckboxProps) {\n const classes = useStyles();\n\n return (\n <FormControlLabel\n onChange={changeHandler}\n label={label}\n value={value}\n checked={checked}\n classes={{root: classes.root}}\n control={<CheckboxMui name={name} color={color} disabled={disabled} checked={checked} />}\n {...rest}\n />\n );\n}\n\nconst useStyles = makeStyles({\n root: {\n marginRight: 0,\n },\n});\n","import React from 'react';\nimport 'date-fns';\nimport DateFnsUtils from '@date-io/date-fns';\nimport {makeStyles} from '@material-ui/core';\nimport {KeyboardDatePicker, MuiPickersUtilsProvider} from '@material-ui/pickers';\nimport {errorMessages} from 'utils';\ninterface IDatePickerProps {\n value: Date;\n label: string;\n minDate?: Date;\n maxDate?: Date;\n maxWidth?: boolean;\n disableFuture?: boolean;\n disablePast?: boolean;\n disabled?: boolean;\n format?: string;\n minDateMessage?: string;\n maxDateMessage?: string;\n changeHandler: (date: Date, value?: string) => void;\n}\n\nexport function DatePicker({\n value,\n label,\n changeHandler,\n maxWidth,\n disableFuture = true,\n disablePast = false,\n minDateMessage,\n maxDateMessage,\n disabled,\n format = 'MM/dd/yyyy',\n}: IDatePickerProps) {\n const classes = useStyles({maxWidth});\n\n return (\n <MuiPickersUtilsProvider utils={DateFnsUtils}>\n <KeyboardDatePicker\n className={classes.root}\n disableToolbar\n autoOk\n variant=\"inline\"\n format={format}\n margin=\"normal\"\n label={label}\n value={value}\n disabled={disabled}\n onChange={changeHandler}\n invalidDateMessage={errorMessages.invalidDate}\n disableFuture={disableFuture}\n disablePast={disablePast}\n minDateMessage={minDateMessage}\n maxDateMessage={maxDateMessage}\n InputProps={{className: classes.input, disableUnderline: true}}\n />\n </MuiPickersUtilsProvider>\n );\n}\n\nconst useStyles = makeStyles((theme) => {\n return {\n root: ({maxWidth}: Pick<IDatePickerProps, 'maxWidth'>) => {\n let styles: any = {\n margin: 0,\n };\n\n if (maxWidth) {\n styles = {...styles, width: '100%'};\n }\n\n return styles;\n },\n input: {\n fontWeight: 600,\n padding: '4.7px 0px 4.7px 12px',\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: theme.palette.divider,\n borderRadius: theme.spacing(1),\n },\n };\n});\n","import {connect} from 'formik';\n\ninterface IProps {\n children: (state: any) => any;\n}\n\nexport default connect<IProps>(({formik, children}) => children(formik));\n","import Checkbox from '@material-ui/core/Checkbox';\nimport TextField from '@material-ui/core/TextField';\nimport CheckBoxIcon from '@material-ui/icons/CheckBox';\nimport CheckBoxOutlineBlankIcon from '@material-ui/icons/CheckBoxOutlineBlank';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport {IOption} from 'models';\nimport * as React from 'react';\nimport {useState} from 'react';\nimport {AUTOCOMPLETE_TIMEOUT} from 'utils';\nimport State from '../State';\n\nconst icon = <CheckBoxOutlineBlankIcon fontSize=\"small\" />;\nconst checkedIcon = <CheckBoxIcon fontSize=\"small\" />;\n\ninterface IProps {\n id?: string;\n name: string;\n options?: IOption[];\n placeholder?: string;\n label?: string;\n noOptionsText?: string;\n isMultipleSelect?: boolean;\n disabled?: boolean;\n onStopTyping?: (text: string) => Promise<IOption[]>;\n handleChange?: (name: string, value: IOption[]) => void;\n}\n\n/// TODO refactor\nexport default function AutocompleteWithSelect({\n id,\n name,\n options,\n label,\n placeholder,\n onStopTyping,\n noOptionsText,\n isMultipleSelect,\n disabled,\n handleChange,\n}: IProps) {\n const [currentOptions, setCurrOptions] = useState<IOption[]>(options || []);\n const [timeout, setCurrTimeout] = useState<any>(0);\n const [searchText, setSearchText] = useState<string | null | undefined>('');\n\n const onChange = (event: any, chosenOpts: IOption[], reason: any, form: any) => {\n if (reason === 'clear' || (reason === 'remove-option' && chosenOpts.length === 0)) {\n setCurrOptions([]);\n }\n\n if (typeof handleChange === 'function') {\n handleChange(name, chosenOpts);\n }\n\n form.setFieldValue(name, chosenOpts);\n };\n\n const getOptionSelected = (option: IOption, chosenValue: IOption) => {\n return option.value === chosenValue.value;\n };\n\n const onTextChange = async (event: any, form: any) => {\n const textValue = event.target.value;\n setSearchText('');\n\n if (onStopTyping) {\n if (timeout) {\n clearTimeout(timeout);\n }\n\n setCurrTimeout(\n setTimeout(async () => {\n const existing = form.values[name] || [];\n const opts = await onStopTyping(textValue);\n\n setCurrOptions(opts.concat(existing));\n form.setFieldValue(name, existing);\n setSearchText(textValue);\n }, AUTOCOMPLETE_TIMEOUT)\n );\n }\n };\n\n const onFocus = () => {\n if (onStopTyping) {\n setCurrOptions([]);\n setSearchText('');\n }\n };\n\n return (\n <State>\n {(form) => (\n <>\n <Autocomplete\n id={id}\n freeSolo\n style={{width: '100%'}}\n multiple={isMultipleSelect === false ? isMultipleSelect : true}\n disabled={disabled ? disabled : false}\n options={currentOptions || []}\n disableCloseOnSelect\n value={form.values[name] || []}\n onChange={(event: any, opt: IOption[], reason: any) => onChange(event, opt, reason, form)}\n getOptionLabel={(option: IOption) => option.label}\n getOptionSelected={(option: IOption, value: any) => getOptionSelected(option, value)}\n onFocus={onFocus}\n noOptionsText={searchText && searchText.trim().length > 0 ? 'No options available' : noOptionsText}\n renderOption={(option: IOption, {selected}) => (\n <>\n <Checkbox icon={icon} checkedIcon={checkedIcon} checked={selected} />\n {option.label}\n </>\n )}\n renderInput={(params) => (\n <TextField\n {...params}\n variant=\"outlined\"\n onChange={(event) => onTextChange(event, form)}\n label={label}\n placeholder={placeholder}\n />\n )}\n />\n </>\n )}\n </State>\n );\n}\n","import Checkbox from '@material-ui/core/Checkbox';\nimport TextField from '@material-ui/core/TextField';\nimport CheckBoxIcon from '@material-ui/icons/CheckBox';\nimport CheckBoxOutlineBlankIcon from '@material-ui/icons/CheckBoxOutlineBlank';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport React, {useRef} from 'react';\nimport State from '../State';\n\nconst icon = <CheckBoxOutlineBlankIcon fontSize=\"small\" />;\nconst checkedIcon = <CheckBoxIcon fontSize=\"small\" />;\n\nexport interface IOption {\n value: string;\n label: string;\n}\n\ninterface IProps {\n id?: string;\n name: string;\n options: IOption[];\n placeholder?: string;\n label?: string;\n isMultipleSelect?: boolean;\n disabled?: boolean;\n handleChange?: (name: string, value: IOption[]) => void;\n}\n\nexport const AutocompleteWithSelect = ({\n id,\n name,\n options,\n label,\n placeholder,\n isMultipleSelect,\n disabled,\n handleChange,\n}: IProps) => {\n const onChange = (event: any, opt: IOption[], form: any) => {\n form.setFieldValue(name, opt);\n\n if (typeof handleChange === 'function') {\n handleChange(name, opt);\n }\n };\n\n const getOptionSelected = (option: IOption, chosenValue: IOption) => {\n return option.value === chosenValue.value;\n };\n\n const textInput = useRef(null);\n\n return (\n <State>\n {(form) => (\n <React.Fragment>\n <Autocomplete\n multiple={isMultipleSelect === false ? isMultipleSelect : true}\n id={id}\n options={options}\n disabled={disabled ? disabled : false}\n disableCloseOnSelect\n value={form.values[name]}\n onChange={(event: any, opt: IOption[]) => onChange(event, opt, form)}\n getOptionLabel={(option: IOption) => option.label}\n getOptionSelected={(option: IOption, value: any) => getOptionSelected(option, value)}\n renderOption={(option: IOption, {selected}) => (\n <React.Fragment>\n <Checkbox icon={icon} checkedIcon={checkedIcon} checked={selected} />\n {option.label}\n </React.Fragment>\n )}\n renderInput={(params) => (\n <TextField {...params} variant=\"outlined\" inputRef={textInput} label={label} placeholder={placeholder} />\n )}\n />\n </React.Fragment>\n )}\n </State>\n );\n};\n","import React, {useState} from 'react';\nimport {DeleteOutline} from '@material-ui/icons';\n\nimport {Button, DatePicker} from 'components-lib';\nimport 'react-datepicker/dist/react-datepicker.css';\nimport State from '../State';\n\ninterface IProps {\n name: string;\n className?: string;\n placeholder?: string;\n date: any;\n onChange: any;\n withButton: boolean;\n customInput?: any;\n dateFormat?: string;\n maxWidth?: boolean;\n label: string;\n}\n\nexport default function DatePickerCustom({name, date, placeholder, withButton, maxWidth}: IProps) {\n const [currDate, setCurrDate] = useState<Date | null>(date);\n\n const handleDateChange = (date: Date | null, form: any) => {\n setCurrDate(date);\n form.setFieldValue(name, date);\n };\n\n const handleResetDate = (form: any) => {\n handleDateChange(null, form);\n };\n\n return (\n <State>\n {(form) => (\n <React.Fragment>\n <DatePicker\n label={placeholder}\n value={(currDate && new Date(currDate)) || null}\n changeHandler={(date: any) => handleDateChange(date, form)}\n maxWidth={maxWidth}\n />\n {withButton && (\n <Button.Primary clickHandler={() => handleResetDate(form)}>\n <DeleteOutline fontSize=\"small\" />\n </Button.Primary>\n )}\n </React.Fragment>\n )}\n </State>\n );\n}\n","/* eslint-disable @typescript-eslint/no-use-before-define */\n\nimport {makeStyles} from '@material-ui/core';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport Input from '@material-ui/core/Input';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Select from '@material-ui/core/Select';\nimport {IOption} from 'models';\nimport React, {useCallback} from 'react';\nimport {filter, findIndex} from 'utils';\nimport State from '../State';\n\ninterface IProps {\n id?: string;\n name: string;\n form: any;\n options: IOption[];\n placeholder?: string;\n}\n\n// TODO refactor\nexport default function MultiSelect({id, name, options, placeholder}: IProps) {\n const classes = useStyles();\n const onChange = useCallback(\n (event: any, opt: any, form: any) => {\n const key = opt.key.replace(/^\\D+/g, '');\n const newSelect: IOption = {value: key, label: opt.props.value};\n let optElements = form.values[name];\n\n if (findIndex(form.values[name], newSelect) > -1) {\n optElements = filter(optElements, (p) => p.label !== newSelect.label);\n } else {\n optElements.push(newSelect);\n }\n form.setFieldValue(name, optElements);\n },\n [name]\n );\n\n return (\n <State>\n {(form) => (\n <Select\n style={{width: '100%'}}\n labelId={id + '-label'}\n id={id}\n multiple\n value={form.values[name]}\n onChange={(event: any, opt: any) => onChange(event, opt, form)}\n input={<Input />}\n renderValue={(selected: IOption[]) =>\n selected && selected.length > 0 ? selected.map((s) => s.label).join(', ') : placeholder\n }\n >\n {options.map((opt: IOption) => (\n <MenuItem key={opt.value} value={opt.label} classes={{root: classes.menuItemRootOverride}}>\n <Checkbox checked={isChecked(form.values[name], opt)} />\n <ListItemText primary={opt.label} />\n </MenuItem>\n ))}\n </Select>\n )}\n </State>\n );\n}\n\nconst isChecked = (optElements: IOption[], opt: IOption) => {\n return optElements.filter((op) => op.value === opt.value).length > 0;\n};\n\nconst useStyles = makeStyles(() => {\n return {\n root: {},\n menuItemRootOverride: {\n '& MuiIconButton-root input': {\n padding: 0,\n },\n padding: 0,\n },\n };\n});\n","import {Search} from 'components-lib';\nimport React from 'react';\nimport State from '../State';\n\ninterface IProps {\n name: any;\n isDisabled?: boolean;\n}\n\n// TODO refactor\nexport default function CustomizedSearchButton({name, isDisabled}: IProps) {\n const onChange = (event: any, form: any) => {\n form.setFieldValue(name, event.target.value);\n };\n\n return (\n <State>\n {(form) => (\n <Search\n value={form.values[name]}\n changeHandler={(ev: any) => onChange(ev, form)}\n submitDisabled={form.isSubmitting || isDisabled}\n />\n )}\n </State>\n );\n}\n","/* eslint-disable react/display-name */\nimport Input from '@material-ui/core/Input';\nimport TextareaAutosize from '@material-ui/core/TextareaAutosize';\nimport {Row} from 'components-lib';\nimport {Checkbox} from 'components-lib/Checkbox/Checkbox';\nimport {ErrorMessage, Field, FieldArray} from 'formik';\nimport * as React from 'react';\nimport {uniqueId} from 'utils';\nimport AutocompleteCustom from './Autocomplete';\nimport {AutocompleteWithSelect} from './AutocompleteWithSelect';\nimport DatePicker from './DatePicker';\nimport MultiSelect from './Multiselect';\nimport CustomizedSearchButton from './Search';\n\n// TODO refactor and drop in favor of the form module\nconst COMPONENTS = {\n undefined: ({field, ...props}: any) => <Input type=\"text\" className=\"form-control\" {...field} {...props} />,\n text: ({field, ...props}: any) => <Input type=\"text\" className=\"form-control\" {...field} {...props} />,\n search: ({form: _form, field, ...props}: any) => <CustomizedSearchButton form={_form} {...field} {...props} />,\n password: ({field, ...props}: any) => <Input type=\"password\" className=\"form-control\" {...field} {...props} />,\n email: ({field, ...props}: any) => <Input type=\"email\" className=\"form-control\" {...field} {...props} />,\n textarea: ({field, ...props}: any) => <TextareaAutosize className=\"form-control\" {...field} {...props} />,\n checkbox: ({field, form, ...props}: any) => {\n return (\n <Row justify=\"flex-start\">\n <Checkbox\n {...props}\n changeHandler={() => {\n const isValueSet = field.value.includes(props.value);\n const nextValue = isValueSet\n ? field.value.filter((value) => value !== props.value)\n : field.value.concat(props.value);\n form.setFieldValue(field.name, nextValue);\n }}\n label={props.label}\n name={field.name}\n value={props.value}\n />\n </Row>\n );\n },\n autocomplete: ({form: _form, field, options, isMultipleSelect, disabled, handleChange, ...props}: any) => (\n <AutocompleteCustom\n options={options}\n form={_form}\n isMultipleSelect={isMultipleSelect}\n disabled={disabled}\n handleChange={handleChange}\n {...field}\n {...props}\n />\n ),\n customAutocomplete: ({form: _form, field, options, isMultipleSelect, disabled, handleChange, ...props}: any) => {\n return (\n <AutocompleteWithSelect\n isMultipleSelect={isMultipleSelect}\n disabled={disabled}\n handleChange={handleChange}\n options={options}\n form={_form}\n {...field}\n {...props}\n />\n );\n },\n multiselect: ({form, field, options, ...props}: any) => (\n <MultiSelect options={options} form={form} {...field} {...props} />\n ),\n datePicker: ({field, placeholder, date, onChange, ...props}: any) => (\n <DatePicker placeholder={placeholder} date={date} onChange={onChange} {...field} {...props} />\n ),\n};\n\ninterface IProps {\n name: string;\n label?: any;\n control?: any;\n noLabel?: boolean;\n isMultipleSelect?: boolean;\n disabled?: boolean;\n handleChange?: (name: any, value: any[]) => void;\n id?: string;\n [key: string]: any;\n}\n\nexport default function FormField({\n id,\n label,\n name,\n component,\n isMultipleSelect,\n disabled,\n handleChange,\n ...otherProps\n}: IProps) {\n const idx = React.useMemo(() => id || uniqueId(`form-${name}-`), [id, name]);\n\n const componentIsFunction: boolean = typeof component === 'function';\n\n const Component: any = componentIsFunction ? component : (COMPONENTS as any)[component];\n\n return (\n <>\n {Component.isArray ? (\n <FieldArray name={name}>\n {(arrayHelpers) => (\n <Component\n arrayHelpers={arrayHelpers}\n array={arrayHelpers.form.values[name]}\n id={id}\n label={label}\n {...otherProps}\n />\n )}\n </FieldArray>\n ) : (\n <Field\n id={idx}\n name={name}\n component={Component}\n isMultipleSelect={isMultipleSelect}\n disabled={!!disabled}\n handleChange={handleChange}\n label={label}\n {...otherProps}\n />\n )}\n <ErrorMessage name={name}>{(error) => <div>{error}</div>}</ErrorMessage>\n </>\n );\n}\n\nFormField.defaultProps = {\n component: 'text',\n};\n","import {Field} from 'formik';\n\nexport default Field;\n","import {makeStyles} from '@material-ui/core';\nimport {ErrorMessage, Formik} from 'formik';\nimport * as React from 'react';\nimport ButtonReset from './ButtonReset';\nimport ButtonSubmit from './ButtonSubmit';\nimport Field from './Field';\nimport Input from './Input';\nimport CustomizedSearchButton from './Search';\nimport State from './State';\n\ninterface IProps<T = any> {\n initialValues: T;\n submit?: (values: T, resetForm: any, setSubmitting: any) => any;\n className?: string;\n validate: (values: T) => any;\n children: React.ReactNode;\n}\n\nexport function Form({initialValues, validate, submit, className, children}: IProps) {\n const {root} = useStyles();\n return (\n <div className={root}>\n <Formik\n enableReinitialize\n initialValues={initialValues}\n validate={validate}\n onSubmit={async (values, {setSubmitting, resetForm}) => {\n if (submit) {\n await submit(values, resetForm, setSubmitting);\n }\n setSubmitting(false);\n }}\n >\n {(props) => (\n <form onSubmit={props.handleSubmit} className={className}>\n {children}\n </form>\n )}\n </Formik>\n </div>\n );\n}\n\nconst useStyles = makeStyles({\n root: {\n width: '100%',\n },\n});\n\nForm.Input = Input;\nForm.ButtonSubmit = ButtonSubmit;\nForm.Field = Field;\nForm.State = State;\nForm.ErrorMessage = ErrorMessage;\nForm.ButtonReset = ButtonReset;\nForm.Search = CustomizedSearchButton;\n","import React from 'react';\nimport {Button} from 'components-lib';\nimport State from './State';\nimport {IButtonBaseProps} from 'components-lib/buttons_/IButtonBaseProps';\n\ninterface IButtonSubmitProps extends IButtonBaseProps {\n text?: string;\n isDisabled?: boolean;\n isFirst?: boolean;\n}\n\nexport default function ButtonSubmit({text, isDisabled, isFirst = false, size = 'small'}: IButtonSubmitProps) {\n return (\n <State>\n {(form) => (\n <Button.Primary\n size={size}\n disabled={form.isSubmitting || isDisabled}\n isFirst={isFirst}\n clickHandler={() => {\n form.submitForm();\n }}\n >\n {text ? text : 'Submit'}\n </Button.Primary>\n )}\n </State>\n );\n}\n","import {Button} from 'components-lib';\nimport * as React from 'react';\nimport State from './State';\n\ninterface IProps {\n text?: string;\n onReset?: (form: any) => void;\n disabled?: boolean;\n}\n\nexport default function ButtonReset({text, disabled, onReset}: IProps) {\n const onClick = (event: any, form: any) => {\n form.resetForm();\n\n if (onReset) {\n onReset(form);\n }\n };\n\n return (\n <State>\n {(form) => (\n <Button.Secondary\n size=\"small\"\n disabled={form.isSubmitting || disabled}\n clickHandler={(ev) => onClick(ev, form)}\n >\n {text ? text : 'Reset'}\n </Button.Secondary>\n )}\n </State>\n );\n}\n","import React, {Fragment, ReactNode} from 'react';\nimport {CircularProgress, InputAdornment, makeStyles} from '@material-ui/core';\nimport TextField from '@material-ui/core/TextField';\nimport {IComponentWithClassName} from 'models';\n\ninterface IInputProps extends IComponentWithClassName {\n loading?: boolean;\n withIcon?: boolean;\n iconPosition?: 'start' | 'end';\n icon?: ReactNode;\n value?: string | null;\n name?: string | null;\n changeHandler?: (ev: React.ChangeEvent<HTMLInputElement>) => void;\n error?: boolean;\n helperText?: string | null;\n placeholder?: string;\n withMargin?: boolean;\n disabled?: boolean;\n onKeyUp?: any;\n color?: string;\n type?: string;\n autoFocus?: boolean;\n fullWidth?: boolean;\n}\n\nexport function Input({\n value,\n name,\n changeHandler,\n withIcon,\n iconPosition,\n icon,\n error = false,\n helperText,\n placeholder,\n withMargin = true,\n disabled = false,\n onKeyUp,\n type,\n color,\n loading = false,\n autoFocus,\n fullWidth = true,\n ...rest\n}: IInputProps) {\n const {root} = useStyles({withMargin, color});\n\n let props: any = {\n variant: 'outlined',\n size: 'small',\n };\n\n if (withIcon || loading) {\n const positionProp = iconPosition === 'start' ? 'startAdornment' : 'endAdornment';\n\n props = {\n ...props,\n InputProps: {\n [positionProp]: (\n <Fragment>\n {loading ? <CircularProgress color=\"inherit\" size={20} /> : null}\n {icon && <InputAdornment position={iconPosition}>{icon}</InputAdornment>}\n </Fragment>\n ),\n },\n };\n }\n\n return (\n <TextField\n name={name}\n value={value}\n onChange={changeHandler}\n className={root}\n fullWidth={fullWidth}\n error={error}\n helperText={helperText}\n placeholder={placeholder}\n disabled={disabled}\n onKeyUp={onKeyUp}\n type={type}\n autoFocus={autoFocus}\n {...props}\n {...rest}\n />\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: ({withMargin, color}: {withMargin: boolean; color: string}) => {\n const margin = theme.spacing(3);\n return {\n margin: withMargin ? `${margin} 0 ${margin} 0` : 0,\n backgroundColor: color ? color : theme.palette.common.white,\n };\n },\n}));\n","import {makeStyles} from '@material-ui/core';\nimport {Text} from 'components-lib';\nimport React, {memo} from 'react';\n\ninterface ILabelProps {\n label: string;\n withLeftMargin?: boolean;\n withFontBold?: boolean;\n withMarginBottom?: boolean;\n className?: any;\n}\n\nexport const Label = memo(({label, withFontBold, withLeftMargin = true, withMarginBottom = true}: ILabelProps) => {\n const classes = useStyles({withLeftMargin, withFontBold, withMarginBottom});\n return (\n <div className={classes.label}>\n <Text.Caption classes={{caption: classes.caption}}>{label}</Text.Caption>\n </div>\n );\n});\n\nconst useStyles = makeStyles((theme) => ({\n label: ({withLeftMargin, withMarginBottom}: {withLeftMargin: boolean; withMarginBottom: boolean}) => {\n const leftMargin = theme.spacing(1) + theme.spacing(2);\n\n let styles: any = {\n marginLeft: withLeftMargin ? `${leftMargin}px` : 0,\n };\n\n if (withMarginBottom) {\n styles = {...styles, marginBottom: theme.spacing(2)};\n }\n\n return styles;\n },\n\n caption: ({withFontBold}: {withFontBold: boolean}) => {\n if (withFontBold) {\n return {\n fontWeight: 600,\n color: theme.palette.grey[700],\n };\n }\n },\n}));\n","import React, {RefObject} from 'react';\nimport useInfiniteScroll from 'react-infinite-scroll-hook';\nimport {IComponentWithChildren} from 'models';\n\nconst threshold = 120;\n\ninterface IListInfiniteProps extends IComponentWithChildren {\n hasMorePages: boolean;\n loading: boolean;\n loadMoreHandler: () => void;\n}\n\nexport function ListInfinite({children, loading, hasMorePages, loadMoreHandler}: IListInfiniteProps) {\n const infiniteRef: RefObject<HTMLDivElement> = useInfiniteScroll({\n loading,\n hasNextPage: hasMorePages,\n onLoadMore: loadMoreHandler,\n scrollContainer: 'parent',\n threshold,\n });\n\n return <div ref={infiniteRef}>{children}</div>;\n}\n","import React from 'react';\nimport {CircularProgress} from '@material-ui/core';\n\ninterface ILoadingSpinnerProps {\n size?: number;\n color?: 'inherit' | 'primary' | 'secondary';\n}\n\nexport function LoadingSpinner({size = 40, color = 'primary'}: ILoadingSpinnerProps) {\n return <CircularProgress size={size} color={color} />;\n}\n","import React from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {LoadingSpinner} from '../LoadingSpinner/LoadingSpinner';\n\ninterface ILoadingProps {\n fullHeight?: boolean;\n halfHeight?: boolean;\n size?: number;\n}\n\nexport function Loading({fullHeight = false, halfHeight = false, size}: ILoadingProps) {\n const classes = useStyles({fullHeight, halfHeight});\n return (\n <div className={classes.root}>\n <LoadingSpinner size={size} />\n </div>\n );\n}\n\nconst useStyles = makeStyles({\n root: ({fullHeight, halfHeight}: Pick<ILoadingProps, 'fullHeight' | 'halfHeight'>) => {\n let height = '100%';\n\n if (fullHeight) {\n height = '100vh';\n }\n if (halfHeight) {\n height = '50vh';\n }\n\n return {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n width: '100%',\n height: height,\n };\n },\n});\n","import {makeStyles} from '@material-ui/core';\nimport React from 'react';\nimport {Loading} from '../Loading/Loading';\n\ninterface ILoadingSmallProps {\n position?: 'left' | 'right';\n}\n\nexport function LoadingSmall({position = 'right'}: ILoadingSmallProps) {\n const classes = useStyles({position});\n\n return (\n <div className={classes.spinner}>\n <Loading fullHeight={false} size={10} />\n </div>\n );\n}\n\nconst useStyles = makeStyles(() => {\n return {\n container: {\n position: 'relative',\n },\n spinner: ({position}: any) => {\n if (position === 'left') {\n return {position: 'absolute', top: 16, left: 14};\n }\n\n return {position: 'absolute', top: 16, right: 14};\n },\n };\n});\n","import React, {FC, Fragment} from 'react';\nimport {Dialog, DialogActions, DialogContent, DialogTitle, makeStyles} from '@material-ui/core';\nimport {Button, Icon, Row, Text} from 'components-lib';\nimport {ModalTypes, ModalWidth} from 'enums/upload/ModalTypes.enum';\nimport {IWithChildren} from 'models';\n\ninterface IButtonModalAction {\n title: string;\n disabled?: boolean;\n handleAction: () => void;\n}\n\ninterface IButtonModalCancelAction {\n title: string;\n disabled?: boolean;\n handleCancel: () => void;\n}\n\ninterface IModalButtonsContent {\n size?: 'small' | 'large';\n action: IButtonModalAction;\n cancel: IButtonModalCancelAction;\n}\ninterface IModalProps extends IWithChildren {\n isOpen: boolean;\n title: string;\n size: string;\n customButtons?: boolean;\n withButtons?: boolean;\n disableBackdropClick?: boolean;\n buttonsContent?: IModalButtonsContent;\n handleClose: () => void;\n}\n\nconst TRANSITION_DURATION = 325;\n\nexport const Modal: FC<IModalProps> = ({\n isOpen,\n handleClose,\n title,\n children,\n size,\n withButtons,\n buttonsContent,\n customButtons = false,\n disableBackdropClick = false,\n}) => {\n const classes = useStyles();\n\n const modalContent = children[0];\n const modalActionButtons = children[1];\n const shouldRenderCustomContent = withButtons || !!customButtons;\n const shouldRenderCustomButtons = withButtons || modalActionButtons;\n\n function getSizeStyle(size: string) {\n switch (size) {\n case ModalTypes.small:\n return classes.small;\n case ModalTypes.medium:\n return classes.medium;\n case ModalTypes.large:\n return classes.large;\n default:\n return;\n }\n }\n\n const overrideSizeStyles = getSizeStyle(size);\n\n return (\n <Dialog\n classes={{paper: overrideSizeStyles}}\n open={isOpen}\n onClose={handleClose}\n transitionDuration={TRANSITION_DURATION}\n disableBackdropClick={disableBackdropClick}\n >\n <DialogTitle className={size} classes={{root: classes.title}}>\n <Row justify=\"space-between\">\n <Text.Heading as=\"h3\" classes={{root: classes.heading}}>\n {title}\n </Text.Heading>\n <Button.Icon clickHandler={handleClose}>\n <Icon.CloseIcon />\n </Button.Icon>\n </Row>\n </DialogTitle>\n <DialogContent>{shouldRenderCustomContent ? children : modalContent}</DialogContent>\n {shouldRenderCustomButtons && (\n <DialogActions className={classes.actions}>\n {withButtons ? (\n <Fragment>\n <Button.Secondary\n disabled={buttonsContent.cancel.disabled}\n size={buttonsContent.size ? buttonsContent.size : ModalTypes.large}\n clickHandler={buttonsContent.cancel.handleCancel}\n >\n {buttonsContent.cancel.title}\n </Button.Secondary>\n <Button.Primary\n disabled={buttonsContent.action.disabled}\n size={buttonsContent.size ? buttonsContent.size : ModalTypes.large}\n clickHandler={buttonsContent.action.handleAction}\n >\n {buttonsContent.action.title}\n </Button.Primary>\n </Fragment>\n ) : (\n modalActionButtons\n )}\n </DialogActions>\n )}\n </Dialog>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n small: {\n width: ModalWidth.small,\n },\n medium: {\n width: ModalWidth.medium,\n },\n large: {\n width: ModalWidth.large,\n },\n heading: {\n margin: 0,\n '&.MuiTypography-h6': {\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n },\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n width: '90%',\n },\n title: {\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: theme.palette.grey[200],\n },\n actions: {\n borderTop: `1px solid ${theme.palette.grey[100]}`,\n padding: `${theme.spacing(3)}px ${theme.spacing(3) + theme.spacing(2)}px`,\n },\n closeButton: {\n alignSelf: 'flex-end',\n color: theme.palette.primary.main,\n },\n}));\n","import {DialogActions, makeStyles} from '@material-ui/core';\nimport {IComponentWithChildren} from 'models';\nimport React from 'react';\n\ninterface IModalActionsProps extends IComponentWithChildren {\n withExtraSpace?: boolean;\n}\n\nexport function ModalActions({children, withExtraSpace = true}: IModalActionsProps) {\n const classes = useStyles(withExtraSpace);\n return <DialogActions className={classes.actions}>{children}</DialogActions>;\n}\n\nconst useStyles = makeStyles((theme) => ({\n actions: (withExtraSpace: boolean) => ({\n borderTop: `1px solid ${theme.palette.grey[100]}`,\n padding: withExtraSpace ? `${theme.spacing(3)}px 0` : 0,\n }),\n}));\n","import React from 'react';\nimport AppBar from '@material-ui/core/AppBar';\nimport {makeStyles} from '@material-ui/core/styles';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport {IComponentWithChildren} from 'models';\n\ninterface INavigationProps extends IComponentWithChildren {\n type?: 'primary' | 'secondary';\n}\n\nexport function Navigation({children, type = 'primary'}: INavigationProps) {\n const classes = useStyles({type});\n\n return (\n <AppBar position=\"static\" className={classes.root}>\n <Toolbar className={classes.toolbar}>{children}</Toolbar>\n </AppBar>\n );\n}\nconst useStyles = makeStyles((theme) => ({\n root: ({type}: any) => ({\n minHeight: type === 'primary' ? 64 : 45,\n borderBottom: `1px solid ${theme.palette.grey[200]}`,\n }),\n toolbar: ({type}: any) => {\n const isPrimary = type === 'primary';\n return {\n minHeight: isPrimary ? 64 : 45,\n backgroundColor: isPrimary ? theme.palette.common.white : theme.palette.grey[50],\n };\n },\n}));\n","import React from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {NavLink} from 'react-router-dom';\nimport {IComponentWithChildren} from 'models';\nimport {colors} from 'styles/colors';\n\ninterface INavigationLinkProps extends IComponentWithChildren {\n to: string;\n type?: 'primary' | 'secondary';\n withDisabled?: boolean;\n}\n\nconst secondaryActiveStyle = {color: colors.primary};\nconst primaryActiveStyle = {...secondaryActiveStyle, borderBottom: `3px solid ${colors.primary}`};\n\nexport function NavigationLink({to, type = 'primary', children, withDisabled = false}: INavigationLinkProps) {\n const classes = useStyles({type, withDisabled});\n return (\n <NavLink\n to={to}\n className={classes.root}\n activeStyle={type === 'primary' ? primaryActiveStyle : secondaryActiveStyle}\n type={type}\n color=\"grey60\"\n >\n {children}\n </NavLink>\n );\n}\n\ntype TRootStyles = Pick<INavigationLinkProps, 'type' | 'withDisabled'>;\n\nconst useStyles = makeStyles((theme) => ({\n root: ({type, withDisabled}: TRootStyles) => {\n const baseHeight = type === 'primary' ? 66 : 48;\n\n let styles: any = {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n marginRight: baseHeight / 1.375,\n lineHeight: `${baseHeight - 3}px`,\n height: `${baseHeight - 3}px`,\n padding: 0,\n color: theme.palette.grey[700],\n textDecoration: 'none',\n '&:hover': {\n color: theme.palette.grey[800],\n },\n };\n\n if (withDisabled) {\n styles = {\n ...styles,\n pointerEvents: 'none',\n };\n }\n\n return styles;\n },\n}));\n","import React, {ReactNode} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Button, Column, Divider, Row, Text} from 'components-lib';\n\ninterface IPageViewHeaderProps {\n heading?: string;\n subHeading?: ReactNode;\n extraHeading?: ReactNode;\n action?: ReactNode;\n sort?: ReactNode;\n search?: ReactNode;\n extraSubHeading?: ReactNode;\n filters?: any; // TODO\n withBackButton?: boolean;\n withDivider?: boolean;\n shouldDisableBackButton?: boolean;\n backButtonClickHandler?: () => void;\n headingColor?: 'inherit' | 'primary' | 'secondary' | 'textPrimary' | 'error';\n fullFlexWidth?: boolean;\n withColumnPadding?: boolean;\n}\n\nexport function PageViewHeader({\n heading,\n action,\n sort,\n search,\n subHeading,\n extraHeading,\n extraSubHeading,\n filters,\n withBackButton = false,\n withDivider = true,\n shouldDisableBackButton = false,\n backButtonClickHandler,\n headingColor,\n fullFlexWidth = false,\n withColumnPadding = true,\n}: IPageViewHeaderProps) {\n const classes = useStyles({fullFlexWidth, withColumnPadding});\n const hasFilters = !!(filters && filters.length);\n\n return (\n <Column className={classes.root}>\n <Row justify=\"space-between\">\n <div className={classes.flex}>\n <div className={classes.headingContainer}>\n {!!withBackButton && (\n <Button.Back\n clickHandler={backButtonClickHandler}\n className={classes.backButton}\n disabled={shouldDisableBackButton}\n />\n )}\n {!!heading && (\n <Text.Heading as=\"h1\" color={headingColor}>\n {heading}\n </Text.Heading>\n )}\n {!!subHeading && subHeading}\n </div>\n {extraSubHeading && extraSubHeading}\n </div>\n {action && action}\n </Row>\n {!!extraHeading && <Row justify=\"flex-start\">{extraHeading}</Row>}\n {(sort || hasFilters || search) && (\n <Row justify=\"flex-start\" classes={{root: classes.row}}>\n <div>{search && search}</div>\n <div>{sort && sort}</div>\n\n {hasFilters && withDivider && <Divider.Vertical />}\n <div>{hasFilters && filters}</div>\n </Row>\n )}\n </Column>\n );\n}\n\ntype TStyleProps = Pick<IPageViewHeaderProps, 'fullFlexWidth'>;\n\nconst useStyles = makeStyles((theme) => ({\n root: ({withColumnPadding}: any) => {\n if (!withColumnPadding) {\n return;\n }\n\n return {paddingTop: theme.spacing(3), paddingBottom: theme.spacing(2)};\n },\n row: {\n paddingBottom: theme.spacing(3),\n display: 'flex',\n flex: '1',\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n backButton: {\n marginRight: theme.spacing(2),\n },\n flex: ({fullFlexWidth}: TStyleProps) => {\n let styles: any = {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n };\n\n if (fullFlexWidth) {\n styles = {...styles, width: '100%'};\n }\n return styles;\n },\n headingContainer: {\n width: '100%',\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n },\n}));\n","import React, {SyntheticEvent} from 'react';\nimport {FormControlLabel, Radio as RadioMui} from '@material-ui/core';\n\ninterface IRadioProps {\n checked?: boolean;\n name?: string;\n label?: string;\n color?: 'primary' | 'secondary';\n disabled?: boolean;\n value?: string | number;\n changeHandler?: (event: SyntheticEvent, selected?: boolean) => void;\n}\n\nexport function Radio({checked, color = 'primary', name, label, value, changeHandler, disabled = false}: IRadioProps) {\n return (\n <FormControlLabel\n name={name}\n checked={checked}\n onChange={changeHandler}\n label={label}\n value={value}\n control={<RadioMui name={name} color={color} disabled={disabled} />}\n />\n );\n}\n","import React, {FC, useState} from 'react';\nimport {FormControlLabel, makeStyles, Radio as MUIRadio, RadioGroup as MUIRadioGroup} from '@material-ui/core';\n\ninterface IRadioBtnOption {\n label: string;\n value: string | number | boolean;\n}\n\ninterface IProps {\n name?: string;\n options: IRadioBtnOption[];\n newValue?: string | boolean;\n initialOption?: string | boolean;\n direction?: string;\n withBoolean?: boolean;\n handleChange: (value: string | boolean) => void;\n}\n\nexport const RadioGroup: FC<IProps> = ({\n name = 'choose_view',\n options,\n direction,\n handleChange,\n initialOption,\n newValue,\n}) => {\n const classes = useStyles({direction});\n const [value, setValue] = useState<string | boolean>(newValue ? newValue : initialOption);\n\n const onChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const targetValue = (event.target as HTMLInputElement).value as string;\n\n setValue(targetValue);\n handleChange(targetValue);\n };\n\n return (\n <MUIRadioGroup className={classes.root} aria-label={name} name={name} value={value} onChange={onChange}>\n {options.map((option: IRadioBtnOption, i: number) => (\n <FormControlLabel key={i} value={option.value} control={<MUIRadio color=\"primary\" />} label={option.label} />\n ))}\n </MUIRadioGroup>\n );\n};\n\nconst useStyles = makeStyles({\n root: ({direction}: any) => ({\n flexDirection: direction,\n }),\n});\n","import React, {SyntheticEvent, useMemo} from 'react';\nimport {IconButton, makeStyles} from '@material-ui/core';\nimport {Icon} from 'components-lib';\nimport {Input} from '../Input/Input';\nimport {IWithDisabled} from 'models';\n\ninterface ISearchProps extends IWithDisabled {\n value: string | null;\n changeHandler: (ev: SyntheticEvent) => void;\n submitDisabled?: boolean;\n withIcon?: boolean;\n}\n\nexport function Search({\n value,\n changeHandler,\n submitDisabled = false,\n disabled = false,\n withIcon = true,\n ...rest\n}: ISearchProps) {\n const {root, button} = useStyles();\n const icon = useMemo(\n () => (\n <IconButton type=\"submit\" className={button} disabled={submitDisabled || disabled}>\n <Icon.SearchIcon />\n </IconButton>\n ),\n [button, disabled, submitDisabled]\n );\n return (\n <Input\n {...rest}\n value={value}\n changeHandler={changeHandler}\n withIcon={withIcon}\n iconPosition=\"end\"\n icon={icon}\n className={root}\n disabled={disabled}\n />\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginBottom: theme.spacing(3),\n },\n button: {\n padding: 0,\n },\n}));\n","import React, {useCallback} from 'react';\nimport SelectVirtualized from 'react-virtualized-select';\nimport {makeStyles, MenuItem} from '@material-ui/core';\nimport {IOption} from 'models';\nimport {updateSelectLabel} from 'utils';\n\ninterface ISelectProps {\n options: IOption[];\n value: IOption;\n disabled?: boolean;\n changeHandler: (value: number) => void;\n}\n\nexport function Select({options, changeHandler, value, disabled = false}: ISelectProps) {\n const classes = useStyles();\n\n const changeHandlerInner = useCallback(\n (option: IOption) => {\n changeHandler(option?.value);\n },\n [changeHandler]\n );\n\n return (\n <SelectVirtualized\n multi={false}\n clearable={false}\n options={options}\n optionRenderer={Option}\n disabled={disabled}\n value={value}\n onChange={changeHandlerInner}\n className={classes.root}\n placeholder=\"\"\n autoBlur\n />\n );\n}\n\ninterface IOptionProps {\n option: any;\n style: any;\n selectValue: (option: IOption) => void;\n}\n\nfunction Option({style, option, selectValue}: IOptionProps) {\n const {updatedLabel} = updateSelectLabel(option.label);\n\n return (\n <MenuItem key={option.value} style={style} onClick={() => selectValue(option)} title={option.label}>\n {updatedLabel}\n </MenuItem>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n fontFamily: theme.typography.fontFamily,\n fontSize: '0.8125rem',\n fontWeight: 600,\n color: theme.palette.grey[900],\n '& .Select-control': {\n background: theme.palette.common.white,\n borderRadius: theme.spacing(1),\n '& .Select-value .Select-value-label, .Select.has-value.is-pseudo-focused.Select--single > .Select-control .Select-value .Select-value-label': {\n color: `${theme.palette.grey[900]} !important`,\n },\n },\n '& .Select-control, .Select-placeholder': {\n padding: 2.65,\n },\n '& .Select-value ': {\n display: 'flex',\n alignItems: 'center',\n },\n '& .Select-input': {\n fontFamily: theme.typography.fontFamily,\n fontSize: '0.8125rem',\n fontWeight: 600,\n color: theme.palette.grey[900],\n padding: `${theme.spacing(0)}px ${theme.spacing(2)}px`,\n },\n '& .Select-control:hover': {\n borderColor: theme.palette.grey[900],\n },\n '&.Select.is-open > .Select-control': {\n borderColor: theme.palette.secondary.main,\n borderRadius: theme.spacing(1),\n },\n '&.Select.is-open > .Select-control:hover': {\n borderColor: theme.palette.primary.main,\n borderRadius: theme.spacing(1),\n },\n '&.Select.is-focused:not(.is-open) > .Select-control': {\n boxShadow: 'none',\n borderColor: theme.palette.grey[700],\n },\n '& .Select-menu-outer': {\n marginTop: theme.spacing(1),\n borderRadius: theme.spacing(1),\n boxShadow: '0px 2px 1px -1px rgba(0,0,0,0.2), 0px 1px 1px 0px rgba(0,0,0,0.14), 0px 1px 3px 0px rgba(0,0,0,0.12)',\n },\n '& .VirtualizedSelectFocusedOption': {\n backgroundColor: 'rgba(0, 0, 0, 0.04)',\n },\n '& .Select-arrow': {\n borderColor: '#707070 transparent transparent',\n },\n },\n}));\n","import React, {Children, createContext, forwardRef, useContext, useEffect, useRef} from 'react';\nimport {ListChildComponentProps, VariableSizeList} from 'react-window';\n\nconst ITEM_SIZE = 36;\nconst ADDITIONAL_ITEMS_HEIGHT = 10;\nconst DEFAULT_LIST_HEIGHT = 350;\nconst MIN_ITEMS_TO_APPLY_CUSTOM_HEIGHT = 10;\n\nconst OuterElementContext = createContext({});\n\n// eslint-disable-next-line react/display-name\nconst OuterElementType = forwardRef<HTMLDivElement>((props, ref) => {\n const outerProps = useContext(OuterElementContext);\n return <div ref={ref} {...props} {...outerProps} />;\n});\n\nfunction renderRow(props: ListChildComponentProps) {\n const {data, index, style} = props;\n return React.cloneElement(data[index], {\n style: {\n ...style,\n top: style.top as number,\n },\n });\n}\n\nfunction useResetCache(data: any) {\n const ref = useRef<VariableSizeList>(null);\n\n useEffect(() => {\n if (ref.current != null) {\n ref.current.resetAfterIndex(0, true);\n }\n }, [data]);\n\n return ref;\n}\n\nexport const ListboxComponent = forwardRef<HTMLDivElement>(function ListboxComponent(props, ref) {\n const {children, ...rest} = props;\n const itemData = Children.toArray(children);\n const itemCount = itemData.length;\n const gridRef = useResetCache(itemCount);\n const height =\n itemCount < MIN_ITEMS_TO_APPLY_CUSTOM_HEIGHT\n ? itemCount * ITEM_SIZE + ADDITIONAL_ITEMS_HEIGHT\n : DEFAULT_LIST_HEIGHT;\n\n return (\n <div ref={ref}>\n <OuterElementContext.Provider value={rest}>\n <VariableSizeList\n ref={gridRef}\n height={height}\n width=\"100%\"\n innerElementType=\"ul\"\n itemData={itemData}\n outerElementType={OuterElementType}\n itemSize={() => 42}\n overscanCount={5}\n itemCount={itemCount}\n >\n {renderRow}\n </VariableSizeList>\n </OuterElementContext.Provider>\n </div>\n );\n});\n","import React, {ChangeEvent, Fragment, useCallback, useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport {Checkbox, Input} from 'components-lib';\nimport {ListboxComponent} from './ListboxComponent';\nimport {colors} from 'styles';\nimport {IOption} from 'models';\nimport {isFunction, updateSelectLabel} from 'utils';\n\ninterface ISelectAutocompleteProps {\n loading?: boolean;\n multiple: boolean;\n disabled?: boolean;\n options: IOption[];\n values: IOption[];\n placeholder?: string;\n noOptionsText?: string;\n withCheckboxRenderOption?: boolean;\n withFontWeightBold?: boolean;\n disableCloseOnSelect?: boolean;\n filterOptions?: (options: IOption[]) => IOption[];\n changeHandler: (option: IOption | IOption[]) => void;\n inputChangeHandler?: (value: string) => void;\n blurHandler?: () => void;\n}\n\nexport function SelectAutocomplete({\n multiple,\n options,\n changeHandler,\n inputChangeHandler,\n values,\n placeholder,\n disabled = false,\n loading = false,\n blurHandler,\n noOptionsText,\n withCheckboxRenderOption = true,\n withFontWeightBold = false,\n disableCloseOnSelect = false,\n filterOptions,\n}: ISelectAutocompleteProps) {\n const classes = useStyles({withFontWeightBold});\n\n const changeHandlerInner = useCallback(\n (event: ChangeEvent<HTMLInputElement>, value: any) => {\n changeHandler(value);\n },\n [changeHandler]\n );\n\n const getSingleSelectOption = useCallback((label: string) => {\n const {updatedLabel} = updateSelectLabel(label);\n\n return (\n <div style={{lineHeight: 1}} title={label}>\n {updatedLabel}\n </div>\n );\n }, []);\n\n const getMultiSelectOption = useCallback(\n (label: string, selected: boolean) => {\n const {updatedLabel} = updateSelectLabel(label);\n\n return (\n <Fragment>\n {withCheckboxRenderOption && <Checkbox checked={selected} />}\n {updatedLabel}\n </Fragment>\n );\n },\n [withCheckboxRenderOption]\n );\n\n const SingleOptionAutoComplete = useMemo(\n () => () => (\n <Autocomplete\n classes={classes}\n loading={loading}\n multiple={false}\n disabled={disabled}\n disableCloseOnSelect={disableCloseOnSelect}\n ListboxComponent={ListboxComponent as React.ComponentType<React.HTMLAttributes<HTMLElement>>}\n options={options}\n filterOptions={filterOptions} // use for async requests\n noOptionsText={noOptionsText}\n getOptionLabel={(option) => option.label}\n onChange={changeHandlerInner}\n onBlur={blurHandler}\n onInputChange={(event: any, value: string, reason: string) => {\n if (reason === 'input') {\n isFunction(inputChangeHandler) && inputChangeHandler(value);\n }\n }}\n renderInput={(params) => <Input {...params} placeholder={placeholder} withMargin={false} loading={loading} />}\n renderOption={(option: IOption, _) => getSingleSelectOption(option.label)}\n />\n ),\n [\n classes,\n loading,\n disabled,\n filterOptions,\n inputChangeHandler,\n noOptionsText,\n options,\n placeholder,\n blurHandler,\n changeHandlerInner,\n disableCloseOnSelect,\n getSingleSelectOption,\n ]\n );\n\n if (!multiple) {\n return <SingleOptionAutoComplete />;\n }\n\n return (\n <Autocomplete\n classes={classes}\n loading={loading}\n multiple={multiple}\n disabled={disabled}\n value={values}\n disableListWrap // If true, the list box in the popup will not wrap focus.\n disableCloseOnSelect={true} // applicable only for multi select dropdown\n ListboxComponent={ListboxComponent as React.ComponentType<React.HTMLAttributes<HTMLElement>>}\n options={options} // list of options received by the filter\n noOptionsText={noOptionsText}\n getOptionLabel={(option) => option.label} // list of options received by the filter\n onChange={changeHandlerInner}\n onBlur={blurHandler}\n onInputChange={(event: any, value: string, reason: string) => {\n if (reason === 'input') {\n isFunction(inputChangeHandler) && inputChangeHandler(value);\n }\n }}\n renderInput={(params) => <Input {...params} placeholder={placeholder} withMargin={false} disabled={false} />}\n renderOption={(option: IOption, {selected}) => getMultiSelectOption(option.label, selected)}\n />\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n },\n listbox: {\n boxSizing: 'border-box',\n '& ul': {\n padding: 0,\n margin: 0,\n },\n },\n tag: {\n margin: theme.spacing(1),\n\n '&:after': {\n content: '\"\"',\n right: 10,\n top: 6,\n height: 12,\n width: 12,\n position: 'absolute',\n backgroundColor: theme.palette.primary.main,\n zIndex: -1,\n },\n },\n inputRoot: ({withFontWeightBold}: {withFontWeightBold: boolean}) => {\n const muiAutocompleteInputFirstChildStyles: any = withFontWeightBold && {\n fontSize: 13,\n fontWeight: 600,\n color: theme.palette.grey[900],\n };\n\n return {\n '& .Mui-disabled': {\n color: theme.palette.grey[700],\n backgroundColor: colors.gray,\n },\n '&&[class*=\"MuiOutlinedInput-root\"]': {\n padding: 3.3,\n '& .MuiAutocomplete-input:first-child': muiAutocompleteInputFirstChildStyles,\n },\n '& .MuiOutlinedInput-notchedOutline': {\n borderColor: theme.palette.grey[200],\n },\n '&:hover .MuiOutlinedInput-notchedOutline': {\n borderColor: theme.palette.grey[900],\n },\n '& .Mui-focused .MuiOutlinedInput-notchedOutline': {\n borderColor: theme.palette.secondary.main,\n },\n };\n },\n}));\n","import React, {FC, Fragment, useCallback} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport {Checkbox, Input, Tooltip} from 'components-lib';\nimport {ListboxComponent} from './ListboxComponent';\nimport {isFunction, updateSelectLabel} from 'utils';\nimport {IOption} from 'models';\nimport {colors} from 'styles/colors';\n\ninterface ISearchOnTypeSelectAutocompleteProps {\n loading?: boolean;\n disabled?: boolean;\n multiple?: boolean;\n options: IOption[];\n label: string;\n values: IOption[];\n placeholder?: string;\n withCheckboxRenderOption?: boolean;\n isFilter?: boolean;\n noOptionsText?: string;\n disableCloseOnSelect?: boolean;\n filterOptions?: (options: IOption[]) => IOption[];\n changeHandler: (option: IOption | IOption[]) => void;\n inputChangeHandler?: (value: string) => void;\n}\n\nexport const SearchOnTypeSelectAutocomplete: FC<ISearchOnTypeSelectAutocompleteProps> = ({\n options,\n changeHandler,\n inputChangeHandler,\n placeholder,\n disabled = false,\n loading = false,\n multiple = false,\n noOptionsText,\n withCheckboxRenderOption = true,\n disableCloseOnSelect = false,\n filterOptions,\n values,\n isFilter = false,\n}) => {\n const classes = useStyles();\n const showSelectedValues = isFilter && multiple;\n\n const changeHandlerInner = useCallback((_, value: any) => changeHandler(value), [changeHandler]);\n\n const getOption = useCallback(\n (label: string, multiple: boolean, selected: boolean) => {\n const {updatedLabel, shouldRenderDots} = updateSelectLabel(label);\n const title = shouldRenderDots ? label : '';\n\n return (\n <Fragment>\n {withCheckboxRenderOption && multiple && <Checkbox checked={selected} />}\n <Tooltip title={title}>{updatedLabel}</Tooltip>\n </Fragment>\n );\n },\n [withCheckboxRenderOption]\n );\n\n return (\n <Autocomplete\n loading={loading}\n classes={classes}\n multiple={multiple}\n value={showSelectedValues ? values : undefined}\n disabled={disabled}\n disableCloseOnSelect={disableCloseOnSelect}\n ListboxComponent={ListboxComponent as React.ComponentType<React.HTMLAttributes<HTMLElement>>}\n options={options}\n filterOptions={filterOptions} // use for async requests\n noOptionsText={noOptionsText}\n getOptionLabel={(option) => option.label || ''}\n onChange={changeHandlerInner}\n onInputChange={(_, value: string, reason: string) => {\n if (reason === 'input') {\n isFunction(inputChangeHandler) && inputChangeHandler(value);\n }\n }}\n renderInput={(params) => (\n <Input {...params} loading={loading} placeholder={placeholder} withIcon withMargin={false} disabled={false} />\n )}\n renderOption={(option: IOption, {selected}) => getOption(option.label, multiple, selected)}\n />\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n '& .MuiAutocomplete-input': {\n width: '100%',\n padding: theme.spacing(1),\n },\n },\n listbox: {\n boxSizing: 'border-box',\n '& ul': {\n padding: 0,\n margin: 0,\n },\n },\n tag: {\n margin: theme.spacing(1),\n\n '&:after': {\n content: '\"\"',\n right: 10,\n top: 6,\n height: 12,\n width: 12,\n position: 'absolute',\n backgroundColor: theme.palette.primary.main,\n zIndex: -1,\n },\n },\n inputRoot: ({withFontWeightBold}: {withFontWeightBold: boolean}) => {\n const muiAutocompleteInputFirstChildStyles: any = withFontWeightBold && {\n fontSize: 13,\n fontWeight: 600,\n color: theme.palette.grey[900],\n };\n\n return {\n '& .Mui-disabled': {\n color: theme.palette.grey[700],\n backgroundColor: colors.gray,\n },\n '&&[class*=\"MuiOutlinedInput-root\"]': {\n padding: 3.3,\n '& .MuiAutocomplete-input:first-child': muiAutocompleteInputFirstChildStyles,\n },\n '& .MuiOutlinedInput-notchedOutline': {\n borderColor: theme.palette.grey[200],\n },\n '&:hover .MuiOutlinedInput-notchedOutline': {\n borderColor: theme.palette.grey[900],\n },\n '& .Mui-focused .MuiOutlinedInput-notchedOutline': {\n borderColor: theme.palette.secondary.main,\n },\n };\n },\n\n popper: {\n width: 'fit-content',\n },\n}));\n","import React, {ChangeEvent} from 'react';\nimport {FormControlLabel, Switch as SwitchMui} from '@material-ui/core';\n\ninterface ISwitchProps {\n name?: string;\n label: string;\n checked: boolean;\n disabled?: boolean;\n changeHandler: (event: ChangeEvent<HTMLInputElement>) => void;\n}\n\nexport function Switch({checked, name, label, disabled, changeHandler}: ISwitchProps) {\n return (\n <FormControlLabel\n control={<SwitchMui disabled={disabled} checked={checked} onChange={changeHandler} color=\"primary\" name={name} />}\n label={label}\n />\n );\n}\n","import React from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport Chip from '@material-ui/core/Chip';\nimport {Close} from '@material-ui/icons';\nimport classnames from 'classnames';\nimport {IComponentWithClassName} from 'models';\n\ninterface ITagProps extends IComponentWithClassName {\n label: string;\n clickHandler?: () => void;\n deleteHandler?: () => void;\n color?: 'default' | 'primary' | 'secondary';\n withLeftMargin?: boolean;\n withFilterChip?: boolean;\n}\n\nexport function Tag({\n label,\n color = 'default',\n clickHandler,\n deleteHandler,\n className,\n withLeftMargin,\n withFilterChip = false,\n}: ITagProps) {\n const classes = useStyles({withLeftMargin, withFilterChip});\n return (\n <Chip\n onClick={clickHandler}\n onDelete={deleteHandler}\n deleteIcon={<Close color=\"primary\" />}\n label={label}\n variant=\"outlined\"\n size=\"small\"\n className={classnames(className, classes.root)}\n color={color}\n classes={{deleteIcon: classes.deleteIcon}}\n title={label}\n />\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: ({withLeftMargin, withFilterChip}: {withLeftMargin: boolean; withFilterChip: boolean}) => {\n const marginWithoutLeftStyle = `${theme.spacing(1)}px ${theme.spacing(2)}px ${theme.spacing(1)}px 0px`;\n const marginStyle = withLeftMargin ? `${theme.spacing(1)}px` : marginWithoutLeftStyle;\n\n let styles: any = {\n margin: marginStyle,\n borderRadius: theme.spacing(1),\n '&:hover .MuiSvgIcon-root': {\n color: theme.palette.primary.main,\n },\n };\n\n if (withFilterChip) {\n styles = {...styles, maxWidth: 150, whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis'};\n }\n\n return styles;\n },\n deleteIcon: {\n color: theme.palette.primary.main,\n },\n}));\n","import {makeStyles} from '@material-ui/core';\nimport TextField from '@material-ui/core/TextField';\nimport {Tag} from 'components-lib';\nimport {ItemWithPlaceholder} from 'filters-selections';\nimport {FieldProps} from 'formik';\nimport React, {FC, SyntheticEvent, useCallback} from 'react';\nimport {Field} from '../../forms/components/Field';\n\ninterface IFormProps {\n name: string;\n options?: any;\n placeholder?: string;\n}\n\nexport function FormInputWithChip({name, options, placeholder}: IFormProps) {\n return <Field name={name} options={options} placeholder={placeholder} Component={TagInput} />;\n}\n\nconst enterKey = 'Enter';\n\ninterface ITagInputProps extends FieldProps, IFormProps {\n value: string | null;\n changeHandler: (ev: SyntheticEvent) => void;\n disabled?: boolean;\n placeholder?: string;\n options?: string[];\n}\n\nexport const TagInput: FC<ITagInputProps> = ({\n field: {name},\n form: {errors, values, setFieldValue},\n disabled = false,\n placeholder,\n}) => {\n const classes = useStyles();\n\n const error = errors[name];\n const value = values[name];\n\n let props: any = {\n name,\n value,\n };\n\n if (error) {\n props = {\n ...props,\n error: true,\n helperText: error,\n };\n }\n\n const removeTags = useCallback(\n (indexToRemove) => {\n const newValues = value.filter((_, idx: number) => idx !== indexToRemove);\n setFieldValue(name, newValues);\n },\n [value, setFieldValue, name]\n );\n\n const onPressEnter = (event: React.KeyboardEvent<HTMLElement>) => {\n event.preventDefault();\n\n if (event['key'] === enterKey) {\n const updatedChips = [...value, event.target['value']];\n setFieldValue(name, updatedChips);\n\n event.target['value'] = '';\n }\n };\n\n return (\n <div className={classes.container}>\n <ItemWithPlaceholder label={placeholder} hasItems={true}>\n <div className={classes.chipsContainer}>\n <div id=\"tags\" className={classes.chips}>\n {value.map((chip: string, idx: number) => (\n <Tag key={idx} label={chip} deleteHandler={() => removeTags(idx)} />\n ))}\n </div>\n <TextField\n name={props.name}\n error={props.error}\n helperText={props.helperText}\n className={classes.input}\n fullWidth\n placeholder={''}\n disabled={disabled}\n onKeyUp={onPressEnter}\n InputProps={{disableUnderline: true}}\n />\n </div>\n </ItemWithPlaceholder>\n </div>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginTop: theme.spacing(3),\n marginRight: theme.spacing(3),\n marginBottom: theme.spacing(3),\n },\n chipsContainer: {\n display: 'flex',\n alignItems: 'flexStart',\n flexWrap: 'wrap',\n minHeight: '45px',\n width: '100%',\n padding: '0 8px',\n border: `1px solid ${theme.palette.grey[500]}`,\n borderRadius: '5px',\n '&:focusWithin': {\n border: `1px solid ${theme.palette.secondary.main}`,\n },\n '@media screen and (max-width: 567px)': {\n chipsContainer: {\n width: `calc(100vw - ${theme.spacing(4)})`,\n },\n },\n '&:hover': {\n border: `1px solid ${theme.palette.grey[800]}`,\n },\n },\n input: {\n flex: '1',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n chips: {\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n padding: theme.spacing(0),\n },\n}));\n","import React, {SyntheticEvent} from 'react';\nimport {makeStyles, TextField} from '@material-ui/core';\nimport {IWithDisabled} from 'models';\n\ninterface ITextAreaProps extends IWithDisabled {\n value?: string | null;\n name?: string | null;\n changeHandler?: (ev: SyntheticEvent) => void;\n label?: string;\n placeholder?: string;\n withMargin?: boolean;\n withPadding?: boolean;\n color?: string;\n rows?: number;\n fullWidth?: boolean;\n}\n\nexport function TextArea({\n name,\n value,\n changeHandler,\n label = '',\n placeholder = '',\n withMargin = false,\n withPadding = false,\n color,\n rows = 4,\n fullWidth = false,\n ...rest\n}: ITextAreaProps) {\n const classes = useStyles({withMargin, withPadding, color});\n\n return (\n <TextField\n name={name}\n label={label}\n placeholder={placeholder}\n classes={classes}\n multiline\n rows={rows}\n variant=\"outlined\"\n onChange={changeHandler}\n value={value}\n fullWidth={fullWidth}\n {...rest}\n />\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n '& .MuiOutlinedInput-inputMultiline': {\n padding: 0,\n },\n '& .MuiOutlinedInput-input ': {\n color: theme.palette.grey[900],\n fontWeight: 600,\n padding: '11px 9px',\n },\n '& .Mui-disabled': {\n color: theme.palette.grey[700],\n },\n },\n}));\n","import React, {FC, ReactNode, useCallback, useState} from 'react';\nimport {makeStyles, Tooltip as MUITooltip} from '@material-ui/core';\nimport {IWithChildren} from 'models/common';\nimport {colors} from 'styles';\n\nenum TooltipMaxWidthEnum {\n Small = 300,\n Large = 500,\n}\ninterface ITooltipProps extends IWithChildren {\n size?: 'small' | 'large';\n title: string | ReactNode;\n disableFocusListener?: boolean;\n disableTouchListener?: boolean;\n disableHoverListener?: boolean;\n open?: boolean;\n placement?:\n | 'bottom-end'\n | 'bottom-start'\n | 'bottom'\n | 'left-end'\n | 'left-start'\n | 'left'\n | 'right-end'\n | 'right-start'\n | 'right'\n | 'top-end'\n | 'top-start'\n | 'top';\n onOpen?: () => void;\n onClose?: () => void;\n}\n\nexport const Tooltip: FC<ITooltipProps> = ({\n size = 'small',\n title,\n children,\n disableFocusListener = false,\n disableTouchListener = false,\n disableHoverListener = false,\n open = false,\n onOpen,\n onClose,\n placement = 'bottom',\n}) => {\n const classes = useStyles({size});\n const [showTooltip, setShowTooltip] = useState<boolean>(false);\n\n const handleOnTooltipClose = useCallback(() => {\n setShowTooltip(false);\n }, [setShowTooltip]);\n\n const handleOnToolTipOpen = useCallback(() => {\n setShowTooltip(true);\n }, [setShowTooltip]);\n\n //Wrap the children inside a fragment, see: github.com/DefinitelyTyped/DefinitelyTyped/issues/18051\n\n return (\n <MUITooltip\n placement={placement}\n open={open ? open : showTooltip}\n onOpen={onOpen ? onOpen : handleOnToolTipOpen}\n onClose={onClose ? onClose : handleOnTooltipClose}\n title={title}\n disableFocusListener={disableFocusListener}\n disableTouchListener={disableTouchListener}\n disableHoverListener={disableHoverListener}\n classes={{\n tooltip: classes.tooltip,\n }}\n >\n <span>{children}</span>\n </MUITooltip>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n tooltip: ({size}: Pick<ITooltipProps, 'size'>) => {\n const isSmall = size === 'small';\n\n return {\n padding: theme.spacing(3),\n fontSize: 13,\n background: colors.white,\n boxShadow: '0px 16px 24px #26262614',\n border: `1px solid ${theme.palette.grey[200]}`,\n borderRadius: 5,\n opacity: 1,\n color: theme.palette.grey[900],\n cursor: 'pointer',\n maxWidth: isSmall ? TooltipMaxWidthEnum.Small : TooltipMaxWidthEnum.Large,\n };\n },\n}));\n","import React, {useState, FC, useCallback} from 'react';\nimport CopyToClipboard from 'react-copy-to-clipboard';\nimport {Tooltip} from 'components-lib';\nimport {IWithChildren, IWithDisabled} from 'models';\nimport {useToastNotifications} from 'toast-notifications';\n\ninterface ICopyToClipboardProps extends IWithChildren, IWithDisabled {\n title?: string;\n text: string;\n successNotificationText?: string;\n}\n\nexport const CopyToClipboardToolTip: FC<ICopyToClipboardProps> = ({\n children,\n disabled,\n title = 'Click here to copy.',\n successNotificationText = 'The text has been copied to your clipboard.',\n text,\n}) => {\n const [copyText] = useState(text ? text : null);\n const {addToastNotification} = useToastNotifications();\n\n const copyClickHandler = useCallback(() => addToastNotification(successNotificationText), [\n addToastNotification,\n successNotificationText,\n ]);\n\n return (\n <Tooltip title={title} disableTouchListener={disabled}>\n <CopyToClipboard text={copyText} onCopy={copyClickHandler}>\n {children as React.ReactElement<any>}\n </CopyToClipboard>\n </Tooltip>\n );\n};\n","import React, {FC, useCallback, useEffect, useState} from 'react';\nimport {ContentState, EditorState} from 'draft-js';\nimport htmlToDraft from 'html-to-draftjs';\nimport {Editor} from 'react-draft-wysiwyg';\nimport 'react-draft-wysiwyg/dist/react-draft-wysiwyg.css';\n\ninterface IRichEditorProps {\n htmlStr: string;\n}\n\nexport const PreviewEditor: FC<IRichEditorProps> = ({htmlStr}) => {\n const [editorState, setEditorState] = useState<EditorState>(EditorState.createEmpty());\n\n const getDraftFromHTML = useCallback((htmlStr) => {\n const draft = htmlToDraft(htmlStr);\n const contentState = ContentState?.createFromBlockArray(draft?.contentBlocks);\n return EditorState.createWithContent(contentState);\n }, []);\n\n useEffect(() => {\n if (htmlStr) {\n const editorState = getDraftFromHTML(htmlStr);\n const newState = htmlStr ? editorState : EditorState.createEmpty();\n setEditorState(newState);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return <Editor readOnly toolbarHidden editorState={editorState} />;\n};\n","import {ContentState, EditorState, SelectionState} from 'draft-js';\nimport {useFormikContext} from 'formik';\nimport htmlToDraft from 'html-to-draftjs';\nimport {useCallback, useState, useEffect} from 'react';\n\nexport const useRichTextEditor = (fieldName: string) => {\n const [editorState, setEditorState] = useState<EditorState>(EditorState.createEmpty());\n\n const {values} = useFormikContext();\n const value = values[fieldName];\n\n const getEditorText = useCallback((raw: ContentState) => raw.getPlainText(), []);\n\n const moveSelectionToEnd = (editorState: EditorState) => {\n const content = editorState.getCurrentContent();\n const blockMap = content.getBlockMap();\n const key = blockMap.last().getKey();\n const length = blockMap.last().getLength();\n const selection = new SelectionState({\n anchorKey: key,\n anchorOffset: length,\n focusKey: key,\n focusOffset: length,\n });\n return EditorState.forceSelection(editorState, selection);\n };\n\n const prepareDraftFromHTML = useCallback((value) => {\n const draft = htmlToDraft(value);\n const contentState = ContentState?.createFromBlockArray(draft?.contentBlocks);\n\n return EditorState.createWithContent(contentState);\n }, []);\n\n useEffect(() => {\n if (value) {\n const editorState = prepareDraftFromHTML(value);\n const newState = value ? moveSelectionToEnd(editorState) : EditorState.createEmpty();\n setEditorState(newState);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return {\n editorState,\n setEditorState,\n getEditorText,\n prepareDraftFromHTML,\n };\n};\n","import React, {FC, Fragment, useCallback, useMemo} from 'react';\nimport {Editor} from 'react-draft-wysiwyg';\nimport {FieldProps} from 'formik';\nimport {convertToRaw} from 'draft-js';\nimport draftToHtml from 'draftjs-to-html';\nimport 'react-draft-wysiwyg/dist/react-draft-wysiwyg.css';\n\nimport {getEditorOptions} from './richTextEditorBaseConfig';\nimport {useRichTextEditor} from './hooks';\nimport {FormNameEnum} from 'filters-selections';\nimport {makeStyles} from '@material-ui/core';\n\ninterface IFormProps {\n name: string;\n options?: any;\n placeholder?: string;\n}\ninterface IRichTextEditorProps extends FieldProps, IFormProps {\n name: string;\n placeholder?: string;\n value: any;\n withEdit?: boolean;\n readOnly?: boolean;\n toolbarHidden?: boolean;\n withInstructionalText?: boolean;\n}\n\nexport const RichTextEditor: FC<IRichTextEditorProps> = ({\n placeholder,\n withEdit,\n readOnly,\n toolbarHidden,\n value,\n withInstructionalText,\n field: {name},\n form: {setFieldValue, values},\n}) => {\n const classes = useStyles();\n const {editorState, setEditorState} = useRichTextEditor(name);\n\n const editorOptions = getEditorOptions();\n const editorValue = value || values[FormNameEnum.questionTextHtml];\n\n const handleEditorStateChange = useCallback(\n (newState) => {\n setEditorState(newState);\n const currentEditorContent = newState?.getCurrentContent();\n const rawData = newState && convertToRaw(currentEditorContent);\n const htmlText = draftToHtml(rawData);\n setFieldValue(name, htmlText);\n\n const plainText = currentEditorContent.getPlainText();\n\n if (withInstructionalText) {\n return setFieldValue(FormNameEnum.builderInstructionalText, plainText);\n }\n\n setFieldValue(FormNameEnum.text, plainText);\n },\n [name, setFieldValue, setEditorState, withInstructionalText]\n );\n\n const contentWithEdit = useMemo(\n () => (\n <Editor\n stripPastedStyles\n toolbarHidden={toolbarHidden}\n editorClassName={classes.editor}\n toolbarClassName={classes.toolbar}\n readOnly={readOnly}\n editorState={editorState}\n onEditorStateChange={handleEditorStateChange}\n placeholder={placeholder}\n toolbar={editorOptions}\n />\n ),\n [\n classes.editor,\n classes.toolbar,\n editorOptions,\n editorState,\n handleEditorStateChange,\n placeholder,\n readOnly,\n toolbarHidden,\n ]\n );\n\n if (!editorValue && !withEdit) {\n return (\n <Editor\n stripPastedStyles\n toolbarHidden={toolbarHidden}\n editorClassName={classes.editor}\n toolbarClassName={classes.toolbar}\n readOnly={readOnly}\n editorState={editorState}\n onEditorStateChange={handleEditorStateChange}\n placeholder={placeholder}\n toolbar={editorOptions}\n />\n );\n }\n\n return <Fragment>{contentWithEdit}</Fragment>;\n};\n\nconst useStyles = makeStyles((theme) => ({\n editor: {\n padding: theme.spacing(2),\n borderRadius: 4,\n border: `1px solid ${theme.palette.grey[200]}`,\n },\n toolbar: {\n borderRadius: '4px !important',\n border: `1px solid ${theme.palette.grey[200]} !important`,\n },\n}));\n","export const getEditorOptions = () => {\n return {\n options: ['blockType', 'inline', 'history', 'list', 'textAlign'],\n inline: {\n inDropdown: false,\n options: ['italic', 'underline', 'strikethrough', 'monospace', 'superscript', 'subscript'],\n },\n };\n};\n","import React, {FC} from 'react';\n\nimport {FormNameEnum} from 'filters-selections';\nimport {RatingToggleGroup} from 'admin/library/components';\nimport {useRangeAnswerStack} from 'admin/library/items/builder/hooks';\ninterface IRangeButtonsProps {\n disabled?: boolean;\n list?: number[];\n}\n\nexport const RangeButtons: FC<IRangeButtonsProps> = () => {\n const {list} = useRangeAnswerStack();\n\n return <RatingToggleGroup name={FormNameEnum.positiveScores} withLabel withForm list={list} disabled={false} />;\n};\n","import React, {FC} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {ToggleButton as Button} from '@material-ui/lab';\n\ninterface IToggleButtonProps {\n disabled?: boolean;\n list?: number[];\n label?: string;\n name?: string;\n withPreview?: boolean;\n withForm?: boolean;\n value?: any;\n selected?: boolean;\n}\n\nexport const ToggleButton: FC<IToggleButtonProps> = ({label, name, disabled, value, selected}) => {\n const classes = useStyles();\n\n return (\n <Button\n className={classes.toggleButton}\n name={name}\n value={value}\n aria-label={label}\n disabled={disabled}\n selected={selected}\n >\n {label}\n </Button>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n toggleButton: {\n padding: 7.7,\n color: theme.palette.grey[900],\n fontWeight: 'bold',\n border: `1px solid ${theme.palette.grey[300]}`,\n '&.Mui-selected': {\n color: theme.palette.primary.contrastText,\n backgroundColor: theme.palette.secondary.main,\n },\n '&:hover': {\n color: theme.palette.primary.contrastText,\n backgroundColor: theme.palette.secondary.main,\n },\n '& span': {\n width: 10,\n },\n },\n}));\n","import React, {FC, ReactNode} from 'react';\n\ninterface IWrapperProps {\n children?: ReactNode;\n className?: string;\n}\n\nexport const Wrapper: FC<IWrapperProps> = ({children, className}) => {\n return <div className={className}>{children}</div>;\n};\n","import React, {FC, ReactNode} from 'react';\nimport {Link as MuiLink, makeStyles} from '@material-ui/core';\nimport {IWithDisabled} from 'models/common';\n\ninterface ILinkProps extends IWithDisabled {\n clickHandler: () => void;\n children: ReactNode;\n withNewTab?: boolean;\n className?: string;\n}\n\nexport const Link: FC<ILinkProps> = ({clickHandler, children, withNewTab = false, className, disabled}) => {\n const {link} = useStyles({disabled});\n\n return (\n <MuiLink\n className={className ? className : link}\n onClick={clickHandler}\n target={withNewTab ? '_blank' : ''}\n rel={withNewTab ? 'noopener noreferrer' : ''}\n >\n {children}\n </MuiLink>\n );\n};\n\ntype TLinkStyles = Pick<ILinkProps, 'disabled'>;\n\nconst useStyles = makeStyles((theme) => ({\n link: ({disabled}: TLinkStyles) => {\n let styles: any = {\n cursor: 'pointer',\n };\n\n if (disabled) {\n styles = {\n ...styles,\n color: theme.palette.grey[600],\n pointerEvents: 'none',\n display: 'flex', // See: https://stackoverflow.com/questions/54428720/css-pointer-events-none-not-working-in-chrome\n };\n }\n\n return styles;\n },\n}));\n","import React, {FC, RefObject} from 'react';\nimport {makeStyles} from '@material-ui/core';\n\ninterface IFileInputProps {\n name: string;\n inputRef: RefObject<HTMLInputElement>;\n type?: string;\n accept: string;\n clickHandler: (e: React.ChangeEvent<HTMLInputElement>) => void;\n}\n\nexport const FileInput: FC<IFileInputProps> = ({name, inputRef, type = 'file', accept, clickHandler}) => {\n const {root} = useStyles();\n\n return <input name={name} className={root} ref={inputRef} type={type} onChange={clickHandler} accept={accept} />;\n};\n\nconst useStyles = makeStyles(() => ({\n root: {\n display: 'none',\n },\n}));\n","import React, {FC, SyntheticEvent, DragEvent} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {IComponentWithChildren, IWithDisabled} from 'models';\n\ninterface IDraggableAreaProps extends IComponentWithChildren, IWithDisabled {\n hightlight?: boolean;\n disabled?: boolean;\n onDragOver?: (event: SyntheticEvent) => void;\n onDrop: (event: DragEvent<HTMLDivElement>) => void;\n onDragLeave?: (event: SyntheticEvent) => void;\n}\n\nexport const DraggableArea: FC<IDraggableAreaProps> = ({\n children,\n hightlight,\n onDragOver,\n onDrop,\n onDragLeave,\n disabled,\n}) => {\n const classes = useStyles({hightlight, disabled});\n\n return (\n <div className={classes.draggableArea} onDragOver={onDragOver} onDrop={onDrop} onDragLeave={onDragLeave}>\n {children}\n </div>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n draggableArea: ({hightlight, disabled}: Pick<IDraggableAreaProps, 'hightlight' | 'disabled'>) => {\n let styles: any = {\n backgroundColor: theme.palette.primary.contrastText,\n width: '100%',\n };\n\n if (hightlight) {\n styles = {...styles, backgroundColor: theme.palette.grey[50]};\n }\n\n if (disabled) {\n styles = {...styles, pointerEvents: disabled ? 'none' : 'all'};\n }\n\n return styles;\n },\n}));\n","import React, {FC, Fragment, useRef} from 'react';\nimport {IconButton, makeStyles} from '@material-ui/core';\nimport {Button, Text, Icon, Label} from 'components-lib';\nimport {DraggableArea} from '../DraggableArea/DraggableArea';\nimport {useImageUploadWithPreview} from './hooks';\nimport {convertBytesToMegaBytes} from 'admin/upload/utils';\n\ninterface IImageUploadWithPreview {\n text?: string;\n label?: string;\n name: string;\n disabled?: boolean;\n withFolderIcon?: boolean;\n withButton?: boolean;\n withLabel?: boolean;\n accept?: string;\n buttonText?: string;\n textSize?: string;\n textFormat?: string;\n url?: string;\n}\n\nexport const ImageUploadWithPreview: FC<IImageUploadWithPreview> = ({\n text = '',\n label = '',\n url = '',\n name,\n withButton = true,\n withLabel = true,\n disabled = false,\n buttonText = 'Browse',\n accept = 'image/png, image/jpeg',\n textSize = '',\n textFormat = 'Png and jpeg',\n}) => {\n const classes = useStyles();\n const fileInputRef = useRef(null);\n const {\n file,\n imgPreview,\n openFileDialog,\n onFilesAddedChange,\n onDragOver,\n onDrop,\n onDragLeave,\n onDelete,\n hightlight,\n } = useImageUploadWithPreview({name, fileInputRef, url});\n\n const fileSize = file && convertBytesToMegaBytes(file.size, 2);\n const size = file ? `Size: ${fileSize}MB` : `Required size: ${textSize}`;\n const format = file ? `` : `Required format: ${textFormat}`;\n\n return (\n <div>\n {withLabel && <Label label={label} withLeftMargin />}\n <DraggableArea hightlight={hightlight} onDragOver={onDragOver} onDrop={onDrop} onDragLeave={onDragLeave}>\n <div className={classes.container}>\n <div className={classes.iconContainer}>\n {imgPreview ? (\n <img className={classes.logoPreview} src={imgPreview} alt=\"No logo\" loading=\"lazy\" />\n ) : (\n <Icon.UploadFileIcon />\n )}\n </div>\n <div className={classes.content}>\n <div className={classes.textContainer}>\n {text && (\n <Text.Paragraph withMargin classes={{root: classes.text}} className={file ? classes.fileName : ''}>\n {file ? file.name : text}\n </Text.Paragraph>\n )}\n <Text.Caption> {<span>{size}</span>}</Text.Caption>\n <Text.Caption> {<span>{format}</span>}</Text.Caption>\n </div>\n <input\n name={name}\n className={classes.fileInput}\n ref={fileInputRef}\n type=\"file\"\n onChange={onFilesAddedChange}\n accept={accept}\n />\n <Fragment>\n {withButton && !file && (\n <Button.Secondary size=\"small\" disabled={disabled} clickHandler={() => openFileDialog(fileInputRef)}>\n {buttonText}\n </Button.Secondary>\n )}\n\n {file && (\n <IconButton className={classes.iconDelete} onClick={onDelete}>\n <Icon.DeleteIcon />\n </IconButton>\n )}\n </Fragment>\n </div>\n </div>\n </DraggableArea>\n </div>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n border: `1px dashed ${theme.palette.grey[100]}`,\n borderRadius: `${theme.spacing(1) + theme.spacing(2) / 2}px`,\n display: 'flex',\n justifyContent: 'flex-start',\n },\n content: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n width: '60%',\n padding: theme.spacing(3) - theme.spacing(1),\n },\n textContainer: {\n display: 'flex',\n flexDirection: 'column',\n paddingLeft: theme.spacing(1) + theme.spacing(2),\n },\n iconContainer: {\n height: 106,\n width: '40%',\n background: theme.palette.grey[50],\n\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n },\n text: {\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n fontWeight: 'bold',\n color: theme.palette.grey[700],\n },\n fileName: {\n fontWeight: 700,\n },\n fileInput: {\n display: 'none',\n },\n logoPreview: {\n minHeight: 40,\n maxWidth: 164,\n },\n iconDelete: {\n color: theme.palette.grey[700],\n },\n}));\n","import {FormNameEnum} from 'filters-selections';\nimport {useFormikContext} from 'formik';\nimport {useState, useCallback} from 'react';\n\nexport const useImageUploadWithPreview = ({name, fileInputRef, url}) => {\n const {values, setFieldValue} = useFormikContext();\n\n const fileName = `${name}Name`;\n const value = values[FormNameEnum[name]];\n\n const [hightlight, setHightlight] = useState<boolean>(false);\n const [imgPreview, setImgPreview] = useState<string>(url);\n const [file, setFile] = useState(value);\n\n const openFileDialog = useCallback((fileInputRef) => fileInputRef.current.click(), []);\n\n const defineDimensions = useCallback(\n async (file) =>\n Object.defineProperty(file, 'dimensions', {\n value: await checkDimensions(file),\n }),\n []\n );\n\n const setValues = useCallback(\n (file) => {\n if (!!file) {\n const url = window.URL.createObjectURL(file);\n setFile(file);\n setImgPreview(url);\n setFieldValue(FormNameEnum[name], file);\n setFieldValue(FormNameEnum[fileName], file.name);\n return;\n }\n },\n [name, setFieldValue, fileName]\n );\n\n const onFilesAddedChange = useCallback(\n async (e) => {\n const file = e.target.files[0];\n if (file) {\n const extendedFile = await defineDimensions(file);\n return setValues(extendedFile);\n }\n },\n [setValues, defineDimensions]\n );\n\n const onDrop = useCallback(\n async (e) => {\n e.preventDefault();\n const file = e.dataTransfer.files[0];\n if (!!file) {\n const extendedFile = await defineDimensions(file);\n return setValues(extendedFile);\n }\n },\n [setValues, defineDimensions]\n );\n\n const onDragOver = useCallback((e) => {\n e.preventDefault();\n setHightlight(true);\n }, []);\n\n const onDragLeave = useCallback(() => {\n setHightlight(false);\n }, []);\n\n const onDelete = useCallback(() => {\n if (!!value) {\n setFile(null);\n setImgPreview('');\n setHightlight(false);\n fileInputRef.current.value = '';\n return setFieldValue(FormNameEnum[name], null);\n }\n }, [name, setFieldValue, value, fileInputRef]);\n\n const checkDimensions = (value) => {\n return new Promise((resolve) => {\n const reader = new FileReader();\n reader.readAsDataURL(value);\n reader.onload = function (value) {\n const img = new Image();\n img.src = value.target.result as string;\n img.onload = function () {\n const aspectRatio = img.width / img.height;\n resolve({\n width: img.width,\n height: img.height,\n aspectRatio,\n });\n };\n };\n });\n };\n\n return {\n hightlight,\n file,\n imgPreview,\n openFileDialog,\n onDrop,\n onDragOver,\n onDragLeave,\n onFilesAddedChange,\n onDelete,\n };\n};\n","import React, {FC, SyntheticEvent, useMemo} from 'react';\nimport {IconButton} from '@material-ui/core';\nimport {Icon} from 'components-lib';\nimport {Input} from '../Input/Input';\nimport {IWithDisabled} from 'models';\nimport {usePasswordInput} from 'hooks';\nimport {InputTypeEnum} from 'enums/form';\n\ninterface IPasswordInputProps extends IWithDisabled {\n value: string | null;\n changeHandler: (ev: SyntheticEvent) => void;\n withIcon?: boolean;\n}\n\nexport const PasswordInput: FC<IPasswordInputProps> = ({\n value,\n changeHandler,\n disabled = false,\n withIcon = true,\n ...rest\n}) => {\n const {type, toggleIconClickHandler} = usePasswordInput();\n\n const icon = useMemo(\n () => (\n <IconButton disabled={disabled} onClick={toggleIconClickHandler}>\n {type === InputTypeEnum.Password ? <Icon.VisibilityOnIcon /> : <Icon.VisibilityOffIcon />}\n </IconButton>\n ),\n [disabled, toggleIconClickHandler, type]\n );\n\n return (\n <Input\n {...rest}\n value={value}\n changeHandler={changeHandler}\n withIcon={withIcon}\n iconPosition=\"end\"\n icon={icon}\n disabled={disabled}\n type={type}\n />\n );\n};\n","import React, {FC} from 'react';\nimport {IconButton, makeStyles} from '@material-ui/core';\nimport {Icon, Wrapper, Text, Tooltip, Row} from 'components-lib';\nimport {IInputFile} from 'models';\ninterface IAttachmentAreaProps {\n error?: string;\n loading: boolean;\n deleteCallback: () => void;\n file: IInputFile;\n justify?: 'center' | 'flex-start' | 'flex-end' | 'space-between';\n align?: 'center' | 'flex-start' | 'flex-end';\n}\n\nexport const AttachmentArea: FC<IAttachmentAreaProps> = ({\n error,\n loading,\n deleteCallback,\n file,\n justify = 'space-between',\n align = 'center',\n}) => {\n const classes = useStyles({justify, align});\n\n return (\n <Wrapper className={classes.attachmentArea}>\n <Wrapper className={classes.fileIconContainer}>\n <Icon.FileIcon />\n </Wrapper>\n {!error && (\n <Row justify=\"center\">\n <Tooltip title={file?.name}>\n <Text.Heading classes={{root: classes.fileName}} as=\"h4\" color=\"textPrimary\">\n {file?.name}\n </Text.Heading>\n </Tooltip>\n </Row>\n )}\n {error && <Text.Error withBottomMargin={false}>{error}</Text.Error>}\n <IconButton disabled={loading} onClick={deleteCallback}>\n <Icon.DeleteIcon color={loading ? 'disabled' : 'error'} />\n </IconButton>\n </Wrapper>\n );\n};\n\ntype TAttachmentAreaStyle = Pick<IAttachmentAreaProps, 'justify' | 'align'>;\n\nconst useStyles = makeStyles((theme) => ({\n attachmentArea: ({justify, align}: TAttachmentAreaStyle) => {\n return {\n width: '100%',\n display: 'flex',\n justifyContent: justify,\n alignItems: align,\n };\n },\n fileIconContainer: {\n paddingRight: theme.spacing(1) + theme.spacing(2),\n },\n fileName: {\n maxWidth: 300,\n fontWeight: 700,\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n },\n}));\n","import React, {FC, useMemo} from 'react';\nimport {Box, makeStyles} from '@material-ui/core';\nimport {Avatar, Button, Container, Link, Tooltip, Wrapper} from 'components-lib';\nimport classnames from 'classnames';\ninterface IBoxContentProps {\n content: string;\n avatarUrl?: string;\n userInitials?: string;\n size?: 'small' | 'large';\n withLink?: boolean;\n withButtonLink?: boolean;\n linkCallback?: () => void;\n}\n\nexport const BoxContent: FC<IBoxContentProps> = ({\n size = 'large',\n content,\n userInitials,\n withLink,\n withButtonLink,\n linkCallback,\n avatarUrl,\n}) => {\n const classes = useStyles();\n const shouldRenderAvatart = !!userInitials || !!avatarUrl;\n\n const linkContent = useMemo(\n () => (\n <Wrapper className={classnames(classes.cropText, classes.linkContent)}>\n <Link withNewTab clickHandler={linkCallback}>\n {content && content}\n </Link>\n </Wrapper>\n ),\n [classes.linkContent, classes.cropText, content, linkCallback]\n );\n\n return (\n <Container disableGutters>\n {withLink ? (\n <Container disableGutters classes={{root: classes.container}}>\n <Box pr={1}>{linkContent}</Box>\n {withButtonLink && <Button.CopyLink text={content} />}\n </Container>\n ) : (\n <Container disableGutters classes={{root: classes.container}}>\n {shouldRenderAvatart && (\n <Avatar size={size} avatarUrl={avatarUrl}>\n {userInitials}\n </Avatar>\n )}\n <Wrapper className={classes.cropText}>\n <Tooltip title={content}>{content}</Tooltip>\n </Wrapper>\n </Container>\n )}\n </Container>\n );\n};\n\nexport const useStyles = makeStyles((theme) => ({\n container: {\n display: 'flex',\n alignItems: 'center',\n },\n cropText: {\n width: 230,\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n },\n linkContent: {\n width: theme.spacing(7),\n },\n avatarContainer: {\n display: 'flex',\n alignItems: 'center',\n },\n}));\n","import React, {FC} from 'react';\nimport Typography from '@material-ui/core/Typography';\nimport {Box as MUIBox, makeStyles} from '@material-ui/core';\nimport {Text} from 'components-lib';\nimport {BoxContent} from './components';\ninterface IBoxProps {\n label?: string;\n content: string;\n withLink?: boolean;\n withButtonLink?: boolean;\n className?: string;\n avatarUrl?: string;\n userInitials?: string;\n size?: 'small' | 'large';\n linkCallback?: () => void;\n}\n\nexport const Box: FC<IBoxProps> = ({\n label,\n content,\n withLink = false,\n withButtonLink = false,\n linkCallback,\n className,\n avatarUrl,\n userInitials,\n size,\n}) => {\n const classes = useStyles();\n\n return (\n <Typography component=\"div\">\n {label && <Text.Caption classes={{root: classes.root}}>{label}</Text.Caption>}\n {content && (\n <MUIBox color=\"#171A1D\" className={className}>\n <BoxContent\n size={size}\n avatarUrl={avatarUrl}\n userInitials={userInitials}\n content={content}\n withLink={withLink}\n withButtonLink={withButtonLink}\n linkCallback={linkCallback}\n />\n </MUIBox>\n )}\n </Typography>\n );\n};\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n fontWeight: 600,\n color: theme.palette.grey[700],\n },\n}));\n","import React, {FC} from 'react';\nimport {CircularProgress as MUICircularProgress} from '@material-ui/core';\n\ninterface ICircularProgressProps {\n classes?: {[key: string]: any};\n size?: number | string;\n}\n\nexport const CircularProgress: FC<ICircularProgressProps> = ({classes, size = 24}) => {\n return <MUICircularProgress size={size} classes={classes} color=\"primary\" />;\n};\n","import React, {Dispatch, FC, Fragment, ReactNode, SetStateAction, useCallback, useMemo} from 'react';\nimport {Drawer as MUIDrawer, makeStyles} from '@material-ui/core';\nimport {IWithChildren} from 'models/common';\nimport {Button, Column, Container, Row, Icon, Text} from 'components-lib';\nimport {footerHeight, navHeight} from 'utils';\n\ninterface IDrawerProps extends IWithChildren {\n variant?: 'persistent' | 'permanent' | 'temporary';\n isOpen: boolean;\n actionButtons?: ReactNode;\n confirmButtonTitle?: string;\n disableConfirmButton?: boolean;\n title?: string | ReactNode;\n confirmButtonCallback?: () => void;\n setIsOpen: Dispatch<SetStateAction<boolean>>;\n}\n\nexport const Drawer: FC<IDrawerProps> = ({\n variant = 'temporary',\n children,\n isOpen,\n actionButtons,\n title,\n setIsOpen,\n confirmButtonTitle = 'Confirm',\n confirmButtonCallback,\n disableConfirmButton,\n}) => {\n const classes = useStyles();\n\n const closeDrawerClickHandler = useCallback(() => {\n setIsOpen(false);\n }, [setIsOpen]);\n\n const drawerHeader = useMemo(\n () => (\n <Row align=\"center\" justify=\"space-between\" classes={{root: classes.drawerHeader}}>\n {title && (\n <Text.Heading color=\"textPrimary\" classes={{root: classes.drawerHeaderTitle}} as=\"h3\">\n {title}\n </Text.Heading>\n )}\n <Icon.Button clickHandler={closeDrawerClickHandler}>\n <Icon.CloseIcon />\n </Icon.Button>\n </Row>\n ),\n [classes.drawerHeader, classes.drawerHeaderTitle, title, closeDrawerClickHandler]\n );\n\n const drawerFooter = useMemo(\n () => (\n <Fragment>\n {actionButtons ? (\n actionButtons\n ) : (\n <Row justify=\"flex-end\" classes={{root: classes.drawerActionButtons}}>\n <Button.Secondary disabled={false} size=\"large\" clickHandler={closeDrawerClickHandler}>\n Cancel\n </Button.Secondary>\n <Button.Primary disabled={disableConfirmButton ?? false} size=\"large\" clickHandler={confirmButtonCallback}>\n {confirmButtonTitle}\n </Button.Primary>\n </Row>\n )}\n </Fragment>\n ),\n [\n classes.drawerActionButtons,\n actionButtons,\n closeDrawerClickHandler,\n confirmButtonCallback,\n confirmButtonTitle,\n disableConfirmButton,\n ]\n );\n\n return (\n <MUIDrawer\n className={classes.drawer}\n variant={variant}\n anchor=\"right\"\n open={isOpen}\n classes={{\n paper: classes.drawerPaper,\n }}\n >\n <Row justify=\"space-between\">\n <Column>\n <Container disableGutters classes={{root: classes.root}}>\n {drawerHeader}\n {children}\n {drawerFooter}\n </Container>\n </Column>\n </Row>\n </MUIDrawer>\n );\n};\n\nconst useStyles = makeStyles((theme) => {\n const DRAWER_WIDTH = '450px';\n const DRAWER_HEIGHT = `calc(100vh - ${navHeight}px - ${footerHeight}px - 45px)`;\n\n return {\n root: {\n height: DRAWER_HEIGHT,\n },\n drawer: {\n width: DRAWER_WIDTH,\n flexShrink: 0,\n },\n drawerPaper: {\n width: DRAWER_WIDTH,\n },\n drawerHeader: {\n padding: theme.spacing(3, 3),\n borderBottom: `1px solid ${theme.palette.grey[200]}`,\n },\n drawerHeaderTitle: {\n paddingLeft: theme.spacing(2),\n },\n drawerActionButtons: {\n padding: theme.spacing(2, 3),\n borderTop: `1px solid ${theme.palette.grey[200]}`,\n },\n };\n});\n","import React, {FC} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {IWithDisabled} from 'models/common';\nimport {Link} from '../Link/Link';\nimport {Tooltip} from '../Tooltips';\nimport {Heading} from '../text';\n\ninterface ILinkWithTooltipProps extends IWithDisabled {\n tooltipTitle?: string;\n children: string;\n withNewTab?: boolean;\n className?: string;\n charsLimit?: number;\n maxWidth?: number;\n isDeletedOrExpired?: boolean;\n clickHandler: (event?: any) => void;\n}\n\nexport const LinkWithTooltip: FC<ILinkWithTooltipProps> = ({\n tooltipTitle,\n clickHandler,\n children,\n withNewTab = false,\n className,\n disabled,\n isDeletedOrExpired = false,\n maxWidth = 320,\n}) => {\n const classes = useStyles({maxWidth, isDeletedOrExpired});\n\n return (\n <Tooltip title={tooltipTitle}>\n <Link withNewTab={withNewTab} className={className} clickHandler={clickHandler} disabled={disabled}>\n <Heading classes={{root: classes.link}} as=\"h4\" color=\"inherit\">\n {children}\n </Heading>\n </Link>\n </Tooltip>\n );\n};\n\nconst useStyles = makeStyles(() => ({\n link: ({maxWidth, isDeletedOrExpired}: Pick<ILinkWithTooltipProps, 'maxWidth' | 'isDeletedOrExpired'>) => ({\n maxWidth,\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textDecoration: isDeletedOrExpired && 'line-through',\n }),\n '@media screen and (max-width: 1920px)': {\n link: ({maxWidth}: Pick<ILinkWithTooltipProps, 'maxWidth'>) => ({\n maxWidth: maxWidth / 1.1,\n }),\n },\n '@media screen and (max-width: 1600px)': {\n link: ({maxWidth}: Pick<ILinkWithTooltipProps, 'maxWidth'>) => ({\n maxWidth: maxWidth / 1.5,\n }),\n },\n '@media screen and (max-width: 960px)': {\n link: ({maxWidth}: Pick<ILinkWithTooltipProps, 'maxWidth'>) => ({\n maxWidth: maxWidth / 2,\n }),\n },\n}));\n","import React, {useMemo} from 'react';\nimport {\n TableContainer as MUITableContainer,\n TableBody as MUITableBody,\n Table as MUITable,\n TableHead as MUITableHead,\n TableRow as MUITableRow,\n TableCell as MUITableCell,\n makeStyles,\n} from '@material-ui/core';\nimport {useTable, useResizeColumns} from 'react-table';\nimport {IColumn} from 'models';\n\ninterface IResizableTableProps {\n muiRows: any[];\n columns: IColumn[];\n}\n\nconst mapTableColumns = (columns: IColumn[]) =>\n columns.map((col) => ({\n Header: col.label,\n id: col.id,\n accessor: col.id,\n disableGroupBy: true,\n }));\n\nconst TABLE_COL_CONF = {\n // When using the useFlexLayout:\n minWidth: 30, // minWidth is only used as a limit for resizing\n width: 100, // width is used for both the flex-basis and flex-grow\n maxWidth: 200, // maxWidth is only used as a limit for resizing\n};\n\nexport const ResizableTable = ({muiRows, columns}: IResizableTableProps) => {\n const classes = useStyles();\n const reactTableColumns = useMemo(() => mapTableColumns(columns), [columns]);\n // muiRows: The data array that you want to display on the table.\n const data = useMemo(() => muiRows, [muiRows]);\n\n const defaultColumn = useMemo(() => TABLE_COL_CONF, []);\n\n // Use the state and functions returned from useTable to build your UI\n const {getTableProps, headers, rows, prepareRow} = useTable(\n {\n columns: reactTableColumns,\n data,\n defaultColumn,\n },\n useResizeColumns\n // useFlexLayout\n // not working\n // see: https://github.com/tannerlinsley/react-table/issues/3314\n );\n\n const tableProps = getTableProps();\n\n return (\n <MUITableContainer>\n <MUITable {...tableProps}>\n <MUITableHead>\n <MUITableRow>\n {headers.map((column: any, columnIdx: number) => {\n const headerProps = column.getHeaderProps();\n const headerResizeProps = column.getResizerProps();\n // Search or make for a react-table column interface\n return (\n <MUITableCell {...headerProps} key={`headerCellIdx-${columnIdx}`} className={classes.th}>\n {column.render('Header')}\n {/* Use column.getResizerProps to hook up the events correctly */}\n {column.canResize && <div {...headerResizeProps} className={classes.resizer} />}\n </MUITableCell>\n );\n })}\n </MUITableRow>\n </MUITableHead>\n <MUITableBody>\n {rows.map((row, rowIdx) => {\n prepareRow(row);\n const rowProps = row.getRowProps();\n return (\n <MUITableRow key={`rowIdx-${rowIdx}`} {...rowProps} tabIndex={-1}>\n {row.cells.map((cell: any, cellIdx: number) => {\n const cellProps = cell.getCellProps();\n // Search or make for a react-table cell interface\n return (\n <MUITableCell key={`cellIdx-${cellIdx}`} {...cellProps}>\n {cell.render('Cell')}\n </MUITableCell>\n );\n })}\n </MUITableRow>\n );\n })}\n </MUITableBody>\n </MUITable>\n </MUITableContainer>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n th: {\n '&:hover': {\n borderRight: `3px solid ${theme.palette.grey[200]}`,\n },\n },\n resizer: {\n right: 0,\n width: 3,\n height: '100%',\n position: 'absolute',\n top: 0,\n zIndex: 1,\n touchAction: 'none',\n },\n}));\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport {makeStyles} from '@material-ui/core';\nimport {filtersPeriodSelector, ItemWithPlaceholder} from 'filters-selections';\nimport {Accordion, Row} from 'components-lib';\nimport {FormNameEnum} from 'filters-selections/enums';\nimport {Form} from 'forms';\nimport {IWithDisabled} from 'models';\n\nexport function FromToDateFilter({disabled}: IWithDisabled) {\n const classes = useStyles();\n const filter = useSelector(filtersPeriodSelector);\n\n return (\n <Accordion heading=\"Start Date / End Date\">\n <Row justify=\"space-between\">\n <Row classes={{root: classes.startDateContainer}}>\n <ItemWithPlaceholder label=\"Start Date\" hasItems>\n <Form.DatePicker\n disabled={disabled}\n name={FormNameEnum.startDate}\n value={filter.startDate}\n format=\"MM/dd/yyyy\"\n withMaxDate\n maxWidth\n maxDateFormField={FormNameEnum.endDate}\n />\n </ItemWithPlaceholder>\n </Row>\n\n <Row classes={{root: classes.endDateContainer}}>\n <ItemWithPlaceholder label=\"End Date\" hasItems>\n <Form.DatePicker\n disabled={disabled}\n name={FormNameEnum.endDate}\n value={filter.endDate}\n format=\"MM/dd/yyyy\"\n withMinDate\n maxWidth\n minDateFormField={FormNameEnum.startDate}\n />\n </ItemWithPlaceholder>\n </Row>\n </Row>\n </Accordion>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n startDateContainer: {\n padding: theme.spacing(2, 0),\n },\n endDateContainer: {\n padding: theme.spacing(2, 0),\n },\n}));\n","import React, {useMemo} from 'react';\nimport {Accordion, Column, Text} from 'components-lib';\nimport {useSelector} from 'react-redux';\nimport {IOption, IWithDisabled} from 'models';\nimport {FormNameEnum, filterIntegrationStatusesEntitiesCollectionSelector} from 'filters-selections';\nimport {Form} from 'forms';\n\ntype IIntegrationTypeMultiFilterProps = IWithDisabled;\n\nexport const IntegrationStatusMultiFilter = ({disabled}: IIntegrationTypeMultiFilterProps) => {\n const integrationStatuses = useSelector(filterIntegrationStatusesEntitiesCollectionSelector);\n\n const options: IOption[] = useMemo(() => {\n return integrationStatuses.map((integrationType) => ({\n value: integrationType.id,\n label: integrationType.displayText,\n }));\n }, [integrationStatuses]);\n\n return (\n <Accordion heading=\"Statuses\">\n <Column>\n {integrationStatuses.length ? (\n <Form.SelectAutocomplete\n name={FormNameEnum.integrationStatuses}\n options={options}\n multiple\n disabled={disabled}\n />\n ) : (\n <Text.Caption>No Statuses</Text.Caption>\n )}\n </Column>\n </Accordion>\n );\n};\n","import React, {FC, Fragment, useMemo} from 'react';\nimport {Accordion, Column, Text} from 'components-lib';\nimport {useSelector} from 'react-redux';\nimport {IOption, IWithDisabled} from 'models';\nimport {FormNameEnum, filterIntegrationTypesEntitiesCollectionSelector} from 'filters-selections';\nimport {Form} from 'forms';\n\ninterface IIntegrationTypeFilterProps extends IWithDisabled {\n selectionType?: 'single' | 'multi';\n name?: FormNameEnum;\n}\n\nexport const IntegrationTypeFilter: FC<IIntegrationTypeFilterProps> = ({\n selectionType = 'multi',\n disabled,\n name = FormNameEnum.integrationTypes,\n}) => {\n const isMultiSelectFilter = selectionType === 'multi';\n const integrationTypes = useSelector(filterIntegrationTypesEntitiesCollectionSelector);\n\n const options: IOption[] = useMemo(() => {\n return integrationTypes.map((integrationType) => ({\n value: integrationType.id,\n label: integrationType.displayText,\n }));\n }, [integrationTypes]);\n\n const content = useMemo(\n () => (\n <Fragment>\n {isMultiSelectFilter ? (\n <Form.SelectAutocomplete name={name} options={options} multiple disabled={disabled} />\n ) : (\n <Form.SelectAutocomplete name={name} options={options} multiple={false} disabled={disabled} />\n )}\n </Fragment>\n ),\n [isMultiSelectFilter, disabled, options, name]\n );\n\n return (\n <Accordion heading=\"Integration Type\">\n <Column>\n {integrationTypes?.length ? <Fragment>{content}</Fragment> : <Text.Caption>No Types</Text.Caption>}\n </Column>\n </Accordion>\n );\n};\n","import React from 'react';\nimport {Accordion} from 'components-lib';\nimport {Form} from 'forms';\nimport {FormNameEnum} from '../../../enums';\nimport {IWithDisabled} from 'models';\n\ninterface ILearningObjectiveFilterProps extends IWithDisabled {\n value?: string;\n}\n\nexport const LearningObjectiveFilter = ({disabled}: ILearningObjectiveFilterProps) => {\n return (\n <Accordion heading=\"Learning Objective\">\n <Form.Search name={FormNameEnum.learningObjective} disabled={disabled} withIcon={false} />\n </Accordion>\n );\n};\n","import {useFormikContext} from 'formik';\nimport {useSelector} from 'react-redux';\nimport {isDomainKnowledge} from 'utils';\nimport {FormNameEnum} from '../enums';\nimport {filtersDomainsEntitiesSelector} from '../store';\n\nexport function useIsDomainKnowledgeSelected() {\n const {values} = useFormikContext();\n\n const domains = useSelector(filtersDomainsEntitiesSelector);\n const domainId = values[FormNameEnum.domain];\n const domain = domains[domainId];\n const isDomainKnowledgeSelected = isDomainKnowledge(domain);\n\n return {isDomainKnowledgeSelected, formValues: values};\n}\n","import React, {useEffect, useMemo} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {makeStyles} from '@material-ui/core';\nimport {Accordion} from 'components-lib';\nimport {fetchProgramsThunk} from 'filters-selections';\nimport {FormNameEnum} from 'filters-selections/enums';\nimport {programsEntitiesCollectionSelector} from 'filters-selections/store';\nimport {Form} from 'forms';\nimport {IWithDisabled} from 'models';\ninterface IProgramSelectProps extends IWithDisabled {\n selectionType?: 'single' | 'multi';\n}\n\nexport function ProgramFilter({selectionType = 'multi', disabled}: IProgramSelectProps) {\n const classes = useStyles();\n const dispatch = useDispatch();\n const programs = useSelector(programsEntitiesCollectionSelector);\n const isMultiSelect = selectionType === 'multi';\n\n useEffect(() => {\n if (!programs.length) {\n dispatch(fetchProgramsThunk());\n }\n }, [dispatch, programs.length]);\n\n const options: any = useMemo(() => {\n return programs.map((program) => ({value: program.id, label: program.name}));\n }, [programs]);\n\n return (\n <Accordion heading=\"Programs\">\n {isMultiSelect ? (\n <Form.SelectAutocomplete name={FormNameEnum.programs} options={options} multiple disabled={disabled} />\n ) : (\n <div className={classes.select}>\n <Form.Select name={FormNameEnum.programs} options={options} disabled={disabled} />\n </div>\n )}\n </Accordion>\n );\n}\n\nconst useStyles = makeStyles({\n select: {\n width: '100%',\n },\n});\n","import React, {FC, useEffect, useMemo} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {Form} from 'forms';\nimport {Accordion} from 'components-lib';\nimport {fetchProgramYearsThunk} from 'filters-selections';\nimport {FormNameEnum} from 'filters-selections/enums';\nimport {filtersYearsEntitiesCollectionSelector} from 'filters-selections/store';\nimport {IOption, IWithDisabled} from 'models';\nimport {IWithMultiSelectOption} from 'filters-selections/models';\ninterface IProgramYearFilterProps extends IWithMultiSelectOption, IWithDisabled {\n name?: string;\n}\n\nexport const ProgramYearFilter: FC<IProgramYearFilterProps> = ({\n selectionType,\n disabled,\n name = FormNameEnum.programYear,\n}) => {\n const dispatch = useDispatch();\n\n const programYears = useSelector(filtersYearsEntitiesCollectionSelector);\n\n const isMultiSelect = selectionType === 'multi';\n\n useEffect(() => {\n if (!programYears.length) {\n dispatch(fetchProgramYearsThunk());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const options: IOption[] = useMemo(\n () =>\n programYears.map((programYear) => ({\n value: programYear.id,\n label: programYear.displayText,\n })),\n [programYears]\n );\n\n return (\n <Accordion heading=\"Program Years\">\n {isMultiSelect ? (\n <Form.SelectAutocomplete name={name} options={options} multiple disabled={disabled} />\n ) : (\n <Form.Select name={name} options={options} disabled={disabled} />\n )}\n </Accordion>\n );\n};\n","import {useFormikContext} from 'formik';\nimport {useSelector} from 'react-redux';\nimport {FormNameEnum} from '../enums';\nimport {pillarsEntitiesCollectionSelector} from '../store';\nimport {IUploadResourceFormBaseValues} from 'admin/resources/upload/models';\n\nconst getHasPillarsSelected = (pillars: number | number[]) => {\n if (Array.isArray(pillars)) {\n return pillars.length > 0;\n } else {\n return pillars ? true : false;\n }\n};\n\nexport function useIsPillarSelected() {\n const {values, setFieldValue} = useFormikContext<IUploadResourceFormBaseValues>();\n const pillars = useSelector(pillarsEntitiesCollectionSelector);\n const pillarId = values[FormNameEnum.pillars] as any;\n const isPillarArray = Array.isArray(pillarId);\n const selectedPillars = !isPillarArray ? pillars[pillarId] : pillars.filter(({id}) => pillarId.includes(id));\n const hasPillarsSelected = getHasPillarsSelected(selectedPillars);\n\n return {hasPillarsSelected, pillarId, formValues: values, setFieldValue};\n}\n","import {useFormikContext} from 'formik';\nimport {FormNameEnum} from '../enums';\n\nexport function useIsProgramSelected() {\n const {values} = useFormikContext();\n\n const programIds = values[FormNameEnum.programs];\n const isProgramSelected = programIds.length ? true : false;\n\n return {isProgramSelected, programIds, formValues: values};\n}\n","import {useAppDispatch} from 'hooks';\nimport {useCallback} from 'react';\nimport {filtersActions as actions} from '../store/filtersSelections.slice';\n\nexport const useSchoolNameBasedOnAreaSelect = () => {\n const dispatch = useAppDispatch();\n\n const clearSchoolNameSelectItems = useCallback(() => dispatch(actions.clearSchools()), [dispatch]);\n\n return {clearSchoolNameSelectItems};\n};\n","import {useSelector} from 'react-redux';\nimport {useFormikContext} from 'formik';\nimport {filtersCompetenciesEntitiesCollectionSelector, FormNameEnum} from 'filters-selections';\nimport {IAddWebLinkFormBaseValues, IUploadFileFormBaseValues, IUploadScormFormBaseValues} from 'admin/resources/upload';\n\nexport const useIsCompetencySelected = () => {\n const {values} = useFormikContext<\n IUploadFileFormBaseValues | IUploadScormFormBaseValues | IAddWebLinkFormBaseValues\n >();\n const comptencies = useSelector(filtersCompetenciesEntitiesCollectionSelector);\n const comptencyIds = values[FormNameEnum.competencies] as number[];\n const selectedCompetencies = comptencies.filter(({id}) => comptencyIds.includes(id));\n const hasCompetenciesSelected = selectedCompetencies.length > 0;\n\n return {hasCompetenciesSelected, comptencyIds};\n};\n","import React, {useMemo, useEffect, useState} from 'react';\r\nimport {Accordion, Text} from 'components-lib';\r\nimport {FormNameEnum} from 'filters-selections/enums';\r\nimport {Form} from 'forms';\r\nimport {useAppDispatch} from 'hooks';\r\nimport {IOption, IWithDisabled} from 'models';\r\nimport {fetchSessionsByProgramIdsThunk} from 'filters-selections/store';\r\nimport {useIsProgramSelected} from 'filters-selections/hooks';\r\nimport {unwrapResult} from '@reduxjs/toolkit';\r\ninterface ISessionsEntity {\r\n id: number;\r\n name: string;\r\n programId?: number;\r\n}\r\n\r\nexport function SessionsFilter({disabled}: IWithDisabled) {\r\n const dispatch = useAppDispatch();\r\n const {formValues} = useIsProgramSelected();\r\n const [sessions, setSessions] = useState([]);\r\n const programIds = formValues[FormNameEnum.programs];\r\n\r\n useEffect(() => {\r\n if (programIds.length) {\r\n dispatch(fetchSessionsByProgramIdsThunk(programIds))\r\n .then(unwrapResult)\r\n .then((response: ISessionsEntity[]) => {\r\n setSessions(response);\r\n });\r\n }\r\n return () => setSessions([]);\r\n }, [dispatch, programIds]);\r\n\r\n const options = useMemo(() => {\r\n if (!sessions.length) {\r\n return [];\r\n } else {\r\n return sessions.length && mapOptions(sessions);\r\n }\r\n }, [sessions]);\r\n return (\r\n <Accordion heading=\"Sessions\">\r\n {sessions && sessions.length ? (\r\n <Form.SelectAutocomplete name={FormNameEnum.sessions} options={options} multiple disabled={disabled} />\r\n ) : (\r\n <Text.Caption>Select Programs</Text.Caption>\r\n )}\r\n </Accordion>\r\n );\r\n}\r\n\r\nconst mapOptions = (sessions: ISessionsEntity[]): IOption[] => {\r\n return sessions?.map((f) => ({value: f.id, label: f.name}));\r\n};\r\n","import React, {FC, Fragment, useEffect, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {IOption, IWithDisabled} from 'models/common';\nimport {\n FormNameEnum,\n filterFileTypesEntitiesCollectionSelector,\n fetchAllFileTypeOptionsThunk,\n} from 'filters-selections';\nimport {Form} from 'forms';\nimport {Accordion, Column, Text} from 'components-lib';\nimport {useAppDispatch} from 'hooks';\nimport {IBindBaseEnumEntity} from 'models/interfaces';\n\ninterface IFileTypeFilterProps extends IWithDisabled {\n selectionType?: 'single' | 'multi';\n name?: FormNameEnum;\n}\n\nexport const FileTypeFilter: FC<IFileTypeFilterProps> = ({\n selectionType = 'multi',\n disabled,\n name = FormNameEnum.fileTypes,\n}) => {\n const dispatch = useAppDispatch();\n const isMultiSelectFilter = selectionType === 'multi';\n const fileTypes: IBindBaseEnumEntity[] = useSelector(filterFileTypesEntitiesCollectionSelector);\n\n useEffect(() => {\n if (!fileTypes.length) {\n dispatch(fetchAllFileTypeOptionsThunk());\n }\n }, [fileTypes.length, dispatch]);\n\n const options: IOption[] = useMemo(() => {\n return fileTypes.map((fileType) => ({\n value: fileType.id,\n label: fileType.displayText,\n }));\n }, [fileTypes]);\n\n const content = useMemo(\n () => (\n <Fragment>\n {isMultiSelectFilter ? (\n <Form.SelectAutocomplete name={name} options={options} multiple disabled={disabled} />\n ) : (\n <Form.Select name={name} options={options} disabled={disabled} />\n )}\n </Fragment>\n ),\n [isMultiSelectFilter, disabled, options, name]\n );\n\n return (\n <Accordion heading=\"Resource Types\">\n <Column>{fileTypes?.length ? <Fragment>{content}</Fragment> : <Text.Caption>No Data</Text.Caption>}</Column>\n </Accordion>\n );\n};\n","import {FiltersEnum} from 'filters-selections/enums';\nimport React, {FC} from 'react';\nimport {AdministrationFilter} from '../AdministrationFilter/AdministrationFilter';\nimport {AreasFilter, AreasMultiAutocompleteFilter, AreasMultiAutocompleteExternalDataFilter} from '../AreasFilter';\nimport {AudienceFilter} from '../AudienceFilter/AudienceFilter';\nimport {CategoryFilter} from '../CategoryFilter/CategoryFilter';\nimport {ClassIsVirtualFilter} from '../ClassIsVirtualFilter/ClassIsVirtualFilter';\nimport {CompetenciesFilter} from '../CompetencyFilter/CompetenciesFilter';\nimport {CompetencyFilter} from '../CompetencyFilter/CompetencyFilter';\nimport {ConceptsFilter} from '../ConceptFilter/ConceptFilter';\nimport {DigitalResourcesConceptsFilter} from '../ConceptFilter/DigitalResourcesConceptsFilter';\nimport {DigitalResourceTypesFilter} from '../DigitalResourceTypesFilter/DigitalResourceTypesFilter';\nimport {DistrictsFilter} from '../DistrictsFilter/DistrictsFilter';\nimport {DomainFilter} from '../DomainFilter/DomainFilter';\nimport {DrmExpirationDateFilter} from '../DrmExpirationDateFilter/DrmExpirationDateFilter';\nimport {EducatorFilter} from '../EducatorFilter/EducatorFilter';\nimport {EvaluationTypeFilter} from '../EvaluationTypeFilter/EvaluationTypeFilter';\nimport {FromToDateFilter} from '../FromToDateFilter/FromToDateFilter';\nimport {GradeLevelFilter} from '../GradeLevelFilter/GradeLevelFilter';\nimport {InstrumentStatusFilter} from '../InstrumentStatusFilter/InstrumentStatusFilter';\nimport {InstrumentTypeFilter} from '../InstrumentTypeFilter/InstrumentTypeFilter';\nimport {InstrumentViewTypeFilter} from '../InstrumentViewTypeFilter/InstrumentViewTypeFilter';\nimport {IntegrationStatusMultiFilter} from '../IntegrationStatusFilter/IntegrationStatusMultiFilter';\nimport {IntegrationTypeMultiFilter} from '../IntegrationTypeFilter/IntegrationTypeFilterMulti';\nimport {IntegrationTypeSingleFilter} from '../IntegrationTypeFilter/IntegrationTypeSingle';\nimport {ItemStatusFilter} from '../ItemStatusFilter/ItemStatusFilter';\nimport {ItemTypeFilter} from '../ItemTypeFilter/ItemTypeFilter';\nimport {KeyTermsFilter} from '../KeyTermsFilter/KeyTermsFilter';\nimport {LanguagesFilter} from '../LanguagesFilter/LanguagesFilter';\nimport {LearningObjectiveFilter} from '../LearningObjectiveFilter/LearningObjectiveFilter';\nimport {LearningObjectiveWithDomainDependencyFilter} from '../LearningObjectiveFilter/LearningObjectiveWithDomainDependencyFilter';\nimport {LearningObjectivesFilter} from '../LearningObjectivesFilter/LearningObjectivesFilter';\nimport {MetadataFilter} from '../MetadataFilter/MetadataFilter';\nimport {PhaseFilter} from '../PhaseFilter/PhaseFilter';\nimport {PillarFilter} from '../PillarFilter/PillarFilter';\nimport {PillarMultiSelectFilter} from '../PillarFilter/PillarMultiSelectFilter';\nimport {ProgramFilterMulti} from '../ProgramFilter/ProgramFilterMulti';\nimport {ProgramFilterSingle} from '../ProgramFilter/ProgramFilterSingle';\nimport {ProgramYearCheckboxFilter, ProgramYearMultiFilter} from '../ProgramYearFilter';\nimport {SchoolLevelFilter} from '../SchoolLevelFilter/SchoolLevelFilter';\nimport {SessionsFilter} from '../SessionsFilter/SessionsFilter';\nimport {SkillsAndBehaviorsFilter} from '../SkillsAndBehaviorsFilter/SkillsAndBehaviorsFilter';\nimport {TagGradeLevelsFilter} from '../TagGradeLevelsFilter/TagGradeLevelsFilter';\nimport {FileTypeFilter, FileTypeFilterMulti} from '../FileTypeFilter';\nimport {SchoolNameFilterBasedOnAreaAndDistrict} from '../SchoolNameFilter/SchoolNameFilterBasedOnAreaAndDistrict';\nimport {SchoolDistrictFilterMulti} from '../SchoolDistrictFilter/SchoolDistrictFilterMulti';\nimport {LearningPathStatusesCheckbox} from '../LearningPathStatusesFilter/LearningPathStatusesCheckbox';\nimport {KnowledgeSkillsAndAbilitiesFilter} from '../KnowledgeSkillsAndAbilitiesFilter/KnowledgeSkillsAndAbilitiesFilter';\nimport {AccessibleToStudentsRadioFilter} from '../AccessibleToStudentsRadioFilter/AccessibleToStudentsRadioFilter';\nimport {PublishedByRadioFilter} from '../PublishedByFilter/PublishedByRadioFilter';\nimport {FileStatussesCheckboxFilter} from '../FileStatussesFilter/FileStatussesCheckboxFilter';\n\nconst filterComponentMap = {\n [FiltersEnum.Audience]: AudienceFilter,\n [FiltersEnum.GradeLevel]: GradeLevelFilter,\n [FiltersEnum.Metadata]: MetadataFilter,\n [FiltersEnum.Phase]: PhaseFilter,\n [FiltersEnum.Pillar]: PillarFilter,\n [FiltersEnum.PillarMulti]: PillarMultiSelectFilter,\n [FiltersEnum.ProgramSingle]: ProgramFilterSingle,\n [FiltersEnum.ProgramMulti]: ProgramFilterMulti,\n [FiltersEnum.ProgramYearCheckbox]: ProgramYearCheckboxFilter,\n [FiltersEnum.ProgramYearMulti]: ProgramYearMultiFilter,\n [FiltersEnum.Educators]: EducatorFilter,\n [FiltersEnum.Areas]: AreasFilter,\n [FiltersEnum.Districts]: DistrictsFilter,\n [FiltersEnum.FromToDate]: FromToDateFilter,\n [FiltersEnum.InstrumentType]: InstrumentTypeFilter,\n [FiltersEnum.InstrumentStatus]: InstrumentStatusFilter,\n [FiltersEnum.Domain]: DomainFilter,\n [FiltersEnum.EvaluationType]: EvaluationTypeFilter,\n [FiltersEnum.Competency]: CompetencyFilter,\n [FiltersEnum.Competencies]: CompetenciesFilter,\n [FiltersEnum.Concept]: ConceptsFilter,\n [FiltersEnum.Category]: CategoryFilter,\n [FiltersEnum.Administration]: AdministrationFilter,\n [FiltersEnum.SchoolLevel]: SchoolLevelFilter,\n [FiltersEnum.ItemType]: ItemTypeFilter,\n [FiltersEnum.ItemStatus]: ItemStatusFilter,\n [FiltersEnum.InstrumentViewType]: InstrumentViewTypeFilter,\n [FiltersEnum.Session]: SessionsFilter,\n [FiltersEnum.DigitalResourcesConcepts]: DigitalResourcesConceptsFilter,\n [FiltersEnum.KeyTerms]: KeyTermsFilter,\n [FiltersEnum.LearningObjectives]: LearningObjectivesFilter,\n [FiltersEnum.SkillsAndBehaviors]: SkillsAndBehaviorsFilter,\n [FiltersEnum.Languages]: LanguagesFilter,\n [FiltersEnum.TagGradeLevels]: TagGradeLevelsFilter,\n [FiltersEnum.DigitalResourceTypes]: DigitalResourceTypesFilter,\n [FiltersEnum.DrmExpirationDate]: DrmExpirationDateFilter,\n [FiltersEnum.LearningObjective]: LearningObjectiveFilter,\n [FiltersEnum.LearningObjectiveWithDomainDependency]: LearningObjectiveWithDomainDependencyFilter,\n [FiltersEnum.IntegrationTypeSingle]: IntegrationTypeSingleFilter,\n [FiltersEnum.IntegrationTypeMulti]: IntegrationTypeMultiFilter,\n [FiltersEnum.IntegrationStatusMulti]: IntegrationStatusMultiFilter,\n [FiltersEnum.SchoolNameBasedOnAreaAndDistrict]: SchoolNameFilterBasedOnAreaAndDistrict,\n [FiltersEnum.AreasAutocompleteMulti]: AreasMultiAutocompleteFilter,\n [FiltersEnum.AreasMultiAutocompleteExternalData]: AreasMultiAutocompleteExternalDataFilter,\n [FiltersEnum.ClassesOnlyVirtual]: ClassIsVirtualFilter,\n [FiltersEnum.FileType]: FileTypeFilter,\n [FiltersEnum.FileTypeMulti]: FileTypeFilterMulti,\n [FiltersEnum.SchoolDistrictMulti]: SchoolDistrictFilterMulti,\n [FiltersEnum.LearningPathStatusesCheckbox]: LearningPathStatusesCheckbox,\n [FiltersEnum.KnowledgeSkillsAndAbilities]: KnowledgeSkillsAndAbilitiesFilter,\n [FiltersEnum.AccessibleToStudentsRadio]: AccessibleToStudentsRadioFilter,\n [FiltersEnum.PublishedByRadio]: PublishedByRadioFilter,\n [FiltersEnum.FileStatusesCheckbox]: FileStatussesCheckboxFilter,\n};\n\ninterface IFiltersListProps {\n filters: FiltersEnum[];\n disableAll?: boolean;\n}\n\nexport function FiltersList({filters, disableAll = false}: IFiltersListProps) {\n return (\n <>\n {filters.map((filter, idx) => {\n const FilterComponent: FC<any> = filterComponentMap[filter];\n return FilterComponent ? <FilterComponent key={idx} disabled={disableAll} /> : null;\n })}\n </>\n );\n}\n","import {Accordion, Column, Text} from 'components-lib';\nimport {fetchAudienceThunk} from 'filters-selections';\nimport {FormNameEnum} from 'filters-selections/enums';\nimport {filtersAudiencesEntitiesCollectionSelector} from 'filters-selections/store';\nimport {Form} from 'forms';\nimport React, {useEffect} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {IWithDisabled} from 'models';\n\nexport function AudienceFilter({disabled}: IWithDisabled) {\n const dispatch = useDispatch();\n const audiences = useSelector(filtersAudiencesEntitiesCollectionSelector);\n\n useEffect(() => {\n if (!audiences.length) {\n dispatch(fetchAudienceThunk());\n }\n }, [audiences.length, dispatch]);\n\n return (\n <Accordion heading=\"Audience\">\n <Column>\n {audiences.length ? (\n audiences.map((audience) => (\n <Form.Checkbox\n key={audience.id}\n name={FormNameEnum.audience}\n value={audience.id}\n label={audience.displayText}\n disabled={disabled}\n />\n ))\n ) : (\n <Text.Caption>No Audience</Text.Caption>\n )}\n </Column>\n </Accordion>\n );\n}\n","import {Accordion, Column, Text} from 'components-lib';\nimport {fetchGradeLevelsThunk} from 'filters-selections';\nimport {FormNameEnum} from 'filters-selections/enums';\nimport {filtersGradeLevelsEntitiesCollectionSelector} from 'filters-selections/store';\nimport {Form} from 'forms';\nimport React, {useEffect} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {IWithDisabled} from 'models';\n\nexport function GradeLevelFilter({disabled}: IWithDisabled) {\n const dispatch = useDispatch();\n const gradeLevels = useSelector(filtersGradeLevelsEntitiesCollectionSelector);\n\n useEffect(() => {\n if (!gradeLevels.length) {\n dispatch(fetchGradeLevelsThunk());\n }\n }, [dispatch, gradeLevels]);\n\n return (\n <Accordion heading=\"Grade Levels\">\n <Column>\n {gradeLevels.length ? (\n gradeLevels.map((gradeLevel) => (\n <Form.Checkbox\n key={gradeLevel.id}\n name={FormNameEnum.gradeLevels}\n value={gradeLevel.id}\n label={gradeLevel.name}\n disabled={disabled}\n />\n ))\n ) : (\n <Text.Caption>Loading...</Text.Caption>\n )}\n </Column>\n </Accordion>\n );\n}\n","import {Accordion, Column} from 'components-lib';\nimport {FormNameEnum} from 'filters-selections/enums';\nimport {Form} from 'forms';\nimport React from 'react';\nimport {IWithDisabled} from 'models';\n\nexport function MetadataFilter({disabled}: IWithDisabled) {\n return (\n <Accordion heading=\"Metadata\">\n <Column>\n <Form.Checkbox key={1} name={FormNameEnum.metadata} value={0} label=\"Invalid\" disabled={disabled} />\n <Form.Checkbox key={2} name={FormNameEnum.metadata} value={1} label=\"Valid\" disabled={disabled} />\n </Column>\n </Accordion>\n );\n}\n","import {Accordion, Column, Text} from 'components-lib';\nimport {fetchPhasesThunk} from 'filters-selections';\nimport {FormNameEnum} from 'filters-selections/enums';\nimport {filtersPhasesEntitiesCollectionSelector} from 'filters-selections/store';\nimport {Form} from 'forms';\nimport React, {useEffect} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {IWithDisabled} from 'models';\n\nexport function PhaseFilter({disabled}: IWithDisabled) {\n const dispatch = useDispatch();\n const phases = useSelector(filtersPhasesEntitiesCollectionSelector);\n\n useEffect(() => {\n if (!phases.length) {\n dispatch(fetchPhasesThunk());\n }\n }, [phases.length, dispatch]);\n\n return (\n <Accordion heading=\"Phase\">\n <Column>\n {phases.length ? (\n phases.map((phase) => (\n <Form.Checkbox\n key={phase.id}\n name={FormNameEnum.phase}\n value={phase.id}\n label={phase.displayText}\n disabled={disabled}\n />\n ))\n ) : (\n <Text.Caption>No Phases</Text.Caption>\n )}\n </Column>\n </Accordion>\n );\n}\n","import {Accordion, Column, Text} from 'components-lib';\nimport {FormNameEnum} from 'filters-selections/enums';\nimport {fetchPillarsThunk, pillarsEntitiesCollectionSelector} from 'filters-selections/store';\nimport {Form} from 'forms';\nimport React, {useEffect} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {IWithDisabled} from 'models';\n\nexport function PillarFilter({disabled}: IWithDisabled) {\n const dispatch = useDispatch();\n const pillars = useSelector(pillarsEntitiesCollectionSelector);\n\n useEffect(() => {\n if (!pillars.length) {\n dispatch(fetchPillarsThunk());\n }\n }, [pillars.length, dispatch]);\n\n return (\n <Accordion heading=\"Pillars\">\n <Column>\n {pillars.length ? (\n pillars.map((pillar) => (\n <Form.Checkbox\n key={pillar.id}\n name={FormNameEnum.pillars}\n value={pillar.id}\n label={pillar.name}\n disabled={disabled}\n />\n ))\n ) : (\n <Text.Caption>No Pillars</Text.Caption>\n )}\n </Column>\n </Accordion>\n );\n}\n","import React, {useEffect, useMemo} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport {FormNameEnum} from 'filters-selections';\nimport {fetchPillarsThunk, pillarsEntitiesCollectionSelector} from 'filters-selections/store';\nimport {Form} from 'forms';\nimport {IWithDisabled} from 'models';\nimport {Accordion} from 'components-lib';\n\ninterface IPillarsEntity {\n id: number;\n name: string;\n}\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface IPillarMultiSelectFilterProps extends IWithDisabled {}\n\nexport function PillarMultiSelectFilter({disabled}: IPillarMultiSelectFilterProps) {\n const dispatch = useDispatch();\n const pillars = useSelector(pillarsEntitiesCollectionSelector);\n\n useEffect(() => {\n if (!pillars.length) {\n dispatch(fetchPillarsThunk());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const options = useMemo(() => {\n return pillars.map((pillar: IPillarsEntity) => ({value: pillar.id, label: pillar.name}));\n }, [pillars]);\n\n return (\n <Accordion heading=\"Pillars\">\n <Form.SelectAutocomplete name={FormNameEnum.pillars} options={options} multiple disabled={disabled} />\n </Accordion>\n );\n}\n","import React from 'react';\nimport {ProgramFilter} from './ProgramFilter';\nimport {IWithDisabled} from 'models';\n\nexport function ProgramFilterSingle({disabled}: IWithDisabled) {\n return <ProgramFilter selectionType=\"single\" disabled={disabled} />;\n}\n","import React from 'react';\nimport {ProgramFilter} from './ProgramFilter';\nimport {IWithDisabled} from 'models';\n\nexport function ProgramFilterMulti({disabled}: IWithDisabled) {\n return <ProgramFilter selectionType=\"multi\" disabled={disabled} />;\n}\n","import React, {useEffect} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {Accordion, Column, Text} from 'components-lib';\nimport {fetchProgramYearsThunk} from 'filters-selections';\nimport {FormNameEnum} from 'filters-selections/enums';\nimport {filtersYearsEntitiesCollectionSelector} from 'filters-selections/store';\nimport {Form} from 'forms';\nimport {IWithDisabled} from 'models';\n\nexport function ProgramYearCheckboxFilter({disabled}: IWithDisabled) {\n const dispatch = useDispatch();\n const programYears = useSelector(filtersYearsEntitiesCollectionSelector);\n\n useEffect(() => {\n if (!programYears.length) {\n dispatch(fetchProgramYearsThunk());\n }\n }, [dispatch, programYears]);\n\n return (\n <Accordion heading=\"Program Year\">\n <Column>\n {programYears.length ? (\n programYears.map((programYear) => (\n <Form.Checkbox\n key={programYear.id}\n name={FormNameEnum.years}\n value={programYear.id}\n label={programYear.displayText}\n disabled={disabled}\n />\n ))\n ) : (\n <Text.Caption>Loading...</Text.Caption>\n )}\n </Column>\n </Accordion>\n );\n}\n","import React, {FC} from 'react';\nimport {IWithDisabled} from 'models';\nimport {ProgramYearFilter} from './ProgramYearFilter';\nimport {FormNameEnum} from 'filters-selections';\n\ntype IProgramYearMultiFilterProps = IWithDisabled;\n\nexport const ProgramYearMultiFilter: FC<IProgramYearMultiFilterProps> = ({disabled}) => {\n return <ProgramYearFilter selectionType=\"multi\" disabled={disabled} name={FormNameEnum.programYears} />;\n};\n","import React, {useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {Accordion, Column, Text} from 'components-lib';\nimport {FormNameEnum} from 'filters-selections/enums';\nimport {filtersEducatorsEntitiesCollectionSelector} from 'filters-selections/store';\nimport {Form} from 'forms';\nimport {IOption, IWithDisabled} from 'models';\n\nexport function EducatorFilter({disabled}: IWithDisabled) {\n const educators = useSelector(filtersEducatorsEntitiesCollectionSelector);\n\n const options: IOption[] = useMemo(() => {\n return educators.map((program) => ({value: program.id, label: program.name}));\n }, [educators]);\n\n return (\n <Accordion heading=\"Educators\">\n <Column>\n {educators.length ? (\n <Form.SelectAutocomplete name={FormNameEnum.educators} options={options} multiple disabled={disabled} />\n ) : (\n <Text.Caption>No Educators</Text.Caption>\n )}\n </Column>\n </Accordion>\n );\n}\n","import {Accordion, Column, Text} from 'components-lib';\nimport {FormNameEnum} from 'filters-selections/enums';\nimport {fetchAreasThunk, filtersAreasEntitiesCollectionSelector} from 'filters-selections/store';\nimport {Form} from 'forms';\nimport React, {useEffect} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {IBindBaseEntity, IWithDisabled} from 'models';\nimport {useSortOrder} from 'admin/programs/details/hooks';\nimport {SortingOrderEnum} from 'enums';\n\nexport function AreasFilter({disabled}: IWithDisabled) {\n const NAME_FIELD = 'name';\n const dispatch = useDispatch();\n const areas: IBindBaseEntity[] = useSelector(filtersAreasEntitiesCollectionSelector);\n const {sortBy} = useSortOrder();\n const sortedOptions = sortBy(areas, NAME_FIELD, SortingOrderEnum.ASC);\n\n useEffect(() => {\n if (!areas.length) {\n dispatch(fetchAreasThunk());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dispatch]);\n\n return (\n <Accordion heading=\"JA Area\">\n <Column>\n {sortedOptions.length ? (\n sortedOptions.map((area) => (\n <Form.Checkbox\n key={area.id}\n name={FormNameEnum.areas}\n value={area.id}\n label={area.name}\n disabled={disabled}\n />\n ))\n ) : (\n <Text.Caption>No Areas</Text.Caption>\n )}\n </Column>\n </Accordion>\n );\n}\n","import {Accordion, Column, Text} from 'components-lib';\nimport {FormNameEnum} from 'filters-selections/enums';\nimport {filtersDistrictsSelector} from 'filters-selections/store';\nimport {Form} from 'forms';\nimport React from 'react';\nimport {useSelector} from 'react-redux';\nimport {IWithDisabled} from 'models';\n\nexport function DistrictsFilter({disabled}: IWithDisabled) {\n const districts = useSelector(filtersDistrictsSelector);\n\n return (\n <Accordion heading=\"School Districts\">\n <Column>\n {districts.length ? (\n districts.map((district) => (\n <Form.Checkbox\n key={district}\n name={FormNameEnum.districts}\n value={district}\n label={district}\n disabled={disabled}\n />\n ))\n ) : (\n <Text.Caption>No School Districts</Text.Caption>\n )}\n </Column>\n </Accordion>\n );\n}\n","import {Accordion, Column, Text} from 'components-lib';\nimport {FormNameEnum} from 'filters-selections/enums';\nimport {fetchInstrumentTypesThunk, filtersInstrumentTypesEntitiesCollectionSelector} from 'filters-selections/store';\nimport {Form} from 'forms';\nimport React, {useEffect, useMemo} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {IOption, IWithDisabled} from 'models';\n\nexport function InstrumentTypeFilter({disabled}: IWithDisabled) {\n const dispatch = useDispatch();\n const types = useSelector(filtersInstrumentTypesEntitiesCollectionSelector);\n\n useEffect(() => {\n if (!types.length) {\n dispatch(fetchInstrumentTypesThunk());\n }\n }, [types.length, dispatch]);\n\n const options: IOption[] = useMemo(() => {\n return types.map((type) => ({\n value: type.id,\n label: type.displayText,\n }));\n }, [types]);\n\n return (\n <Accordion heading=\"Type\">\n <Column>\n {types.length ? (\n <Form.SelectAutocomplete name={FormNameEnum.instrumentType} options={options} multiple disabled={disabled} />\n ) : (\n <Text.Caption>No Types</Text.Caption>\n )}\n </Column>\n </Accordion>\n );\n}\n","import {Accordion, Column, Text} from 'components-lib';\nimport {FormNameEnum} from 'filters-selections/enums';\nimport {\n fetchInstrumentStatusesThunk,\n filtersInstrumentStatusesEntitiesCollectionSelector,\n} from 'filters-selections/store';\nimport {Form} from 'forms';\nimport React, {useEffect} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {IWithDisabled} from 'models';\n\nexport function InstrumentStatusFilter({disabled}: IWithDisabled) {\n const dispatch = useDispatch();\n const statuses = useSelector(filtersInstrumentStatusesEntitiesCollectionSelector);\n\n useEffect(() => {\n if (!statuses.length) {\n dispatch(fetchInstrumentStatusesThunk());\n }\n }, [statuses.length, dispatch]);\n\n return (\n <Accordion heading=\"Status\">\n <Column>\n {statuses.length ? (\n statuses.map((status) => (\n <Form.Checkbox\n key={status.id}\n name={FormNameEnum.instrumentStatus}\n value={status.id}\n label={status.displayText}\n disabled={disabled}\n />\n ))\n ) : (\n <Text.Caption>No Statuses</Text.Caption>\n )}\n </Column>\n </Accordion>\n );\n}\n","import {Accordion, Column, Text} from 'components-lib';\nimport {Form} from 'forms';\nimport React, {useEffect} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {FormNameEnum} from '../../../enums';\nimport {fetchDomainsThunk, filtersDomainsEntitiesCollectionSelector} from '../../../store';\nimport {IWithDisabled} from 'models';\n\nexport function DomainFilter({disabled}: IWithDisabled) {\n const dispatch = useDispatch();\n const domains = useSelector(filtersDomainsEntitiesCollectionSelector);\n\n useEffect(() => {\n if (!domains.length) {\n dispatch(fetchDomainsThunk());\n }\n }, [domains.length, dispatch]);\n\n return (\n <Accordion heading=\"Domain\">\n <Column>\n {domains.length ? (\n domains.map((domain) => (\n <Form.Checkbox\n key={domain.id}\n name={FormNameEnum.domain}\n value={domain.id}\n label={domain.displayText}\n disabled={disabled}\n />\n ))\n ) : (\n <Text.Caption>No Domains</Text.Caption>\n )}\n </Column>\n </Accordion>\n );\n}\n","import {Accordion, Column, Text} from 'components-lib';\nimport {Form} from 'forms';\nimport React, {useEffect} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {FormNameEnum} from '../../../enums';\nimport {fetchEvaluationTypesThunk, filtersEvaluationTypeEntitiesCollectionSelector} from '../../../store';\nimport {IWithDisabled} from 'models';\n\nexport function EvaluationTypeFilter({disabled}: IWithDisabled) {\n const dispatch = useDispatch();\n const evaluationTypes = useSelector(filtersEvaluationTypeEntitiesCollectionSelector);\n\n useEffect(() => {\n if (!evaluationTypes.length) {\n dispatch(fetchEvaluationTypesThunk());\n }\n }, [evaluationTypes.length, dispatch]);\n\n return (\n <Accordion heading=\"Evaluation Type\">\n <Column>\n {evaluationTypes.length ? (\n evaluationTypes.map((evaluationType) => (\n <Form.Checkbox\n key={evaluationType.id}\n name={FormNameEnum.evaluationType}\n value={evaluationType.id}\n label={evaluationType.displayText}\n disabled={disabled}\n />\n ))\n ) : (\n <Text.Caption>No Data</Text.Caption>\n )}\n </Column>\n </Accordion>\n );\n}\n","import React, {useEffect, useMemo} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport {Accordion, Text} from 'components-lib';\nimport {Form} from 'forms';\nimport {FormNameEnum} from '../../../enums';\nimport {fetchCompetenciesThunk, filtersCompetenciesEntitiesCollectionSelector} from '../../../store';\nimport {IWithDisabled} from 'models';\n\nexport function CompetencyFilter({disabled}: IWithDisabled) {\n const dispatch = useDispatch();\n const competencies = useSelector(filtersCompetenciesEntitiesCollectionSelector);\n\n useEffect(() => {\n if (!competencies.length) {\n dispatch(fetchCompetenciesThunk());\n }\n }, [competencies.length, dispatch]);\n\n const options: any = useMemo(() => {\n return competencies.map((competencies) => ({value: competencies.id, label: competencies.name}));\n }, [competencies]);\n\n return (\n <Accordion heading=\"Competencies\">\n {competencies.length ? (\n <Form.SelectAutocomplete name={FormNameEnum.competency} options={options} multiple disabled={disabled} />\n ) : (\n <Text.Caption>No Data</Text.Caption>\n )}\n </Accordion>\n );\n}\n","import React, {useEffect, useMemo} from 'react';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\n\r\nimport {Accordion, Text} from 'components-lib';\r\nimport {Form} from 'forms';\r\nimport {FormNameEnum} from '../../../enums';\r\nimport {fetchCompetenciesThunk, filtersCompetenciesEntitiesCollectionSelector} from '../../../store';\r\nimport {IWithDisabled} from 'models';\r\n\r\nexport function CompetenciesFilter({disabled}: IWithDisabled) {\r\n const dispatch = useDispatch();\r\n const competencies = useSelector(filtersCompetenciesEntitiesCollectionSelector);\r\n\r\n useEffect(() => {\r\n if (!competencies.length) {\r\n dispatch(fetchCompetenciesThunk());\r\n }\r\n }, [competencies.length, dispatch]);\r\n\r\n const options: any = useMemo(() => {\r\n return competencies.map((competencies) => ({value: competencies.id, label: competencies.name}));\r\n }, [competencies]);\r\n\r\n return (\r\n <Accordion heading=\"Competencies\">\r\n {competencies.length ? (\r\n <Form.SelectAutocomplete name={FormNameEnum.competencies} options={options} multiple disabled={disabled} />\r\n ) : (\r\n <Text.Caption>No Data</Text.Caption>\r\n )}\r\n </Accordion>\r\n );\r\n}\r\n","import {Accordion, Text} from 'components-lib';\nimport {Form} from 'forms';\nimport React, {useEffect, useMemo} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport {useFormikContext} from 'formik';\nimport {IWithDisabled} from 'models';\nimport {fetchConceptsThunk, filtersConceptsEntitiesCollectionSelector, FormNameEnum} from 'filters-selections';\n\nexport function ConceptsFilter({disabled}: IWithDisabled) {\n const dispatch = useDispatch();\n const concepts = useSelector(filtersConceptsEntitiesCollectionSelector);\n const {values} = useFormikContext();\n\n const currentCompetenciesSelected = values[FormNameEnum.competency];\n\n useEffect(() => {\n if (currentCompetenciesSelected?.length) {\n dispatch(fetchConceptsThunk(currentCompetenciesSelected));\n }\n }, [currentCompetenciesSelected, dispatch]);\n\n const options: any = useMemo(() => concepts.map((concepts) => ({value: concepts.id, label: concepts.name})), [\n concepts,\n ]);\n\n return (\n <Accordion heading=\"KSAs\">\n {concepts.length ? (\n <Form.SelectAutocomplete name={FormNameEnum.concept} options={options} multiple disabled={disabled} />\n ) : (\n <Text.Caption>Please select a competency first!</Text.Caption>\n )}\n </Accordion>\n );\n}\n","import {Accordion} from 'components-lib';\nimport {Form} from 'forms';\nimport React from 'react';\nimport {FormNameEnum} from '../../../enums';\nimport {IWithDisabled} from 'models';\n\nexport function CategoryFilter({disabled}: IWithDisabled) {\n return (\n <Accordion heading=\"Category\">\n <Form.Search name={FormNameEnum.category} disabled={disabled} withIcon={false} />\n </Accordion>\n );\n}\n","import {Accordion, Column, Text} from 'components-lib';\nimport {\n fetchAdministrationsThunk,\n filtersAdministrationsEntitiesCollectionSelector,\n FormNameEnum,\n} from 'filters-selections';\nimport {Form} from 'forms';\nimport React, {useEffect} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {IWithDisabled} from 'models';\n\nexport function AdministrationFilter({disabled}: IWithDisabled) {\n const dispatch = useDispatch();\n const administrations = useSelector(filtersAdministrationsEntitiesCollectionSelector);\n\n useEffect(() => {\n if (!administrations.length) {\n dispatch(fetchAdministrationsThunk());\n }\n }, [administrations.length, dispatch]);\n\n return (\n <Accordion heading=\"Administration\">\n <Column>\n {administrations.length ? (\n administrations.map((administration) => (\n <Form.Checkbox\n key={administration.id}\n name={FormNameEnum.administration}\n value={administration.id}\n label={administration.displayText}\n disabled={disabled}\n />\n ))\n ) : (\n <Text.Caption>No Data</Text.Caption>\n )}\n </Column>\n </Accordion>\n );\n}\n","import {Accordion, Column, Text} from 'components-lib';\nimport {Form} from 'forms';\nimport React, {useEffect} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {FormNameEnum} from '../../../enums';\nimport {fetchSchoolLevelThunk, filtersSchoolLevelsEntitiesCollectionSelector} from '../../../store';\nimport {IWithDisabled} from 'models';\n\nexport function SchoolLevelFilter({disabled}: IWithDisabled) {\n const dispatch = useDispatch();\n const schoolLevels = useSelector(filtersSchoolLevelsEntitiesCollectionSelector);\n\n useEffect(() => {\n if (!schoolLevels.length) {\n dispatch(fetchSchoolLevelThunk());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dispatch]);\n\n return (\n <Accordion heading=\"School Level\">\n <Column>\n {schoolLevels.length ? (\n schoolLevels.map((schoolLevel) => (\n <Form.Checkbox\n key={schoolLevel.id}\n name={FormNameEnum.schoolLevel}\n value={schoolLevel.id}\n label={schoolLevel.displayText}\n disabled={disabled}\n />\n ))\n ) : (\n <Text.Caption>No Data</Text.Caption>\n )}\n </Column>\n </Accordion>\n );\n}\n","import {Accordion, Column, Text} from 'components-lib';\nimport {Form} from 'forms';\nimport React, {useEffect} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {FormNameEnum} from '../../../enums';\nimport {fetchItemTypesThunk, filtersItemTypesEntitiesCollectionSelector} from '../../../store';\nimport {IWithDisabled} from 'models';\n\nexport function ItemTypeFilter({disabled}: IWithDisabled) {\n const dispatch = useDispatch();\n const itemTypes = useSelector(filtersItemTypesEntitiesCollectionSelector);\n\n useEffect(() => {\n if (!itemTypes.length) {\n dispatch(fetchItemTypesThunk());\n }\n }, [itemTypes.length, dispatch]);\n\n return (\n <Accordion heading=\"Item Type\">\n <Column>\n {itemTypes.length ? (\n itemTypes.map((itemType) => (\n <Form.Checkbox\n key={itemType.id}\n name={FormNameEnum.itemType}\n value={itemType.id}\n label={itemType.displayText}\n disabled={disabled}\n />\n ))\n ) : (\n <Text.Caption>No Data</Text.Caption>\n )}\n </Column>\n </Accordion>\n );\n}\n","import {ItemStatusEnum, ItemStatusNamesEnum} from 'admin/library/items/enums';\nimport {Accordion, Column} from 'components-lib';\nimport {Form} from 'forms';\nimport React from 'react';\nimport {FormNameEnum} from '../../../enums';\nimport {IWithDisabled} from 'models';\n\nexport function ItemStatusFilter({disabled}: IWithDisabled) {\n return (\n <Accordion heading=\"Item Status\">\n <Column>\n <Form.RadioGroup name={FormNameEnum.itemStatus}>\n {Object.keys(ItemStatusNamesEnum).map((key) => (\n <Form.Radio\n key={`${FormNameEnum.itemStatus}-${key}`}\n value={ItemStatusEnum[key]}\n label={ItemStatusNamesEnum[key]}\n disabled={disabled}\n />\n ))}\n </Form.RadioGroup>\n </Column>\n </Accordion>\n );\n}\n","import React from 'react';\nimport {InstrumentViewTypeEnum} from 'admin/library/items/enums';\nimport {Accordion, Column} from 'components-lib';\nimport {Form} from 'forms';\nimport {FormNameEnum} from '../../../enums';\nimport {IWithDisabled} from 'models';\n\nexport function InstrumentViewTypeFilter({disabled}: IWithDisabled) {\n return (\n <Accordion heading=\"Instrument Type\">\n <Column>\n <Form.RadioGroup name={FormNameEnum.instrumentViewType}>\n {InstrumentViewTypeEnum.map((type, key) => (\n <Form.Radio key={`instrumentViewType-${key}`} value={key} label={type} disabled={disabled} />\n ))}\n </Form.RadioGroup>\n </Column>\n </Accordion>\n );\n}\n","import {Accordion, Text} from 'components-lib';\r\nimport {Form} from 'forms';\r\nimport React, {useEffect, useMemo} from 'react';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {FormNameEnum} from '../../../enums';\r\nimport {fetchDigitalResourcesConceptsThunk, DigitalResourcesFiltersConceptsSelector} from '../../../store';\r\nimport {IWithDisabled} from 'models';\r\n\r\nexport function DigitalResourcesConceptsFilter({disabled}: IWithDisabled) {\r\n const dispatch = useDispatch();\r\n const concepts = useSelector(DigitalResourcesFiltersConceptsSelector);\r\n\r\n useEffect(() => {\r\n if (!concepts?.length) {\r\n dispatch(fetchDigitalResourcesConceptsThunk());\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [dispatch]);\r\n\r\n const options: any = useMemo(() => concepts.map((concept) => ({value: concept, label: concept})), [concepts]);\r\n\r\n return (\r\n <Accordion heading=\"KSAs\">\r\n {concepts.length ? (\r\n <Form.SelectAutocomplete name={FormNameEnum.concepts} options={options} multiple disabled={disabled} />\r\n ) : (\r\n <Text.Caption>No Data</Text.Caption>\r\n )}\r\n </Accordion>\r\n );\r\n}\r\n","import {Accordion, Text} from 'components-lib';\r\nimport {Form} from 'forms';\r\nimport React, {useEffect, useMemo} from 'react';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {FormNameEnum} from '../../../enums';\r\nimport {fetchKeyTermsThunk, KeyTermsSelector} from '../../../store';\r\nimport {IWithDisabled} from 'models';\r\n\r\nexport function KeyTermsFilter({disabled}: IWithDisabled) {\r\n const dispatch = useDispatch();\r\n const keyTerms = useSelector(KeyTermsSelector);\r\n\r\n useEffect(() => {\r\n if (!keyTerms?.length) {\r\n dispatch(fetchKeyTermsThunk());\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [dispatch]);\r\n\r\n const options: any = useMemo(() => keyTerms.map((term) => ({value: term, label: term})), [keyTerms]);\r\n\r\n return (\r\n <Accordion heading=\"Key Terms\">\r\n {keyTerms.length ? (\r\n <Form.SelectAutocomplete name={FormNameEnum.keyTerms} options={options} multiple disabled={disabled} />\r\n ) : (\r\n <Text.Caption>No Data</Text.Caption>\r\n )}\r\n </Accordion>\r\n );\r\n}\r\n","import {Accordion, Text} from 'components-lib';\r\nimport {Form} from 'forms';\r\nimport React, {useEffect, useMemo} from 'react';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {FormNameEnum} from '../../../enums';\r\nimport {fetchLearningObjectivesThunk, LearningObjectivesSelector} from '../../../store';\r\nimport {IWithDisabled} from 'models';\r\n\r\nexport function LearningObjectivesFilter({disabled}: IWithDisabled) {\r\n const dispatch = useDispatch();\r\n const learningObjectives = useSelector(LearningObjectivesSelector);\r\n\r\n useEffect(() => {\r\n if (!learningObjectives?.length) {\r\n dispatch(fetchLearningObjectivesThunk());\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [dispatch]);\r\n\r\n const options: any = useMemo(() => learningObjectives.map((objective) => ({value: objective, label: objective})), [\r\n learningObjectives,\r\n ]);\r\n\r\n return (\r\n <Accordion heading=\"Learning Objectives\">\r\n {learningObjectives.length ? (\r\n <Form.SelectAutocomplete\r\n name={FormNameEnum.learningObjectives}\r\n options={options}\r\n multiple\r\n disabled={disabled}\r\n />\r\n ) : (\r\n <Text.Caption>No Data</Text.Caption>\r\n )}\r\n </Accordion>\r\n );\r\n}\r\n","import React, {useMemo, useEffect} from 'react';\r\nimport {useSelector} from 'react-redux';\r\n\r\nimport {Accordion, Text} from 'components-lib';\r\nimport {FormNameEnum} from 'filters-selections/enums';\r\nimport {Form} from 'forms';\r\nimport {useAppDispatch} from 'hooks';\r\nimport {IWithDisabled} from 'models';\r\nimport {\r\n fetchSkillsAndBehaviorsThunk,\r\n filtersSkillsAndBehaviorsEntitiesCollectionSelector,\r\n} from 'filters-selections/store';\r\n\r\nexport function SkillsAndBehaviorsFilter({disabled}: IWithDisabled) {\r\n const dispatch = useAppDispatch();\r\n const skillsAndBehaviors = useSelector(filtersSkillsAndBehaviorsEntitiesCollectionSelector);\r\n\r\n useEffect(() => {\r\n if (!skillsAndBehaviors.length) {\r\n dispatch(fetchSkillsAndBehaviorsThunk());\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [dispatch]);\r\n const options = useMemo(() => skillsAndBehaviors.map((skills) => ({value: skills.id, label: skills.name})), [\r\n skillsAndBehaviors,\r\n ]);\r\n\r\n return (\r\n <Accordion heading=\"Skills And Behaviors\">\r\n {skillsAndBehaviors && skillsAndBehaviors.length ? (\r\n <Form.SelectAutocomplete\r\n name={FormNameEnum.skillsAndBehaviors}\r\n options={options}\r\n multiple\r\n disabled={disabled}\r\n />\r\n ) : (\r\n <Text.Caption>No Data</Text.Caption>\r\n )}\r\n </Accordion>\r\n );\r\n}\r\n","import React, {useMemo, useEffect} from 'react';\r\nimport {useSelector} from 'react-redux';\r\n\r\nimport {Accordion, Text} from 'components-lib';\r\nimport {FormNameEnum} from 'filters-selections/enums';\r\nimport {Form} from 'forms';\r\nimport {useAppDispatch} from 'hooks';\r\nimport {IWithDisabled} from 'models';\r\nimport {fetchLanguagesThunk, filtersLanguagesEntitiesCollectionSelector} from 'filters-selections/store';\r\n\r\nexport function LanguagesFilter({disabled}: IWithDisabled) {\r\n const dispatch = useAppDispatch();\r\n const languages = useSelector(filtersLanguagesEntitiesCollectionSelector);\r\n\r\n useEffect(() => {\r\n if (!languages.length) {\r\n dispatch(fetchLanguagesThunk());\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [dispatch]);\r\n const options = useMemo(() => languages.map((language) => ({value: language.id, label: language.name})), [languages]);\r\n\r\n return (\r\n <Accordion heading=\"Languages\">\r\n {languages && languages.length ? (\r\n <Form.SelectAutocomplete name={FormNameEnum.languages} options={options} multiple disabled={disabled} />\r\n ) : (\r\n <Text.Caption>No Data</Text.Caption>\r\n )}\r\n </Accordion>\r\n );\r\n}\r\n","import React, {useMemo, useEffect} from 'react';\r\nimport {useSelector} from 'react-redux';\r\n\r\nimport {Accordion, Text} from 'components-lib';\r\nimport {FormNameEnum} from 'filters-selections/enums';\r\nimport {Form} from 'forms';\r\nimport {useAppDispatch} from 'hooks';\r\nimport {IWithDisabled} from 'models';\r\nimport {fetchTagGradeLevelsThunk, filtersTagGradeLevelsEntitiesCollectionSelector} from 'filters-selections/store';\r\n\r\nexport function TagGradeLevelsFilter({disabled}: IWithDisabled) {\r\n const dispatch = useAppDispatch();\r\n const levels = useSelector(filtersTagGradeLevelsEntitiesCollectionSelector);\r\n\r\n useEffect(() => {\r\n if (!levels.length) {\r\n dispatch(fetchTagGradeLevelsThunk());\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [dispatch]);\r\n const options = useMemo(() => levels.map((level) => ({value: level.id, label: level.name})), [levels]);\r\n\r\n return (\r\n <Accordion heading=\"Grade Levels\">\r\n {levels && levels.length ? (\r\n <Form.SelectAutocomplete name={FormNameEnum.gradeLevels} options={options} multiple disabled={disabled} />\r\n ) : (\r\n <Text.Caption>No Data</Text.Caption>\r\n )}\r\n </Accordion>\r\n );\r\n}\r\n","import React, {useMemo, useEffect} from 'react';\r\nimport {useSelector} from 'react-redux';\r\n\r\nimport {Accordion, Text} from 'components-lib';\r\nimport {FormNameEnum} from 'filters-selections/enums';\r\nimport {Form} from 'forms';\r\nimport {useAppDispatch} from 'hooks';\r\nimport {IWithDisabled} from 'models';\r\nimport {\r\n fetchDigitalResourceTypesThunk,\r\n filtersDigitalResourceTypesEntitiesCollectionSelector,\r\n} from 'filters-selections/store';\r\n\r\nexport function DigitalResourceTypesFilter({disabled}: IWithDisabled) {\r\n const dispatch = useAppDispatch();\r\n const types = useSelector(filtersDigitalResourceTypesEntitiesCollectionSelector);\r\n\r\n useEffect(() => {\r\n if (!types.length) {\r\n dispatch(fetchDigitalResourceTypesThunk());\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [dispatch]);\r\n const options = useMemo(() => types.map((type) => ({value: type.id, label: type.displayText})), [types]);\r\n\r\n return (\r\n <Accordion heading=\"Types\">\r\n {types && types.length ? (\r\n <Form.Select name={FormNameEnum.digitalResourceTypes} options={options} disabled={disabled} />\r\n ) : (\r\n <Text.Caption>No Data</Text.Caption>\r\n )}\r\n </Accordion>\r\n );\r\n}\r\n","import {Accordion} from 'components-lib';\r\nimport {Form} from 'forms';\r\nimport React from 'react';\r\nimport {FormNameEnum} from '../../../enums';\r\nimport {IWithDisabled} from 'models';\r\n\r\nexport function DrmExpirationDateFilter({disabled}: IWithDisabled) {\r\n return (\r\n <Accordion heading=\"DRM Expiration Date\">\r\n <Form.DatePicker\r\n name={FormNameEnum.drmExpirationDate}\r\n label=\"\"\r\n value={null}\r\n disabled={disabled}\r\n maxWidth={true}\r\n />\r\n </Accordion>\r\n );\r\n}\r\n","import React, {useEffect} from 'react';\nimport {FormNameEnum} from '../../../enums';\nimport {LearningObjectiveFilter} from './LearningObjectiveFilter';\nimport {useIsDomainKnowledgeSelected} from '../../../hooks/useIsDomainKnowledgeSelected';\nimport {useFormikContext} from 'formik';\n\nexport const LearningObjectiveWithDomainDependencyFilter = () => {\n const {values, setFieldValue} = useFormikContext();\n const {isDomainKnowledgeSelected} = useIsDomainKnowledgeSelected();\n const learningObjectiveValue = values[FormNameEnum.learningObjective];\n\n useEffect(() => {\n if (!isDomainKnowledgeSelected) {\n setFieldValue(FormNameEnum.learningObjective, '');\n }\n }, [learningObjectiveValue, isDomainKnowledgeSelected, setFieldValue]);\n\n return <LearningObjectiveFilter value={learningObjectiveValue} disabled={!isDomainKnowledgeSelected} />;\n};\n","import React from 'react';\nimport {IntegrationTypeFilter} from './IntegrationTypeFilter';\nimport {IWithDisabled} from 'models';\nimport {FormNameEnum} from 'filters-selections';\n\nexport const IntegrationTypeSingleFilter = ({disabled}: IWithDisabled) => {\n return <IntegrationTypeFilter selectionType=\"single\" disabled={disabled} name={FormNameEnum.integrationType} />;\n};\n","import React from 'react';\nimport {IWithDisabled} from 'models';\nimport {IntegrationTypeFilter} from './IntegrationTypeFilter';\n\nexport const IntegrationTypeMultiFilter = ({disabled}: IWithDisabled) => (\n <IntegrationTypeFilter selectionType=\"multi\" disabled={disabled} />\n);\n","import React, {useCallback, useEffect, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {useFormikContext} from 'formik';\nimport {Form} from 'forms';\nimport {Accordion, Column} from 'components-lib';\nimport {IOption} from 'models';\nimport {\n delayTime,\n dynamicSearchMessages,\n FormNameEnum,\n getLoadingStateSchoolNames,\n minLength,\n schoolNamesEntitiesCollectionSelector,\n searchSchoolsThunk,\n} from 'filters-selections';\nimport {useDebounce} from 'hooks';\nimport {IIntegrationsAllFiltersFormValues} from 'admin/integrations/all/components/SidebarIntegrationsAll';\nimport {useSchoolNameBasedOnAreaSelect} from 'filters-selections/hooks';\nimport {IWithDisabled} from 'models';\n\nexport const SchoolNameFilterBasedOnAreaAndDistrict = ({disabled}: IWithDisabled) => {\n const [options, setOptions] = useState<IOption[]>([]);\n const dispatch = useDispatch();\n const {clearSchoolNameSelectItems} = useSchoolNameBasedOnAreaSelect();\n const {values} = useFormikContext<IIntegrationsAllFiltersFormValues>();\n\n const schoolNames = useSelector(schoolNamesEntitiesCollectionSelector);\n const loading = useSelector(getLoadingStateSchoolNames);\n\n useEffect(() => {\n if (loading) {\n setOptions([]);\n } else {\n setOptions(\n schoolNames.length > minLength\n ? schoolNames.map((schoolName) => ({\n value: schoolName.id,\n label: schoolName.name,\n }))\n : []\n );\n }\n }, [schoolNames, loading]);\n\n const debouncedSearchSchools = useDebounce(\n (nextValue: string, areaIds: string, districtIds: string) =>\n dispatch(\n searchSchoolsThunk({\n schoolNameQuery: nextValue,\n areaIds,\n districtIds,\n })\n ),\n delayTime\n );\n\n const handleInputChange = useCallback(\n (nextValue: string) => {\n const areaIds = values?.areas ? values?.areas.join(',') : '';\n const districtIds = values.schoolDistricts ? values.schoolDistricts.join(',') : '';\n\n if (!!nextValue && !!nextValue.trim()) {\n if (options.length > minLength) {\n clearSchoolNameSelectItems();\n }\n return debouncedSearchSchools(nextValue.trim(), areaIds, districtIds);\n }\n },\n [values.areas, values.schoolDistricts, debouncedSearchSchools, options, clearSchoolNameSelectItems]\n );\n\n return (\n <Accordion heading=\"School Names\">\n <Column>\n <Form.SearchSelectAutocomplete\n isFilter\n multiple\n disableCloseOnSelect\n loading={loading}\n name={FormNameEnum.schoolNames}\n options={options}\n noOptionsText={dynamicSearchMessages.noOptionsSchoolName}\n disabled={loading || disabled}\n inputChangeHandler={handleInputChange}\n />\n </Column>\n </Accordion>\n );\n};\n","import React, {useEffect, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {Form} from 'forms';\nimport {Accordion, Column, Text} from 'components-lib';\nimport {IOption, IWithDisabled} from 'models';\nimport {FormNameEnum, filtersAreasEntitiesCollectionSelector, fetchAreasThunk} from 'filters-selections';\nimport {useAppDispatch} from 'hooks';\n\ntype IAreasMultiAutocompleteFilterProps = IWithDisabled;\n\nexport const AreasMultiAutocompleteFilter = ({disabled}: IAreasMultiAutocompleteFilterProps) => {\n const dispatch = useAppDispatch();\n const areas = useSelector(filtersAreasEntitiesCollectionSelector);\n\n useEffect(() => {\n if (!areas.length) {\n dispatch(fetchAreasThunk());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dispatch]);\n\n const options: IOption[] = useMemo(() => {\n return areas.map((area) => ({value: area.id, label: area.name}));\n }, [areas]);\n\n return (\n <Accordion heading=\"JA Areas\">\n <Column>\n {areas.length ? (\n <Form.SelectAutocomplete name={FormNameEnum.areas} options={options} multiple disabled={disabled} />\n ) : (\n <Text.Caption>No Areas</Text.Caption>\n )}\n </Column>\n </Accordion>\n );\n};\n","import React, {FC, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {Form} from 'forms';\nimport {Accordion, Column, Text} from 'components-lib';\nimport {IOption, IWithDisabled} from 'models';\nimport {FormNameEnum, filtersAreasEntitiesCollectionSelector} from 'filters-selections';\n\ntype IAreasMultiAutocompleteExternalDataFilterProps = IWithDisabled;\n\nexport const AreasMultiAutocompleteExternalDataFilter: FC<IAreasMultiAutocompleteExternalDataFilterProps> = ({\n disabled,\n}) => {\n const areas = useSelector(filtersAreasEntitiesCollectionSelector);\n\n const options: IOption[] = useMemo(() => {\n return areas.map((area) => ({value: area.id, label: area.name}));\n }, [areas]);\n\n return (\n <Accordion heading=\"JA Areas\">\n <Column>\n {areas.length ? (\n <Form.SelectAutocomplete name={FormNameEnum.areas} options={options} multiple disabled={disabled} />\n ) : (\n <Text.Caption>No Areas</Text.Caption>\n )}\n </Column>\n </Accordion>\n );\n};\n","import {ClassTypes} from 'admin/programs/details/enums';\nimport {Accordion, Column} from 'components-lib';\nimport {Form} from 'forms';\nimport {IWithDisabled} from 'models';\nimport React from 'react';\nimport {FormNameEnum} from '../../../enums';\n\nexport function ClassIsVirtualFilter({disabled}: IWithDisabled) {\n return (\n <Accordion heading=\"Class Type\">\n <Column>\n <Form.RadioGroup name={FormNameEnum.onlyVirtualClass}>\n {ClassTypes.map((type, key) => (\n <Form.Radio key={`classType-${key}`} value={key} label={type} disabled={disabled} />\n ))}\n </Form.RadioGroup>\n </Column>\n </Accordion>\n );\n}\n","import React from 'react';\nimport {FileTypeFilter} from './FileTypeFilter';\nimport {IWithDisabled} from 'models/common';\n\nexport const FileTypeFilterMulti = ({disabled}: IWithDisabled) => {\n return <FileTypeFilter selectionType=\"multi\" disabled={disabled} />;\n};\n","import React, {FC, useCallback, useMemo} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {Accordion, Column} from 'components-lib';\nimport {Form} from 'forms';\nimport {\n delayTime,\n dynamicSearchMessages,\n fetchSchoolDistrictThunk,\n FormNameEnum,\n loadingStateDistricts,\n schoolDistrictsEntitiesCollectionSelector,\n} from 'filters-selections';\nimport {IOption, IWithDisabled} from 'models/common';\nimport {useDebounce} from 'hooks';\n\ntype ISchoolDistrictFilterMultiProps = IWithDisabled;\n\nexport const SchoolDistrictFilterMulti: FC<ISchoolDistrictFilterMultiProps> = ({disabled}) => {\n const dispatch = useDispatch();\n const schoolDistricts = useSelector(schoolDistrictsEntitiesCollectionSelector);\n const loading = useSelector(loadingStateDistricts);\n\n const options: IOption[] = useMemo(() => {\n if (loading) {\n return [];\n }\n\n return schoolDistricts\n ? schoolDistricts.map((schoolDistrict) => ({value: schoolDistrict.id, label: schoolDistrict.displayText}))\n : [];\n }, [schoolDistricts, loading]);\n\n const debouncedSearch = useDebounce((query: string) => dispatch(fetchSchoolDistrictThunk(query)), delayTime);\n\n const handleInputChange = useCallback((value: string) => !!value && !!value.trim() && debouncedSearch(value.trim()), [\n debouncedSearch,\n ]);\n\n return (\n <Accordion heading=\"School Districts\">\n <Column>\n <Form.SearchSelectAutocomplete\n isFilter\n multiple\n disableCloseOnSelect\n loading={loading}\n name={FormNameEnum.schoolDistricts}\n options={options}\n disabled={disabled || loading}\n noOptionsText={dynamicSearchMessages.noOptionsSchoolDistrict}\n inputChangeHandler={handleInputChange}\n withFontWeightBold={true}\n withCheckboxRenderOption={false}\n />\n </Column>\n </Accordion>\n );\n};\n","import React, {FC, useEffect} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {Accordion, Column, Text} from 'components-lib';\nimport {FormNameEnum} from 'filters-selections/enums';\nimport {\n fetchContentItemStatusesThunk,\n filtersLearningPathStatusesEntitiesCollectionSelector,\n} from 'filters-selections/store';\nimport {Form} from 'forms';\nimport {IWithDisabled} from 'models';\n\ntype ILearningPathStatusesCheckboxProps = IWithDisabled;\n\nexport const LearningPathStatusesCheckbox: FC<ILearningPathStatusesCheckboxProps> = ({disabled}) => {\n const dispatch = useDispatch();\n const learningPathStatuses = useSelector(filtersLearningPathStatusesEntitiesCollectionSelector);\n\n useEffect(() => {\n if (!learningPathStatuses.length) {\n dispatch(fetchContentItemStatusesThunk());\n }\n }, [dispatch, learningPathStatuses]);\n\n return (\n <Accordion heading=\"Statuses\">\n <Column>\n {learningPathStatuses.length ? (\n learningPathStatuses.map((learningPathStatus) => (\n <Form.Checkbox\n key={learningPathStatus.id}\n name={FormNameEnum.learningPathStatuses}\n value={learningPathStatus.id}\n label={learningPathStatus.displayText}\n disabled={disabled}\n />\n ))\n ) : (\n <Text.Caption>No Data</Text.Caption>\n )}\n </Column>\n </Accordion>\n );\n};\n","import React, {useMemo, useEffect, FC} from 'react';\nimport {useSelector} from 'react-redux';\nimport {Accordion, Text} from 'components-lib';\nimport {FormNameEnum} from 'filters-selections/enums';\nimport {Form} from 'forms';\nimport {useAppDispatch} from 'hooks';\nimport {IWithDisabled} from 'models';\nimport {fetchConceptsThunk, filtersConceptsEntitiesCollectionSelector} from 'filters-selections/store';\nimport {useFormikContext} from 'formik';\nimport {useIsCompetencySelected} from 'filters-selections/hooks';\n\ntype IKnowledgeSkillsAndAbilitiesFilterProps = IWithDisabled;\n\nexport const KnowledgeSkillsAndAbilitiesFilter: FC<IKnowledgeSkillsAndAbilitiesFilterProps> = ({disabled}) => {\n const dispatch = useAppDispatch();\n const knowledgeSkillsAndAbilities = useSelector(filtersConceptsEntitiesCollectionSelector);\n const {values, setFieldValue} = useFormikContext<any>();\n const {hasCompetenciesSelected} = useIsCompetencySelected();\n const shouldDisableKSAs = !hasCompetenciesSelected;\n\n useEffect(() => {\n if (values?.competencies?.length) {\n dispatch(fetchConceptsThunk(values.competencies));\n }\n }, [values.competencies, dispatch]);\n\n useEffect(() => {\n if (!hasCompetenciesSelected && values.competencies.length === 0 && values.knowledgeSkillsAndAbilities.length > 0) {\n setFieldValue(FormNameEnum.knowledgeSkillsAndAbilities, []);\n }\n }, [hasCompetenciesSelected, values.competencies, values.knowledgeSkillsAndAbilities, setFieldValue]);\n\n const options = useMemo(\n () =>\n knowledgeSkillsAndAbilities.map((knowledgeSkill) => ({\n value: knowledgeSkill.id,\n label: knowledgeSkill.name,\n })),\n [knowledgeSkillsAndAbilities]\n );\n\n return (\n <Accordion heading=\"KSAs\">\n {knowledgeSkillsAndAbilities && knowledgeSkillsAndAbilities.length && !shouldDisableKSAs ? (\n <Form.SelectAutocomplete\n name={FormNameEnum.knowledgeSkillsAndAbilities}\n options={options}\n multiple\n disabled={disabled || shouldDisableKSAs}\n />\n ) : (\n <Text.Caption>Choose a competency first</Text.Caption>\n )}\n </Accordion>\n );\n};\n","import React, {FC, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {Accordion, Row, Text} from 'components-lib';\nimport {FormNameEnum} from '../../../enums';\nimport {Form} from 'forms';\nimport {IWithDisabled} from 'models';\nimport {filterAccessibleToStudentsEntitiesCollectionSelector} from 'filters-selections';\n\ninterface IAccessibleToStudentsOption {\n label: string;\n value: number | string | boolean;\n}\n\ntype IAccessibleToStudentsRadioFilterProps = IWithDisabled;\n\nexport const AccessibleToStudentsRadioFilter: FC<IAccessibleToStudentsRadioFilterProps> = ({disabled}) => {\n const accessibleToStudents = useSelector(filterAccessibleToStudentsEntitiesCollectionSelector);\n\n const accessibleToStudentsOptions: IAccessibleToStudentsOption[] = useMemo(\n () => accessibleToStudents.map((option) => ({value: option.id, label: option.displayText})).reverse(),\n [accessibleToStudents]\n );\n\n return (\n <Accordion heading=\"Accessible to students\">\n {accessibleToStudentsOptions && accessibleToStudentsOptions.length ? (\n <Form.RadioGroup name={FormNameEnum.isAccessibleToStudents}>\n <Row justify=\"flex-start\">\n {accessibleToStudentsOptions.map((option: IAccessibleToStudentsOption, idx: number) => (\n <Form.Radio key={idx} value={option.value} label={option.label} disabled={disabled} />\n ))}\n </Row>\n </Form.RadioGroup>\n ) : (\n <Text.Caption>No Data</Text.Caption>\n )}\n </Accordion>\n );\n};\n","import React, {useMemo} from 'react';\nimport {Accordion, Row, Text} from 'components-lib';\nimport {Form} from 'forms';\nimport {\n filterPublishedByEntitiesCollectionSelector,\n FormNameEnum,\n getPublishedByExtendedList,\n} from 'filters-selections';\nimport {IBindBaseStringIdEnumEntity, IWithDisabled} from 'models';\nimport {useSelector} from 'react-redux';\nimport {userAreaSelector} from 'user';\n\ninterface IPublishedByOption {\n label: string;\n value: number | string | boolean;\n}\n\nexport const PublishedByRadioFilter = ({disabled}: IWithDisabled) => {\n const userArea = useSelector(userAreaSelector);\n const publishedBy = useSelector(filterPublishedByEntitiesCollectionSelector) as IBindBaseStringIdEnumEntity[];\n\n const publishedByExtendedList = useMemo(() => getPublishedByExtendedList(userArea, publishedBy[0]), [\n publishedBy,\n userArea,\n ]);\n\n const publishedByOptions: IPublishedByOption[] = useMemo(\n () => publishedByExtendedList.map((option) => ({value: option.name, label: option.displayText})),\n [publishedByExtendedList]\n );\n\n return (\n <Accordion heading=\"Published by\">\n {publishedByOptions && publishedByOptions.length ? (\n <Form.RadioGroup name={FormNameEnum.publishedBy}>\n <Row justify=\"flex-start\">\n {publishedByOptions.map((option: IPublishedByOption, idx: number) => (\n <Form.Radio key={idx} value={option.value} label={option.label} disabled={disabled} />\n ))}\n </Row>\n </Form.RadioGroup>\n ) : (\n <Text.Caption>No Data</Text.Caption>\n )}\n </Accordion>\n );\n};\n","import React, {FC, useEffect} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {Accordion, Column, Text} from 'components-lib';\nimport {FormNameEnum} from 'filters-selections/enums';\nimport {fetchFileStatusesThunk, filtersFileStatusesEntitiesCollectionSelector} from 'filters-selections/store';\nimport {Form} from 'forms';\nimport {IWithDisabled} from 'models';\n\ntype IFileStatussesCheckboxFilterProps = IWithDisabled;\n\nexport const FileStatussesCheckboxFilter: FC<IFileStatussesCheckboxFilterProps> = ({disabled}) => {\n const dispatch = useDispatch();\n const fileStatuses = useSelector(filtersFileStatusesEntitiesCollectionSelector);\n\n useEffect(() => {\n if (!fileStatuses.length) {\n dispatch(fetchFileStatusesThunk());\n }\n }, [dispatch, fileStatuses]);\n\n return (\n <Accordion heading=\"Statuses\">\n <Column>\n {fileStatuses.length ? (\n fileStatuses.map((fileStatus) => (\n <Form.Checkbox\n key={fileStatus.id}\n name={FormNameEnum.fileStatuses}\n value={fileStatus.id}\n label={fileStatus.displayText}\n disabled={disabled}\n />\n ))\n ) : (\n <Text.Caption>No Data</Text.Caption>\n )}\n </Column>\n </Accordion>\n );\n};\n","import React from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Column, Container, Icon, Input, Label, LoadingSmall, Row, Tooltip, Wrapper} from 'components-lib';\nimport {IComponentWithChildren} from 'models';\nimport {colors} from 'styles';\n\ninterface IItemWithPlaceholderProps extends IComponentWithChildren {\n label: string;\n hasItems: boolean;\n infoText?: string;\n}\n\nexport function ItemWithPlaceholder({children, label, hasItems, infoText}: IItemWithPlaceholderProps) {\n const classes = useStyles();\n return (\n <Column>\n <>\n <Row justify=\"flex-start\">\n <Label label={label} />\n {infoText && (\n <Wrapper className={classes.infoText}>\n <Tooltip title={infoText}>\n <Icon.InfoIcon />\n </Tooltip>\n </Wrapper>\n )}\n </Row>\n {hasItems ? (\n children\n ) : (\n <Container disableGutters classes={{root: classes.container}}>\n <Input withMargin disabled color={colors.gray} />\n <Container classes={{root: classes.loading}}>\n <LoadingSmall />\n </Container>\n </Container>\n )}\n </>\n </Column>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n position: 'relative',\n },\n loading: {\n right: theme.spacing(1),\n },\n infoText: {\n cursor: 'pointer',\n paddingLeft: theme.spacing(1),\n },\n}));\n","import React, {useEffect, useMemo} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {FormNameEnum} from 'filters-selections';\nimport {ItemWithPlaceholder} from 'filters-selections/selection/components';\nimport {filtersCompetenciesEntitiesCollectionSelector, fetchCompetenciesThunk} from 'filters-selections/store';\nimport {Form} from 'forms';\nimport {IWithDisabled, IOption} from 'models';\nimport {useIsPillarSelected} from 'filters-selections/hooks';\ninterface ICompetenciesEntity {\n id: number;\n name: string;\n pillarId?: number;\n}\n\ninterface ICompetencySelectProps extends IWithDisabled {\n infoText?: string;\n}\n\nexport function CompetenciesByPillarSelect({disabled, infoText}: ICompetencySelectProps) {\n const dispatch = useDispatch();\n const competencies = useSelector(filtersCompetenciesEntitiesCollectionSelector);\n const {hasPillarsSelected, formValues, setFieldValue} = useIsPillarSelected();\n\n const pillarIds = formValues[FormNameEnum.pillars];\n\n useEffect(() => {\n if (!competencies.length) {\n dispatch(fetchCompetenciesThunk());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (!hasPillarsSelected && formValues.pillars.length === 0 && formValues.competencies.length > 0) {\n setFieldValue(FormNameEnum.competencies, []);\n }\n }, [hasPillarsSelected, formValues.competencies, formValues.pillars, setFieldValue]);\n\n const options = useMemo(() => mapOptions(competencies, pillarIds), [competencies, pillarIds]);\n\n return (\n <ItemWithPlaceholder label=\"Competencies\" hasItems={!!competencies.length} infoText={infoText}>\n <Form.SelectAutocomplete\n name={FormNameEnum.competencies}\n options={options}\n multiple\n disabled={!hasPillarsSelected || disabled}\n />\n </ItemWithPlaceholder>\n );\n}\n\nconst mapOptions = (competencies: ICompetenciesEntity[], pillarId: number | number[]): IOption[] => {\n let filteredRecords = [];\n\n if (Array.isArray(pillarId)) {\n let filteredList = [];\n\n pillarId.forEach((id) => {\n filteredList = [...filteredList, ...competencies.filter((competency) => competency.pillarId === id)];\n });\n filteredRecords = [...filteredList];\n } else {\n filteredRecords = competencies.filter((competency) => competency.pillarId === pillarId);\n }\n\n return filteredRecords.map((c: ICompetenciesEntity) => ({value: c.id, label: c.name}));\n};\n","import React, {FC} from 'react';\nimport {Form} from 'forms';\nimport {ItemWithPlaceholder} from '../ItemWithPlaceholder';\nimport {IWithDisabled} from 'models';\n\ninterface ITextInputProps extends IWithDisabled {\n label: string;\n name: string;\n value?: string;\n infoText?: string;\n autoFocus?: boolean;\n}\n\nexport const TextInputSelection: FC<ITextInputProps> = ({\n label,\n name,\n disabled = false,\n autoFocus = false,\n value = '',\n infoText,\n}) => (\n <ItemWithPlaceholder label={label} hasItems infoText={infoText}>\n <Form.InputWithField name={name} type=\"text\" disabled={disabled} value={value} autoFocus={autoFocus} />\n </ItemWithPlaceholder>\n);\n","import React, {FC, useEffect, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {FormNameEnum} from 'filters-selections';\nimport {ItemWithPlaceholder} from 'filters-selections/selection/components';\nimport {fetchLanguagesThunk, filtersLanguagesEntitiesCollectionSelector} from 'filters-selections/store';\nimport {useAppDispatch} from 'hooks';\nimport {Form} from 'forms';\nimport {IWithDisabled} from 'models';\nimport {IWithMultiSelectOption} from 'filters-selections/models';\ninterface ILanguagesSelectProps extends IWithMultiSelectOption, IWithDisabled {\n label?: string;\n name?: string;\n}\n\nexport const LanguagesSelect: FC<ILanguagesSelectProps> = ({\n selectionType,\n disabled,\n label = 'Languages',\n name = FormNameEnum.languages,\n}) => {\n const dispatch = useAppDispatch();\n const languages = useSelector(filtersLanguagesEntitiesCollectionSelector);\n const isMultiSelect = selectionType === 'multi';\n\n useEffect(() => {\n if (!languages.length) {\n dispatch(fetchLanguagesThunk());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dispatch]);\n\n const options = useMemo(\n () =>\n languages.map((language) => {\n return {value: language?.id, label: language?.name};\n }),\n [languages]\n );\n\n return (\n <ItemWithPlaceholder label={label} hasItems={!!languages.length}>\n {isMultiSelect ? (\n <Form.SelectAutocomplete name={name} options={options} multiple disabled={disabled} />\n ) : (\n <Form.Select name={name} options={options} disabled={disabled} />\n )}\n </ItemWithPlaceholder>\n );\n};\n","import React, {useEffect, useMemo} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {FormNameEnum} from 'filters-selections';\nimport {IWithMultiSelectOption} from 'filters-selections/models';\nimport {ItemWithPlaceholder} from 'filters-selections/selection/components';\nimport {fetchPillarsThunk, pillarsEntitiesCollectionSelector} from 'filters-selections/store';\nimport {Form} from 'forms';\nimport {IOption, IWithDisabled} from 'models';\n\ninterface IPillarSelectProps extends IWithMultiSelectOption, IWithDisabled {\n label?: string;\n name?: string;\n shouldFetch?: boolean;\n}\n\nexport function PillarSelect({\n selectionType,\n disabled,\n label = 'Pillar',\n shouldFetch = true,\n name = FormNameEnum.pillars,\n}: IPillarSelectProps) {\n const dispatch = useDispatch();\n const pillars = useSelector(pillarsEntitiesCollectionSelector);\n const isMultiSelect = selectionType === 'multi';\n\n useEffect(() => {\n if (shouldFetch && !pillars.length) {\n dispatch(fetchPillarsThunk());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const options: IOption[] = useMemo(() => pillars.map((pillar) => ({value: pillar.id, label: pillar.name})), [\n pillars,\n ]);\n\n return (\n <ItemWithPlaceholder label={label} hasItems={!!pillars.length}>\n {isMultiSelect ? (\n <Form.SelectAutocomplete name={name} options={options} multiple disabled={disabled} />\n ) : (\n <Form.Select name={name} options={options} disabled={disabled} />\n )}\n </ItemWithPlaceholder>\n );\n}\n","import React, {useEffect, useMemo} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {fetchProgramsThunk} from 'filters-selections';\nimport {FormNameEnum} from 'filters-selections/enums';\nimport {IWithMultiSelectOption} from 'filters-selections/models';\nimport {ItemWithPlaceholder} from 'filters-selections/selection/components';\nimport {programsEntitiesCollectionSelector} from 'filters-selections/store';\nimport {Form} from 'forms';\nimport {IOption, IWithDisabled} from 'models';\n\ninterface IProgramSelectProps extends IWithMultiSelectOption, IWithDisabled {\n label?: string;\n name?: string;\n}\n\nexport function ProgramSelect({\n disabled,\n selectionType = 'single',\n label = 'Programs',\n name = FormNameEnum.programs,\n}: IProgramSelectProps) {\n const dispatch = useDispatch();\n const programs = useSelector(programsEntitiesCollectionSelector);\n const isMultiSelect = selectionType === 'multi';\n\n useEffect(() => {\n if (!programs.length) {\n dispatch(fetchProgramsThunk());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const options: IOption[] = useMemo(() => {\n return programs.map((program) => ({value: program.id, label: program.name}));\n }, [programs]);\n\n return (\n <ItemWithPlaceholder label={label} hasItems={!!programs.length}>\n {isMultiSelect ? (\n <Form.SelectAutocomplete name={name} options={options} multiple={isMultiSelect} disabled={disabled} />\n ) : (\n <Form.Select name={name} options={options} disabled={disabled} />\n )}\n </ItemWithPlaceholder>\n );\n}\n","import React, {useEffect, useMemo, useState} from 'react';\nimport {unwrapResult} from '@reduxjs/toolkit';\n\nimport {FormNameEnum} from 'filters-selections';\nimport {fetchSessionsByProgramIdsThunk} from 'filters-selections/store';\nimport {useAppDispatch} from 'hooks';\nimport {useIsProgramSelected} from 'filters-selections/hooks';\nimport {IOption, IWithDisabled} from 'models';\n\nimport {Form} from 'forms';\nimport {Column, Label} from 'components-lib';\n\ninterface ISessionsEntity {\n id: number;\n name: string;\n programId?: number;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface IProgramSelectProps extends IWithDisabled {}\n\nexport function SessionByProgramSelect({disabled}: IProgramSelectProps) {\n const dispatch = useAppDispatch();\n const {isProgramSelected, formValues} = useIsProgramSelected();\n const [sessions, setSessions] = useState([]);\n const programIds = formValues[FormNameEnum.programs];\n\n useEffect(() => {\n if (programIds.length) {\n dispatch(fetchSessionsByProgramIdsThunk(programIds))\n .then(unwrapResult)\n .then((response: ISessionsEntity[]) => {\n setSessions(response);\n });\n }\n return () => setSessions([]);\n }, [dispatch, programIds]);\n\n const options = useMemo(() => {\n if (!sessions.length) {\n return [];\n } else {\n return sessions.length && mapOptions(sessions);\n }\n }, [sessions]);\n\n return (\n <Column>\n <React.Fragment>\n <Label label=\"Sessions\" />\n <Form.SelectAutocomplete\n name={FormNameEnum.sessions}\n options={options}\n multiple\n disabled={!isProgramSelected || disabled}\n />\n </React.Fragment>\n </Column>\n );\n}\n\nconst mapOptions = (sessions: ISessionsEntity[]): IOption[] => {\n return sessions?.map((f) => ({value: f.id, label: f.name}));\n};\n","import React, {FC, useMemo} from 'react';\nimport {useFormikContext} from 'formik';\nimport {makeStyles} from '@material-ui/core';\nimport {Form} from 'forms';\nimport {IWithDisabled} from 'models';\nimport {ItemWithPlaceholder} from 'filters-selections/selection/components';\nimport {Text, Wrapper} from 'components-lib';\nimport {BUTTON_NUM_LIST} from 'utils';\n\ninterface IRangeSelectProps extends IWithDisabled {\n name: string;\n label: string;\n list?: number[];\n}\n\nexport const RangeSelect: FC<IRangeSelectProps> = ({disabled, name, label, list = BUTTON_NUM_LIST}) => {\n const classes = useStyles();\n const {errors} = useFormikContext();\n const error = errors[name];\n\n const options: any = useMemo(() => list.map((scale) => ({value: scale.toString(), label: scale.toString()})), [list]);\n\n return (\n <ItemWithPlaceholder label={label} hasItems={!!list.length}>\n <Form.Select name={name} options={options} disabled={disabled} />\n <Wrapper className={classes.selectError}>{error && <Text.Error>{error}</Text.Error>}</Wrapper>\n </ItemWithPlaceholder>\n );\n};\n\nconst useStyles = makeStyles({\n selectError: {\n width: '100%',\n },\n});\n","import React from 'react';\nimport {Column, Label} from 'components-lib';\nimport {FormNameEnum} from 'filters-selections/enums';\nimport {Form} from 'forms';\nimport {IWithDisabled} from 'models';\n\ninterface ILearningObjectiveSelectProps extends IWithDisabled {\n value?: string;\n}\n\nexport const LearningObjectiveSelect = ({disabled, value}: ILearningObjectiveSelectProps) => {\n return (\n <Column>\n <Label label=\"Learning Objective\" />\n <Form.InputWithField name={FormNameEnum.learningObjective} value={value} disabled={disabled} />\n </Column>\n );\n};\n","import React, {FC, useEffect, useMemo} from 'react';\nimport {fetchAreasThunk, filtersAreasEntitiesCollectionSelector} from 'filters-selections/store';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {IBindBaseEntity, IOption, IWithDisabled} from 'models';\nimport {IWithMultiSelectOption} from 'filters-selections/models';\nimport {useSortOrder} from 'admin/programs/details/hooks';\nimport {SortingOrderEnum} from 'enums';\nimport {FormNameEnum, ItemWithPlaceholder} from 'filters-selections';\nimport {Form} from 'forms';\n\ninterface IAreaSelectProps extends IWithDisabled, IWithMultiSelectOption {}\n\nexport const AreaSelect: FC<IAreaSelectProps> = ({disabled, selectionType = 'single'}: IAreaSelectProps) => {\n const dispatch = useDispatch();\n const areas: IBindBaseEntity[] = useSelector(filtersAreasEntitiesCollectionSelector);\n const isMultiSelect = selectionType === 'multi';\n const {sortBy} = useSortOrder();\n\n const sortedOptions = sortBy(areas, 'name', SortingOrderEnum.ASC);\n\n const options: IOption[] = useMemo(() => {\n return sortedOptions.map((area) => ({value: area.id, label: area.name}));\n }, [sortedOptions]);\n\n useEffect(() => {\n if (!areas.length) {\n dispatch(fetchAreasThunk());\n }\n }, [dispatch, areas.length]);\n\n return (\n <ItemWithPlaceholder label=\"JA Area\" hasItems={!!sortedOptions.length}>\n {isMultiSelect ? (\n <Form.SelectAutocomplete name={FormNameEnum.areas} options={options} multiple disabled={disabled} />\n ) : (\n <Form.Select name={FormNameEnum.area} options={options} disabled={disabled} />\n )}\n </ItemWithPlaceholder>\n );\n};\n","import React, {Fragment, useCallback, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {useFormikContext} from 'formik';\nimport {unwrapResult} from '@reduxjs/toolkit';\nimport {Label} from 'components-lib';\nimport {IAddIntegrationFormBaseValues, IOption, IWithDisabled} from 'models';\nimport {\n FormNameEnum,\n schoolNamesEntitiesCollectionSelector,\n searchSchoolsThunk,\n getLoadingStateSchoolNames,\n minLength,\n delayTime,\n dynamicSearchMessages,\n} from 'filters-selections';\nimport {Form} from 'forms';\nimport {useAppDispatch, useDebounce} from 'hooks';\n\ntype ISchoolNameBasedOnAreaSelectProps = IWithDisabled;\n\nexport const SchoolNameBasedOnAreaSelect = ({disabled}: ISchoolNameBasedOnAreaSelectProps) => {\n const dispatch = useAppDispatch();\n const {setFieldValue, values} = useFormikContext<IAddIntegrationFormBaseValues>();\n const shouldDisable = !!values.area || values.schoolDistrict;\n const loading = useSelector(getLoadingStateSchoolNames);\n const schoolNames = useSelector(schoolNamesEntitiesCollectionSelector);\n\n const options: IOption[] = useMemo(() => {\n if (loading) {\n return [];\n }\n\n return schoolNames.length > minLength\n ? schoolNames.map((schoolName) => ({\n value: schoolName.id,\n label: schoolName.name,\n }))\n : [];\n }, [schoolNames, loading]);\n\n const debouncedSearchSchools = useDebounce(\n (nextValue: string, areaIds: string, districtIds: string) =>\n dispatch(searchSchoolsThunk({schoolNameQuery: nextValue, areaIds, districtIds}))\n .then(unwrapResult)\n .then(({data}) => {\n const schoolNames = data.reduce((obj, item) => Object.assign(obj, {[item.id]: item.name}), {});\n return setFieldValue(FormNameEnum.schoolNames, schoolNames);\n }),\n delayTime\n );\n\n const handleInputChange = useCallback(\n (value: string) => {\n const areaIds = values.area ? values.area : '';\n const districtIds = values.schoolDistrict ? values.schoolDistrict : '';\n const nextValue = value.trim();\n\n return !!nextValue && debouncedSearchSchools(nextValue, areaIds, districtIds);\n },\n [values.area, values.schoolDistrict, debouncedSearchSchools]\n );\n\n return (\n <Fragment>\n <Label label=\"School Name\" />\n <Form.SearchSelectAutocomplete\n loading={loading}\n multiple={false}\n name={FormNameEnum.schoolName}\n options={options}\n disabled={disabled || loading || !shouldDisable}\n noOptionsText={dynamicSearchMessages.noOptionsSchoolName}\n inputChangeHandler={handleInputChange}\n withFontWeightBold={true}\n withCheckboxRenderOption={false}\n />\n </Fragment>\n );\n};\n","import React, {Fragment, useCallback, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {Label} from 'components-lib';\nimport {\n fetchSchoolDistrictThunk,\n loadingStateDistricts,\n schoolDistrictsEntitiesCollectionSelector,\n} from 'filters-selections/store';\nimport {Form} from 'forms';\nimport {useAppDispatch, useDebounce} from 'hooks';\nimport {IOption, IWithDisabled} from 'models';\nimport {delayTime, dynamicSearchMessages, FormNameEnum} from 'filters-selections';\n\nexport const SchoolDistrictSelect = ({disabled}: IWithDisabled) => {\n const dispatch = useAppDispatch();\n const schoolDistricts = useSelector(schoolDistrictsEntitiesCollectionSelector);\n const loading = useSelector(loadingStateDistricts);\n\n const options: IOption[] = useMemo(() => {\n if (loading) {\n return [];\n }\n\n return schoolDistricts\n ? schoolDistricts.map((schoolDistrict) => ({value: schoolDistrict.id, label: schoolDistrict.displayText}))\n : [];\n }, [schoolDistricts, loading]);\n\n const debouncedSearch = useDebounce((query: string) => dispatch(fetchSchoolDistrictThunk(query)), delayTime);\n\n const handleInputChange = useCallback((value: string) => !!value && !!value.trim() && debouncedSearch(value.trim()), [\n debouncedSearch,\n ]);\n\n return (\n <Fragment>\n <Label label=\"School District\" />\n <Form.SearchSelectAutocomplete\n loading={loading}\n multiple={false}\n name={FormNameEnum.schoolDistrict}\n options={options}\n disabled={disabled || loading}\n noOptionsText={dynamicSearchMessages.noOptionsSchoolDistrict}\n inputChangeHandler={handleInputChange}\n withFontWeightBold={true}\n withCheckboxRenderOption={false}\n />\n </Fragment>\n );\n};\n","import React, {FC, useEffect} from 'react';\nimport {useFormikContext} from 'formik';\nimport {FormNameEnum} from 'filters-selections';\nimport {jaUSAId} from 'admin/integrations/add-integration';\nimport {IAddIntegrationFormBaseValues} from 'models/integrations';\nimport {AreaSelect} from './AreaSelect';\nimport {getIsGoogleSitesSource} from 'admin/integrations/utils';\nimport {IWithDisabled} from 'models';\n\ntype IAreaSingleSelectBasedGoogleSitesProps = IWithDisabled;\n\nexport const AreaSingleSelectBasedGoogleSites: FC<IAreaSingleSelectBasedGoogleSitesProps> = ({disabled}) => {\n const {values, setFieldValue} = useFormikContext<IAddIntegrationFormBaseValues>();\n const type = Number(values.integrationType);\n\n const isGoogleSitesSource = getIsGoogleSitesSource(type);\n\n useEffect(() => {\n if (isGoogleSitesSource) {\n setFieldValue(FormNameEnum.area, jaUSAId);\n } else {\n setFieldValue(FormNameEnum.area, null);\n }\n }, [setFieldValue, isGoogleSitesSource]);\n\n return <AreaSelect disabled={isGoogleSitesSource || disabled} />;\n};\n","import React, {useEffect, useMemo} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {fetchConceptsThunk, filtersConceptsEntitiesCollectionSelector, FormNameEnum} from 'filters-selections';\nimport {ItemWithPlaceholder} from 'filters-selections/selection/components';\nimport {Form} from 'forms';\nimport {IWithDisabled} from 'models';\nimport {useFormikContext} from 'formik';\nimport {IAddWebLinkFormBaseValues, IUploadFileFormBaseValues, IUploadScormFormBaseValues} from 'admin/resources/upload';\nimport {useIsCompetencySelected} from 'filters-selections/hooks';\n\ninterface IKnowledgeSkillsAndAbilitiesSelectProps extends IWithDisabled {\n infoText?: string;\n}\n\nexport function KnowledgeSkillsAndAbilitiesSelect({disabled, infoText}: IKnowledgeSkillsAndAbilitiesSelectProps) {\n const dispatch = useDispatch();\n const knowledgeSkillsAndAbilities = useSelector(filtersConceptsEntitiesCollectionSelector);\n const {hasCompetenciesSelected} = useIsCompetencySelected();\n\n const {values, setFieldValue} = useFormikContext<\n IUploadFileFormBaseValues | IUploadScormFormBaseValues | IAddWebLinkFormBaseValues\n >();\n\n useEffect(() => {\n if (values.competencies?.length && !knowledgeSkillsAndAbilities.length) {\n dispatch(fetchConceptsThunk(values.competencies));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [values.competencies, knowledgeSkillsAndAbilities]);\n\n useEffect(() => {\n if (!hasCompetenciesSelected && values.competencies.length === 0 && values.knowledgeSkillsAndAbilities.length > 0) {\n setFieldValue(FormNameEnum.knowledgeSkillsAndAbilities, []);\n }\n }, [hasCompetenciesSelected, values.competencies, values.knowledgeSkillsAndAbilities, setFieldValue]);\n\n const options = useMemo(\n () =>\n knowledgeSkillsAndAbilities.map((knowledge) => ({\n value: knowledge.id,\n label: knowledge.name,\n })),\n [knowledgeSkillsAndAbilities]\n );\n\n const shouldDisableAutocomplete = disabled || !values.competencies.length || !knowledgeSkillsAndAbilities.length;\n const hasItems = hasCompetenciesSelected ? !!knowledgeSkillsAndAbilities.length : true;\n return (\n <ItemWithPlaceholder label=\"KSAs\" hasItems={hasItems} infoText={infoText}>\n <Form.SelectAutocomplete\n name={FormNameEnum.knowledgeSkillsAndAbilities}\n options={options}\n multiple\n disabled={shouldDisableAutocomplete}\n />\n </ItemWithPlaceholder>\n );\n}\n","import React, {FC, useEffect, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {\n fetchUploadFileTypeOptionsThunk,\n filtersUploadFileTypesEntitiesCollectionSelector,\n FormNameEnum,\n} from 'filters-selections';\nimport {ItemWithPlaceholder} from 'filters-selections/selection/components';\nimport {Form} from 'forms';\nimport {IWithDisabled} from 'models';\nimport {useAppDispatch} from 'hooks';\nimport {useFormikContext} from 'formik';\nimport {IUploadFileFormBaseValues} from 'admin/resources/upload';\n\ntype IFileTypeSelectProps = IWithDisabled;\n\nexport const FileTypeSelectBasedOnAttachedFileSelect: FC<IFileTypeSelectProps> = ({disabled}) => {\n const dispatch = useAppDispatch();\n const {values} = useFormikContext<IUploadFileFormBaseValues>();\n\n const types = useSelector(filtersUploadFileTypesEntitiesCollectionSelector);\n\n useEffect(() => {\n if (!types.length) {\n dispatch(fetchUploadFileTypeOptionsThunk());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dispatch]);\n\n const options = useMemo(() => types.map((type) => ({value: type.id, label: type.displayText})), [types]);\n\n return (\n <ItemWithPlaceholder label=\"File Type\" hasItems>\n <Form.Select\n name={FormNameEnum.fileType}\n options={options}\n disabled={disabled || values?.shouldDisableFileType}\n />\n </ItemWithPlaceholder>\n );\n};\n","import React, {FC, useEffect, useMemo} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {FormNameEnum} from 'filters-selections';\nimport {IWithMultiSelectOption} from 'filters-selections/models';\nimport {ItemWithPlaceholder} from 'filters-selections/selection/components';\nimport {fetchProgramYearsThunk, filtersYearsEntitiesCollectionSelector} from 'filters-selections/store';\nimport {Form} from 'forms';\nimport {IBindBaseEnumEntity, IOption, IWithDisabled} from 'models';\n\ninterface IProgramYearSelectProps extends IWithMultiSelectOption, IWithDisabled {\n label?: string;\n name?: string;\n}\n\nexport const ProgramYearSelect: FC<IProgramYearSelectProps> = ({\n selectionType,\n disabled,\n label = 'Program Year',\n name = FormNameEnum.programYear,\n}) => {\n const dispatch = useDispatch();\n const programYears = useSelector(filtersYearsEntitiesCollectionSelector) as IBindBaseEnumEntity[];\n const isMultiSelect = selectionType === 'multi';\n\n useEffect(() => {\n if (!programYears.length) {\n dispatch(fetchProgramYearsThunk());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const options: IOption[] = useMemo(\n () =>\n programYears.map((programYear) => ({\n value: programYear.id,\n label: programYear.displayText,\n })),\n [programYears]\n );\n return (\n <ItemWithPlaceholder label={label} hasItems={!!programYears.length}>\n {isMultiSelect ? (\n <Form.SelectAutocomplete name={name} options={options} multiple disabled={disabled} />\n ) : (\n <Form.Select name={name} options={options} disabled={disabled} />\n )}\n </ItemWithPlaceholder>\n );\n};\n","import React, {FC, useEffect, useMemo} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {FormNameEnum} from 'filters-selections';\nimport {IWithMultiSelectOption} from 'filters-selections/models';\nimport {ItemWithPlaceholder} from 'filters-selections/selection/components';\nimport {fetchFutureProgramYearsThunk, filtersFutureYearsEntitiesCollectionSelector} from 'filters-selections/store';\nimport {Form} from 'forms';\nimport {IOption, IWithDisabled} from 'models';\n\ninterface IProgramYearSelectProps extends IWithMultiSelectOption, IWithDisabled {\n label?: string;\n name?: string;\n}\n\nexport const FutureProgramYearSelect: FC<IProgramYearSelectProps> = ({\n selectionType,\n disabled,\n label = 'Program Year',\n name = FormNameEnum.futureProgramYears,\n}) => {\n const dispatch = useDispatch();\n const futureProgramYears = useSelector(filtersFutureYearsEntitiesCollectionSelector);\n const isMultiSelect = selectionType === 'multi';\n\n useEffect(() => {\n if (!futureProgramYears.length) {\n dispatch(fetchFutureProgramYearsThunk());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const options: IOption[] = useMemo(\n () =>\n futureProgramYears.map((futureProgramYear) => ({\n value: futureProgramYear.id,\n label: futureProgramYear.displayText,\n })),\n [futureProgramYears]\n );\n\n return (\n <ItemWithPlaceholder label={label} hasItems={!!futureProgramYears.length}>\n {isMultiSelect ? (\n <Form.SelectAutocomplete name={name} options={options} multiple disabled={disabled} />\n ) : (\n <Form.Select name={name} options={options} disabled={disabled} />\n )}\n </ItemWithPlaceholder>\n );\n};\n","import React, {FC} from 'react';\nimport {FormNameEnum} from 'filters-selections';\nimport {TextInputSelection} from '../TextInputSelection/TextInputSelection';\nimport {IWithDisabled} from 'models/common';\ninterface IKeyTermsTextInputProps extends IWithDisabled {\n infoText?: string;\n}\n\nexport const KeyTermsTextInput: FC<IKeyTermsTextInputProps> = ({disabled, infoText}) => (\n <TextInputSelection name={FormNameEnum.keyTerms} label=\"Key Terms\" disabled={disabled} infoText={infoText} />\n);\n","import React, {FC} from 'react';\nimport {Form} from 'forms';\nimport {ItemWithPlaceholder} from '../ItemWithPlaceholder';\nimport {IWithDisabled} from 'models';\n\ninterface ITextAreaSelectionProps extends IWithDisabled {\n label: string;\n name: string;\n placeholder?: string;\n rows?: number;\n}\n\nexport const TextAreaSelection: FC<ITextAreaSelectionProps> = ({label, name, disabled, placeholder = '', rows = 6}) => (\n <ItemWithPlaceholder label={label} hasItems>\n <Form.TextArea disabled={disabled} name={name} rows={rows} placeholder={placeholder} />\n </ItemWithPlaceholder>\n);\n","import React, {FC} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {FormNameEnum} from 'filters-selections';\nimport {TextAreaSelection} from '../TextAreaSelection/TextAreaSelection';\nimport {IWithDisabled} from 'models/common';\nimport {Container} from 'components-lib';\n\ntype IBriefDescriptionTextAreaProps = IWithDisabled;\n\nexport const BriefDescriptionTextArea: FC<IBriefDescriptionTextAreaProps> = ({disabled}) => {\n const classes = useStyles();\n return (\n <Container disableGutters classes={{root: classes.root}}>\n <TextAreaSelection name={FormNameEnum.briefDescription} label=\"Brief Description\" disabled={disabled} rows={6} />\n </Container>\n );\n};\n\nconst useStyles = makeStyles(() => ({\n root: {\n paddingBottom: '2px',\n },\n}));\n","import React, {FC} from 'react';\nimport {FormNameEnum} from 'filters-selections';\nimport {TextInputSelection} from '../TextInputSelection/TextInputSelection';\nimport {IWithDisabled} from 'models/common';\ninterface ILearningObjectiveTextInputProps extends IWithDisabled {\n infoText?: string;\n}\n\nexport const LearningObjectiveTextInput: FC<ILearningObjectiveTextInputProps> = ({disabled, infoText}) => (\n <TextInputSelection\n name={FormNameEnum.learningObjectives}\n label=\"Learning Objectives\"\n disabled={disabled}\n infoText={infoText}\n />\n);\n","import React, {FC} from 'react';\nimport {Form} from 'forms';\nimport {ItemWithPlaceholder} from '../ItemWithPlaceholder';\nimport {IWithDisabled} from 'models';\n\ninterface IDatePickerSelectionProps extends IWithDisabled {\n label: string;\n name: string;\n value?: any;\n maxWidth?: boolean;\n disablePast?: boolean;\n disableFuture?: boolean;\n infoText?: string;\n minDateMessage?: string;\n maxDateMessage?: string;\n}\n\nexport const DatePickerSelection: FC<IDatePickerSelectionProps> = ({\n label,\n name,\n value = null,\n disabled = false,\n maxWidth = true,\n disablePast = false,\n disableFuture = false,\n infoText,\n minDateMessage,\n maxDateMessage,\n}) => (\n <ItemWithPlaceholder label={label} hasItems infoText={infoText}>\n <Form.DatePicker\n name={name}\n value={value}\n disabled={disabled}\n maxWidth={maxWidth}\n disablePast={disablePast}\n disableFuture={disableFuture}\n format=\"MM/dd/yyyy\"\n minDateMessage={minDateMessage}\n maxDateMessage={maxDateMessage}\n />\n </ItemWithPlaceholder>\n);\n","import React, {FC} from 'react';\nimport {FormNameEnum} from 'filters-selections';\nimport {DatePickerSelection} from '../DatePickerSelection/DatePickerSelection';\nimport {IWithDisabled} from 'models/common';\n\ninterface IExpirationDatePickerProps extends IWithDisabled {\n disablePast?: boolean;\n infoText?: string;\n}\n\nexport const ExpirationDatePicker: FC<IExpirationDatePickerProps> = ({\n disabled = false,\n disablePast = true,\n infoText,\n}) => {\n return (\n <DatePickerSelection\n label=\"Expiration Date\"\n name={FormNameEnum.expirationDate}\n disablePast={disablePast}\n disabled={disabled}\n infoText={infoText}\n minDateMessage=\"\"\n maxDateMessage=\"\"\n />\n );\n};\n","import React, {FC} from 'react';\nimport {FormNameEnum} from 'filters-selections';\nimport {TextInputSelection} from '../TextInputSelection/TextInputSelection';\nimport {IWithDisabled} from 'models/common';\ninterface ITimeTextInputProps extends IWithDisabled {\n infoText?: string;\n}\n\nexport const TimeTextInput: FC<ITimeTextInputProps> = ({disabled, infoText}) => (\n <TextInputSelection name={FormNameEnum.time} label=\"Time (in min)\" disabled={disabled} infoText={infoText} />\n);\n","import React, {FC} from 'react';\nimport {FormNameEnum} from 'filters-selections';\nimport {IWithDisabled} from 'models/common';\nimport {Form} from 'forms';\ninterface IPermissionCheckboxProps extends IWithDisabled {\n checked?: boolean;\n}\n\nexport const PermissionCheckbox: FC<IPermissionCheckboxProps> = ({disabled, checked}) => (\n <Form.Checkbox\n name={FormNameEnum.hasUploadPermissions}\n label=\"I acknowledge that I have permissions and paperwork necessary to submit and upload this file\"\n disabled={disabled}\n checked={checked}\n />\n);\n","import React, {FC, useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Container, Icon, Label, Row, Tooltip, Wrapper} from 'components-lib';\nimport {FormNameEnum} from '../../../enums';\nimport {getAccessibleToStudentsOptions} from 'admin/resources/upload';\nimport {Form} from 'forms';\nimport {IWithDisabled} from 'models';\ninterface IAccessibleToStudentsOption {\n label: string;\n value: number | string | boolean;\n}\n\ninterface IAccessibleToStudentsRadioGroupProps extends IWithDisabled {\n infoText?: string;\n}\n\nexport const AccessibleToStudentsRadioGroup: FC<IAccessibleToStudentsRadioGroupProps> = ({disabled, infoText}) => {\n const classes = useStyles();\n\n const accessibleToStudentsOptions: IAccessibleToStudentsOption[] = useMemo(\n () => getAccessibleToStudentsOptions(),\n []\n );\n\n return (\n <Container disableGutters>\n <Row justify=\"flex-start\">\n <Label label=\"Accessible to students?\" withLeftMargin={false} withFontBold className={classes.label} />\n {infoText && (\n <Wrapper className={classes.infoText}>\n <Tooltip title={infoText}>\n <Icon.InfoIcon />\n </Tooltip>\n </Wrapper>\n )}\n </Row>\n <Form.RadioGroup name={FormNameEnum.isAccessibleToStudents}>\n <Row justify=\"flex-start\">\n {accessibleToStudentsOptions.map((option: IAccessibleToStudentsOption, idx: number) => (\n <Form.Radio key={idx} value={option.value} label={option.label} disabled={disabled} />\n ))}\n </Row>\n </Form.RadioGroup>\n </Container>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n label: {\n marginTop: theme.spacing(2),\n },\n\n infoText: {\n cursor: 'pointer',\n paddingLeft: theme.spacing(1),\n },\n}));\n","import React, {FC, useMemo} from 'react';\nimport {Table, Tooltip, Wrapper} from 'components-lib';\nimport {IFileVersion} from 'models/resources';\nimport {getDateMMDDyyyy} from 'utils/common';\nimport {makeStyles} from '@material-ui/core';\n\nconst columns = [\n {\n id: 'uploadedUtc',\n label: 'Date uploaded',\n },\n {\n id: 'uploadedBy',\n label: 'Uploaded by',\n },\n];\n\ninterface ITableVersionsProps {\n versions: IFileVersion[];\n}\n\nexport const TableVersions: FC<ITableVersionsProps> = ({versions}) => {\n const classes = useStyles();\n\n const rows = useMemo(() => {\n if (!versions.length) {\n return [];\n }\n\n return versions.map(({uploadedUtc, uploadedBy}) => ({\n uploadedUtc: uploadedUtc ? getDateMMDDyyyy(uploadedUtc) : '',\n uploadedBy: (\n <Wrapper className={classes.email}>\n <Tooltip title={uploadedBy}>{uploadedBy}</Tooltip>\n </Wrapper>\n ),\n }));\n }, [classes.email, versions]);\n\n return <Table rows={rows} columns={columns} />;\n};\n\nconst useStyles = makeStyles(() => ({\n email: {\n maxWidth: 300,\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n },\n}));\n","import React, {FC, Fragment, useCallback} from 'react';\nimport {Button, Modal} from 'components-lib';\nimport {TableVersions} from './TableVersions';\nimport {IFileVersion} from 'models/resources';\ninterface IModalVersionsProps {\n isOpen: boolean;\n versions: IFileVersion[];\n setIsOpen: (arg: boolean) => void;\n}\n\nexport const ModalVersions: FC<IModalVersionsProps> = ({isOpen, setIsOpen, versions}) => {\n const closeClickHandler = useCallback(() => setIsOpen(false), [setIsOpen]);\n\n return (\n <Modal isOpen={isOpen} handleClose={closeClickHandler} title=\"Version\" size=\"large\">\n <TableVersions versions={versions} />\n <Fragment>\n <Button.Secondary clickHandler={closeClickHandler}>Close</Button.Secondary>\n </Fragment>\n </Modal>\n );\n};\n","import React, {useCallback, useMemo} from 'react';\nimport {Box, makeStyles} from '@material-ui/core';\nimport {Container, Label, Link, Row} from 'components-lib';\nimport {ModalVersions} from './ModalVersions';\nimport {useModal} from 'hooks';\nimport {SingleFileUpload} from 'admin/resources/upload/components';\nimport {FormNameEnum} from 'enums/form';\nimport {useFormikContext} from 'formik';\nimport {IEditFileMetadataFormBaseValues} from 'admin/resources/files/views/edit/components/FilesEditResourceForm/config';\nimport {\n ALLOWED_MIMETYPE_FORMATS,\n audioMimeType,\n documentMimeTypes,\n excelMimeTypes,\n imageMimeTypes,\n pdfMimeType,\n videoMimeType,\n zipMimeType,\n} from 'admin/resources';\n\nexport const VersionFileUpload = () => {\n const classes = useStyles();\n const {isOpen: isModalVersionsOpen, setIsOpen: setIsModalVersionsOpen} = useModal();\n const {values} = useFormikContext<IEditFileMetadataFormBaseValues>();\n const shouldDisableReUploadButton = !values?.canEdit;\n const resourceMimeTypes = ALLOWED_MIMETYPE_FORMATS.join(', ');\n\n const allowedFormats = useMemo(() => {\n if (values?.fileTypeRecognition?.isVideo) {\n return videoMimeType;\n }\n\n if (values?.fileTypeRecognition?.isAudio) {\n return audioMimeType;\n }\n\n if (values?.fileTypeRecognition?.isImage) {\n return imageMimeTypes;\n }\n\n if (values?.fileTypeRecognition?.isDocument) {\n return documentMimeTypes;\n }\n\n if (values?.fileTypeRecognition?.isExcel) {\n return excelMimeTypes;\n }\n\n if (values?.fileTypeRecognition?.isPDF) {\n return pdfMimeType;\n }\n\n if (values?.fileTypeRecognition?.isArchive || values?.fileTypeRecognition?.isScormPackage) {\n return zipMimeType;\n }\n\n return resourceMimeTypes;\n }, [values.fileTypeRecognition, resourceMimeTypes]);\n\n const openModalVersionsClickHandler = useCallback(() => setIsModalVersionsOpen(true), [setIsModalVersionsOpen]);\n\n return (\n <Container disableGutters>\n <Label label=\"Version\" withLeftMargin={false} withFontBold />\n <Row justify=\"flex-start\" align=\"flex-start\">\n <Box pr={4}>\n {values?.fileVersion && (\n <Link clickHandler={openModalVersionsClickHandler} disabled={!values?.canEdit}>\n {values?.fileVersion}\n </Link>\n )}\n </Box>\n <Row justify=\"flex-start\" align=\"flex-start\" classes={{root: classes.fileUpload}}>\n <SingleFileUpload\n disableDragAndDrop\n disabled={shouldDisableReUploadButton}\n fullHeight={false}\n name={FormNameEnum.file}\n accept={allowedFormats}\n position=\"horizontal\"\n align=\"flex-start\"\n justify=\"flex-start\"\n withOnlyBrowseButton\n />\n </Row>\n </Row>\n <ModalVersions isOpen={isModalVersionsOpen} setIsOpen={setIsModalVersionsOpen} versions={values?.versions} />\n </Container>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n fileUpload: {\n paddingTop: theme.spacing(3),\n },\n}));\n","import {makeStyles} from '@material-ui/core';\nimport React, {FC} from 'react';\nimport {SelectionEnum} from '../../../enums';\nimport {AdministrationSelect} from '../AdministrationSelect/AdministrationSelect';\nimport {AudienceSelect} from '../AudienceSelect/AudienceSelect';\nimport {CategoryTags} from '../CategoryTags/CategoryTags';\nimport {CompetencySelect} from '../CompetencySelect/CompetencySelect';\nimport {CompetenciesByPillarWithInfoSelect} from '../CompetencySelect/CompetenciesByPillarWithInfoSelect';\nimport {CompetenciesByPillarSelect} from '../CompetencySelect/CompetencyByPillarSelect';\nimport {CompetencyByDomainSelect} from '../CompetencySelect/CompetencyByDomainSelect';\nimport {ConceptSelect} from '../ConceptSelect/ConceptSelect';\nimport {DomainSelect} from '../DomainSelect/DomainSelect';\nimport {EvaluationTypeSelect} from '../EvaluationTypeSelect/EvaluationTypeSelect';\nimport {InstrumentNameTextInput} from '../InstrumentNameTextInput/InstrumentNameTextInput';\nimport {InstrumentTypeSelect} from '../InstrumentTypeSelect/InstrumentTypeSelect';\nimport {LanguagesSelect} from '../LanguagesSelect/LanguagesSelect';\nimport {PhaseSelect} from '../PhaseSelect/PhaseSelect';\nimport {PillarMultiSelect} from '../PillarSelect/PillarMultiSelect';\nimport {PillarSelect} from '../PillarSelect/PillarSelect';\nimport {ProgramMultiSelect} from '../ProgramSelect/ProgramMultiSelect';\nimport {ProgramSelectWithDomainDependency} from '../ProgramSelect/ProgramSelectWithDomainDependency';\nimport {SchoolLevelSelect} from '../SchoolLevelSelect/SchoolLevelSelect';\nimport {SessionSelect} from '../SessionSelect/SessionSelect';\nimport {SkillsAndBehaviorsSelect} from '../SkillsAndBehaviorsSelect/SkillsAndBehaviorsSelect';\nimport {TagGradeLevelSelect} from '../TagGradeLevelSelect/TagGradeLevelSelect';\nimport {GradeLevelsSelect} from '../GradeLevelsSelect/GradeLevelsSelect';\nimport {K12KeyTermsSelect} from '../K12KeyTermsSelect/K12KeyTermsSelect';\nimport {SessionByProgramSelect} from '../SessionSelect/SessionByProgramSelect';\nimport {DomainWithoutKnowledgeSelect} from '../DomainWithoutKnowledgeSelect/DomainWithoutKnowledgeSelect';\nimport {RangeFromSelect} from '../RangeSelect/RangeFromSelect';\nimport {RangeToSelect} from '../RangeSelect/RangeToSelect';\nimport {LearningObjectiveSelect} from '../LearningObjectiveSelect/LearningObjectiveSelect';\nimport {LearningObjectiveWithDomainDependencySelect} from '../LearningObjectiveSelect/LearningObjectiveWithDomainDependencySelect';\nimport {InstrumentSubTypeSelect} from '../InstrumentSubTypeSelect/InstrumentSubTypeSelect';\nimport {RoleSelect} from '../RoleSelect/RoleSelect';\nimport {IntegrationTypeSelect} from '../IntegrationTypeSelect/IntegrationTypeSelect';\nimport {AreaSelect} from '../AreaSelect/AreaSelect';\nimport {AreaMultiSelect} from '../AreaSelect/AreaMultiSelect';\nimport {SchoolNameBasedOnAreaSelect} from '../SchoolNameSelect/SchoolNameBasedOnAreaSelect';\nimport {SchoolDistrictSelect} from '../SchoolDistrictSelect/SchoolDistrictSelect';\nimport {SchoolDistrictBasedOnGoogleSitesSelect} from '../SchoolDistrictSelect/SchoolDistrictBasedOnGoogleSitesSelect';\nimport {AreaSingleSelectBasedGoogleSites} from '../AreaSelect/AreaSingleSelectBasedGoogleSites';\nimport {SchoolNameBasedOnAreaAndGoogleSitesSelect} from '../SchoolNameSelect/SchoolNameBasedOnAreaSelectAndGoogleSites';\nimport {KnowledgeSkillsAndAbilitiesSelect} from '../KnowledgeSkillsAndAbilitiesSelect/KnowledgeSkillsAndAbilitiesSelect';\nimport {FileTypeSelectBasedOnAttachedFileSelect} from '../FileTypeSelect/FileTypeSelectBasedOnAttachedFile';\nimport {PrimaryPillarSelect} from '../PillarSelect/PrimaryPillarSelect';\nimport {SecondaryPillarSelect} from '../PillarSelect/SecondaryPillarSelect';\nimport {ProgramYearMultiSelect} from '../ProgramYear/ProgramYearMultiSelect';\nimport {ProgramYearSingleSelect} from '../ProgramYear/ProgramYearSingleSelect';\nimport {LanguagesSingleSelect} from '../LanguagesSelect/LanguagesSingleSelect';\nimport {LanguagesMultiSelect} from '../LanguagesSelect/LanguagesMultiSelect';\nimport {ProgramSingleSelect} from '../ProgramSelect/ProgramSingleSelect';\nimport {FutureProgramYearSingleSelect, FutureProgramYearMultiSelect} from '../FutureProgramYearSelect';\nimport {ResourcesSelect} from '../ResourcesSelect/ResourcesSelect';\nimport {InstrumentsSelect} from '../InstrumentsSelect/InstrumentsSelect';\nimport {LearningPathNameTextInput} from '../LearningPathNameTextInput/LearningPathNameTextInput';\nimport {KeyTermsTextInput} from '../KeyTermsTextInput/KeyTermsTextInput';\nimport {KeyTermsWithInfoTextInput} from '../KeyTermsTextInput/KeyTermsWithInfoTextInput';\nimport {BriefDescriptionTextArea} from '../BriefDescriptionTextArea/BriefDescriptionTextArea';\nimport {LearningObjectiveTextInput} from '../LearningObjectiveTextInput/LearningObjectiveTextInput';\nimport {LearningObjectiveWithInfoTextInput} from '../LearningObjectiveTextInput/LearningObjectiveWithInfoTextInput';\nimport {ExpirationDatePicker} from '../ExpirationDatePicker/ExpirationDatePicker';\nimport {EditableExpirationDatePicker} from '../ExpirationDatePicker/EditableExpirationDatePicker';\nimport {ExpirationWithInfoDatePicker} from '../ExpirationDatePicker/ExpirationWithInfoDatePicker';\nimport {SchoolDistrictBasedOnAreaSelect} from '../SchoolDistrictSelect/SchoolDistrictBasedOnAreaSelect';\nimport {SchoolNameBasedOnAreaAndDistrict} from '../SchoolNameSelect/SchoolNameBasedOnAreaAndDistrict';\nimport {AreaSingleBasedOnDistrictAndGoogleSites} from '../AreaSelect/AreaSingleBasedOnDistrictAndGoogleSites';\nimport {IntegrationNameTextInput} from '../IntegrationNameTextInput/IntegrationNameTextInput';\nimport {UserToImpersonateTextInput} from '../UserToImpersonateTextInput/UserToImpersonateTextInput';\nimport {ServiceEmailTextInput} from '../ServiceEmailTextInput/ServiceEmailTextInput';\nimport {DisplayNameTextInput} from '../DisplayNameTextInput/DisplayNameTextInput';\nimport {WebLinkTextInput} from '../WebLinkTextInput/WebLinkTextInput';\nimport {TimeTextInput} from '../TimeTextInput/TimeTextInput';\nimport {TimeWithInfoTextInput} from '../TimeTextInput/TimeWithInfoTextInput';\nimport {PermissionCheckbox} from '../PermissionCheckbox/PermissionCheckbox';\nimport {AdminPermissionCheckbox} from '../PermissionCheckbox/AdminPermissionCheckbox';\nimport {AccessibleToStudentsRadioGroup} from '../AccessibleToStudentsRadioGroup/AccessibleToStudentsRadioGroup';\nimport {VersionFileUpload} from '../VersionFileUpload/VersionFileUpload';\nimport {AccessibleToStudentsWithInfoRadioGroup} from '../AccessibleToStudentsRadioGroup/AccessibleToStudentsWithInfoRadioGroup';\nimport {KnowledgeSkillsAndAbilitiesWithInfoSelect} from '../KnowledgeSkillsAndAbilitiesSelect/KnowledgeSkillsAndAbilitiesWithInfoSelect';\nimport {ToDatePicker} from '../ToDatePicker/ToDatePicker';\nimport {FromDatePicker} from '../FromDatePicker/FromDatePicker';\n\nconst selectionComponentMap = {\n [SelectionEnum.Audience]: AudienceSelect,\n [SelectionEnum.Pillar]: PillarSelect,\n [SelectionEnum.PillarMultiSelect]: PillarMultiSelect,\n [SelectionEnum.EvaluationType]: EvaluationTypeSelect,\n [SelectionEnum.Domain]: DomainSelect,\n [SelectionEnum.ProgramMultiSelection]: ProgramMultiSelect,\n [SelectionEnum.ProgramSelectWithDomainDependency]: ProgramSelectWithDomainDependency,\n [SelectionEnum.Competencies]: CompetencySelect,\n [SelectionEnum.Concepts]: ConceptSelect,\n [SelectionEnum.AdministrationType]: AdministrationSelect,\n [SelectionEnum.SchoolLevel]: SchoolLevelSelect,\n [SelectionEnum.InstrumentType]: InstrumentTypeSelect,\n [SelectionEnum.Phase]: PhaseSelect,\n [SelectionEnum.Sessions]: SessionSelect,\n [SelectionEnum.Languages]: LanguagesSelect,\n [SelectionEnum.SkillsAndBehaviors]: SkillsAndBehaviorsSelect,\n [SelectionEnum.TagGradeLevels]: TagGradeLevelSelect,\n [SelectionEnum.Category]: CategoryTags,\n [SelectionEnum.InstrumentName]: InstrumentNameTextInput,\n [SelectionEnum.GradeLevels]: GradeLevelsSelect,\n [SelectionEnum.CompetenciesByPillar]: CompetenciesByPillarSelect,\n [SelectionEnum.K12KeyTerms]: K12KeyTermsSelect,\n [SelectionEnum.CompetencyByDomain]: CompetencyByDomainSelect,\n [SelectionEnum.SessionsByProgram]: SessionByProgramSelect,\n [SelectionEnum.DomainWithoutKnowledge]: DomainWithoutKnowledgeSelect,\n [SelectionEnum.RangeFrom]: RangeFromSelect,\n [SelectionEnum.RangeTo]: RangeToSelect,\n [SelectionEnum.LearningObjective]: LearningObjectiveSelect,\n [SelectionEnum.LearningObjectiveWithDomainDependency]: LearningObjectiveWithDomainDependencySelect,\n [SelectionEnum.InstrumentSubType]: InstrumentSubTypeSelect,\n [SelectionEnum.Role]: RoleSelect,\n [SelectionEnum.IntegrationTypeSelect]: IntegrationTypeSelect,\n [SelectionEnum.AreasSingleSelection]: AreaSelect,\n [SelectionEnum.AreasMultiSelection]: AreaMultiSelect,\n [SelectionEnum.SchoolNameBasedOnArea]: SchoolNameBasedOnAreaSelect,\n [SelectionEnum.SchoolDistrict]: SchoolDistrictSelect,\n [SelectionEnum.SchoolDistrictBasedOnGoogleSites]: SchoolDistrictBasedOnGoogleSitesSelect,\n [SelectionEnum.AreaSingleBasedOnGoogleSites]: AreaSingleSelectBasedGoogleSites,\n [SelectionEnum.SchoolNameBasedOnAreaSelectAndGoogleSites]: SchoolNameBasedOnAreaAndGoogleSitesSelect,\n [SelectionEnum.KnowledgeSkillsAndAbilities]: KnowledgeSkillsAndAbilitiesSelect,\n [SelectionEnum.FileTypeSelectBasedOnAttachedFile]: FileTypeSelectBasedOnAttachedFileSelect,\n [SelectionEnum.PrimaryPillar]: PrimaryPillarSelect,\n [SelectionEnum.SecondaryPillar]: SecondaryPillarSelect,\n [SelectionEnum.ProgramYearMulti]: ProgramYearMultiSelect,\n [SelectionEnum.ProgramYearSingle]: ProgramYearSingleSelect,\n [SelectionEnum.LanguagesSingle]: LanguagesSingleSelect,\n [SelectionEnum.LanguagesMulti]: LanguagesMultiSelect,\n [SelectionEnum.ProgramsSingle]: ProgramSingleSelect,\n [SelectionEnum.FutureProgramYearSingle]: FutureProgramYearSingleSelect,\n [SelectionEnum.FutureProgramYearMultiple]: FutureProgramYearMultiSelect,\n [SelectionEnum.Resources]: ResourcesSelect,\n [SelectionEnum.Instruments]: InstrumentsSelect,\n [SelectionEnum.LearningPathName]: LearningPathNameTextInput,\n [SelectionEnum.KeyTermsInput]: KeyTermsTextInput,\n [SelectionEnum.KeyTermsWithInfo]: KeyTermsWithInfoTextInput,\n [SelectionEnum.BriefDescriptionTextArea]: BriefDescriptionTextArea,\n [SelectionEnum.LearningObjectiveInput]: LearningObjectiveTextInput,\n [SelectionEnum.LearningObjectiveInputWithInfo]: LearningObjectiveWithInfoTextInput,\n [SelectionEnum.ExpirationDatePicker]: ExpirationDatePicker,\n [SelectionEnum.EditableExpirationDatePicker]: EditableExpirationDatePicker,\n [SelectionEnum.ExpirationWithInfoDatePicker]: ExpirationWithInfoDatePicker,\n [SelectionEnum.SchoolDistrictBasedOnArea]: SchoolDistrictBasedOnAreaSelect,\n [SelectionEnum.SchoolNameBasedOnAreaAndDistrict]: SchoolNameBasedOnAreaAndDistrict,\n [SelectionEnum.AreaSingleBasedOnDistrictAndGoogleSites]: AreaSingleBasedOnDistrictAndGoogleSites,\n [SelectionEnum.IntegrationNameInput]: IntegrationNameTextInput,\n [SelectionEnum.UserToImpersonateInput]: UserToImpersonateTextInput,\n [SelectionEnum.ServiceEmailInput]: ServiceEmailTextInput,\n [SelectionEnum.DisplayNameInput]: DisplayNameTextInput,\n [SelectionEnum.WebLinkInput]: WebLinkTextInput,\n [SelectionEnum.TimeInput]: TimeTextInput,\n [SelectionEnum.TimeWithInfoInput]: TimeWithInfoTextInput,\n [SelectionEnum.PermissionCheckbox]: PermissionCheckbox,\n [SelectionEnum.AdminPermissionCheckbox]: AdminPermissionCheckbox,\n [SelectionEnum.AccessibleToStudentsRadioGroup]: AccessibleToStudentsRadioGroup,\n [SelectionEnum.VersionFileUpload]: VersionFileUpload,\n [SelectionEnum.AccessibleToStudentsWithInfo]: AccessibleToStudentsWithInfoRadioGroup,\n [SelectionEnum.CompetenciesByPillarWithInfo]: CompetenciesByPillarWithInfoSelect,\n [SelectionEnum.KnowledgeSkillsAndAbilitiesWithInfo]: KnowledgeSkillsAndAbilitiesWithInfoSelect,\n [SelectionEnum.ToDatePicker]: ToDatePicker,\n [SelectionEnum.FromDatePicker]: FromDatePicker,\n};\ninterface ISelectionListItemsProps {\n list: SelectionEnum[];\n disableAll?: boolean;\n withFullWidth?: boolean;\n withMargin?: boolean;\n className?: string;\n}\n\nexport function SelectionListItems({\n list,\n disableAll = false,\n withFullWidth = false,\n withMargin = true,\n className = '',\n}: ISelectionListItemsProps) {\n const classes = useStyles({withFullWidth, withMargin, className});\n return (\n <>\n {list.map((item, idx) => {\n const SelectionComponent: FC<any> = selectionComponentMap[item];\n return SelectionComponent ? (\n <div className={`${classes.selection} ${className}`} key={idx}>\n <SelectionComponent disabled={disableAll} />\n </div>\n ) : null;\n })}\n </>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n selection: ({withMargin, withFullWidth}: {withFullWidth: boolean; withMargin: boolean}) => {\n let styles: any = {};\n\n if (withMargin) {\n styles = {\n ...styles,\n marginTop: theme.spacing(3),\n marginRight: theme.spacing(3),\n marginBottom: theme.spacing(3),\n };\n }\n\n if (withFullWidth) {\n styles = {...styles, width: '100%'};\n }\n return styles;\n },\n}));\n","import {fetchAudienceThunk} from 'filters-selections';\nimport {FormNameEnum} from 'filters-selections/enums';\nimport {ItemWithPlaceholder} from 'filters-selections/selection/components';\nimport {filtersAudiencesEntitiesCollectionSelector} from 'filters-selections/store';\nimport {Form} from 'forms';\nimport {IWithDisabled} from 'models';\nimport React, {useEffect, useMemo} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface IAudienceSelectProps extends IWithDisabled {}\n\nexport function AudienceSelect({disabled}: IAudienceSelectProps) {\n const dispatch = useDispatch();\n const audiences = useSelector(filtersAudiencesEntitiesCollectionSelector);\n\n useEffect(() => {\n if (!audiences.length) {\n dispatch(fetchAudienceThunk());\n }\n }, [audiences.length, dispatch]);\n\n const options = useMemo(() => audiences.map((audience) => ({value: audience.id, label: audience.displayText})), [\n audiences,\n ]);\n\n return (\n <ItemWithPlaceholder label=\"Audience\" hasItems={!!audiences.length}>\n <Form.Select name={FormNameEnum.audience} options={options} disabled={disabled} />\n </ItemWithPlaceholder>\n );\n}\n","import {IWithDisabled} from 'models';\nimport React from 'react';\nimport {PillarSelect} from './PillarSelect';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface IPillarMultiSelectProps extends IWithDisabled {}\n\nexport function PillarMultiSelect({disabled}: IPillarMultiSelectProps) {\n return <PillarSelect label=\"Pillars\" selectionType=\"multi\" disabled={disabled} />;\n}\n","import {FormNameEnum} from 'filters-selections';\nimport {ItemWithPlaceholder} from 'filters-selections/selection/components';\nimport {filtersEvaluationTypeEntitiesCollectionSelector, fetchEvaluationTypesThunk} from 'filters-selections/store';\nimport {Form} from 'forms';\nimport {IWithDisabled} from 'models';\nimport React, {useEffect, useMemo} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface IEvaluationTypeSelectProps extends IWithDisabled {}\n\nexport function EvaluationTypeSelect({disabled}: IEvaluationTypeSelectProps) {\n const dispatch = useDispatch();\n const evaluationTypes = useSelector(filtersEvaluationTypeEntitiesCollectionSelector);\n\n useEffect(() => {\n if (!evaluationTypes.length) {\n dispatch(fetchEvaluationTypesThunk());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const options = useMemo(\n () => evaluationTypes.map((evaluation) => ({value: evaluation.id, label: evaluation.displayText})),\n [evaluationTypes]\n );\n\n return (\n <ItemWithPlaceholder label=\"Evaluation Type\" hasItems={!!evaluationTypes.length}>\n <Form.SelectAutocomplete name={FormNameEnum.evaluationTypes} options={options} multiple disabled={disabled} />\n </ItemWithPlaceholder>\n );\n}\n","import {\n filtersDomainsEntitiesCollectionSelector,\n filtersDomainsEntitiesSelector,\n fetchDomainsThunk,\n FormNameEnum,\n} from 'filters-selections';\nimport {ItemWithPlaceholder} from 'filters-selections/selection/components';\nimport {useFormikContext} from 'formik';\nimport {IWithDisabled} from 'models';\nimport React, {useCallback, useEffect, useMemo} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {isDomainKnowledge} from 'utils';\nimport {Select, Text} from 'components-lib';\nimport {IItemFormBaseValues} from 'admin/library/items/builder/views/itemBuilderFormBaseConfig';\nimport {IOption} from 'models';\n\ntype IDomainSelectProps = IWithDisabled;\n\nexport function DomainSelect({disabled}: IDomainSelectProps) {\n const dispatch = useDispatch();\n const {values, errors, setValues} = useFormikContext<IItemFormBaseValues>();\n const currentDomainValue = values[FormNameEnum.domain];\n const currentProgramsValue: number | number[] = values[FormNameEnum.programs];\n const error = errors[FormNameEnum.domain];\n const domains = useSelector(filtersDomainsEntitiesCollectionSelector);\n const domainsEntities = useSelector(filtersDomainsEntitiesSelector);\n const currentDomainEntity = domainsEntities[currentDomainValue];\n\n const options: IOption[] = useMemo(() => domains.map((domain) => ({value: domain.id, label: domain.displayText})), [\n domains,\n ]);\n const currentOption: IOption = useMemo(\n () => currentDomainEntity && {value: currentDomainEntity.id, label: currentDomainEntity.name},\n [currentDomainEntity]\n );\n\n useEffect(() => {\n if (!domains.length) {\n dispatch(fetchDomainsThunk());\n }\n }, [dispatch, domains.length]);\n\n const changeHandler = useCallback(\n (value: number) => {\n if (value === currentDomainValue) {\n return;\n }\n\n const isCurrentDomainKnowledge = isDomainKnowledge(currentDomainEntity);\n const isNextDomainKnowledge = isDomainKnowledge(domainsEntities[value]);\n\n const newValues = {\n ...values,\n [FormNameEnum.domain]: value,\n };\n\n if (isCurrentDomainKnowledge) {\n newValues[FormNameEnum.programs] = !Array.isArray(currentProgramsValue) ? [currentProgramsValue] : [];\n newValues[FormNameEnum.competencies] = [];\n newValues[FormNameEnum.concepts] = [];\n }\n\n if (isNextDomainKnowledge) {\n newValues[FormNameEnum.programs] = Array.isArray(currentProgramsValue) ? currentProgramsValue.shift() : null;\n }\n\n setValues(newValues, true);\n },\n [currentDomainEntity, domainsEntities, currentDomainValue, values, setValues, currentProgramsValue]\n );\n\n return (\n <ItemWithPlaceholder label=\"Domain\" hasItems={!!domains.length}>\n <Select options={options} changeHandler={changeHandler} value={currentOption} disabled={disabled} />\n {error && <Text.Error>{error}</Text.Error>}\n </ItemWithPlaceholder>\n );\n}\n","import {IWithDisabled} from 'models';\nimport React from 'react';\nimport {ProgramSelect} from './ProgramSelect';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface IProgramMultiSelectProps extends IWithDisabled {}\n\nexport function ProgramMultiSelect({disabled}: IProgramMultiSelectProps) {\n return <ProgramSelect selectionType=\"multi\" disabled={disabled} />;\n}\n","import {useIsDomainKnowledgeSelected} from 'filters-selections/hooks';\nimport {IWithDisabled} from 'models';\nimport React from 'react';\nimport {ProgramSelect} from './ProgramSelect';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface IProgramSelectWithDomainDependencyProps extends IWithDisabled {}\n\nexport function ProgramSelectWithDomainDependency({disabled}: IProgramSelectWithDomainDependencyProps) {\n const {isDomainKnowledgeSelected} = useIsDomainKnowledgeSelected();\n return <ProgramSelect selectionType={isDomainKnowledgeSelected ? 'single' : 'multi'} disabled={disabled} />;\n}\n","import {FormNameEnum} from 'filters-selections';\nimport {ItemWithPlaceholder} from 'filters-selections/selection/components';\nimport {filtersCompetenciesEntitiesCollectionSelector, fetchCompetenciesThunk} from 'filters-selections/store';\nimport {Form} from 'forms';\nimport {IWithDisabled} from 'models';\nimport React, {useEffect, useMemo} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface ICompetencySelectProps extends IWithDisabled {\n withDomainKnowledge?: boolean;\n}\n\nexport function CompetencySelect({disabled}: ICompetencySelectProps) {\n const dispatch = useDispatch();\n const competencies = useSelector(filtersCompetenciesEntitiesCollectionSelector);\n\n useEffect(() => {\n if (!competencies.length) {\n dispatch(fetchCompetenciesThunk());\n }\n }, [competencies.length, dispatch]);\n\n const options = useMemo(\n () =>\n competencies.map((competency) => ({\n value: competency.id,\n label: competency.name,\n })),\n [competencies]\n );\n\n return (\n <ItemWithPlaceholder label=\"Competency\" hasItems={!!competencies.length}>\n <Form.SelectAutocomplete name={FormNameEnum.competencies} options={options} multiple disabled={disabled} />\n </ItemWithPlaceholder>\n );\n}\n","import React, {useEffect, useMemo} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {fetchConceptsThunk, filtersConceptsEntitiesCollectionSelector, FormNameEnum} from 'filters-selections';\nimport {useIsDomainKnowledgeSelected} from 'filters-selections/hooks';\nimport {ItemWithPlaceholder} from 'filters-selections/selection/components';\nimport {Form} from 'forms';\nimport {IWithDisabled} from 'models';\ninterface IConceptSelectProps extends IWithDisabled {\n infoText?: string;\n}\n\nexport function ConceptSelect({disabled, infoText}: IConceptSelectProps) {\n const dispatch = useDispatch();\n const concepts = useSelector(filtersConceptsEntitiesCollectionSelector);\n const {isDomainKnowledgeSelected, formValues} = useIsDomainKnowledgeSelected();\n\n const competencies = formValues[FormNameEnum.competencies];\n\n useEffect(() => {\n if (competencies?.length) {\n dispatch(fetchConceptsThunk(competencies));\n }\n }, [competencies, dispatch]);\n\n const options = useMemo(\n () =>\n concepts.map((concept) => ({\n value: concept.id,\n label: concept.name,\n })),\n [concepts]\n );\n\n const isDisabled = !isDomainKnowledgeSelected || disabled || !competencies.length;\n\n return (\n <ItemWithPlaceholder label=\"KSAs\" hasItems infoText={infoText}>\n <Form.SelectAutocomplete name={FormNameEnum.concepts} options={options} multiple disabled={isDisabled} />\n </ItemWithPlaceholder>\n );\n}\n","import {FormNameEnum} from 'filters-selections';\nimport {ItemWithPlaceholder} from 'filters-selections/selection/components';\nimport {filtersAdministrationsEntitiesCollectionSelector, fetchAdministrationsThunk} from 'filters-selections/store';\nimport {Form} from 'forms';\nimport {IWithDisabled} from 'models';\nimport React, {useEffect, useMemo} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface IAdministrationSelectProps extends IWithDisabled {}\n\nexport function AdministrationSelect({disabled}: IAdministrationSelectProps) {\n const dispatch = useDispatch();\n const administrations = useSelector(filtersAdministrationsEntitiesCollectionSelector);\n\n useEffect(() => {\n if (!administrations.length) {\n dispatch(fetchAdministrationsThunk());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const options = useMemo(\n () => administrations.map((administration) => ({value: administration.id, label: administration.displayText})),\n [administrations]\n );\n\n return (\n <ItemWithPlaceholder label=\"Administration\" hasItems={!!administrations.length}>\n <Form.Select name={FormNameEnum.administration} options={options} disabled={disabled} />\n </ItemWithPlaceholder>\n );\n}\n","import {FormNameEnum} from 'filters-selections';\nimport {ItemWithPlaceholder} from 'filters-selections/selection/components';\nimport {fetchSchoolLevelThunk, filtersSchoolLevelsEntitiesCollectionSelector} from 'filters-selections/store';\nimport {Form} from 'forms';\nimport {useAppDispatch} from 'hooks';\nimport {IWithDisabled} from 'models';\nimport React, {useEffect, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface ISchoolLevelSelectProps extends IWithDisabled {}\n\nexport function SchoolLevelSelect({disabled}: ISchoolLevelSelectProps) {\n const dispatch = useAppDispatch();\n const schoolLevels = useSelector(filtersSchoolLevelsEntitiesCollectionSelector);\n\n useEffect(() => {\n if (!schoolLevels.length) {\n dispatch(fetchSchoolLevelThunk());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dispatch]);\n\n const options = useMemo(\n () => schoolLevels.map((schoolLevel) => ({value: schoolLevel.id, label: schoolLevel.displayText})),\n [schoolLevels]\n );\n\n return (\n <ItemWithPlaceholder label=\"School Level\" hasItems={!!schoolLevels.length}>\n <Form.SelectAutocomplete name={FormNameEnum.schoolLevels} options={options} multiple disabled={disabled} />\n </ItemWithPlaceholder>\n );\n}\n","import React, {useEffect, useMemo} from 'react';\nimport {FormNameEnum} from 'filters-selections/enums';\nimport {ItemWithPlaceholder} from 'filters-selections/selection/components';\nimport {Form} from 'forms';\nimport {IOption, IWithDisabled} from 'models';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {fetchInstrumentMainTypesThunk, filtersInstrumentMainTypesEntitiesCollectionSelector} from 'filters-selections';\n\ntype IInstrumentTypeSelectProps = IWithDisabled;\n\nexport function InstrumentTypeSelect({disabled}: IInstrumentTypeSelectProps) {\n const dispatch = useDispatch();\n const mainTypes = useSelector(filtersInstrumentMainTypesEntitiesCollectionSelector);\n\n useEffect(() => {\n if (!mainTypes.length) {\n dispatch(fetchInstrumentMainTypesThunk());\n }\n }, [mainTypes.length, dispatch]);\n\n const options: IOption[] = useMemo(\n () =>\n mainTypes.map((type) => ({\n value: type.id,\n label: type.displayText,\n })),\n [mainTypes]\n );\n\n return (\n <ItemWithPlaceholder label=\"Type\" hasItems={!!mainTypes.length}>\n <Form.Select name={FormNameEnum.instrumentType} options={options} disabled={disabled} />\n </ItemWithPlaceholder>\n );\n}\n","import {fetchPhasesThunk} from 'filters-selections';\nimport {FormNameEnum} from 'filters-selections/enums';\nimport {ItemWithPlaceholder} from 'filters-selections/selection/components';\nimport {filtersPhasesEntitiesCollectionSelector} from 'filters-selections/store';\nimport {Form} from 'forms';\nimport {IWithDisabled} from 'models';\nimport React, {useEffect, useMemo} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface IPhaseSelectProps extends IWithDisabled {}\n\nexport function PhaseSelect({disabled}: IPhaseSelectProps) {\n const dispatch = useDispatch();\n const phases = useSelector(filtersPhasesEntitiesCollectionSelector);\n\n useEffect(() => {\n if (!phases.length) {\n dispatch(fetchPhasesThunk());\n }\n }, [phases.length, dispatch]);\n\n const options: any = useMemo(() => {\n return phases.map((phase) => ({value: phase.id, label: phase.displayText}));\n }, [phases]);\n\n return (\n <ItemWithPlaceholder label=\"Phase\" hasItems={!!phases.length}>\n <Form.Select name={FormNameEnum.phase} options={options} disabled={disabled} />\n </ItemWithPlaceholder>\n );\n}\n","import {FormNameEnum} from 'filters-selections';\nimport {ItemWithPlaceholder} from 'filters-selections/selection/components';\nimport {fetchSessionsThunk, filtersSessionsEntitiesCollectionSelector} from 'filters-selections/store';\nimport {Form} from 'forms';\nimport {useAppDispatch} from 'hooks';\nimport React, {useEffect, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\n\nexport function SessionSelect() {\n const dispatch = useAppDispatch();\n const sessions = useSelector(filtersSessionsEntitiesCollectionSelector);\n\n useEffect(() => {\n if (!sessions.length) {\n dispatch(fetchSessionsThunk());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dispatch]);\n\n const options = useMemo(() => sessions.map((session) => ({value: session.id, label: session.name})), [sessions]);\n\n return (\n <ItemWithPlaceholder label=\"Sessions\" hasItems={!!sessions.length}>\n <Form.SelectAutocomplete name={FormNameEnum.sessions} options={options} multiple />\n </ItemWithPlaceholder>\n );\n}\n","import {FormNameEnum} from 'filters-selections';\nimport {ItemWithPlaceholder} from 'filters-selections/selection/components';\nimport {\n fetchSkillsAndBehaviorsThunk,\n filtersSkillsAndBehaviorsEntitiesCollectionSelector,\n} from 'filters-selections/store';\nimport {Form} from 'forms';\nimport {useAppDispatch} from 'hooks';\nimport React, {useEffect, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\n\nexport function SkillsAndBehaviorsSelect() {\n const dispatch = useAppDispatch();\n const skillsAndBehaviors = useSelector(filtersSkillsAndBehaviorsEntitiesCollectionSelector);\n\n useEffect(() => {\n if (!skillsAndBehaviors.length) {\n dispatch(fetchSkillsAndBehaviorsThunk());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dispatch]);\n\n const options = useMemo(\n () =>\n skillsAndBehaviors.map((skillsAndBehaviors) => ({\n value: skillsAndBehaviors.id,\n label: skillsAndBehaviors.name,\n })),\n [skillsAndBehaviors]\n );\n\n return (\n <ItemWithPlaceholder label=\"Skills and Behaviors\" hasItems={!!skillsAndBehaviors.length}>\n <Form.SelectAutocomplete name={FormNameEnum.skillsAndBehaviors} options={options} multiple />\n </ItemWithPlaceholder>\n );\n}\n","import React, {FC, useEffect, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {FormNameEnum} from 'filters-selections';\nimport {ItemWithPlaceholder} from 'filters-selections/selection/components';\nimport {fetchTagGradeLevelsThunk, filtersTagGradeLevelsEntitiesCollectionSelector} from 'filters-selections/store';\nimport {Form} from 'forms';\nimport {useAppDispatch} from 'hooks';\nimport {IWithDisabled} from 'models/common';\n\ntype ITagGradeLevelSelectProps = IWithDisabled;\n\nexport const TagGradeLevelSelect: FC<ITagGradeLevelSelectProps> = ({disabled}) => {\n const dispatch = useAppDispatch();\n const gradeLevels = useSelector(filtersTagGradeLevelsEntitiesCollectionSelector);\n\n useEffect(() => {\n if (!gradeLevels.length) {\n dispatch(fetchTagGradeLevelsThunk());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dispatch]);\n\n const options = useMemo(() => gradeLevels.map((gradeLevels) => ({value: gradeLevels.id, label: gradeLevels.name})), [\n gradeLevels,\n ]);\n\n return (\n <ItemWithPlaceholder label=\"Grade Levels\" hasItems={!!gradeLevels.length}>\n <Form.SelectAutocomplete\n name={FormNameEnum.gradeLevels}\n options={options}\n multiple\n disableCloseOnSelect\n disabled={disabled}\n />\n </ItemWithPlaceholder>\n );\n};\n","import {Column, Label} from 'components-lib';\nimport {FormNameEnum} from 'filters-selections/enums';\nimport {Form} from 'forms';\nimport {IWithDisabled} from 'models';\nimport React from 'react';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface ICategoryTagsProps extends IWithDisabled {}\n\nexport function CategoryTags({disabled}: ICategoryTagsProps) {\n return (\n <Column>\n <Label label=\"Category\" />\n <Form.Input name={FormNameEnum.category} disabled={disabled} />\n </Column>\n );\n}\n","import React from 'react';\nimport {FormNameEnum} from 'filters-selections/enums';\nimport {TextInputSelection} from '../TextInputSelection/TextInputSelection';\n\nexport const InstrumentNameTextInput = () => {\n return <TextInputSelection name={FormNameEnum.instrumentName} label=\"Instrument Name\" />;\n};\n","import {FormNameEnum} from 'filters-selections';\nimport {ItemWithPlaceholder} from 'filters-selections/selection/components';\nimport {fetchGradeLevelsThunk, filtersGradeLevelsEntitiesCollectionSelector} from 'filters-selections/store';\nimport {Form} from 'forms';\nimport {useAppDispatch} from 'hooks';\nimport React, {useEffect, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\n\nexport function GradeLevelsSelect() {\n const dispatch = useAppDispatch();\n const levels = useSelector(filtersGradeLevelsEntitiesCollectionSelector);\n\n useEffect(() => {\n if (!levels.length) {\n dispatch(fetchGradeLevelsThunk());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dispatch]);\n\n const options = useMemo(() => levels.map((level) => ({value: level.id, label: level.name})), [levels]);\n\n return (\n <ItemWithPlaceholder label=\"Level\" hasItems={!!levels.length}>\n <Form.SelectAutocomplete name={FormNameEnum.levels} options={options} multiple />\n </ItemWithPlaceholder>\n );\n}\n","import React, {useEffect, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\n\nimport {FormNameEnum} from 'filters-selections';\nimport {ItemWithPlaceholder} from 'filters-selections/selection/components';\nimport {fetchDefualtKeyTermsThunk, filtersDefaultKeyTermsEntitiesCollectionSelector} from 'filters-selections/store';\nimport {Form} from 'forms';\nimport {useAppDispatch} from 'hooks';\n\nexport function K12KeyTermsSelect() {\n const dispatch = useAppDispatch();\n const keyTerms = useSelector(filtersDefaultKeyTermsEntitiesCollectionSelector);\n\n useEffect(() => {\n if (!keyTerms.length) {\n dispatch(fetchDefualtKeyTermsThunk());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dispatch]);\n\n const options = useMemo(() => {\n const res = keyTerms.map((keyTerm) => ({value: keyTerm.id, label: keyTerm.name}));\n return res;\n }, [keyTerms]);\n\n return (\n <ItemWithPlaceholder label=\"Key Terms\" hasItems={!!keyTerms.length}>\n <Form.SelectAutocomplete name={FormNameEnum.keyTerms} options={options} multiple />\n </ItemWithPlaceholder>\n );\n}\n","import {FormNameEnum} from 'filters-selections';\nimport {useIsDomainKnowledgeSelected} from 'filters-selections/hooks';\nimport {ItemWithPlaceholder} from 'filters-selections/selection/components';\nimport {filtersCompetenciesEntitiesCollectionSelector, fetchCompetenciesThunk} from 'filters-selections/store';\nimport {Form} from 'forms';\nimport {IWithDisabled} from 'models';\nimport React, {useEffect, useMemo} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface ICompetencySelectProps extends IWithDisabled {\n withDomainKnowledge?: boolean;\n}\n\nexport function CompetencyByDomainSelect({disabled}: ICompetencySelectProps) {\n const dispatch = useDispatch();\n const competencies = useSelector(filtersCompetenciesEntitiesCollectionSelector);\n const {isDomainKnowledgeSelected} = useIsDomainKnowledgeSelected();\n\n useEffect(() => {\n if (!competencies.length) {\n dispatch(fetchCompetenciesThunk());\n }\n }, [competencies.length, dispatch]);\n\n const options = useMemo(\n () =>\n competencies.map((competency) => ({\n value: competency.id,\n label: competency.name,\n })),\n [competencies]\n );\n\n return (\n <ItemWithPlaceholder label=\"Competency\" hasItems={!!competencies.length}>\n <Form.SelectAutocomplete\n name={FormNameEnum.competencies}\n options={options}\n multiple\n disabled={!isDomainKnowledgeSelected || disabled}\n />\n </ItemWithPlaceholder>\n );\n}\n","import {\n filtersDomainsEntitiesCollectionSelector,\n filtersDomainsEntitiesSelector,\n fetchDomainsThunk,\n FormNameEnum,\n} from 'filters-selections';\nimport {ItemWithPlaceholder} from 'filters-selections/selection/components';\nimport {useFormikContext} from 'formik';\nimport {IWithDisabled} from 'models';\nimport React, {useCallback, useEffect, useMemo} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {isDomainKnowledge} from 'utils';\nimport {Select, Text} from 'components-lib';\nimport {IItemFormBaseValues} from 'admin/library/items/builder/views/itemBuilderFormBaseConfig';\nimport {IOption} from 'models';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface IDomainWithoutKnowledgeSelectProps extends IWithDisabled {}\n\nconst domainKnowledgeOption = 'nowledge';\n\nexport function DomainWithoutKnowledgeSelect({disabled}: IDomainWithoutKnowledgeSelectProps) {\n const dispatch = useDispatch();\n const {values, errors, setValues} = useFormikContext<IItemFormBaseValues>();\n const currentDomainValue = values[FormNameEnum.domain];\n const currentProgramsValue: number | number[] = values[FormNameEnum.programs];\n const error = errors[FormNameEnum.domain];\n const domains = useSelector(filtersDomainsEntitiesCollectionSelector);\n const domainsEntities = useSelector(filtersDomainsEntitiesSelector);\n const currentDomainEntity = domainsEntities[currentDomainValue];\n\n const filteredDomains = domains.filter((domain) => !domain.name.includes(domainKnowledgeOption));\n\n const options: IOption[] = useMemo(\n () => filteredDomains.map((domain) => ({value: domain.id, label: domain.displayText})),\n [filteredDomains]\n );\n\n const currentOption: IOption = useMemo(\n () => currentDomainEntity && {value: currentDomainEntity.id, label: currentDomainEntity.name},\n [currentDomainEntity]\n );\n\n useEffect(() => {\n if (!domains.length) {\n dispatch(fetchDomainsThunk());\n }\n }, [dispatch, domains.length]);\n\n const changeHandler = useCallback(\n (value: number) => {\n if (value === currentDomainValue) {\n return;\n }\n\n const isCurrentDomainKnowledge = isDomainKnowledge(currentDomainEntity);\n const isNextDomainKnowledge = isDomainKnowledge(domainsEntities[value]);\n\n const newValues = {\n ...values,\n [FormNameEnum.domain]: value,\n };\n\n if (isCurrentDomainKnowledge) {\n newValues[FormNameEnum.programs] = !Array.isArray(currentProgramsValue) ? [currentProgramsValue] : [];\n newValues[FormNameEnum.competencies] = [];\n newValues[FormNameEnum.concepts] = [];\n }\n\n if (isNextDomainKnowledge) {\n newValues[FormNameEnum.programs] = Array.isArray(currentProgramsValue) ? currentProgramsValue.shift() : null;\n }\n\n setValues(newValues, true);\n },\n [currentDomainEntity, domainsEntities, currentDomainValue, values, setValues, currentProgramsValue]\n );\n\n return (\n <ItemWithPlaceholder label=\"Domain\" hasItems={!!domains.length}>\n <Select options={options} changeHandler={changeHandler} value={currentOption} disabled={disabled} />\n {error && <Text.Error>{error}</Text.Error>}\n </ItemWithPlaceholder>\n );\n}\n","import React from 'react';\nimport {FormNameEnum} from 'filters-selections/enums';\nimport {RangeSelect} from './RangeSelect';\n\nexport const RangeFromSelect = () => {\n return <RangeSelect name={FormNameEnum.rangeFrom} label=\"From\" disabled={false} />;\n};\n","import React from 'react';\nimport {FormNameEnum} from 'filters-selections/enums';\nimport {RangeSelect} from './RangeSelect';\nimport {useFormikContext} from 'formik';\nimport {BUTTON_NUM_LIST} from 'utils';\n\nexport const RangeToSelect = () => {\n const {values} = useFormikContext();\n const rangeFrom = values[FormNameEnum.rangeFrom];\n const rangeFromIdx = BUTTON_NUM_LIST.indexOf(Number(rangeFrom));\n const rangeToList = BUTTON_NUM_LIST.slice(rangeFromIdx + 1);\n\n return <RangeSelect name={FormNameEnum.rangeTo} label=\"To\" disabled={false} list={rangeToList} />;\n};\n","import React, {useEffect} from 'react';\nimport {LearningObjectiveSelect} from './LearningObjectiveSelect';\nimport {useIsDomainKnowledgeSelected} from 'filters-selections/hooks';\nimport {FormNameEnum} from 'filters-selections';\nimport {useFormikContext} from 'formik';\n\nexport const LearningObjectiveWithDomainDependencySelect = () => {\n const {values, setFieldValue} = useFormikContext();\n const {isDomainKnowledgeSelected} = useIsDomainKnowledgeSelected();\n const learningObjectiveValue = values[FormNameEnum.learningObjective];\n\n useEffect(() => {\n if (!isDomainKnowledgeSelected) {\n setFieldValue(FormNameEnum.learningObjective, '');\n }\n }, [learningObjectiveValue, isDomainKnowledgeSelected, setFieldValue]);\n\n return <LearningObjectiveSelect value={learningObjectiveValue} disabled={!isDomainKnowledgeSelected} />;\n};\n","import React, {useEffect, useMemo} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {useFormikContext} from 'formik';\nimport {Form} from 'forms';\nimport {IOption} from 'models';\nimport {\n FormNameEnum,\n ItemWithPlaceholder,\n fetchInstrumentTypesThunk,\n filtersInstrumentTypesEntitiesCollectionSelector,\n hasPreAndPostSessionSelected,\n filterSubTypesCondition,\n} from 'filters-selections';\n\nexport function InstrumentSubTypeSelect() {\n const dispatch = useDispatch();\n const {values} = useFormikContext();\n const type = values[FormNameEnum.instrumentType];\n const types = useSelector(filtersInstrumentTypesEntitiesCollectionSelector);\n const hasTypeSelected = !!type;\n const hasTypePreAndPostSession = hasPreAndPostSessionSelected(hasTypeSelected, type);\n const shouldDisabale = !hasTypePreAndPostSession;\n\n useEffect(() => {\n if (!types.length) {\n dispatch(fetchInstrumentTypesThunk());\n }\n }, [types.length, dispatch]);\n\n /**\n * Only available when type = Pre-Session OR Post-Session\n */\n\n const subTypes = useMemo(() => {\n if (hasTypePreAndPostSession && types) {\n return types?.filter((t) => filterSubTypesCondition(type, t));\n }\n\n return [];\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [hasTypePreAndPostSession]);\n\n const options: IOption[] = useMemo(\n () =>\n subTypes.map((subType) => ({\n value: subType.id,\n label: subType.displayText,\n })),\n [subTypes]\n );\n\n return (\n <ItemWithPlaceholder label=\"Sub Type\" hasItems={!!types.length}>\n <Form.Select name={FormNameEnum.instrumentSubType} options={options} disabled={shouldDisabale} />\n </ItemWithPlaceholder>\n );\n}\n","import React, {FC, useEffect, useMemo} from 'react';\n\nimport {IWithDisabled} from 'models';\nimport {Form} from 'forms';\nimport {ItemWithPlaceholder} from 'filters-selections/selection/components';\nimport {useDispatch} from 'react-redux';\nimport {fetchUserRoleListThunk, usePermissions} from 'permissions';\nimport {FormNameEnum} from 'filters-selections';\n\ninterface IRoleSelectProps extends IWithDisabled {\n label: string;\n}\n\nexport const RoleSelect: FC<IRoleSelectProps> = ({disabled, label = 'Role'}) => {\n const dispatch = useDispatch();\n\n const {allUserRoles} = usePermissions();\n\n useEffect(() => {\n dispatch(fetchUserRoleListThunk());\n }, [dispatch]);\n\n const options: any = useMemo(() => {\n return allUserRoles.map((role) => ({\n value: role.value,\n label: role.name,\n }));\n }, [allUserRoles]);\n\n return (\n <ItemWithPlaceholder label={label} hasItems={!!allUserRoles.length}>\n <Form.SelectAutocomplete multiple name={FormNameEnum.role} options={options} disabled={disabled} />\n </ItemWithPlaceholder>\n );\n};\n","import React, {useEffect, useMemo} from 'react';\nimport {FormNameEnum} from 'filters-selections/enums';\nimport {FormNameEnum as IntegrationFormNameEnum} from 'enums/form';\nimport {ItemWithPlaceholder} from 'filters-selections/selection/components';\nimport {Form} from 'forms';\nimport {IAddIntegrationFormBaseValues, IOption, IWithDisabled} from 'models';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {fetchIntegrationTypesThunk, filterIntegrationTypesEntitiesCollectionSelector} from 'filters-selections';\nimport {useFormikContext} from 'formik';\nimport {\n getIsGoogleClassRoom,\n getIsMicrosoftTeams,\n getIsGoogleSitesSource,\n getIsGoogleSitesDestination,\n} from 'admin/integrations';\n\ntype IIntegrationTypeSelectProps = IWithDisabled;\n\nexport function IntegrationTypeSelect({disabled}: IIntegrationTypeSelectProps) {\n const dispatch = useDispatch();\n const integrationTypes = useSelector(filterIntegrationTypesEntitiesCollectionSelector);\n const {setFieldValue, values} = useFormikContext<IAddIntegrationFormBaseValues>();\n const type = Number(values?.integrationType);\n const isGoogleClassRooom = getIsGoogleClassRoom(type);\n const isGoogleSitesSource = getIsGoogleSitesSource(type);\n const isGoogleSitesDestination = getIsGoogleSitesDestination(type);\n const isMicrosoftTeams = getIsMicrosoftTeams(type);\n\n useEffect(() => {\n if (!integrationTypes.length) {\n dispatch(fetchIntegrationTypesThunk());\n }\n }, [integrationTypes.length, dispatch]);\n\n useEffect(() => {\n if (isGoogleClassRooom) {\n setFieldValue(IntegrationFormNameEnum.isGoogleClassroom, isGoogleClassRooom);\n values?.isGoogleSitesSource && setFieldValue(IntegrationFormNameEnum.isGoogleSitesSource, false);\n values?.isGoogleSitesDestination && setFieldValue(IntegrationFormNameEnum.isGoogleSitesDestination, false);\n values?.isMicrosoftTeams && setFieldValue(IntegrationFormNameEnum.isMicrosoftTeams, false);\n }\n\n if (isGoogleSitesSource) {\n values?.isGoogleClassroom && setFieldValue(IntegrationFormNameEnum.isGoogleClassroom, false);\n setFieldValue(IntegrationFormNameEnum.isGoogleSitesSource, isGoogleSitesSource);\n values?.isGoogleSitesDestination && setFieldValue(IntegrationFormNameEnum.isGoogleSitesDestination, false);\n values?.isMicrosoftTeams && setFieldValue(IntegrationFormNameEnum.isMicrosoftTeams, false);\n }\n\n if (isGoogleSitesDestination) {\n values?.isGoogleClassroom && setFieldValue(IntegrationFormNameEnum.isGoogleClassroom, false);\n values?.isGoogleSitesSource && setFieldValue(IntegrationFormNameEnum.isGoogleSitesSource, false);\n setFieldValue(IntegrationFormNameEnum.isGoogleSitesDestination, isGoogleSitesDestination);\n values?.isMicrosoftTeams && setFieldValue(IntegrationFormNameEnum.isMicrosoftTeams, false);\n }\n\n if (isMicrosoftTeams) {\n values?.isGoogleClassroom && setFieldValue(IntegrationFormNameEnum.isGoogleClassroom, false);\n values?.isGoogleSitesSource && setFieldValue(IntegrationFormNameEnum.isGoogleSitesSource, false);\n values?.isGoogleSitesDestination && setFieldValue(IntegrationFormNameEnum.isGoogleSitesDestination, false);\n setFieldValue(IntegrationFormNameEnum.isMicrosoftTeams, isMicrosoftTeams);\n }\n }, [\n isGoogleClassRooom,\n isGoogleSitesSource,\n isGoogleSitesDestination,\n isMicrosoftTeams,\n setFieldValue,\n values.isGoogleClassroom,\n values.isMicrosoftTeams,\n values.isGoogleSitesDestination,\n values.isGoogleSitesSource,\n ]);\n\n const options: IOption[] = useMemo(\n () =>\n integrationTypes.map((type) => ({\n value: type.id.toString(),\n label: type.displayText,\n })),\n [integrationTypes]\n );\n\n return (\n <ItemWithPlaceholder label=\"Integration Type\" hasItems={!!integrationTypes.length}>\n <Form.SelectAutocomplete\n name={FormNameEnum.integrationType}\n options={options}\n multiple={false}\n disabled={disabled}\n />\n </ItemWithPlaceholder>\n );\n}\n","import React from 'react';\nimport {IWithDisabled} from 'models';\nimport {AreaSelect} from './AreaSelect';\n\nexport const AreaMultiSelect = ({disabled}: IWithDisabled) => {\n return <AreaSelect selectionType=\"multi\" disabled={disabled} />;\n};\n","import React from 'react';\nimport {useFormikContext} from 'formik';\nimport {IIntegrationsAllFiltersFormValues} from 'admin/integrations/all/components/SidebarIntegrationsAll';\nimport {useAddIntegration} from 'admin/integrations/add-integration';\nimport {SchoolDistrictSelect} from './SchoolDistrictSelect';\nimport {getIsGoogleSitesDestination, getIsGoogleSitesSource} from 'admin/integrations/utils';\n\nexport const SchoolDistrictBasedOnGoogleSitesSelect = () => {\n const {values} = useFormikContext<IIntegrationsAllFiltersFormValues>();\n const type = Number(values.integrationType);\n const {serviceSourceEmail} = useAddIntegration();\n\n const isGoogleSitesSource = getIsGoogleSitesSource(type);\n const isGoogleSitesDestination = getIsGoogleSitesDestination(type);\n\n return <SchoolDistrictSelect disabled={(isGoogleSitesSource && !!serviceSourceEmail) || isGoogleSitesDestination} />;\n};\n","import React from 'react';\nimport {useFormikContext} from 'formik';\nimport {IAddIntegrationFormBaseValues} from 'models/integrations';\nimport {SchoolNameBasedOnAreaSelect} from './SchoolNameBasedOnAreaSelect';\nimport {getIsGoogleSitesSource} from 'admin/integrations/utils';\n\nexport const SchoolNameBasedOnAreaAndGoogleSitesSelect = () => {\n const {values} = useFormikContext<IAddIntegrationFormBaseValues>();\n const type = Number(values.integrationType);\n\n const isGoogleSitesSource = getIsGoogleSitesSource(type);\n\n return <SchoolNameBasedOnAreaSelect disabled={isGoogleSitesSource} />;\n};\n","import React, {FC} from 'react';\nimport {PillarSelect} from './PillarSelect';\nimport {IWithDisabled} from 'models';\nimport {FormNameEnum} from 'filters-selections';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface IPrimaryPillarSelectProps extends IWithDisabled {}\n\nexport const PrimaryPillarSelect: FC<IPrimaryPillarSelectProps> = ({disabled}) => {\n return (\n <PillarSelect name={FormNameEnum.primaryPillar} selectionType=\"single\" disabled={disabled} label=\"Primary Pillar\" />\n );\n};\n","import React, {FC} from 'react';\nimport {PillarSelect} from './PillarSelect';\nimport {IWithDisabled} from 'models';\nimport {FormNameEnum} from 'filters-selections';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface ISecondaryPillarSelectProps extends IWithDisabled {}\n\nexport const SecondaryPillarSelect: FC<ISecondaryPillarSelectProps> = ({disabled}) => {\n return (\n <PillarSelect\n name={FormNameEnum.secondaryPillar}\n selectionType=\"single\"\n disabled={disabled}\n label=\"Secondary Pillar\"\n shouldFetch={false}\n />\n );\n};\n","import React, {FC} from 'react';\nimport {IWithDisabled} from 'models';\nimport {ProgramYearSelect} from './ProgramYearSelect';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface IProgramYearMultiSelectProps extends IWithDisabled {}\n\nexport const ProgramYearMultiSelect: FC<IProgramYearMultiSelectProps> = ({disabled}) => {\n return <ProgramYearSelect selectionType=\"multi\" disabled={disabled} />;\n};\n","import React, {FC} from 'react';\nimport {IWithDisabled} from 'models';\nimport {ProgramYearSelect} from './ProgramYearSelect';\nimport {FormNameEnum} from 'filters-selections';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface IProgramYearSingleSelectProps extends IWithDisabled {}\n\nexport const ProgramYearSingleSelect: FC<IProgramYearSingleSelectProps> = ({disabled}) => {\n return <ProgramYearSelect selectionType=\"single\" disabled={disabled} name={FormNameEnum.programYear} />;\n};\n","import React, {FC} from 'react';\nimport {IWithDisabled} from 'models';\nimport {LanguagesSelect} from './LanguagesSelect';\nimport {FormNameEnum} from 'filters-selections';\n\ntype ILanguagesSingleSelectProps = IWithDisabled;\n\nexport const LanguagesSingleSelect: FC<ILanguagesSingleSelectProps> = ({disabled}) => {\n return <LanguagesSelect label=\"Language\" selectionType=\"single\" disabled={disabled} name={FormNameEnum.language} />;\n};\n","import React, {FC} from 'react';\nimport {IWithDisabled} from 'models';\nimport {LanguagesSelect} from './LanguagesSelect';\n\ntype ILanguagesMultiSelectProps = IWithDisabled;\n\nexport const LanguagesMultiSelect: FC<ILanguagesMultiSelectProps> = ({disabled}) => {\n return <LanguagesSelect selectionType=\"multi\" disabled={disabled} />;\n};\n","import React, {FC} from 'react';\nimport {FormNameEnum} from 'filters-selections';\nimport {ProgramSelect} from './ProgramSelect';\nimport {IWithDisabled} from 'models/common';\n\ntype IProgramSingleSelectProps = IWithDisabled;\n\nexport const ProgramSingleSelect: FC<IProgramSingleSelectProps> = ({disabled}) => {\n return <ProgramSelect selectionType=\"single\" label=\"Program\" disabled={disabled} name={FormNameEnum.program} />;\n};\n","import React, {FC} from 'react';\nimport {IWithDisabled} from 'models';\nimport {FutureProgramYearSelect} from '../FutureProgramYear/FutureProgramYearSelect';\nimport {FormNameEnum} from 'filters-selections';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface IFutureProgramYearSingleSelect extends IWithDisabled {}\n\nexport const FutureProgramYearSingleSelect: FC<IFutureProgramYearSingleSelect> = ({disabled}) => {\n return <FutureProgramYearSelect selectionType=\"single\" disabled={disabled} name={FormNameEnum.futureProgramYear} />;\n};\n","import React, {FC} from 'react';\nimport {FutureProgramYearSelect} from '../FutureProgramYear/FutureProgramYearSelect';\nimport {IWithDisabled} from 'models/common';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface IFutureProgramYearMultiSelectProps extends IWithDisabled {}\n\nexport const FutureProgramYearMultiSelect: FC<IFutureProgramYearMultiSelectProps> = ({disabled}) => {\n return <FutureProgramYearSelect selectionType=\"multi\" disabled={disabled} />;\n};\n","import React, {FC, Fragment, useCallback, useEffect, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {IOption, IWithDisabled} from 'models';\nimport {\n FormNameEnum,\n delayTime,\n fetchResourcesThunk,\n resourcesEntitiesCollectionSelector,\n loadingStateResources,\n filtersActions as actions,\n dynamicSearchMessages,\n} from 'filters-selections';\nimport {Form} from 'forms';\nimport {useAppDispatch, useDebounce} from 'hooks';\nimport {Label} from 'components-lib';\n\ntype ResourcesSelectProps = IWithDisabled;\n\nexport const ResourcesSelect: FC<ResourcesSelectProps> = ({disabled}) => {\n const dispatch = useAppDispatch();\n const resources = useSelector(resourcesEntitiesCollectionSelector);\n const loading = useSelector(loadingStateResources);\n\n useEffect(() => {\n if (!resources.length) {\n dispatch(\n fetchResourcesThunk({\n filter: {\n query: '',\n },\n })\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n return () => {\n dispatch(actions.clearResources());\n };\n }, [dispatch]);\n\n const options: IOption[] = useMemo(() => {\n if (loading) {\n return [];\n }\n\n return resources.length > 0\n ? resources.map(({id, displayText}) => ({\n value: id,\n label: displayText,\n }))\n : [];\n }, [resources, loading]);\n\n const debouncedSearch = useDebounce(\n (query: string) =>\n dispatch(\n fetchResourcesThunk({\n filter: {\n query,\n },\n })\n ),\n delayTime\n );\n\n const handleInputChange = useCallback(\n (value: string) => {\n const newValue = value.trim();\n return !!newValue && debouncedSearch(newValue);\n },\n [debouncedSearch]\n );\n\n return (\n <Fragment>\n <Label label=\"Existing Resources\" />\n <Form.SearchSelectAutocomplete\n loading={loading}\n name={FormNameEnum.resources}\n options={options}\n disabled={disabled || loading}\n noOptionsText={dynamicSearchMessages.noOptionsResource}\n inputChangeHandler={handleInputChange}\n withFontWeightBold={true}\n withCheckboxRenderOption={false}\n />\n </Fragment>\n );\n};\n","import React, {FC, Fragment, useCallback, useEffect, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {IOption, IWithDisabled} from 'models';\nimport {\n FormNameEnum,\n delayTime,\n fetchInstrumentsThunk,\n loadingStateInstruments,\n filtersActions as actions,\n initialMappedInstrumentsCollectionSelector,\n dynamicSearchMessages,\n} from 'filters-selections';\nimport {Form} from 'forms';\nimport {useAppDispatch, useDebounce} from 'hooks';\nimport {Label} from 'components-lib';\n\ntype InstrumentsSelectProps = IWithDisabled;\n\nexport const InstrumentsSelect: FC<InstrumentsSelectProps> = ({disabled}) => {\n const dispatch = useAppDispatch();\n const instruments = useSelector(initialMappedInstrumentsCollectionSelector);\n const loading = useSelector(loadingStateInstruments);\n\n useEffect(() => {\n if (!instruments.length) {\n dispatch(\n fetchInstrumentsThunk({\n filter: {\n query: '',\n },\n })\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n return () => {\n dispatch(actions.clearInstruments());\n };\n }, [dispatch]);\n\n const options: IOption[] = useMemo(() => {\n if (loading) {\n return [];\n }\n\n return instruments.length > 0\n ? instruments.map(({id, displayText}) => ({\n value: id,\n label: displayText,\n }))\n : [];\n }, [instruments, loading]);\n\n const debouncedSearch = useDebounce(\n (query: string) =>\n dispatch(\n fetchInstrumentsThunk({\n filter: {\n query,\n },\n })\n ),\n delayTime\n );\n\n const handleInputChange = useCallback(\n (value: string) => {\n const newValue = value.trim();\n return newValue && debouncedSearch(newValue);\n },\n [debouncedSearch]\n );\n\n return (\n <Fragment>\n <Label label=\"Existing Instruments\" />\n <Form.SearchSelectAutocomplete\n loading={loading}\n name={FormNameEnum.instruments}\n options={options}\n disabled={disabled || loading}\n noOptionsText={dynamicSearchMessages.noOptionsInstrument}\n inputChangeHandler={handleInputChange}\n withFontWeightBold={true}\n withCheckboxRenderOption={false}\n />\n </Fragment>\n );\n};\n","import React, {FC} from 'react';\nimport {FormNameEnum} from 'filters-selections';\nimport {TextInputSelection} from '../TextInputSelection/TextInputSelection';\nimport {IWithDisabled} from 'models/common';\n\ntype ILearningPathNameTextInputProps = IWithDisabled;\n\nexport const LearningPathNameTextInput: FC<ILearningPathNameTextInputProps> = ({disabled}) => (\n <TextInputSelection name={FormNameEnum.learningPathName} label=\"Name\" disabled={disabled} autoFocus />\n);\n","import React from 'react';\nimport {KeyTermsTextInput} from './KeyTermsTextInput';\n\nexport const KeyTermsWithInfoTextInput = () => {\n return <KeyTermsTextInput infoText=\"For multiple key terms use a semicolon.\" />;\n};\n","import React from 'react';\nimport {LearningObjectiveTextInput} from './LearningObjectiveTextInput';\n\nexport const LearningObjectiveWithInfoTextInput = () => {\n return <LearningObjectiveTextInput infoText=\"For multiple learning objectives use a semicolon.\" />;\n};\n","import React, {FC} from 'react';\nimport {ExpirationDatePicker} from './ExpirationDatePicker';\nimport {IWithDisabled} from 'models/common';\n\ntype IEditableExpirationDatePickerProps = IWithDisabled;\n\nexport const EditableExpirationDatePicker: FC<IEditableExpirationDatePickerProps> = ({disabled}) => {\n return <ExpirationDatePicker disablePast={false} disabled={disabled} />;\n};\n","import React from 'react';\nimport {ExpirationDatePicker} from './ExpirationDatePicker';\n\nexport const ExpirationWithInfoDatePicker = () => {\n return <ExpirationDatePicker infoText=\"After the chosen date the resource will no longer be available.\" />;\n};\n","import React, {FC, useEffect} from 'react';\nimport {SchoolDistrictSelect} from './SchoolDistrictSelect';\nimport {IWithDisabled} from 'models/common';\nimport {useFormikContext} from 'formik';\nimport {IAddIntegrationFormBaseValues} from 'models/integrations';\nimport {FormNameEnum} from 'filters-selections';\n\ntype ISchoolDistrictBasedOnAreaProps = IWithDisabled;\n\nexport const SchoolDistrictBasedOnAreaSelect: FC<ISchoolDistrictBasedOnAreaProps> = ({disabled}) => {\n const {setFieldValue, values} = useFormikContext<IAddIntegrationFormBaseValues>();\n const shouldDisableDistricts = !!values.area;\n\n useEffect(() => {\n if (values.area) {\n setFieldValue(FormNameEnum.schoolDistrict, null);\n }\n }, [values.area, setFieldValue]);\n\n return <SchoolDistrictSelect disabled={disabled || shouldDisableDistricts} />;\n};\n","import React, {FC, useEffect} from 'react';\nimport {useFormikContext} from 'formik';\nimport {IAddIntegrationFormBaseValues} from 'models/integrations';\nimport {SchoolNameBasedOnAreaSelect} from './SchoolNameBasedOnAreaSelect';\nimport {getIsGoogleSitesSource} from 'admin/integrations/utils';\nimport {IWithDisabled} from 'models/common';\nimport {useSchoolNameBasedOnAreaSelect} from 'filters-selections/hooks';\nimport {FormNameEnum} from 'filters-selections';\n\ntype ISchoolNameBasedOnAreaAndDistrictProps = IWithDisabled;\n\nexport const SchoolNameBasedOnAreaAndDistrict: FC<ISchoolNameBasedOnAreaAndDistrictProps> = ({disabled}) => {\n const {values, setFieldValue} = useFormikContext<IAddIntegrationFormBaseValues>();\n const {clearSchoolNameSelectItems} = useSchoolNameBasedOnAreaSelect();\n const type = Number(values.integrationType);\n\n const isGoogleSitesSource = getIsGoogleSitesSource(type);\n\n useEffect(() => {\n if (values.area || values.schoolDistrict) {\n setFieldValue(FormNameEnum.schoolName, null);\n clearSchoolNameSelectItems();\n }\n return () => {\n clearSchoolNameSelectItems();\n };\n }, [values.area, values.schoolDistrict, setFieldValue, clearSchoolNameSelectItems]);\n\n return <SchoolNameBasedOnAreaSelect disabled={disabled || isGoogleSitesSource} />;\n};\n","import React, {useEffect} from 'react';\nimport {useFormikContext} from 'formik';\nimport {AreaSingleSelectBasedGoogleSites} from './AreaSingleSelectBasedGoogleSites';\nimport {IAddIntegrationFormBaseValues} from 'models/integrations';\nimport {FormNameEnum} from 'filters-selections';\n\nexport const AreaSingleBasedOnDistrictAndGoogleSites = () => {\n const {setFieldValue, values} = useFormikContext<IAddIntegrationFormBaseValues>();\n const shouldDisableAreas = !!values.schoolDistrict;\n\n useEffect(() => {\n if (values.area) {\n setFieldValue(FormNameEnum.schoolDistrict, null);\n }\n }, [values.area, setFieldValue]);\n\n return <AreaSingleSelectBasedGoogleSites disabled={shouldDisableAreas} />;\n};\n","import React, {FC} from 'react';\nimport {FormNameEnum} from 'filters-selections';\nimport {TextInputSelection} from '../TextInputSelection/TextInputSelection';\nimport {IWithDisabled} from 'models/common';\n\ntype IIntegrationNameTextInputProps = IWithDisabled;\n\nexport const IntegrationNameTextInput: FC<IIntegrationNameTextInputProps> = ({disabled}) => (\n <TextInputSelection name={FormNameEnum.integrationName} label=\"Integration Name\" disabled={disabled} />\n);\n","import React, {FC} from 'react';\nimport {FormNameEnum} from 'filters-selections';\nimport {TextInputSelection} from '../TextInputSelection/TextInputSelection';\nimport {IWithDisabled} from 'models/common';\n\ntype IUserToImpersonateTextInputProps = IWithDisabled;\n\nexport const UserToImpersonateTextInput: FC<IUserToImpersonateTextInputProps> = ({disabled}) => (\n <TextInputSelection name={FormNameEnum.masterClassroomEmailAccount} label=\"User to Impersonate\" disabled={disabled} />\n);\n","import React, {FC} from 'react';\nimport {FormNameEnum} from 'filters-selections';\nimport {TextInputSelection} from '../TextInputSelection/TextInputSelection';\nimport {IWithDisabled} from 'models/common';\n\ntype IServiceEmailTextInputProps = IWithDisabled;\n\nexport const ServiceEmailTextInput: FC<IServiceEmailTextInputProps> = ({disabled}) => (\n <TextInputSelection name={FormNameEnum.email} label=\"Service Email Address\" disabled={disabled} />\n);\n","import React, {FC} from 'react';\nimport {FormNameEnum} from 'filters-selections';\nimport {TextInputSelection} from '../TextInputSelection/TextInputSelection';\nimport {IWithDisabled} from 'models/common';\n\ntype IDisplayNameTextInputProps = IWithDisabled;\n\nexport const DisplayNameTextInput: FC<IDisplayNameTextInputProps> = ({disabled}) => (\n <TextInputSelection name={FormNameEnum.displayName} label=\"Display Name\" disabled={disabled} />\n);\n","import React, {FC} from 'react';\nimport {FormNameEnum} from 'filters-selections';\nimport {TextInputSelection} from '../TextInputSelection/TextInputSelection';\nimport {IWithDisabled} from 'models/common';\n\ntype IWebLinkTextInputProps = IWithDisabled;\n\nexport const WebLinkTextInput: FC<IWebLinkTextInputProps> = ({disabled}) => (\n <TextInputSelection name={FormNameEnum.webLink} label=\"Web Link\" disabled={disabled} />\n);\n","import React from 'react';\nimport {TimeTextInput} from './TimeTextInput';\n\nexport const TimeWithInfoTextInput = () => {\n return <TimeTextInput infoText=\"Add asset duration.\" />;\n};\n","import React, {FC} from 'react';\nimport {usePermissions} from 'permissions';\nimport {SuperAndNationalAdminroles} from 'enums/admin-roles';\nimport {PermissionCheckbox} from './PermissionCheckbox';\nimport {IWithDisabled} from 'models/common';\n\ntype IAdminPermissionCheckboxProps = IWithDisabled;\n\nexport const AdminPermissionCheckbox: FC<IAdminPermissionCheckboxProps> = ({disabled}) => {\n const {hasPermission} = usePermissions();\n const hasAdminPermission = hasPermission(SuperAndNationalAdminroles) as boolean;\n const checked = hasAdminPermission ? hasAdminPermission : undefined;\n\n return <PermissionCheckbox disabled={disabled || hasAdminPermission} checked={checked} />;\n};\n","import React from 'react';\nimport {AccessibleToStudentsRadioGroup} from './AccessibleToStudentsRadioGroup';\n\nexport const AccessibleToStudentsWithInfoRadioGroup = () => {\n return (\n <AccessibleToStudentsRadioGroup infoText=\"If you choose ‘no’ the resource would still be available for teachers and volunteers\" />\n );\n};\n","import React from 'react';\nimport {CompetenciesByPillarSelect} from './CompetencyByPillarSelect';\n\nexport const CompetenciesByPillarWithInfoSelect = () => {\n return <CompetenciesByPillarSelect infoText=\"Choose a pillar first.\" />;\n};\n","import React from 'react';\nimport {KnowledgeSkillsAndAbilitiesSelect} from './KnowledgeSkillsAndAbilitiesSelect';\n\nexport const KnowledgeSkillsAndAbilitiesWithInfoSelect = () => {\n return <KnowledgeSkillsAndAbilitiesSelect infoText=\"Choose a competency first.\" />;\n};\n","import React, {FC} from 'react';\nimport {FormNameEnum} from 'filters-selections';\nimport {DatePickerSelection} from '../DatePickerSelection/DatePickerSelection';\nimport {IWithDisabled} from 'models/common';\n\ninterface IToDatePickerProps extends IWithDisabled {\n disableFuture?: boolean;\n}\n\nexport const ToDatePicker: FC<IToDatePickerProps> = ({disabled, disableFuture = true}) => (\n <DatePickerSelection\n label=\"To\"\n name={FormNameEnum.to}\n disableFuture={disableFuture}\n disabled={disabled}\n maxDateMessage=\"The selected date should be in the past\"\n />\n);\n","import React, {FC} from 'react';\nimport {FormNameEnum} from 'filters-selections';\nimport {DatePickerSelection} from '../DatePickerSelection/DatePickerSelection';\nimport {IWithDisabled} from 'models/common';\n\ninterface IFromDatePickerProps extends IWithDisabled {\n disableFuture?: boolean;\n}\n\nexport const FromDatePicker: FC<IFromDatePickerProps> = ({disabled, disableFuture = true}) => (\n <DatePickerSelection\n label=\"From\"\n name={FormNameEnum.from}\n disableFuture={disableFuture}\n disabled={disabled}\n maxDateMessage=\"The selected date should be in the past\"\n />\n);\n","export const delayTime = 1000;\nexport const minChars = 3;\nexport const minLength = 0;\n","const noOptions = 'No options found.';\nconst startTypingMessage = 'Please start typing the name of the ';\n\nexport const dynamicSearchMessages = {\n loading: 'Loading...',\n noOptions,\n noOptionsSchoolName: `${noOptions} ${startTypingMessage} school (e.g., “Brookfield Elementary School“, ...etc)`,\n noOptionsSchoolDistrict: `${noOptions} ${startTypingMessage} district or the state 2-letter code with dot (e.g. “Jefferson“, “IL.“, ..etc)`,\n noOptionsResource: `${noOptions} ${startTypingMessage} resource (e.g., “JA Our Nation Program Brief“, ...etc)`,\n noOptionsInstrument: `${noOptions} ${startTypingMessage} instrument (e.g., “JA Be Entrepreneurial Post-session Survey 5“), ...etc`,\n};\n","import {\n FEEDBACK_NUM,\n POST_SESSION_FIRST_DIGIT,\n POST_SESSION_NUM,\n PRE_SESSION_FIRST_DIGIT,\n PRE_SESSION_NUM,\n} from 'utils';\n\nexport const checkIfTypeStartsWithPreOrPostSessionFirstDigit = (type: string) =>\n type.startsWith(PRE_SESSION_FIRST_DIGIT.toString()) || type.startsWith(POST_SESSION_FIRST_DIGIT.toString());\n\nexport const hasPreAndPostSessionSelected = (hasTypeSelected: boolean, type: number) => {\n const isStartsWithDigit = type && checkIfTypeStartsWithPreOrPostSessionFirstDigit(type?.toString());\n\n if (hasTypeSelected) {\n if (isStartsWithDigit) {\n return true;\n }\n }\n return false;\n};\n\nexport const filterSubTypesCondition = (selectedType: number, type: any) => {\n switch (selectedType) {\n case PRE_SESSION_NUM:\n return type.id > PRE_SESSION_NUM && type.id < POST_SESSION_NUM;\n case POST_SESSION_NUM:\n return type.id > POST_SESSION_NUM && type.id < FEEDBACK_NUM;\n }\n};\n","import {IBindBaseStringIdEnumEntity} from 'models';\n\nexport const getPublishedByExtendedList = (userArea: number, publishedBy: IBindBaseStringIdEnumEntity) => [\n {\n name: userArea,\n displayText: 'Area',\n },\n {\n name: publishedBy.id,\n displayText: publishedBy.displayText,\n },\n];\n","import {IBindBaseEnumEntity} from 'models';\n\nexport const getPublishedByExtendedEntities = (\n userArea: number,\n filterPublishedByEntities: {[id: number]: IBindBaseEnumEntity}\n) => ({\n ...filterPublishedByEntities,\n [userArea]: {\n id: userArea,\n name: userArea.toString(),\n displayText: 'Area',\n },\n});\n","export class UserStore {\n public getItem(key: string) {\n return window.localStorage.getItem(key);\n }\n\n public setItem(key: string, value: any) {\n return window.localStorage.setItem(key, value);\n }\n\n public removeItem(key: string) {\n return window.localStorage.removeItem(key);\n }\n\n public removeAllItems() {\n Object.keys(localStorage).forEach((key) => localStorage.removeItem(key));\n }\n\n public key(index: number) {\n return window.localStorage.key(index);\n }\n\n public length() {\n return window.localStorage.length;\n }\n}\n","let currentAuthToken = '';\n\nexport function setToken(token: string) {\n currentAuthToken = token;\n}\n\nexport function getCurrentAccessToken() {\n return currentAuthToken;\n}\n","import {IBindStringResponse} from 'models';\n\nexport function returnQueryStringWithParams(queryString: string, params: any) {\n if (!params || typeof params !== 'object' || Object.keys(params).length === 0) {\n return queryString;\n }\n\n return (\n queryString +\n '?' +\n Object.keys(params)\n .map((key) => key + '=' + params[key])\n .join('&')\n );\n}\n\nexport function parseToJsonObject(str: string): any {\n let result: any;\n\n try {\n result = JSON.parse(str);\n } catch (e) {\n const strJson: IBindStringResponse = {\n value: str,\n };\n\n result = strJson;\n }\n\n return result;\n}\n","export function getLocationOrigin(): string {\n return window.location.origin;\n}\n","export function redirectWindowLocation(url: string) {\n window.location.href = url;\n}\n","export function createLinkForDownload(href: string, fileName: string) {\n const a = document.createElement('a');\n a.href = href;\n a.download = fileName;\n a.click();\n}\n","export function openFileInNewWindow(url: string) {\n return window.open(url, '_blank');\n}\n","export const getCurrentDate = (separator = '') => {\n const newDate = new Date();\n const date = newDate.getDate();\n const month = newDate.getMonth() + 1;\n const year = newDate.getFullYear();\n\n return `${year}${separator}${month < 10 ? `0${month}` : `${month}`}${separator}${date}`;\n};\n","export const getDateFromISOString = (dateString: string): string => dateString.slice(0, 10);\n","export enum ResourceTypeHeadingNameEnum {\n File = 'File',\n ScormPackage = 'Scorm Package',\n WebLink = 'Web Link',\n}\n","export enum ApiPathsEnum {\n COLLECTOR = 'collector',\n SURVEY = 'Survey',\n UMS = 'UMS',\n QUESTION = 'Question',\n TEMPLATE = 'Template',\n GENERAL_TEMPLATE = 'GeneralTemplate',\n ENUMERATORS = 'Enumerator',\n VIDEO = 'Video',\n DIGITAL_RESOURCE = 'DigitalResource',\n INSTRUMENT = 'Instrument',\n ITEM = 'Item',\n ITEM_IMPORT = 'ItemImport',\n PERMISSION = 'Permission',\n REPORT = 'Report',\n EXPORT = 'Export',\n FILES = 'Files',\n HEADER_AND_FOOTER = 'HeaderAndFooter',\n REPORT_GENERATOR = 'ReportGenerator',\n INTEGRATION = 'Integration',\n VIRTUAL_CLASS = 'VirtualClass',\n CREATE = 'Create',\n GOOGLE_SITES = 'GoogleSites',\n SOURCE = 'Source',\n DESTINATION = 'Destination',\n GOOGLE_CLASSROOM = 'GoogleClassroom',\n MICROSOFT_TEAMS = 'MicrosoftTeams',\n TEST = 'Test',\n SITE = 'Site',\n COPY_SITE = 'CopySite',\n LIST_SITES = 'ListFiles',\n PUBLISHED = 'Published',\n LEARNING_PATHS = 'LearningPaths',\n LEARNING_PATH = 'LearningPath',\n LIST_LEARNING_PATHS = 'ListLearningPaths',\n RESOURCES = 'Resources',\n SCORM = 'Scorm',\n FILE = 'File',\n WEB_LINK = 'WebLink',\n CONTENT = 'Content',\n HELPERS = 'Helpers',\n PAPER_ASSESSMENTS = 'PaperAssessments',\n}\n","export enum ErrorStatusCodesEnum {\n BadRequest = 400,\n UnAuthorized = 401,\n Forbidden = 403,\n NotFound = 404,\n InternalServerError = 500,\n BadGateway = 502,\n}\n","export enum ButtonSize {\n SMALL = 'small',\n LARGE = 'large',\n}\n","export enum EntitiesPerPageEnum {\n TWENTY_FIVE = 25,\n FIFTY = 50,\n HUNDRED = 100,\n}\n","export enum FileTypeEnum {\n VIDEO = 'video',\n ZIP = 'zip',\n DOCUMENTS = 'documents',\n AUDIO = 'audio',\n IMAGE = 'image',\n VIRTUAL_CLASS = 'virtual class',\n}\n","export enum ProgramsSectionNavigatorEnum {\n ALL = 0,\n CLASSES = 1,\n INSTRUMENTS = 2,\n REPORTS = 3,\n MASTER_INSTRUMENTS = 4,\n EXPORTS = 5,\n PAPER_ASSESSMENTS = 6,\n}\n","export enum UploadResourceTypeEnum {\n RESOURCES = 'Digital Resources',\n ASSESSMENTS = 'Paper Assessments Responses',\n}\n","export enum DigitalResourceMetaDataEnum {\n PROGRAMS = 'programs',\n SESSIONS = 'sessions',\n PILLARS = 'pillars',\n COMPETENCIES = 'competencies',\n SKILLSANDBEHAVIORS = 'skillsAndBehaviors',\n LANGUAGES = 'languages',\n GRADELEVELS = 'gradeLevels',\n LEVELS = 'levels',\n KEYTERMS = 'keyTerms',\n CONCEPTS = 'concepts',\n LEARNINGOBJECTIVES = 'learningObjectives',\n TYPES = 'digitalResourceTypes',\n FILENAME = 'fileName',\n DRMDATE = 'drmDate',\n DRM_EXPIRATION_DATE = 'drmExpirationDate',\n}\n","export enum OrderEnum {\n ASC = '0',\n DESC = '1',\n}\n","export enum SortDropdownNameEnum {\n NAME_ASC = 'Text: A-Z',\n NAME_DESC = 'Text: Z-A',\n CREATED_NEWEST = 'Created: Newest First',\n CREATED_OLDEST = 'Created: Oldest First',\n}\n","export enum OrderingBackendNameEnum {\n Name = 'Name',\n Created = 'DateCreated',\n Type = 'SurveyType',\n Status = 'TemplateStatus',\n Audience = 'SurveyAudience',\n}\n","export enum PaginationNumEnum {\n ZERO = 0,\n ONE = 1,\n}\n","import React, {MutableRefObject} from 'react';\nimport * as Yup from 'yup';\nimport {Form as FormikForm, Formik} from 'formik';\nimport {FormikHelpers, FormikProps, FormikValues} from 'formik/dist/types';\nimport {IComponentWithChildren} from 'models';\ninterface IFormProps<T> extends IComponentWithChildren {\n initialValues: T;\n validationSchema: Yup.ObjectSchema;\n submitHandler: (values: T, actions: FormikHelpers<T>) => void;\n validateOnMount?: boolean;\n validateOnChange?: boolean;\n validateOnBlur?: boolean;\n formikRef?: MutableRefObject<FormikProps<FormikValues>>;\n}\n\nexport function Form<T>({\n initialValues,\n validationSchema,\n submitHandler,\n children,\n validateOnMount = false,\n validateOnChange = true,\n validateOnBlur = false,\n formikRef,\n}: IFormProps<T>) {\n return (\n <Formik\n enableReinitialize\n innerRef={formikRef}\n initialValues={initialValues}\n validationSchema={validationSchema}\n onSubmit={submitHandler}\n validateOnChange={validateOnChange}\n validateOnMount={validateOnMount}\n validateOnBlur={validateOnBlur}\n >\n <FormikForm style={{width: '100%'}}>{children}</FormikForm>\n </Formik>\n );\n}\n","import {ArrayHelpers, FieldArray} from 'formik';\nimport {IComponentWithChildren} from 'models';\nimport React from 'react';\n\ninterface IFormArrayProps extends IComponentWithChildren {\n name: string;\n}\n\nexport function FormArray({name, children}: IFormArrayProps) {\n return <FieldArray name={name} render={(arrayHelpers: ArrayHelpers) => children(arrayHelpers)} />;\n}\n","import {Button} from 'components-lib';\nimport {useFormikContext} from 'formik';\nimport React, {useCallback} from 'react';\nimport {values} from 'utils';\n\ninterface IFormButtonClearProps {\n clickHandler?: () => void;\n}\n\nexport function FormButtonClear({clickHandler}: IFormButtonClearProps) {\n const {dirty, resetForm, values: formValues} = useFormikContext();\n\n const hasValues = values(formValues).some((value) => {\n if (Array.isArray(value)) {\n return !!value.length;\n }\n\n return !!value;\n });\n\n const resetFormHandler = useCallback(() => {\n resetForm();\n clickHandler && clickHandler();\n }, [clickHandler, resetForm]);\n\n return (\n <Button.Primary size=\"small\" disabled={!dirty && !hasValues} clickHandler={resetFormHandler}>\n Clear\n </Button.Primary>\n );\n}\n","import {Button} from 'components-lib';\nimport {useFormikContext} from 'formik';\nimport React, {useCallback} from 'react';\nimport {isEmpty, isFunction} from 'utils';\n\ninterface IFormButtonSubmitProps {\n text?: string;\n size?: 'small' | 'large';\n submitCallback?: () => void;\n disabled?: boolean;\n isLast?: boolean;\n withFormDirtyValidation?: boolean;\n}\n\nexport function FormButtonSubmit({\n text = 'Submit',\n size = 'small',\n disabled = false,\n withFormDirtyValidation = true,\n isLast = false,\n submitCallback,\n}: IFormButtonSubmitProps) {\n const {isSubmitting, isValid, submitForm, dirty, validateForm} = useFormikContext();\n const submitFormHandler = useCallback(async () => {\n const errors = await validateForm();\n if (isEmpty(errors)) {\n submitForm();\n isFunction(submitCallback) && submitCallback();\n }\n }, [validateForm, submitForm, submitCallback]);\n\n const isDisabledBase = isSubmitting || !isValid || disabled;\n const isDisabled = withFormDirtyValidation ? isDisabledBase || !dirty : isDisabledBase;\n\n return (\n <Button.Primary size={size} disabled={isDisabled} clickHandler={submitFormHandler} isLast={isLast}>\n {text}\n </Button.Primary>\n );\n}\n","import React, {ChangeEvent, useCallback} from 'react';\nimport {Checkbox, Row} from 'components-lib';\nimport {FieldProps, isString} from 'formik';\nimport {isFunction, isNumber, isObject, toNumber} from 'utils';\nimport {Field} from './Field';\n\ntype TCustomValueChangeHandler = (selected: boolean, checkboxValue: any) => any;\n\ninterface IFormCheckboxProps {\n name: string;\n value?: string | number;\n customValueChangeHandler?: TCustomValueChangeHandler;\n withDefaultChangeHandler?: boolean;\n label?: string;\n disabled?: boolean;\n checked?: boolean;\n color?: 'primary' | 'secondary';\n}\n\nexport function FormCheckbox({\n name,\n value,\n label,\n customValueChangeHandler,\n withDefaultChangeHandler = false,\n disabled = false,\n checked,\n color = 'primary',\n}: IFormCheckboxProps) {\n return (\n <Field<TCustomValueChangeHandler>\n name={name}\n value={value}\n label={label}\n disabled={disabled}\n checked={checked}\n customValueChangeHandler={customValueChangeHandler}\n withDefaultChangeHandler={withDefaultChangeHandler}\n color={color}\n Component={CheckboxDecorated}\n />\n );\n}\n\ninterface IInputDecoratedProps extends FieldProps, IFormCheckboxProps {}\n\nfunction CheckboxDecorated({\n field: {name, value},\n form: {errors, setFieldValue},\n label,\n customValueChangeHandler,\n withDefaultChangeHandler,\n ...rest\n}: IInputDecoratedProps) {\n const error = errors[name];\n\n let props: any = {\n name,\n ...rest,\n };\n\n if (error) {\n props = {\n ...props,\n error: 'true',\n helpertext: error,\n };\n }\n\n if (rest.checked) {\n props = {...props, checked: rest.checked};\n }\n\n if (isNumber(rest.value) || isString(rest.value)) {\n const checked = Array.isArray(value) ? value.includes(rest.value) : value === rest.value;\n props = {...props, checked};\n }\n\n const changeHandler = useCallback(\n (event: ChangeEvent<HTMLInputElement>, selected: boolean) => {\n // default case where there is no value and we need only boolean\n if (event.target.value === '') {\n setFieldValue(name, selected);\n return;\n }\n\n const valueNumber = toNumber(event.target.value);\n const checkboxValue = isNaN(valueNumber) ? event.target.value : valueNumber;\n\n if (isFunction(customValueChangeHandler)) {\n customValueChangeHandler(selected, checkboxValue);\n return;\n }\n\n const next = isObject(value)\n ? selected\n ? value.concat(checkboxValue)\n : value.filter((v: number | string | any) => {\n return v !== checkboxValue;\n })\n : checkboxValue;\n\n setFieldValue(name, next);\n },\n [value, customValueChangeHandler, setFieldValue, name]\n );\n\n const handlers = withDefaultChangeHandler ? {} : {changeHandler};\n\n if (!label) {\n return <Checkbox label={label} {...handlers} {...props} />;\n }\n\n return (\n <Row justify=\"flex-start\">\n <Checkbox label={label} {...handlers} {...props} color={rest.color} />\n </Row>\n );\n}\n","import {DatePicker, Row} from 'components-lib';\nimport {FieldProps} from 'formik';\nimport React, {useCallback} from 'react';\nimport {Field} from './Field';\n\ninterface IFormDatePickerProps {\n name: string;\n value: Date;\n label?: string;\n withMinDate?: boolean;\n withMaxDate?: boolean;\n maxWidth?: boolean;\n minDateFormField?: string;\n maxDateFormField?: string;\n disabled?: boolean;\n disablePast?: boolean;\n disableFuture?: boolean;\n minDateMessage?: string;\n maxDateMessage?: string;\n format?: string;\n}\n\nexport function FormDatePicker({\n name,\n value,\n label = '',\n withMinDate = false,\n withMaxDate = false,\n maxWidth = false,\n minDateFormField,\n maxDateFormField,\n disabled = false,\n disableFuture = true,\n disablePast = false,\n minDateMessage,\n maxDateMessage,\n format,\n}: IFormDatePickerProps) {\n return (\n <Field\n name={name}\n value={value}\n label={label}\n withMinDate={withMinDate}\n withMaxDate={withMaxDate}\n maxWidth={maxWidth}\n minDateFormField={minDateFormField}\n maxDateFormField={maxDateFormField}\n minDateMessage={minDateMessage}\n maxDateMessage={maxDateMessage}\n Component={DatePickerDecorated}\n disabled={disabled}\n disableFuture={disableFuture}\n disablePast={disablePast}\n format={format}\n />\n );\n}\n\ninterface IInputDecoratedProps extends FieldProps, IFormDatePickerProps {}\n\nfunction DatePickerDecorated({field: {name, value}, form: {values, setFieldValue}, ...rest}: IInputDecoratedProps) {\n // TODO display errors?\n let minDate = null;\n let maxDate = null;\n\n if (rest.withMinDate) {\n minDate = values[rest.minDateFormField];\n }\n\n if (rest.withMaxDate) {\n maxDate = values[rest.maxDateFormField];\n }\n\n const changeHandler = useCallback(\n (date: Date) => {\n setFieldValue(name, date);\n },\n [name, setFieldValue]\n );\n\n return (\n <Row justify=\"flex-start\">\n <DatePicker\n value={value}\n changeHandler={changeHandler}\n label={rest.label}\n minDate={minDate}\n maxDate={maxDate}\n maxWidth={rest?.maxWidth}\n disabled={rest?.disabled}\n disableFuture={rest.disableFuture}\n disablePast={rest.disablePast}\n format={rest.format}\n minDateMessage={rest.minDateMessage}\n maxDateMessage={rest.maxDateMessage}\n />\n </Row>\n );\n}\n","import {Input} from 'components-lib';\nimport {FieldProps} from 'formik';\nimport React, {ReactNode} from 'react';\nimport {FastField, Field} from './Field';\nimport {useDebounceUserInput} from 'hooks';\nimport {IWithDisabled} from 'models';\n\ninterface IFormInputProps extends IWithDisabled {\n name: string;\n value?: string;\n label?: string;\n debounceDelay?: number;\n type?: string;\n min?: string;\n max?: string;\n disabled?: boolean;\n withIcon?: boolean;\n iconPosition?: 'start' | 'end';\n icon?: ReactNode;\n autoFocus?: boolean;\n}\n\nexport function FormInput({name, value, label, debounceDelay, disabled = false}: IFormInputProps) {\n return (\n <FastField\n name={name}\n value={value}\n label={label}\n disabled={disabled}\n debounceDelay={debounceDelay}\n Component={InputDecorated}\n />\n );\n}\n\n/**\n * Notes:\n * Use input without formik FastField if your component depends on other component\n * (see: https://stackoverflow.com/questions/59841681/when-not-to-use-formiks-fastfield)\n */\n\nexport function FormInputWithField({\n name,\n value,\n label,\n debounceDelay,\n type,\n min,\n max,\n disabled = false,\n withIcon = false,\n autoFocus = false,\n iconPosition,\n icon,\n}: IFormInputProps) {\n return (\n <Field\n name={name}\n value={value}\n label={label}\n disabled={disabled}\n debounceDelay={debounceDelay}\n type={type}\n min={min}\n max={max}\n withIcon={withIcon}\n icon={icon}\n iconPosition={iconPosition}\n autoFocus={autoFocus}\n Component={InputDecorated}\n />\n );\n}\n\ninterface IInputDecoratedProps extends FieldProps, IFormInputProps {}\n\nfunction InputDecorated({\n field: {name, onChange},\n form: {values},\n debounceDelay,\n value: initialVal,\n ...rest\n}: IInputDecoratedProps) {\n const initialValue: string = !!values[name] ? values[name] : initialVal;\n const [value, changeHandler] = useDebounceUserInput(initialValue, onChange, debounceDelay);\n\n const props = {\n ...rest,\n value,\n changeHandler,\n };\n\n return <Input withMargin {...props} />;\n}\n","import {Radio} from 'components-lib';\nimport React from 'react';\n\ninterface IFormRadioProps {\n name?: string;\n value: string | number | any;\n label?: string;\n disabled?: boolean;\n checked?: boolean;\n}\n\nexport function FormRadio({name, value, label, disabled = false, checked, ...rest}: IFormRadioProps) {\n return <Radio {...rest} name={name} value={value} label={label} disabled={disabled} checked={checked} />;\n}\n","import React, {ChangeEvent, useCallback} from 'react';\nimport {RadioGroup} from '@material-ui/core';\nimport {FieldProps} from 'formik';\nimport {IComponentWithChildren} from 'models';\nimport {toNumber} from 'utils';\nimport {Field} from './Field';\n\ntype TCustomValueChangeHandler = (id: number | string) => any;\ninterface IFormRadioGroupProps extends IComponentWithChildren {\n name: string;\n value?: string | number;\n customValueChangeHandler?: TCustomValueChangeHandler;\n label?: string;\n disabled?: boolean;\n}\n\nexport function FormRadioGroup({\n name,\n value = null,\n label,\n customValueChangeHandler,\n disabled = false,\n children,\n}: IFormRadioGroupProps) {\n return (\n <Field<TCustomValueChangeHandler>\n name={name}\n value={value}\n label={label}\n disabled={disabled}\n customValueChangeHandler={customValueChangeHandler}\n Component={RadioGroupDecorated}\n >\n {children}\n </Field>\n );\n}\n\ninterface IInputDecoratedProps extends FieldProps, IFormRadioGroupProps {}\n\nfunction RadioGroupDecorated({\n field: {name, value},\n form: {setFieldValue},\n customValueChangeHandler,\n ...rest\n}: IInputDecoratedProps) {\n const changeHandler = useCallback(\n (event: ChangeEvent<HTMLInputElement>, selectedId: string) => {\n const valueNumber = toNumber(selectedId);\n const radioValue = isNaN(valueNumber) ? selectedId : valueNumber;\n\n const isValueAnArray = Array.isArray(value);\n const updatedValue = customValueChangeHandler && customValueChangeHandler(radioValue);\n const nextValue = customValueChangeHandler ? updatedValue.value : radioValue;\n\n function updateArrayValue(nextValue: any) {\n const {prop} = updatedValue;\n return value.filter((v) => v[prop] !== updatedValue.value[prop]).concat(nextValue);\n }\n\n const next = isValueAnArray ? updateArrayValue(nextValue) : nextValue;\n setFieldValue(name, next);\n },\n [customValueChangeHandler, name, setFieldValue, value]\n );\n\n return (\n <RadioGroup {...rest} name={name} value={rest.meta.value ?? ''} onChange={changeHandler}>\n {rest.children}\n </RadioGroup>\n );\n}\n","import {Search} from 'components-lib';\nimport {FieldProps} from 'formik';\nimport React from 'react';\nimport {Field} from './Field';\nimport {IWithDisabled} from 'models';\nimport {useDebounceUserInput} from 'hooks';\n\ninterface IFormSearchProps extends IWithDisabled {\n name: string;\n value?: string;\n debounceDelay?: number;\n withIcon?: boolean;\n submitDisabled?: boolean;\n}\n\nexport function FormSearch({name, disabled, value, debounceDelay, withIcon, submitDisabled}: IFormSearchProps) {\n return (\n <Field\n name={name}\n value={value}\n debounceDelay={debounceDelay}\n withIcon={withIcon}\n Component={SearchDecorated}\n disabled={disabled}\n submitDisabled={submitDisabled}\n />\n );\n}\n\ninterface ISearchDecoratedProps extends FieldProps, IFormSearchProps {}\n\nfunction SearchDecorated({field: {name, onChange}, form: {values}, debounceDelay, ...rest}: ISearchDecoratedProps) {\n const initialValue: string = values[name];\n const [value, changeHandler] = useDebounceUserInput(initialValue, onChange, debounceDelay);\n\n const props = {\n ...rest,\n value,\n changeHandler,\n };\n\n return <Search {...props} />;\n}\n","import React, {useCallback} from 'react';\nimport {FieldProps} from 'formik';\nimport {Select} from 'components-lib';\nimport {IOption, IWithDisabled} from 'models';\nimport {isFunction} from 'utils';\nimport {Field} from './Field';\n\ntype TCustomValueChangeHandler = (\n nextId: number,\n prevId: number,\n setFieldValue: (field: string, value: any) => void\n) => void;\n\ninterface IFormSelectProps extends IWithDisabled {\n name: string;\n label?: string;\n options: IOption[];\n customValueChangeHandler?: TCustomValueChangeHandler;\n}\n\nexport function FormSelect({name, options, label, disabled, customValueChangeHandler}: IFormSelectProps) {\n return (\n <Field<TCustomValueChangeHandler>\n name={name}\n options={options}\n label={label}\n disabled={disabled}\n customValueChangeHandler={customValueChangeHandler}\n Component={SelectDecorated}\n />\n );\n}\n\ninterface ISelectDecoratedProps extends FieldProps, IFormSelectProps {}\n\nfunction SelectDecorated({\n field: {name},\n form: {setFieldValue, errors, values},\n customValueChangeHandler,\n ...rest\n}: ISelectDecoratedProps) {\n const error = errors[name];\n const value = values[name];\n\n let props: any = {\n name,\n value,\n };\n\n if (error) {\n props = {\n ...props,\n error: true,\n helperText: error,\n };\n }\n\n const changeHandler = useCallback(\n (nextValue: number) => {\n isFunction(customValueChangeHandler) && customValueChangeHandler(nextValue, value, setFieldValue);\n setFieldValue(name, nextValue, true);\n },\n [customValueChangeHandler, value, setFieldValue, name]\n );\n\n const selected = value ? rest.options.find((option) => value === option.value) : null;\n\n return <Select {...props} {...rest} value={selected} changeHandler={changeHandler} label={rest.label} />;\n}\n","import React, {useCallback} from 'react';\nimport {SearchOnTypeSelectAutocomplete, SelectAutocomplete} from 'components-lib';\nimport {FieldProps} from 'formik';\nimport {IOption, IWithDisabled} from 'models';\nimport {Field} from './Field';\n\ninterface IFormSelectAutocompleteProps extends IWithDisabled {\n name: string;\n open?: boolean;\n options: IOption[];\n multiple?: boolean;\n noOptionsText?: string;\n withCheckboxRenderOption?: boolean;\n withFontWeightBold?: boolean;\n disableCloseOnSelect?: boolean;\n loading?: boolean;\n withSearchOnType?: boolean;\n isFilter?: boolean;\n filterOptions?: (options: IOption[]) => IOption[];\n inputChangeHandler?: (value: string) => void;\n onOpen?: () => void;\n}\n\nexport function FormSelectAutocomplete({\n name,\n open,\n options,\n multiple = false,\n noOptionsText = 'No options',\n disabled = false,\n withCheckboxRenderOption = true,\n withFontWeightBold = false,\n withSearchOnType,\n loading = false,\n isFilter,\n inputChangeHandler,\n disableCloseOnSelect,\n filterOptions,\n onOpen,\n}: IFormSelectAutocompleteProps) {\n return (\n <Field\n loading={loading}\n name={name}\n open={open}\n options={options}\n multiple={multiple}\n noOptionsText={noOptionsText}\n disabled={disabled}\n isFilter={isFilter}\n withCheckboxRenderOption={withCheckboxRenderOption}\n withFontWeightBold={withFontWeightBold}\n inputChangeHandler={inputChangeHandler}\n withSearchOnType={withSearchOnType}\n disableCloseOnSelect={disableCloseOnSelect}\n onOpen={onOpen}\n filterOptions={filterOptions}\n Component={SelectAutocompleteDecorated}\n />\n );\n}\n\ninterface ISelectDecoratedProps extends FieldProps, IFormSelectAutocompleteProps {\n onBlur: () => void;\n}\n\nfunction SelectAutocompleteDecorated({\n field: {name},\n form: {setFieldValue, errors, values},\n ...rest\n}: ISelectDecoratedProps) {\n const error = errors[name];\n const value = values[name];\n const isValueArray = Array.isArray(value);\n\n let props: any = {\n name,\n value,\n };\n\n if (error) {\n props = {\n ...props,\n error: true,\n helperText: error,\n };\n }\n\n const changeHandler = useCallback(\n (newValue: IOption | IOption[]) => {\n if (Array.isArray(newValue)) {\n const values = newValue.map((v: IOption) => v.value);\n return setFieldValue(name, values);\n }\n\n const value = !!newValue ? newValue.value : newValue; // for nullable values\n setFieldValue(name, value);\n },\n [name, setFieldValue]\n );\n\n const selected = rest.options.filter((option) => (isValueArray ? value?.includes(option.value) : []));\n\n if (rest.withSearchOnType) {\n return (\n <SearchOnTypeSelectAutocomplete\n {...props}\n {...rest}\n values={selected}\n changeHandler={changeHandler}\n blurHandler={rest.onBlur}\n />\n );\n }\n\n return (\n <SelectAutocomplete\n {...props}\n {...rest}\n values={selected}\n changeHandler={changeHandler}\n blurHandler={rest.onBlur}\n />\n );\n}\n","import React, {FC} from 'react';\nimport {FormSelectAutocomplete} from './FormSelectAutocomplete';\nimport {IOption, IWithDisabled} from 'models';\n\ninterface IFormSearchSelectAutocompleteProps extends IWithDisabled {\n name: string;\n options: IOption[];\n multiple?: boolean;\n noOptionsText?: string;\n withCheckboxRenderOption?: boolean;\n withFontWeightBold?: boolean;\n loading?: boolean;\n isFilter?: boolean;\n disableCloseOnSelect?: boolean;\n inputChangeHandler?: (value: string) => void;\n}\n\nexport const FormSearchSelectAutocomplete: FC<IFormSearchSelectAutocompleteProps> = ({\n name,\n options,\n multiple = true,\n noOptionsText,\n disabled,\n isFilter,\n inputChangeHandler,\n withCheckboxRenderOption,\n withFontWeightBold = false,\n loading = false,\n disableCloseOnSelect = false,\n}) => {\n return (\n <FormSelectAutocomplete\n withSearchOnType\n disableCloseOnSelect={disableCloseOnSelect}\n isFilter={isFilter}\n loading={loading}\n name={name}\n options={options}\n multiple={multiple}\n noOptionsText={noOptionsText}\n disabled={disabled}\n withCheckboxRenderOption={withCheckboxRenderOption}\n inputChangeHandler={inputChangeHandler}\n withFontWeightBold={withFontWeightBold}\n filterOptions={(option) => option}\n />\n );\n};\n","import {Switch} from 'components-lib';\nimport {FieldProps} from 'formik';\nimport React from 'react';\nimport {FastField} from './Field';\n\ninterface ISwitchProps {\n name: string;\n value?: boolean;\n label?: string;\n disabled?: boolean;\n}\n\nexport function FormSwitch({name, label, disabled = false}: ISwitchProps) {\n return <FastField name={name} label={label} disabled={disabled} Component={SwitchDecorated} />;\n}\n\ninterface ISwitchDecoratedProps extends FieldProps, ISwitchProps {}\n\nfunction SwitchDecorated({field: {name, onChange}, form: {values}, label, disabled}: ISwitchDecoratedProps) {\n const value = values[name];\n return <Switch name={name} label={label} disabled={disabled} checked={value} changeHandler={onChange} />;\n}\n","import {TextArea} from 'components-lib';\nimport {FieldProps} from 'formik';\nimport {IWithDisabled} from 'models';\nimport React from 'react';\nimport {Field} from './Field';\nimport {useDebounceUserInput} from 'hooks';\n\ninterface IFormTextAreaProps extends IWithDisabled {\n name: string;\n value?: string;\n debounceDelay?: number;\n placeholder?: string;\n rows?: number;\n}\n\nexport function FormTextArea({name, value, disabled, debounceDelay, placeholder, rows}: IFormTextAreaProps) {\n return (\n <Field\n name={name}\n value={value}\n disabled={disabled}\n debounceDelay={debounceDelay}\n placeholder={placeholder}\n Component={TextAreaDecorated}\n rows={rows}\n />\n );\n}\n\ninterface ITextAreaDecoratedProps extends FieldProps, IFormTextAreaProps {}\n\nfunction TextAreaDecorated({field: {name, onChange}, form: {values}, debounceDelay, ...rest}: ITextAreaDecoratedProps) {\n const initialValue: string = values[name];\n const [value, changeHandler] = useDebounceUserInput(initialValue, onChange, debounceDelay);\n\n const props = {\n ...rest,\n value,\n changeHandler,\n };\n\n return <TextArea withPadding {...props} />;\n}\n","import React from 'react';\nimport {FastField} from './Field';\nimport {RichTextEditor} from 'components-lib';\n\nexport interface IFormProps {\n name: string;\n placeholder?: string;\n withEdit?: boolean;\n readOnly?: boolean;\n toolbarHidden?: boolean;\n withInstructionalText?: boolean;\n value?: any;\n}\n\nexport function FormRichTextEditor({\n name,\n placeholder,\n withEdit = false,\n readOnly = false,\n toolbarHidden = false,\n withInstructionalText = false,\n value = null,\n}: IFormProps) {\n return (\n <FastField\n name={name}\n placeholder={placeholder}\n withEdit={withEdit}\n readOnly={readOnly}\n toolbarHidden={toolbarHidden}\n Component={RichTextEditor}\n value={value}\n withInstructionalText={withInstructionalText}\n />\n );\n}\n","import React, {ChangeEvent, useCallback} from 'react';\n\nimport {IComponentWithChildren} from 'models';\nimport {Field} from './Field';\nimport {FieldProps} from 'formik';\nimport {ToggleButtonGroup} from '@material-ui/lab';\n\ntype TValueChangeHandler = (id: number | string) => any;\n\ninterface IFormToggleButtonGroupProps extends IComponentWithChildren {\n name: string;\n value?: string | number;\n label?: string;\n disabled?: boolean;\n}\n\nexport function FormToggleButtonGroup({name, value, label, disabled = false, children}: IFormToggleButtonGroupProps) {\n return (\n <Field<TValueChangeHandler>\n name={name}\n value={value}\n label={label}\n disabled={disabled}\n Component={ToggleButtonGroupDecorated}\n >\n {children}\n </Field>\n );\n}\n\ninterface IInputDecoratedProps extends FieldProps, IFormToggleButtonGroupProps {}\n\nfunction ToggleButtonGroupDecorated({field: {name}, form: {setFieldValue}, ...rest}: IInputDecoratedProps) {\n const changeHandler = useCallback(\n (event: ChangeEvent<any>, newValues: number[]) => {\n // There is not existing name property for ToggleButtonGroup and we attach it to the event\n event.target.name = name; // See: https://github.com/mui-org/material-ui/issues/13485\n\n setFieldValue(name, newValues);\n },\n [setFieldValue, name]\n );\n\n return (\n <ToggleButtonGroup {...rest} value={rest.meta.value} onChange={changeHandler}>\n {rest.children}\n </ToggleButtonGroup>\n );\n}\n","import React from 'react';\n\nimport {Field} from 'forms/components/Field';\nimport {ImageWithPreview} from 'components-lib';\n\ninterface IFormProps {\n name: string;\n text?: string;\n textSize?: string;\n label?: string;\n accept?: string;\n fileInputRef?: any;\n onFilesAddedChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n openFileDialog?: () => void;\n withFolderIcon?: boolean;\n withButton?: boolean;\n withLabel?: boolean;\n className?: string;\n url?: string;\n}\n\nexport const FormImageUpload = ({name, ...rest}: IFormProps) => {\n return <Field name={name} Component={ImageWithPreview} {...rest} />;\n};\n","import React from 'react';\nimport {IWithDisabled} from 'models';\nimport {FieldProps} from 'formik';\nimport {Field} from './Field';\nimport {useDebounceUserInput} from 'hooks';\nimport {PasswordInput} from 'components-lib';\n\ninterface IFormPasswordInputProps extends IWithDisabled {\n name: string;\n value?: string;\n}\n\nexport const FormPasswordInput = ({name, disabled, value}: IFormPasswordInputProps) => {\n return <Field name={name} value={value} Component={PasswordInputDecorated} disabled={disabled} />;\n};\n\ninterface IPasswordInputDecoratedProps extends FieldProps, IFormPasswordInputProps {}\n\nfunction PasswordInputDecorated({field: {name, onChange}, form: {values}, ...rest}: IPasswordInputDecoratedProps) {\n const initialValue: string = values[name];\n const [value, changeHandler] = useDebounceUserInput(initialValue, onChange);\n\n const props = {\n ...rest,\n value,\n changeHandler,\n };\n\n return <PasswordInput {...props} />;\n}\n","import {useDispatch} from 'react-redux';\nimport {TAppDispatch} from 'store';\n\nexport function useAppDispatch() {\n return useDispatch<TAppDispatch>();\n}\n","import {useState} from 'react';\n\nexport enum ActiveModeEnum {\n view = 'view',\n edit = 'edit',\n create = 'create',\n build = 'build',\n}\n\nexport function useViewEditMode() {\n const [activeMode, setActiveMode] = useState<ActiveModeEnum>(ActiveModeEnum.view);\n return {activeMode, setActiveMode};\n}\n","import {ToastNotificationTypeEnum, useToastNotifications} from 'toast-notifications';\nimport {useEffect} from 'react';\nimport {QuestionAnswersTypeEnum} from 'enums';\n\nexport function useEntityCard(answersComponentMap: any, type: QuestionAnswersTypeEnum, questionId: number) {\n const {addToastNotification} = useToastNotifications();\n\n useEffect(() => {\n if (!answersComponentMap[type]) {\n const message = `Item ID: ${questionId} Unknown question answer type: ${type}`;\n\n addToastNotification(message, ToastNotificationTypeEnum.error);\n }\n }, [questionId, type, addToastNotification, answersComponentMap]);\n\n return;\n}\n","import {useState} from 'react';\n\nexport function useModal() {\n const [isOpen, setIsOpen] = useState<boolean>(false);\n return {isOpen, setIsOpen};\n}\n","import {useHistory} from 'react-router-dom';\nimport {Location} from 'history';\n\ninterface IWithPrevPath {\n prevPath?: string;\n}\n\nexport function useNavigate() {\n const history = useHistory();\n const {state: locationState}: Location<IWithPrevPath> = history?.location || ({} as Location<IWithPrevPath>);\n\n const push = (path: string, state?: IWithPrevPath) => history.push(path, state);\n const goBackOptionally = (path: string) => history.push(locationState?.prevPath || path);\n\n return {\n locationState,\n push,\n goBackOptionally,\n };\n}\n","import {useLocation} from 'react-router-dom';\nimport {useMemo} from 'react';\n\nexport function useQueryParams() {\n const location = useLocation();\n\n return useMemo(() => Object.fromEntries(new URLSearchParams(location?.search)), [location]);\n}\n","import {useState, ChangeEvent, useCallback, useEffect} from 'react';\nimport {useDelay} from 'hooks';\n\nconst DEBOUNCE_TIMEOUT = 350;\n\nexport function useDebounceUserInput(\n initialVal: string,\n onChange: (event: ChangeEvent<HTMLInputElement>) => void,\n debounceDelay: number = DEBOUNCE_TIMEOUT\n): [string, (event: ChangeEvent<HTMLInputElement>) => void] {\n const [value, setValue] = useState(initialVal);\n const delay = useDelay(debounceDelay);\n\n const changeValue = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n event.persist();\n\n setValue(event.target.value);\n\n delay(() => onChange(event));\n },\n [onChange, delay]\n );\n\n useEffect(() => setValue(initialVal), [initialVal]);\n\n return [value, changeValue];\n}\n","import {useState, useEffect, useCallback} from 'react';\n\nexport function useDelay(delay: number) {\n const [timer, setTimer] = useState(null);\n\n const clear = useCallback(() => timer && clearTimeout(timer), [timer]);\n\n useEffect(() => () => clear(), [clear]);\n\n return (fn: () => void): void => setTimer(setTimeout(fn, delay));\n}\n","import {useState} from 'react';\n\nexport function useMenu() {\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n return {anchorEl, setAnchorEl};\n}\n","import {useState} from 'react';\nimport {ActiveStepEnum} from '../enums';\n\nexport const useActiveStep = () => {\n const [activeStep, setActiveStep] = useState<ActiveStepEnum>(ActiveStepEnum.First);\n\n const isFirstStep = activeStep === ActiveStepEnum.First;\n const isSecondStep = activeStep === ActiveStepEnum.Second;\n const isThirdStep = activeStep === ActiveStepEnum.Third;\n\n return {activeStep, setActiveStep, isFirstStep, isSecondStep, isThirdStep};\n};\n","import {useCallback} from 'react';\nimport debounce from 'lodash.debounce';\n\nexport const useDebounce = (callback: any, delay = 500) => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const debouncedFn = useCallback(\n debounce((...args) => callback(...args), delay),\n [delay] // will recreate if delay changes\n );\n return debouncedFn;\n};\n","import {InputTypeEnum} from 'enums/form';\nimport {useCallback, useState} from 'react';\n\nexport const usePasswordInput = () => {\n const [type, setType] = useState(InputTypeEnum.Password);\n\n const toggleIconClickHandler = useCallback(() => {\n if (type === InputTypeEnum.Password) {\n setType(InputTypeEnum.Text);\n } else {\n setType(InputTypeEnum.Password);\n }\n }, [type, setType]);\n\n return {\n type,\n toggleIconClickHandler,\n };\n};\n","import {Dispatch, SetStateAction, useState} from 'react';\n\ninterface IUseDrawer {\n isOpen: boolean;\n setIsOpen: Dispatch<SetStateAction<boolean>>;\n}\n\nexport const useDrawer: () => IUseDrawer = () => {\n const [isOpen, setIsOpen] = useState<boolean>(false);\n return {isOpen, setIsOpen};\n};\n","import {useCallback} from 'react';\nimport {useNavigate} from './useNavigate';\nimport {pages} from '../paths';\n\nexport const useMainNavigation = () => {\n const {push} = useNavigate();\n\n const redirectToResources = useCallback(() => push(pages.adminPortal.resources), [push]);\n const redirectToPrograms = useCallback(() => push(pages.adminPortal.programs.root), [push]);\n const redirectToLibrary = useCallback(() => push(pages.adminPortal.library), [push]);\n\n return {redirectToResources, redirectToPrograms, redirectToLibrary};\n};\n","import {ChangeEvent, useCallback, useRef} from 'react';\nimport {useFormikContext} from 'formik';\nimport {isFunction} from 'utils/functions';\n\nexport const useDragAndDrop = (name: string, deleteCallback?: () => void) => {\n const {values, setFieldValue, errors} = useFormikContext<any>();\n\n const fileInputRef = useRef(null);\n const file = values[name];\n const error = errors[name] as string;\n\n const addFileClickHandler = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const newFile = event.target.files[0];\n setFieldValue(name, newFile);\n },\n [setFieldValue, name]\n );\n\n const deleteClickHandler = useCallback(() => {\n setFieldValue(name, null);\n isFunction(deleteCallback) && deleteCallback();\n }, [setFieldValue, name, deleteCallback]);\n\n const openFileDialogClickHandler = useCallback(() => !!fileInputRef.current && fileInputRef.current.click(), [\n fileInputRef,\n ]);\n\n return {file, error, fileInputRef, addFileClickHandler, deleteClickHandler, openFileDialogClickHandler};\n};\n","export * from './components';\nexport * from './enums';\nexport * from './hooks';\nexport * from './models';\nexport * from './services';\nexport * from './store';\n","export enum FormNameEnum {\n id = 'id',\n templateImportFile = 'templateImportFile',\n certificate = 'certificate',\n email = 'email',\n clientId = 'clientId',\n clientSecret = 'clientSecret',\n canGiveEditorPermissions = 'canGiveEditorPermissions',\n googleDriveSourceFolderLink = 'googleDriveSourceFolderLink',\n googleDriveDestinationFolderLink = 'googleDriveDestinationFolderLink',\n googleDriveFolderLink = 'googleDriveFolderLink',\n isGoogleClassroom = 'isGoogleClassroom',\n isGoogleSitesSource = 'isGoogleSitesSource',\n isGoogleSitesDestination = 'isGoogleSitesDestination',\n isMicrosoftTeams = 'isMicrosoftTeams',\n authorityUrl = 'authorityUrl',\n integrationName = 'integrationName',\n serviceEmail = 'serviceEmail',\n certificateExpirationDate = 'certificateExpirationDate',\n googleSitesList = 'googleSitesList',\n searchTerm = 'searchTerm',\n googleSitesFilteredList = 'googleSitesFilteredList',\n name = 'name',\n keyTerms = 'keyTerms',\n programs = 'programs',\n sessions = 'sessions',\n pillars = 'pillars',\n primaryPillars = 'primaryPillars',\n secondaryPillars = 'secondaryPillars',\n primaryPillar = 'primaryPillar',\n secondaryPillar = 'secondaryPillar',\n competencies = 'competencies',\n gradeLevels = 'gradeLevels',\n languages = 'languages',\n language = 'language',\n skillsAndBehaviors = 'skillsAndBehaviors',\n briefDescription = 'briefDescription',\n expirationDate = 'expirationDate',\n accessExpirationDate = 'accessExpirationDate',\n learningObjectives = 'learningObjectives',\n knowledgeSkillsAndAbilities = 'knowledgeSkillsAndAbilities',\n programYears = 'programYears',\n program = 'program',\n sessionName = 'sessionName',\n sessionDescription = 'sessionDescription',\n existingFiles = 'existingFiles',\n futureProgramYear = 'futureProgramYear',\n resources = 'resources',\n selectedResources = 'selectedResources',\n selectedResourcesIds = 'selectedResourcesIds',\n instruments = 'instruments',\n selectedInstruments = 'selectedInstruments',\n selectedInstrumentsIds = 'selectedInstrumentsIds',\n title = 'title',\n description = 'description',\n learningPathName = 'learningPathName',\n masterClassroomEmailAccount = 'masterClassroomEmailAccount',\n displayName = 'displayName',\n fileType = 'fileType',\n isAccessibleToStudents = 'isAccessibleToStudents',\n shouldDisableFileType = 'shouldDisableFileType',\n time = 'time',\n webLink = 'webLink',\n file = 'file',\n fileVersion = 'fileVersion',\n hasUploadPermissions = 'hasUploadPermissions',\n canEdit = 'canEdit',\n fileTypeRecognition = 'fileTypeRecognition',\n versions = 'versions',\n search = 'search',\n menuItems = 'menuItems',\n filteredMenuItems = 'filteredMenuItems',\n selectedId = 'selectedId',\n integrationType = 'integrationType',\n}\n","export enum InputTypeEnum {\n Text = 'text',\n Password = 'password',\n}\n","export enum FiltersEnum {\n ProgramSingle,\n ProgramMulti,\n ProgramYear,\n ProgramYearCheckbox,\n ProgramYearMulti,\n GradeLevel,\n Audience,\n Phase,\n Pillar,\n Metadata,\n Areas,\n Educators,\n Districts,\n Schools,\n FromToDate,\n InstrumentType,\n InstrumentStatus,\n EvaluationType,\n Domain,\n Competency,\n Competencies,\n Concept,\n Category,\n Administration,\n SchoolLevel,\n ItemType,\n ItemStatus,\n InstrumentViewType,\n Session,\n PillarMulti,\n DigitalResourcesConcepts,\n KeyTerms,\n LearningObjectives,\n SkillsAndBehaviors,\n Languages,\n TagGradeLevels,\n DigitalResourceTypes,\n DrmExpirationDate,\n LearningObjective,\n LearningObjectiveWithDomainDependency,\n Search,\n IntegrationTypeSingle,\n IntegrationTypeMulti,\n IntegrationStatusMulti,\n SchoolNameMulti,\n SchoolDistrictMulti,\n AreasAutocompleteMulti,\n ClassesOnlyVirtual,\n FileType,\n FileTypeMulti,\n SchoolNameBasedOnAreaAndDistrict,\n LearningPathStatusesCheckbox,\n KnowledgeSkillsAndAbilities,\n AccessibleToStudentsRadio,\n PublishedByRadio,\n AreasMultiAutocompleteExternalData,\n FileStatusesCheckbox,\n}\n","export enum FormNameEnum {\n id = 'id',\n areas = 'areas',\n audience = 'audience',\n districts = 'districts',\n educators = 'educators',\n startDate = 'startDate',\n endDate = 'endDate',\n gradeLevels = 'gradeLevels',\n instrumentName = 'instrumentName',\n templateName = 'templateName',\n instrumentStatus = 'status',\n instrumentStatuses = 'statuses',\n instrumentType = 'type',\n instrumentSubType = 'subType',\n metadata = 'metadata',\n phase = 'phase',\n pillar = 'pillar',\n pillars = 'pillars',\n program = 'program',\n programs = 'programs',\n isGeneralInstrument = 'isGeneralInstrument',\n years = 'years',\n evaluationType = 'evaluationType',\n evaluationTypes = 'evaluationTypes',\n domain = 'domain',\n competency = 'competency',\n competencies = 'competencies',\n concept = 'concept',\n concepts = 'concepts',\n administrationType = 'administrationType',\n category = 'category',\n answerStacks = 'answerStacks',\n answers = 'answers',\n question = 'question',\n customStacks = 'customStacks',\n administration = 'administration',\n schoolLevel = 'schoolLevel',\n schoolLevels = 'schoolLevels',\n itemType = 'itemType',\n itemStatus = 'itemStatus',\n instrumentViewType = 'instrumentViewType',\n searchByName = 'searchByName',\n sessions = 'sessions',\n search = 'search',\n name = 'name',\n text = 'text',\n levels = 'levels',\n skillsAndBehaviors = 'skillsAndBehaviors',\n languages = 'languages',\n language = 'language',\n drmExpirationDate = 'drmExpirationDate',\n customValidation = 'customValidation',\n keyTerms = 'keyTerms',\n learningObjectives = 'learningObjectives',\n learningObjective = 'learningObjective',\n fileUpload = 'fileUpload',\n uploadResourceType = 'uploadResourceType',\n k12KeyTerms = 'k12KeyTerms',\n digitalResourceTypes = 'digitalResourceTypes',\n fileName = 'fileName',\n wysiwygEditor = 'wysiwygEditor',\n questionTextHtml = 'questionTextHtml',\n questionId = 'questionId',\n details = 'details',\n defaultAnswerStackId = 'defaultAnswerStackId',\n answerTypeName = 'answerTypeName',\n choices = 'choices',\n type = 'type',\n questionType = 'questionType',\n questionTypeAnswerStack = 'questionTypeAnswerStack',\n questionAnswerStackId = 'questionAnswerStackId',\n isDeleted = 'isDeleted',\n instructionText = 'instructionText',\n headerUrl = 'headerUrl',\n footerUrl = 'footerUrl',\n headerLogo = 'headerLogo',\n headerLogoName = 'headerLogoName',\n footerLogo = 'footerLogo',\n footerLogoName = 'footerLogoName',\n openEndedQuestion = 'openEndedQuestion',\n rangeFrom = 'rangeFrom',\n rangeTo = 'rangeTo',\n minimumRateDescription = 'minimumRateDescription',\n maximumRateDescription = 'maximumRateDescription',\n positiveScores = 'positiveScores',\n from = 'from',\n to = 'to',\n role = 'rolesList',\n builderInstructionalText = 'builderInstructionalText',\n builderInstructionalTextHTML = 'builderInstructionalTextHTML',\n integrationTypes = 'integrationTypes',\n integrationStatuses = 'integrationStatuses',\n schoolNames = 'schoolNames',\n integrationName = 'integrationName',\n integrationType = 'integrationType',\n area = 'area',\n schoolName = 'schoolName',\n schoolDistrict = 'schoolDistrict',\n schoolDistricts = 'schoolDistricts',\n onlyVirtualClass = 'onlyVirtualClasses',\n searchTerm = 'searchTerm',\n historyList = 'historyList',\n historyFilteredList = 'historyFilteredList',\n knowledgeSkillsAndAbilities = 'knowledgeSkillsAndAbilities',\n fileType = 'fileType',\n fileTypes = 'fileTypes',\n primaryPillar = 'primaryPillar',\n secondaryPillar = 'secondaryPillar',\n programYear = 'programYear',\n programYears = 'programYears',\n futureProgramYear = 'futureProgramYear',\n futureProgramYears = 'futureProgramYears',\n resources = 'resources',\n instruments = 'instruments',\n learningPathName = 'learningPathName',\n briefDescription = 'briefDescription',\n expirationDate = 'expirationDate',\n masterClassroomEmailAccount = 'masterClassroomEmailAccount',\n email = 'email',\n displayName = 'displayName',\n webLink = 'webLink',\n time = 'time',\n hasUploadPermissions = 'hasUploadPermissions',\n isAccessibleToStudents = 'isAccessibleToStudents',\n learningPathStatuses = 'learningPathStatuses',\n publishedBy = 'publishedBy',\n fileStatuses = 'fileStatuses',\n}\n","export enum SelectionEnum {\n Audience,\n Pillar,\n PillarMultiSelect,\n EvaluationType,\n Domain,\n ProgramMultiSelection,\n ProgramSelectWithDomainDependency,\n Competencies,\n Concepts,\n AdministrationType,\n InstrumentType,\n Phase,\n SchoolLevel,\n Category,\n InstrumentName,\n Sessions,\n TagGradeLevels,\n SkillsAndBehaviors,\n Languages,\n GradeLevels,\n CompetenciesByPillar,\n K12KeyTerms,\n CompetencyByDomain,\n SessionsByProgram,\n DomainWithoutKnowledge,\n RangeFrom,\n RangeTo,\n LearningObjective,\n LearningObjectiveWithDomainDependency,\n InstrumentSubType,\n Role,\n IntegrationTypeSelect,\n AreasSingleSelection,\n AreasMultiSelection,\n SchoolNameBasedOnArea,\n SchoolDistrict,\n SchoolDistrictBasedOnGoogleSites,\n AreaSingleBasedOnGoogleSites,\n SchoolNameBasedOnAreaSelectAndGoogleSites,\n KnowledgeSkillsAndAbilities,\n FileType,\n FileTypeSelectBasedOnAttachedFile,\n PrimaryPillar,\n SecondaryPillar,\n ProgramYearMulti,\n ProgramYearSingle,\n LanguagesSingle,\n LanguagesMulti,\n ProgramsSingle,\n FutureProgramYearSingle,\n FutureProgramYearMultiple,\n Resources,\n Instruments,\n LearningPathName,\n KeyTermsInput,\n LearningObjectiveInput,\n BriefDescriptionTextArea,\n ExpirationDatePicker,\n SchoolDistrictBasedOnArea,\n SchoolNameBasedOnAreaAndDistrict,\n AreaSingleBasedOnDistrictAndGoogleSites,\n IntegrationNameInput,\n UserToImpersonateInput,\n ServiceEmailInput,\n DisplayNameInput,\n WebLinkInput,\n TimeInput,\n PermissionCheckbox,\n AdminPermissionCheckbox,\n AccessibleToStudentsRadioGroup,\n VersionFileUpload,\n CompetenciesByPillarWithInfo,\n KeyTermsWithInfo,\n LearningObjectiveInputWithInfo,\n ExpirationWithInfoDatePicker,\n KnowledgeSkillsAndAbilitiesWithInfo,\n AccessibleToStudentsWithInfo,\n TimeWithInfoInput,\n EditableExpirationDatePicker,\n ToDatePicker,\n FromDatePicker,\n}\n","export enum TagsEnum {\n ProgramSingle,\n ProgramMulti,\n ProgramYear,\n GradeLevel,\n Audience,\n Phase,\n Pillar,\n Metadata,\n Areas,\n Educators,\n Districts,\n Schools,\n FromToDate,\n InstrumentType,\n InstrumentStatus,\n EvaluationType,\n Domain,\n Competency,\n Concept,\n Category,\n Administration,\n SchoolLevel,\n ItemType,\n ItemStatus,\n}\n","import axios from 'axios';\nimport {config} from '../config';\nimport {getCurrentAccessToken} from 'utils';\n\nconst {jaEeTestApi: apiConfig} = config;\nconst axiosApiInstance = axios.create();\n// Request interceptor for API calls\n\naxiosApiInstance.interceptors.request.use(\n async (config) => {\n const token = getCurrentAccessToken();\n\n config.headers = {\n Authorization: `Bearer ${token}`,\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'Ocp-Apim-Subscription-Key': apiConfig.subscriptionKey,\n };\n return config;\n },\n (error) => {\n Promise.reject(error);\n }\n);\n\nexport {axiosApiInstance};\n","import axios from 'axios';\n\nexport const CancelToken = axios.CancelToken;\nexport const source = CancelToken.source();\nexport const isCancel = (error: {message: string}) => axios.isCancel(error);\n","import {getCurrentAccessToken, parseToJsonObject} from 'utils';\nimport {config} from '../config';\nimport {IHttpResponse} from './models/IHttpResponse';\nimport {parseErrorMessages} from './utils';\n\nconst {jaEeTestApi: apiConfig} = config;\n\nfunction http<T>(request: Request): Promise<IHttpResponse<T>> {\n return new Promise((resolve, reject) => {\n let response: IHttpResponse<T>;\n\n fetch(request)\n .then((res) => {\n response = res;\n return response.text();\n })\n .then(function (text) {\n return text ? parseToJsonObject(text) : {};\n })\n .then((body) => {\n getResponseBody(body, response);\n resolve(response);\n })\n .catch((err) => {\n reject(err);\n });\n });\n}\n\nasync function makeCall<T>(path: string, useAuthentication: boolean, args: RequestInit = {method: 'delete'}) {\n args.headers = returnBasicHeaders(useAuthentication);\n\n return await http<T>(new Request(path, args));\n}\n\n/**\n * HTTP Method PATCH is case sensitive due to native fetch implementation.\n * Please see : https://stackoverflow.com/questions/34666680/fetch-patch-request-is-not-allowed\n */\n\nexport async function get<T>(\n path: string,\n body?: any,\n useAuthentication = true,\n args: RequestInit = {method: 'GET', body: body ? JSON.stringify(body) : undefined}\n): Promise<IHttpResponse<T>> {\n return await makeCall(path, useAuthentication, args);\n}\n\nexport async function post<T>(\n path: string,\n body: any,\n useAuthentication = true,\n args: RequestInit = {method: 'POST', body: JSON.stringify(body)}\n): Promise<IHttpResponse<T>> {\n return await makeCall(path, useAuthentication, args);\n}\n\nexport async function put<T>(\n path: string,\n body: any,\n useAuthentication = true,\n args: RequestInit = {method: 'PUT', body: JSON.stringify(body)}\n): Promise<IHttpResponse<T>> {\n return await makeCall(path, useAuthentication, args);\n}\n\nexport async function del<T>(\n path: string,\n body: any,\n useAuthentication = true,\n args: RequestInit = {method: 'DELETE', body: JSON.stringify(body)}\n): Promise<IHttpResponse<T>> {\n return await makeCall(path, useAuthentication, args);\n}\n\nexport async function patch<T>(\n path: string,\n body: any,\n useAuthentication = true,\n args: RequestInit = {method: 'PATCH', body: JSON.stringify(body)}\n): Promise<IHttpResponse<T>> {\n return await makeCall(path, useAuthentication, args);\n}\n\nfunction returnBasicHeaders(useAuthentication: boolean) {\n const headers = new Headers();\n headers.append('Content-Type', 'application/json');\n\n if (useAuthentication) {\n const token = getCurrentAccessToken();\n\n headers.append('Ocp-Apim-Subscription-Key', apiConfig.subscriptionKey);\n headers.append('Authorization', 'Bearer ' + token);\n }\n\n return headers;\n}\n\nfunction getResponseBody(body: any, response: IHttpResponse<any>) {\n if (response.ok) {\n if (body.data && body.metadata) {\n getResponseData(body, response);\n } else {\n getResponseParsedBody(body, response);\n }\n } else if (body.errorCode) {\n getResponseParsedBody(body, response);\n throw response;\n } else if (body.status) {\n getResponseData(body, response);\n throw response;\n } else {\n response.parsedBody = !body.value ? body.error || body.title : body.value;\n throw response;\n }\n}\n\nfunction getResponseParsedBody(body: any, response: IHttpResponse<any>) {\n if (body.errorCode) {\n response.errorCode = body.errorCode;\n }\n response.parsedBody = body;\n}\n\nfunction getResponseData(body: any, response: IHttpResponse<any>) {\n if (body.status) {\n response.errorCode = body.status;\n response.messages = parseErrorMessages(body.messages);\n }\n\n response.parsedBody = {\n data: body.data,\n metadata: body.metadata,\n };\n}\n","export function parseErrorMessages(messages: string[]): string {\n return messages.join(' ');\n}\n","import {config} from 'config';\nimport {ApiPathsEnum} from 'enums';\nimport {\n IBaseFiltersApiResponse,\n IBindBaseEntity,\n IBindBaseEnumEntity,\n IEntityBase,\n IProgramClassesFilterOptions,\n} from 'models';\nimport {get, post} from './http-client';\nimport {IHttpResponse} from './models';\n\nconst {jaEeApi: apiConfig} = config;\n\nexport const filtersApi = {\n async getInstrumentPhases(): Promise<IHttpResponse<IBindBaseEnumEntity[]>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.ENUMERATORS}/GetTemplatePhases`;\n return await get<IBindBaseEnumEntity[]>(url);\n },\n\n async getInstrumentTypes(): Promise<IHttpResponse<IBindBaseEnumEntity[]>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.ENUMERATORS}/GetTemplateTypes`;\n return await get<IBindBaseEnumEntity[]>(url);\n },\n\n async getInstrumentMainTypes(): Promise<IHttpResponse<IBindBaseEnumEntity[]>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.ENUMERATORS}/GetMainTemplateTypes`;\n return await get<IBindBaseEnumEntity[]>(url);\n },\n\n async getQuestionTypes(): Promise<IHttpResponse<IBindBaseEnumEntity[]>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.ENUMERATORS}/GetQuestionTypes`;\n return await get<IBindBaseEnumEntity[]>(url);\n },\n\n async getInstrumentAudiences(): Promise<IHttpResponse<IBindBaseEnumEntity[]>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.ENUMERATORS}/GetTemplateAudiences`;\n return await get<IBindBaseEnumEntity[]>(url);\n },\n\n async getAvailableGradeLevels(): Promise<IHttpResponse<IBindBaseEntity[]>> {\n const url = `${apiConfig.baseUrlUms}/${ApiPathsEnum.UMS}/GetActiveGradeLevels`;\n return await get<IBindBaseEntity[]>(url);\n },\n\n async getInstrumentStatuses(): Promise<IHttpResponse<IBindBaseEntity[]>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.ENUMERATORS}/GetTemplateStatuses`;\n return await get<IBindBaseEntity[]>(url);\n },\n\n async getActivePillars(): Promise<IHttpResponse<IBindBaseEntity[]>> {\n const url = `${apiConfig.baseUrlUms}/${ApiPathsEnum.UMS}/GetActivePillars`;\n return await get<IBindBaseEntity[]>(url);\n },\n\n async getProgramYears(): Promise<IHttpResponse<string[]>> {\n const url = `${apiConfig.baseUrlUms}/${ApiPathsEnum.UMS}/GetDistinctProgramYears`;\n return await get<string[]>(url);\n },\n\n async getFilterProgramYears(): Promise<IHttpResponse<IBindBaseEntity[]>> {\n const url = `${apiConfig.baseUrlPam}/${ApiPathsEnum.HELPERS}/GetFilterProgramYears`;\n return await get<IBindBaseEntity[]>(url);\n },\n\n async getFutureProgramYears(): Promise<IHttpResponse<IBaseFiltersApiResponse>> {\n const url = `${apiConfig.baseUrlPam}/${ApiPathsEnum.HELPERS}/GetFutureProgramYears`;\n return await get<IBaseFiltersApiResponse>(url);\n },\n\n async getPrograms(): Promise<IHttpResponse<IBindBaseEntity[]>> {\n const url = `${apiConfig.baseUrlUms}/${ApiPathsEnum.UMS}/GetActiveProgramsAll`;\n return await get<IBindBaseEntity[]>(url, false);\n },\n\n async getAreas(): Promise<IHttpResponse<IBindBaseEntity[]>> {\n const url = `${apiConfig.baseUrlUms}/${ApiPathsEnum.UMS}/GetActiveAreas`;\n return await get<IBindBaseEntity[]>(url, false);\n },\n\n async getClassFilterOptions(programId: number): Promise<IHttpResponse<IProgramClassesFilterOptions>> {\n const url = `${apiConfig.baseUrlUms}/${ApiPathsEnum.UMS}/GetClassFilterOptions?programId=${programId}`;\n return await get<IProgramClassesFilterOptions>(url);\n },\n\n async getEvaluationTypes(): Promise<IHttpResponse<IBindBaseEntity[]>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.ENUMERATORS}/QuestionEvaluationTypeValues`;\n return await get<IBindBaseEntity[]>(url);\n },\n\n async getDomains(): Promise<IHttpResponse<IBindBaseEntity[]>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.ENUMERATORS}/QuestionDomainValues`;\n return await get<IBindBaseEntity[]>(url);\n },\n\n async getCompetencies(): Promise<IHttpResponse<IBindBaseEntity[]>> {\n const url = `${apiConfig.baseUrlUms}/${ApiPathsEnum.UMS}/GetActiveCompetencies`;\n return await get<IBindBaseEntity[]>(url);\n },\n\n async getSessionsByProgramIds(programIds: number[]): Promise<IHttpResponse<IBindBaseEntity[]>> {\n const url = `${apiConfig.baseUrlUms}/${ApiPathsEnum.UMS}/GetActiveSessionsFilteredByProgramIds`;\n return await post<IBindBaseEntity[]>(url, programIds);\n },\n\n async getConcepts(competencies: number[]): Promise<IHttpResponse<IEntityBase[]>> {\n const url = `${apiConfig.baseUrlUms}/${ApiPathsEnum.UMS}/GetActiveConceptsFilteredByCompetencyIds`;\n return await post<IEntityBase[]>(url, competencies);\n },\n\n async getDigitalResourcesConcepts(): Promise<IHttpResponse<IEntityBase[]>> {\n const url = `${apiConfig.baseUrlDigitalResources}/${ApiPathsEnum.DIGITAL_RESOURCE}/GetExistingConcepts`;\n return await get<IEntityBase[]>(url);\n },\n\n async getAdministrations(): Promise<IHttpResponse<IBindBaseEntity[]>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.ENUMERATORS}/QuestionAdministrationValues`;\n return await get<IBindBaseEntity[]>(url);\n },\n\n async getSchoolLevels(): Promise<IHttpResponse<IBindBaseEntity[]>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.ENUMERATORS}/QuestionSchoolLevel`;\n return await get<IBindBaseEntity[]>(url);\n },\n\n async getSessions(): Promise<IHttpResponse<IBindBaseEntity[]>> {\n const url = `${apiConfig.baseUrlUms}/${ApiPathsEnum.UMS}/GetActiveSessions`;\n return await get<IBindBaseEntity[]>(url);\n },\n\n async getTaggingGradeLevels(): Promise<IHttpResponse<IBindBaseEntity[]>> {\n const url = `${apiConfig.baseUrlUms}/${ApiPathsEnum.UMS}/GetTaggingGradeLevels`;\n return await get<IBindBaseEntity[]>(url);\n },\n\n async getSkillsAndBehaviors(): Promise<IHttpResponse<IBindBaseEntity[]>> {\n const url = `${apiConfig.baseUrlUms}/${ApiPathsEnum.UMS}/GetActiveSkillLevels`;\n return await get<IBindBaseEntity[]>(url);\n },\n\n async getLanguages(): Promise<IHttpResponse<IBindBaseEntity[]>> {\n const url = `${apiConfig.baseUrlUms}/${ApiPathsEnum.UMS}/GetLanguages`;\n return await get<IBindBaseEntity[]>(url);\n },\n\n async getDefualtKeyTerms(): Promise<IHttpResponse<IBindBaseEntity[]>> {\n const url = `${apiConfig.baseUrlDigitalResources}/${ApiPathsEnum.DIGITAL_RESOURCE}/GetDefaultKeyTerms`;\n return await get<IBindBaseEntity[]>(url);\n },\n\n async getKeyTerms(): Promise<IHttpResponse<IBindBaseEntity[]>> {\n const url = `${apiConfig.baseUrlDigitalResources}/${ApiPathsEnum.DIGITAL_RESOURCE}/GetExistingKeyTerms`;\n return await get<IBindBaseEntity[]>(url);\n },\n\n async getKLearningObjectives(): Promise<IHttpResponse<IBindBaseEntity[]>> {\n const url = `${apiConfig.baseUrlDigitalResources}/${ApiPathsEnum.DIGITAL_RESOURCE}/GetExistingLearningObjectives`;\n return await get<IBindBaseEntity[]>(url);\n },\n\n async getDigitalResourcesTypes(): Promise<IHttpResponse<IBindBaseEntity[]>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.ENUMERATORS}/DigitalResourceType`;\n return await get<IBindBaseEntity[]>(url);\n },\n\n async getSchoolDistrictsByQuery(query: string): Promise<IHttpResponse<IBindBaseEnumEntity[]>> {\n const url = `${apiConfig.baseUrlIntegrations}/${ApiPathsEnum.ENUMERATORS}/SearchDistricts`;\n return await post<IBindBaseEnumEntity[]>(url, {query});\n },\n\n async getFilterContentItemStatuses(): Promise<IHttpResponse<IBaseFiltersApiResponse>> {\n const url = `${apiConfig.baseUrlPam}/${ApiPathsEnum.HELPERS}/GetFilterContentItemStatuses`;\n return await get<IBaseFiltersApiResponse>(url);\n },\n\n async getFilterFileStatuses(): Promise<IHttpResponse<IBaseFiltersApiResponse>> {\n const url = `${apiConfig.baseUrlPam}/${ApiPathsEnum.HELPERS}/GetFilterFileStatuses`;\n return await get<IBaseFiltersApiResponse>(url);\n },\n};\n","import {config} from 'config';\nimport {get, post, put} from './http-client';\nimport {ISurvey} from 'survey-react';\nimport {ApiPathsEnum} from 'enums';\nimport {\n IBindInstrumentsAllPage,\n IBindStringResponse,\n ICreateQuestionPayload,\n IGetActiveSurveyApiResponse,\n IGetAreaProgramClassExportResponse,\n IGetGeneralInstrumentExportResponse,\n IGetItemsApiResponse,\n IGetPageOfInstrumentsPayload,\n IInstrumentDetails,\n IInstrumentDetailsAndParticipantSummary,\n IMetaDataDto,\n IQuestionBase,\n ISaveGeneralSurveyApiResponse,\n ISaveGeneralSurveyPayload,\n IUpdateDraftInstrumentPayload,\n IUpdateInstrumentApiResponse,\n IUpdateInstrumentInfoPayload,\n IUpdateInstrumentMetaDataPayload,\n IUpdateInstrumentPayload,\n TGetQuestionsApiResponse,\n} from 'models';\nimport {IFetchPoolItemsMappedFilterPayload} from 'models/library/instruments/IFetchPoolItemsPayload';\nimport {getApiMultipartFormDataHeadersConfig, isNumber, returnQueryStringWithParams} from 'utils';\nimport {IHttpResponse} from './models';\nimport {axiosApiInstance} from './axios-interceptors';\n\nconst {jaEeApi: apiConfig} = config;\n\nconst pageSizeDefault = 50;\nconst pageNumberDefault = 1;\nconst itemsPageSizeDefault = 10;\n\nexport const instrumentsApi = {\n async getInstrumentById(id: number): Promise<IHttpResponse<IInstrumentDetails>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.TEMPLATE}/GetTemplateAndItemsById?templateId=${id}`;\n return await get<IInstrumentDetails>(url);\n },\n\n async createNewTemplate(metaData: IMetaDataDto, isGeneral = false): Promise<IHttpResponse<number>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.TEMPLATE}/CreateTemplate?isGeneral=${isGeneral}`;\n return await post<number>(url, metaData);\n },\n\n async postCloneTemplate(\n templateId: number,\n metaData: IMetaDataDto,\n isGeneral = false\n ): Promise<IHttpResponse<number>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.TEMPLATE}/CloneTemplate?templateId=${templateId}&isGeneral=${isGeneral}`;\n return await post<number>(url, metaData);\n },\n\n async postDeleteTemplate(templateId: number): Promise<IHttpResponse<IBindStringResponse>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.TEMPLATE}/DeleteTemplate?templateId=${templateId}`;\n return await post<IBindStringResponse>(url, false);\n },\n\n async postDuplicateTemplate(templateId: number, programSessionId: number): Promise<IHttpResponse<number>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.TEMPLATE}/DuplicateTemplate`;\n return await post<number>(url, {templateId: templateId, programSessionId: programSessionId});\n },\n\n async getInstrumentItemsAndParticipantsById(\n id: number\n ): Promise<IHttpResponse<IInstrumentDetailsAndParticipantSummary>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.TEMPLATE}/GetTemplateItemsAndParticipantsByTemplateId?templateId=${id}`;\n return await get<IInstrumentDetailsAndParticipantSummary>(url);\n },\n\n async updateInstrumentMetaData(payload: IUpdateInstrumentMetaDataPayload): Promise<IHttpResponse<null>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.TEMPLATE}/AddMetaData?templateId=${payload.metaData.id}`;\n return await post<null>(url, payload.metaData.data);\n },\n\n async updateInstrumentInfo(payload: IUpdateInstrumentInfoPayload): Promise<IHttpResponse<null>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.TEMPLATE}/EditInstrument`;\n return await post<null>(url, payload);\n },\n\n async updateInstrument(payload: IUpdateInstrumentPayload): Promise<IHttpResponse<IUpdateInstrumentApiResponse>> {\n const config = getApiMultipartFormDataHeadersConfig();\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.TEMPLATE}/UpdateInstrument`;\n return axiosApiInstance.post(url, payload, config);\n },\n\n async unPublishSessionInstrument(id: number): Promise<IHttpResponse<undefined>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.TEMPLATE}/UnPublishSessionTemplate?templateId=${id}`;\n const body = {templateId: id};\n return await put<undefined>(url, body);\n },\n\n async getMatrixRelatedItems(\n defaultAnswerStackId: number,\n pageNumber = pageNumberDefault,\n builderFilter: IFetchPoolItemsMappedFilterPayload,\n searchText = ''\n ): Promise<IHttpResponse<IGetItemsApiResponse>> {\n const url = `${apiConfig.baseUrlSurvey}/${\n ApiPathsEnum.ITEM\n }/GetItemsByDefaultAnswerStack?pageNumber=${pageNumber}&pageSize=${pageSizeDefault}&defaultAnswerStackId=${\n isNumber(defaultAnswerStackId) ? defaultAnswerStackId : -1\n }`;\n const body = {\n pageNumber: `${pageNumber}`,\n pageSize: `${pageSizeDefault}`,\n text: searchText,\n ...builderFilter,\n };\n return await post<IGetItemsApiResponse>(url, body);\n },\n\n // TODO response type\n async updateDraftInstrumentById({instrumentId, items}: IUpdateDraftInstrumentPayload): Promise<IHttpResponse<any>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.INSTRUMENT}/UpdateDraftInstrumentScheme?templateId=${instrumentId}`;\n return await put<any>(url, items);\n },\n\n async getItems(\n pageNumber = pageNumberDefault,\n builderFilter: IFetchPoolItemsMappedFilterPayload\n ): Promise<IHttpResponse<IGetItemsApiResponse>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.ITEM}/GetItems?pageNumber=${pageNumber}&pageSize=${itemsPageSizeDefault}`;\n const body = {\n pageNumber: `${pageNumber}`,\n pageSize: `${pageSizeDefault}`,\n itemTypesFilter: [],\n isPublished: true,\n areaId: null,\n ...builderFilter,\n };\n return await post<IGetItemsApiResponse>(url, body);\n },\n\n async getQuestions(isApproved = false): Promise<IHttpResponse<TGetQuestionsApiResponse>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.QUESTION}/GetQuestions?isApproved=${isApproved}`;\n return await get<TGetQuestionsApiResponse>(url);\n },\n\n async createQuestion(payload: ICreateQuestionPayload): Promise<IHttpResponse<IQuestionBase>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.ITEM}/CreateQuestion`;\n return await post<IQuestionBase>(url, payload);\n },\n\n async getActiveSurvey(\n userId: number,\n programId: number,\n masterTemplateId: number\n ): Promise<IHttpResponse<IGetActiveSurveyApiResponse>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.TEMPLATE}/GetActiveUserSurvey?userId=${userId}&programId=${programId}&masterTemplateId=${masterTemplateId}`;\n return await get<IGetActiveSurveyApiResponse>(url);\n },\n\n async getGeneralSurvey(instrumentId: number): Promise<IHttpResponse<ISurvey>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.GENERAL_TEMPLATE}/GetGeneralSurvey?id=${instrumentId}`;\n return await post<ISurvey>(url, null);\n },\n\n async saveSurvey(\n userId: number,\n templateId: number,\n results: {[id: number]: string}\n ): Promise<IHttpResponse<IGetActiveSurveyApiResponse>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.TEMPLATE}/ProcessAssignmentResults?userId=${userId}&templateId=${templateId}`;\n return await post<IGetActiveSurveyApiResponse>(url, {assignmentResults: results, userIpAddress: null});\n },\n\n async saveGeneralSurvey({\n instrumentId,\n results,\n timeSpent,\n areaId,\n }: ISaveGeneralSurveyPayload): Promise<IHttpResponse<ISaveGeneralSurveyApiResponse>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.GENERAL_TEMPLATE}/ProcessAssignmentResults?templateId=${instrumentId}`;\n return await post<ISaveGeneralSurveyApiResponse>(url, {\n assignmentResults: results,\n userIpAddress: null,\n timeSpent,\n areaId,\n });\n },\n\n async getPageOfInstruments({\n filter,\n pagination,\n sortOptions,\n }: IGetPageOfInstrumentsPayload): Promise<IHttpResponse<IBindInstrumentsAllPage>> {\n const queryString = returnQueryStringWithParams(\n `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.TEMPLATE}/GetMasterTemplatesPaged`,\n {\n ...pagination,\n ...sortOptions,\n }\n );\n\n return await post<IBindInstrumentsAllPage>(queryString, filter);\n },\n\n async getPossiblePretestItems(templateId: number): Promise<IHttpResponse<any>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.ITEM}/GetPossiblePretestItems?templateId=${templateId}`;\n return await get<any>(url);\n },\n\n async getGeneralInstrumentExport(url: string): Promise<IHttpResponse<IGetGeneralInstrumentExportResponse>> {\n return await get<IGetGeneralInstrumentExportResponse>(url);\n },\n\n async getAreaProgramClassExport(url: string): Promise<IHttpResponse<IGetAreaProgramClassExportResponse>> {\n return await get<IGetAreaProgramClassExportResponse>(url);\n },\n\n async getAreaProgramClassDetailedExport(url: string): Promise<IHttpResponse<IGetAreaProgramClassExportResponse>> {\n return await get<IGetAreaProgramClassExportResponse>(url);\n },\n\n async getInstrumentForPreview(id: number): Promise<IHttpResponse<IInstrumentDetails>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.TEMPLATE}/GetTemplateForPreview?id=${id}`;\n return await get<IInstrumentDetails>(url);\n },\n\n async putPublishMasterTemplate(templateId: number): Promise<IHttpResponse<IBindStringResponse>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.TEMPLATE}/PublishMasterTemplate?templateId=${templateId}`;\n return await put<IBindStringResponse>(url, null);\n },\n};\n","import {config} from 'config';\nimport {ApiPathsEnum} from 'enums';\nimport {\n IProgramBase,\n IGetPageOfProgramsResponse,\n IGetPageOfProgramClassesPayload,\n IGetPageOfProgramClassesResponse,\n IGetPageOfProgramMasterInstrumentsResponse,\n IGetPageOfProgramMasterInstrumentsPayload,\n IGetPageOfProgramClassInstrumentsPayload,\n IGetPageOfProgramClassInstrumentsResponse,\n IBindBaseEntity,\n IGetProgramReportResponse,\n IGetPageOfPaperAssessmentsPayload,\n IGetPageOfPaperAssessmentsResponse,\n IGetLevelsOfReportingApiResponse,\n IGetLevelsOfReportingQueryParams,\n} from 'models';\nimport {returnQueryStringWithParams} from 'utils';\nimport {get, post} from './http-client';\nimport {IHttpResponse} from './models';\n\nconst {jaEeApi} = config;\n\nexport const programsApi = {\n async getActiveProgramsByIds(programIds: number[]): Promise<IHttpResponse<IProgramBase[]>> {\n return await post<IProgramBase[]>(`${jaEeApi.baseUrlUms}/${ApiPathsEnum.UMS}/GetActiveProgramsByIds`, programIds);\n },\n\n async getActiveProgramsPaged({pagination, filter, sortOptions}): Promise<IHttpResponse<IGetPageOfProgramsResponse>> {\n const queryString = returnQueryStringWithParams(\n `${jaEeApi.baseUrlUms}/${ApiPathsEnum.UMS}/GetActiveProgramsPaged`,\n {...pagination, ...sortOptions}\n );\n\n return await post<IGetPageOfProgramsResponse>(queryString, filter);\n },\n\n async getProgramClassesPaged({\n filter,\n programId,\n pagination,\n sortOptions,\n }: IGetPageOfProgramClassesPayload): Promise<IHttpResponse<IGetPageOfProgramClassesResponse>> {\n const queryString = returnQueryStringWithParams(\n `${jaEeApi.baseUrlUms}/${ApiPathsEnum.UMS}/GetProgramClassesPaged`,\n {programId, ...pagination, ...sortOptions}\n );\n\n return await post<IGetPageOfProgramClassesResponse>(queryString, filter);\n },\n\n async getProgramMasterInstrumentsPaged({\n pagination,\n filter,\n sortOptions,\n }: IGetPageOfProgramMasterInstrumentsPayload): Promise<IHttpResponse<IGetPageOfProgramMasterInstrumentsResponse>> {\n const queryString = returnQueryStringWithParams(\n `${jaEeApi.baseUrlSurvey}/${ApiPathsEnum.TEMPLATE}/GetMasterTemplatesPaged`,\n {...pagination, ...sortOptions}\n );\n\n return await post<IGetPageOfProgramMasterInstrumentsResponse>(queryString, filter);\n },\n\n async getProgramClassInstrumentsPaged(\n payload: IGetPageOfProgramClassInstrumentsPayload\n ): Promise<IHttpResponse<IGetPageOfProgramClassInstrumentsResponse>> {\n const {filter, classId, sortOptions, pagination} = payload;\n\n const queryString = returnQueryStringWithParams(\n `${jaEeApi.baseUrlSurvey}/${ApiPathsEnum.TEMPLATE}/GetTemplatesAssociatedWithClass`,\n {\n classId: classId,\n ...pagination,\n ...sortOptions,\n }\n );\n\n return await post<IGetPageOfProgramClassInstrumentsResponse>(queryString, filter);\n },\n\n async getProgramClassById(classId: number): Promise<IHttpResponse<IProgramBase>> {\n const queryString = returnQueryStringWithParams(`${jaEeApi.baseUrlSurvey}/${ApiPathsEnum.TEMPLATE}/GetClassById`, {\n classId,\n });\n return await get<IProgramBase>(queryString);\n },\n\n async getSortOrderColumns(): Promise<IHttpResponse<IBindBaseEntity[]>> {\n const url = `${jaEeApi.baseUrlSurvey}/${ApiPathsEnum.ENUMERATORS}/SortTemplates`;\n return await get<IBindBaseEntity[]>(url);\n },\n\n async getImpactSummaryReport(url: string): Promise<IHttpResponse<IGetProgramReportResponse>> {\n return await get<IGetProgramReportResponse>(url);\n },\n\n async getAchievementSummaryReport(url: string): Promise<IHttpResponse<IGetProgramReportResponse>> {\n return await get<IGetProgramReportResponse>(url);\n },\n\n async getStudentGradeBookReport(url: string): Promise<IHttpResponse<IGetProgramReportResponse>> {\n return await get<IGetProgramReportResponse>(url);\n },\n\n async getStudentAchievementSummaryReport(url: string): Promise<IHttpResponse<IGetProgramReportResponse>> {\n return await get<IGetProgramReportResponse>(url);\n },\n\n async getClassPaperAssessmentsPaged(\n payload: IGetPageOfPaperAssessmentsPayload\n ): Promise<IHttpResponse<IGetPageOfPaperAssessmentsResponse>> {\n const {programId, classId, pagination, sortOptions} = payload;\n\n const queryString = returnQueryStringWithParams(`${jaEeApi.baseUrlPam}/${ApiPathsEnum.PAPER_ASSESSMENTS}/List`, {\n programId,\n classId,\n ...pagination,\n ...sortOptions,\n });\n\n return await get<IGetPageOfPaperAssessmentsResponse>(queryString);\n },\n\n async getLevelsOfReportingListByProgramId(\n queryParams: IGetLevelsOfReportingQueryParams\n ): Promise<IHttpResponse<IGetLevelsOfReportingApiResponse>> {\n const queryString = returnQueryStringWithParams(\n `${jaEeApi.baseUrlSurvey}/${ApiPathsEnum.TEMPLATE}/LevelsOfReporting`,\n {...queryParams}\n );\n\n return await get<IGetLevelsOfReportingApiResponse>(queryString);\n },\n};\n","import {config} from 'config';\nimport {ApiPathsEnum} from 'enums';\nimport {\n IAnswerStack,\n IBindBaseEntity,\n IBindItemsPage,\n ICustomAnswerStackPayload,\n IDefaultAnswerStackPayload,\n IGetPageOfItems,\n IInstrumentItem,\n IItemDetails,\n IItemsFilter,\n IUpdateAnswerStackPayload,\n IUpdateItemPayload,\n IUpdateItemResponse,\n} from 'models';\nimport {returnQueryStringWithParams} from 'utils';\nimport {get, post, put} from './http-client';\nimport {IHttpResponse} from './models';\n\nconst {jaEeApi: apiConfig} = config;\n\nexport const itemsApi = {\n async getItems(): Promise<IHttpResponse<IInstrumentItem[]>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.ITEM}/GetItems`;\n return await get<IInstrumentItem[]>(url);\n },\n\n async getNewItem(): Promise<IHttpResponse<IAnswerStack[]>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.QUESTION}/GetNewQuestionWithMetadata`;\n return await get<IAnswerStack[]>(url);\n },\n\n async getItemById(itemId: number): Promise<IHttpResponse<IItemDetails>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.ITEM}/GetQuestion?id=${itemId}`;\n return await get<IItemDetails>(url);\n },\n\n async getPageOfItems(\n pagination: IGetPageOfItems | any,\n sortOptions: any,\n filters: IItemsFilter\n ): Promise<IHttpResponse<IBindItemsPage>> {\n const queryString = returnQueryStringWithParams(\n `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.ITEM}/GetItemsForPreview`,\n {\n ...pagination,\n ...sortOptions,\n }\n );\n\n return await post<IBindItemsPage>(queryString, filters);\n },\n\n async getItemsSortByColumns(): Promise<IHttpResponse<IBindBaseEntity[]>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.ENUMERATORS}/SortItemsByColumn`;\n return await get<IBindBaseEntity[]>(url);\n },\n\n async getItemsSortOrderTypes(): Promise<IHttpResponse<IBindBaseEntity[]>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.ENUMERATORS}/SortOrder`;\n return await get<IBindBaseEntity[]>(url);\n },\n\n async promoteItemAnswerStack(answerStackId: number): Promise<IHttpResponse<any>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.ITEM}/PromoteItem?id=${answerStackId}`;\n return await post<any>(url, {});\n },\n\n async publishItemAnswerStack(answerStackId: number): Promise<IHttpResponse<any>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.ITEM}/PublishItem?id=${answerStackId}`;\n return await post<any>(url, {});\n },\n\n async unPublishItemAnswerStack(answerStackId: number): Promise<IHttpResponse<any>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.ITEM}/UnPublishItem?id=${answerStackId}`;\n return await post<any>(url, {});\n },\n\n async publishAllAnswerStacksForQuestion(questionId: number): Promise<IHttpResponse<any>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.ITEM}/PublishAllItemsForQuestion`;\n return await post<any>(url, {id: questionId});\n },\n\n async createUpdateItem(payload): Promise<IHttpResponse<any>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.ITEM}/CreateItemsForQuestion`;\n return await post<any>(url, payload.data);\n },\n\n async deleteItem(itemId: number): Promise<IHttpResponse<any>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.QUESTION}/DeleteQuestion?id=${itemId}`;\n return await put<any>(url, {});\n },\n\n async updateItem(payload: IUpdateItemPayload): Promise<IHttpResponse<IUpdateItemResponse>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.ITEM}/UpdateQuestion`;\n return await post<IUpdateItemResponse>(url, payload);\n },\n\n async updateAnswerStack(payload: IUpdateAnswerStackPayload): Promise<IHttpResponse<any>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.ITEM}/UpdateAnswerStack`;\n return await post<any>(url, payload);\n },\n\n async getPossibleDefaultAnswerStacks(questionId: number): Promise<IHttpResponse<any>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.ITEM}/GetPossibleDefaultAnswerStacks?questionId=${questionId}`;\n return await get<IDefaultAnswerStackPayload[]>(url);\n },\n\n async addDefaultAnswerStack(payload: IDefaultAnswerStackPayload): Promise<IHttpResponse<any>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.ITEM}/AddDefaultAnswerStack`;\n return await post<IUpdateItemResponse>(url, payload);\n },\n\n async addCustomAnswerStack(payload: ICustomAnswerStackPayload): Promise<IHttpResponse<any>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.ITEM}/AddCustomAnswerStack`;\n return await post<IUpdateItemResponse>(url, payload);\n },\n};\n","import {config} from 'config';\nimport {ApiPathsEnum} from 'enums';\nimport {IGetUserActivityExportResponse, TUserRolesApiResponse} from 'models';\nimport {IFetchUserActivityQueryParams} from 'permissions';\nimport {get, post} from './http-client';\nimport {IHttpResponse} from './models';\n\nconst {jaEeApi: apiConfig} = config;\n\nexport const permissionsApi = {\n async getUserRole(): Promise<IHttpResponse<TUserRolesApiResponse>> {\n const url = `${apiConfig.baseUrlPermissions}/${ApiPathsEnum.PERMISSION}/GetUserRoles`;\n return await get<TUserRolesApiResponse>(url);\n },\n\n async getUserRolesList(): Promise<IHttpResponse<TUserRolesApiResponse>> {\n const url = `${apiConfig.baseUrlPermissions}/${ApiPathsEnum.PERMISSION}/GetRolesList`;\n return await get<TUserRolesApiResponse>(url);\n },\n\n async getUserActivityExport(\n url: string,\n params: IFetchUserActivityQueryParams\n ): Promise<IHttpResponse<IGetUserActivityExportResponse>> {\n return await post<IGetUserActivityExportResponse>(url, params);\n },\n};\n","import {config} from 'config';\nimport {ApiPathsEnum} from 'enums';\nimport {IFetchUserIdAndAreaIdApiResponse} from 'models/user';\nimport {get} from './http-client';\nimport {IHttpResponse} from './models';\n\nconst {jaEeApi: apiConfig} = config;\n\nexport const userApi = {\n async getUserIdByUserEmail(email: string): Promise<IHttpResponse<number>> {\n return await get<number>(`${apiConfig.baseUrlUms}/${ApiPathsEnum.UMS}/GetUserIdByUserEmail?email=${email}`);\n },\n\n async getUserIdAndAreaByUserEmail(email: string): Promise<IHttpResponse<IFetchUserIdAndAreaIdApiResponse>> {\n return await get<IFetchUserIdAndAreaIdApiResponse>(\n `${apiConfig.baseUrlUms}/${ApiPathsEnum.UMS}/GetUserIdAndAreaByUserEmail?email=${email}`\n );\n },\n};\n","import {axiosApiInstance} from 'api';\nimport {config} from 'config';\nimport {ApiPathsEnum} from 'enums';\nimport {getApiMultipartFormDataHeadersConfig} from 'utils';\n\nconst {jaEeApi: apiConfig} = config;\n\nexport const fileManagerApi = {\n async uploadHeaderLogo(data: FormData) {\n const config = getApiMultipartFormDataHeadersConfig();\n const baseUrl = `${apiConfig.baseUrlUploader}/${ApiPathsEnum.HEADER_AND_FOOTER}/UploadHeader`;\n return axiosApiInstance.post(baseUrl, data, config);\n },\n\n async uploadFooterLogo(data: FormData) {\n const config = getApiMultipartFormDataHeadersConfig();\n const baseUrl = `${apiConfig.baseUrlUploader}/${ApiPathsEnum.HEADER_AND_FOOTER}/UploadFooter`;\n return axiosApiInstance.post(baseUrl, data, config);\n },\n};\n","import {getApiMultipartFormDataHeadersConfig, returnQueryStringWithParams} from 'utils';\nimport {config} from 'config';\nimport {ApiPathsEnum} from 'enums';\nimport {del, get, patch, post} from './http-client';\nimport {IHttpResponse} from './models/IHttpResponse';\nimport {\n IGetIntegrationsQueryFilter,\n IGoogleSitesSourceHistoryApiResponse,\n IIntegrationItem,\n IIntegrationListDropdown,\n IIntegrationStatus,\n IIntegrationType,\n IPaginationOptions,\n ISortingOptions,\n} from '../models';\nimport {\n ICreateGoogleSitesDestinationPayload,\n ICreateGoogleSitesDestinationResponse,\n ICreateGoogleSitesSourceVirtualClassPayload,\n ICreateGoogleSitesSourceVirtualClassResponse,\n ICreateGoogleVirtualClassPayload,\n ICreateGoogleVirtualClassResponse,\n IIntegrationSearchSchools,\n ISearchSchoolsPayload,\n ICreateMicrosoftTeamsVirtualClassPayload,\n ICreateMicrosoftTeamsVirtualClassResponse,\n IGetServiceEmailResponse,\n IIntegrationDetails,\n IUpdateIntegrationPayload,\n IUpdateIntegrationApiResponse,\n IIntegrationAuditLogApiResponse,\n IGetAuditLogResponse,\n IUpdateMicrosoftTeamsIntegrationPayload,\n ITestMicrosoftTeamsIntegrationApiResponse,\n ITestGoogleClassroomIntegrationApiResponse,\n IUpdateGoogleClassroomIntegrationPayload,\n IUpdateGoogleSitesSourceIntegrationPayload,\n ITestGoogleSitesSourceIntegrationApiResponse,\n IUpdateGoogleSitesDestinationIntegrationPayload,\n IGetPublishedApiSourceDetails,\n} from './../models/integrations';\nimport {axiosApiInstance} from 'api';\n\nconst {jaEeApi: apiConfig} = config;\n\nexport const integrationsApi = {\n async getIntegrations(\n pagination: IPaginationOptions,\n sortOptions: ISortingOptions,\n filters: IGetIntegrationsQueryFilter\n ): Promise<IHttpResponse<IIntegrationItem[]>> {\n const url = `${apiConfig.baseUrlIntegrations}/${ApiPathsEnum.INTEGRATION}/List`;\n\n const queryString = returnQueryStringWithParams(url, {\n ...pagination,\n ...sortOptions,\n ...filters,\n });\n return await get<IIntegrationItem[]>(queryString);\n },\n\n async getDetailsIntegration(integrationId: string): Promise<IHttpResponse<IIntegrationDetails>> {\n const url = `${apiConfig.baseUrlIntegrations}/${ApiPathsEnum.INTEGRATION}/${integrationId}/Details`;\n return await get<IIntegrationDetails>(url);\n },\n\n async updateIntegration(\n integrationId: string,\n payload: IUpdateIntegrationPayload\n ): Promise<IHttpResponse<IUpdateIntegrationApiResponse>> {\n const url = `${apiConfig.baseUrlIntegrations}/${ApiPathsEnum.INTEGRATION}/${integrationId}/Update`;\n return await get<IUpdateIntegrationApiResponse>(url, payload);\n },\n\n async getIntegrationAuditLog(integrationId: string): Promise<IHttpResponse<IIntegrationAuditLogApiResponse>> {\n const url = `${apiConfig.baseUrlIntegrations}/${ApiPathsEnum.INTEGRATION}/${integrationId}/AuditLog`;\n return await get<IIntegrationAuditLogApiResponse>(url);\n },\n\n async deleteIntegration(integrationId: string): Promise<IHttpResponse<IIntegrationDetails>> {\n const url = `${apiConfig.baseUrlIntegrations}/${ApiPathsEnum.INTEGRATION}/${integrationId}/Remove`;\n return await del<IIntegrationDetails>(url, {});\n },\n\n async publishIntegration(integrationId: string): Promise<IHttpResponse<IIntegrationDetails>> {\n const url = `${apiConfig.baseUrlIntegrations}/${ApiPathsEnum.INTEGRATION}/${integrationId}/Publish`;\n return await post<IIntegrationDetails>(url, {});\n },\n\n async getIntegrationTypes(): Promise<IHttpResponse<IIntegrationType[]>> {\n const url = `${apiConfig.baseUrlIntegrations}/${ApiPathsEnum.ENUMERATORS}/GetIntegrationTypes`;\n return await get<IIntegrationType[]>(url);\n },\n\n async getIntegrationStatuses(): Promise<IHttpResponse<IIntegrationStatus[]>> {\n const url = `${apiConfig.baseUrlIntegrations}/${ApiPathsEnum.ENUMERATORS}/GetIntegrationStatuses`;\n return await get<IIntegrationStatus[]>(url);\n },\n\n async getIntegrationListDropdownData(): Promise<IHttpResponse<IIntegrationListDropdown>> {\n const url = `${apiConfig.baseUrlIntegrations}/${ApiPathsEnum.ENUMERATORS}/GetIntegrationListDropdownData`;\n return await get<IIntegrationListDropdown>(url);\n },\n\n async searchSchools(query: ISearchSchoolsPayload): Promise<IHttpResponse<IIntegrationSearchSchools>> {\n const url = `${apiConfig.baseUrlIntegrations}/${ApiPathsEnum.ENUMERATORS}/SearchSchools`;\n return await post<IIntegrationSearchSchools>(url, query);\n },\n\n // Google Classroom\n\n async createGoogleVirtualClass(\n payload: ICreateGoogleVirtualClassPayload\n ): Promise<IHttpResponse<ICreateGoogleVirtualClassResponse>> {\n const config = getApiMultipartFormDataHeadersConfig();\n const baseUrl = `${apiConfig.baseUrlIntegrations}/${ApiPathsEnum.VIRTUAL_CLASS}/${ApiPathsEnum.GOOGLE_CLASSROOM}/${ApiPathsEnum.CREATE}`;\n return axiosApiInstance.put(baseUrl, payload, config);\n },\n\n async updateGoogleClassroomIntegration(\n integrationId: string,\n payload: IUpdateGoogleClassroomIntegrationPayload\n ): Promise<IHttpResponse<IUpdateIntegrationApiResponse>> {\n const config = getApiMultipartFormDataHeadersConfig();\n const url = `${apiConfig.baseUrlIntegrations}/${ApiPathsEnum.VIRTUAL_CLASS}/${ApiPathsEnum.GOOGLE_CLASSROOM}/${integrationId}/Update`;\n return axiosApiInstance.patch(url, payload, config);\n },\n\n async testGoogleClassroomIntegration(\n integrationId: string\n ): Promise<IHttpResponse<ITestGoogleClassroomIntegrationApiResponse>> {\n const url = `${apiConfig.baseUrlIntegrations}/${ApiPathsEnum.VIRTUAL_CLASS}/${ApiPathsEnum.GOOGLE_CLASSROOM}/${integrationId}/Test`;\n return await post<ITestGoogleClassroomIntegrationApiResponse>(url, {});\n },\n\n // Google Site Source\n\n async createGoogleSitesSource(\n payload: ICreateGoogleSitesSourceVirtualClassPayload\n ): Promise<IHttpResponse<ICreateGoogleSitesSourceVirtualClassResponse>> {\n const config = getApiMultipartFormDataHeadersConfig();\n const baseUrl = `${apiConfig.baseUrlIntegrations}/${ApiPathsEnum.GOOGLE_SITES}/${ApiPathsEnum.SOURCE}/Create`;\n return axiosApiInstance.put(baseUrl, payload, config);\n },\n\n async updateGoogleSiteSourceIntegration(\n integrationId: string,\n payload: IUpdateGoogleSitesSourceIntegrationPayload\n ): Promise<IHttpResponse<IUpdateIntegrationApiResponse>> {\n const config = getApiMultipartFormDataHeadersConfig();\n const url = `${apiConfig.baseUrlIntegrations}/${ApiPathsEnum.GOOGLE_SITES}/${ApiPathsEnum.SOURCE}/${integrationId}/Update`;\n return axiosApiInstance.patch(url, payload, config);\n },\n\n async testGoogleSitesSourceIntegration(\n integrationId: string\n ): Promise<IHttpResponse<ITestGoogleSitesSourceIntegrationApiResponse>> {\n const url = `${apiConfig.baseUrlIntegrations}/${ApiPathsEnum.GOOGLE_SITES}/${ApiPathsEnum.SOURCE}/${integrationId}/Test`;\n return await post<ITestGoogleSitesSourceIntegrationApiResponse>(url, {});\n },\n\n async getGoogleSitesSourceHistory(\n googleSiteId: string\n ): Promise<IHttpResponse<IGoogleSitesSourceHistoryApiResponse>> {\n const url = `${apiConfig.baseUrlIntegrations}/${ApiPathsEnum.GOOGLE_SITES}/${ApiPathsEnum.SOURCE}/${ApiPathsEnum.SITE}/${googleSiteId}/History`;\n return await get<IGoogleSitesSourceHistoryApiResponse>(url);\n },\n\n // Google Site Destination\n\n async createGoogleSitesDestination(\n payload: ICreateGoogleSitesDestinationPayload\n ): Promise<IHttpResponse<ICreateGoogleSitesDestinationResponse>> {\n const config = getApiMultipartFormDataHeadersConfig();\n const baseUrl = `${apiConfig.baseUrlIntegrations}/${ApiPathsEnum.GOOGLE_SITES}/${ApiPathsEnum.DESTINATION}/Create`;\n return axiosApiInstance.put(baseUrl, payload, config);\n },\n\n async updateGoogleSiteDestinationIntegration(\n integrationId: string,\n payload: IUpdateGoogleSitesDestinationIntegrationPayload\n ): Promise<IHttpResponse<IUpdateIntegrationApiResponse>> {\n const url = `${apiConfig.baseUrlIntegrations}/${ApiPathsEnum.GOOGLE_SITES}/${ApiPathsEnum.DESTINATION}/${integrationId}/Update`;\n return await patch<IUpdateIntegrationApiResponse>(url, payload);\n },\n\n async testGoogleSiteDestinationIntegration(\n integrationId: string\n ): Promise<IHttpResponse<ITestMicrosoftTeamsIntegrationApiResponse>> {\n const url = `${apiConfig.baseUrlIntegrations}/${ApiPathsEnum.GOOGLE_SITES}/${ApiPathsEnum.DESTINATION}/${integrationId}/Test`;\n return await post<ITestMicrosoftTeamsIntegrationApiResponse>(url, {});\n },\n\n async getServiceEmail(): Promise<IHttpResponse<IGetServiceEmailResponse>> {\n const url = `${apiConfig.baseUrlIntegrations}/${ApiPathsEnum.GOOGLE_SITES}/${ApiPathsEnum.SOURCE}/GetServiceEmail`;\n return await get<IGetServiceEmailResponse>(url);\n },\n\n async getPublishedSourceDetails(): Promise<IHttpResponse<IGetPublishedApiSourceDetails>> {\n const url = `${apiConfig.baseUrlIntegrations}/${ApiPathsEnum.GOOGLE_SITES}/${ApiPathsEnum.SOURCE}/${ApiPathsEnum.PUBLISHED}/Details`;\n return await get<IGetPublishedApiSourceDetails>(url);\n },\n\n // Microsoft teams\n\n async createMicrosoftTeamsVirtualClass(\n payload: ICreateMicrosoftTeamsVirtualClassPayload\n ): Promise<IHttpResponse<ICreateMicrosoftTeamsVirtualClassResponse>> {\n const config = getApiMultipartFormDataHeadersConfig();\n const baseUrl = `${apiConfig.baseUrlIntegrations}/${ApiPathsEnum.VIRTUAL_CLASS}/${ApiPathsEnum.MICROSOFT_TEAMS}/Create`;\n return axiosApiInstance.put(baseUrl, payload, config);\n },\n\n async updateMicrosoftTeamsIntegration(\n integrationId: string,\n payload: IUpdateMicrosoftTeamsIntegrationPayload\n ): Promise<IHttpResponse<IUpdateIntegrationApiResponse>> {\n const url = `${apiConfig.baseUrlIntegrations}/${ApiPathsEnum.VIRTUAL_CLASS}/${ApiPathsEnum.MICROSOFT_TEAMS}/${integrationId}/Update`;\n return await patch<IUpdateIntegrationApiResponse>(url, payload);\n },\n\n async testMicrosoftTeamsIntegration(\n integrationId: string\n ): Promise<IHttpResponse<ITestMicrosoftTeamsIntegrationApiResponse>> {\n const url = `${apiConfig.baseUrlIntegrations}/${ApiPathsEnum.VIRTUAL_CLASS}/${ApiPathsEnum.MICROSOFT_TEAMS}/${integrationId}/Test`;\n return await post<ITestMicrosoftTeamsIntegrationApiResponse>(url, {});\n },\n\n // Audit Log\n\n async getAuditLog(integrationId: string): Promise<IHttpResponse<IGetAuditLogResponse>> {\n const url = `${apiConfig.baseUrlIntegrations}/${ApiPathsEnum.INTEGRATION}/${integrationId}/AuditLog`;\n return await get<IGetAuditLogResponse>(url);\n },\n};\n","import {config} from 'config';\nimport {ApiPathsEnum} from 'enums';\nimport {IHttpResponse} from './models';\nimport {get} from './http-client';\nimport {axiosApiInstance} from 'api';\n\nimport {\n IGetCriticalIssuesApiResponse,\n TGetImportInstructionalTextApiResponse,\n TGetImportTemplateApiResponse,\n TGetItemBankImportApiResponse,\n TGetItemBankVerificationApiResponse,\n TGetUploadItemBankApiResponse,\n} from '../models/library/items-import';\nimport {getApiMultipartFormDataHeadersConfig, returnQueryStringWithParams} from 'utils';\n\nconst {jaEeApi: apiConfig} = config;\n\nexport const itemImportApi = {\n async getImportTemplate(): Promise<IHttpResponse<TGetImportTemplateApiResponse>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.ITEM_IMPORT}/GetImportTemplate`;\n return await get<TGetImportTemplateApiResponse>(url);\n },\n\n async getImportInstructionalText(): Promise<IHttpResponse<TGetImportInstructionalTextApiResponse>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.ITEM_IMPORT}/GetInstructionalText`;\n return await get<TGetImportInstructionalTextApiResponse>(url);\n },\n\n async getImportCriticalIssues(itemImportId: number): Promise<IHttpResponse<IGetCriticalIssuesApiResponse>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.ITEM_IMPORT}/GetCriticalIssues`;\n const queryString = returnQueryStringWithParams(url, {\n itemImportId,\n });\n\n return await get<IGetCriticalIssuesApiResponse>(queryString);\n },\n\n async uploadItemBank(data: FormData): Promise<IHttpResponse<TGetUploadItemBankApiResponse>> {\n const config = getApiMultipartFormDataHeadersConfig();\n const baseUrl = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.ITEM_IMPORT}/UploadItemBank`;\n return axiosApiInstance.post(baseUrl, data, config);\n },\n\n async getItemBankVerification(itemImportId: number): Promise<IHttpResponse<TGetItemBankVerificationApiResponse>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.ITEM_IMPORT}/VerifyItemBank`;\n const queryString = returnQueryStringWithParams(url, {\n itemImportId,\n });\n\n return await get<TGetItemBankVerificationApiResponse>(queryString);\n },\n\n async startItemBankImport(itemImportId: number): Promise<IHttpResponse<TGetItemBankImportApiResponse>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.ITEM_IMPORT}/StartItemImport`;\n const queryString = returnQueryStringWithParams(url, {\n itemImportId,\n });\n\n return await get<TGetItemBankImportApiResponse>(queryString);\n },\n};\n","import {IHttpResponse} from 'api';\nimport {ApiPathsEnum} from 'enums';\nimport {config} from 'config';\nimport {get, put} from './http-client';\nimport {\n IGoogleSiteCopyApiResponse,\n IGoogleSiteCopyPayload,\n IGoogleSiteDetails,\n IGoogleSitesListApiResponse,\n} from 'models/resources/google-sites';\n\nconst {jaEeApi: apiConfig} = config;\n\n// Google Sites Source\n\nexport const googleSitesApi = {\n async getDetailsGoogleSiteSource(siteFieldId: string): Promise<IHttpResponse<IGoogleSiteDetails>> {\n const url = `${apiConfig.baseUrlIntegrations}/${ApiPathsEnum.GOOGLE_SITES}/${ApiPathsEnum.SOURCE}/${ApiPathsEnum.SITE}/${siteFieldId}/Details`;\n return await get<IGoogleSiteDetails>(url);\n },\n\n // Google Site List from Source Integration\n\n async getGoogleSitesList(): Promise<IHttpResponse<IGoogleSitesListApiResponse>> {\n const url = `${apiConfig.baseUrlIntegrations}/${ApiPathsEnum.GOOGLE_SITES}/${ApiPathsEnum.SOURCE}/${ApiPathsEnum.LIST_SITES}`;\n return await get<IGoogleSitesListApiResponse>(url);\n },\n\n // Google Sites Destination\n\n async getDetailsGoogleSiteDestination(siteFieldId: string): Promise<IHttpResponse<IGoogleSiteDetails>> {\n const url = `${apiConfig.baseUrlIntegrations}/${ApiPathsEnum.GOOGLE_SITES}/${ApiPathsEnum.DESTINATION}/${ApiPathsEnum.SITE}/${siteFieldId}/Details`;\n return await get<IGoogleSiteDetails>(url);\n },\n\n async getGoogleSitesCopySite({\n integrationId,\n siteFieldId,\n }: IGoogleSiteCopyPayload): Promise<IHttpResponse<IGoogleSiteCopyApiResponse>> {\n const url = `${apiConfig.baseUrlIntegrations}/${ApiPathsEnum.GOOGLE_SITES}/${ApiPathsEnum.DESTINATION}/${integrationId}/${ApiPathsEnum.COPY_SITE}/${siteFieldId}`;\n return await put<IGoogleSiteCopyApiResponse>(url, {});\n },\n};\n","import {axiosApiInstance, IHttpResponse} from 'api';\nimport {ApiPathsEnum} from 'enums';\nimport {config} from 'config';\nimport {del, get, post, put} from './http-client';\nimport {getApiJsonBlobDataHeadersConfig, returnQueryStringWithParams} from 'utils';\nimport {\n ICreateUpdateLearningPathApiResponse,\n ICreateLearningPathPayload,\n IGetAllFilesApiResponse,\n IGetLearningPathByIdApiResponse,\n IGetLearningPathsPayload,\n IUpdateLearningPathPayload,\n ILearningDetailsPathBaseApiResponse,\n IGetExportLearningPathApiResponse,\n IDuplicateLearningPathApiResponse,\n IDuplicateLearningPathPayload,\n} from 'models/resources';\n\nconst {jaEeApi: apiConfig} = config;\n\nexport const learningPathsApi = {\n async getAllLearningPaths({\n pagination,\n sortOrder,\n filter,\n }: IGetLearningPathsPayload): Promise<IHttpResponse<IGetAllFilesApiResponse>> {\n const url = `${apiConfig.baseUrlPam}/${ApiPathsEnum.LEARNING_PATH}/List`;\n\n const queryString = returnQueryStringWithParams(url, {\n ...pagination,\n ...sortOrder,\n ...filter,\n });\n\n return await get<IGetAllFilesApiResponse>(queryString);\n },\n\n async createLearningPath(\n payload: ICreateLearningPathPayload\n ): Promise<IHttpResponse<ICreateUpdateLearningPathApiResponse>> {\n const url = `${apiConfig.baseUrlPam}/${ApiPathsEnum.LEARNING_PATH}/Create`;\n return await post<ICreateUpdateLearningPathApiResponse>(url, payload);\n },\n\n async getLearningPathById(id: string): Promise<IHttpResponse<IGetLearningPathByIdApiResponse>> {\n const url = `${apiConfig.baseUrlPam}/${ApiPathsEnum.LEARNING_PATH}/${id}/Details`;\n return await get<IGetLearningPathByIdApiResponse>(url);\n },\n\n async updateLearningPath(\n payload: IUpdateLearningPathPayload\n ): Promise<IHttpResponse<ICreateUpdateLearningPathApiResponse>> {\n const url = `${apiConfig.baseUrlPam}/${ApiPathsEnum.LEARNING_PATH}/Update`;\n return await post<ICreateUpdateLearningPathApiResponse>(url, payload);\n },\n\n async deleteLearningPath(contentItemId: string): Promise<IHttpResponse<ILearningDetailsPathBaseApiResponse>> {\n const url = `${apiConfig.baseUrlPam}/${ApiPathsEnum.LEARNING_PATH}/${contentItemId}/Delete`;\n return await del<ILearningDetailsPathBaseApiResponse>(url, {});\n },\n\n async publishLearningPath(contentItemId: string): Promise<IHttpResponse<ILearningDetailsPathBaseApiResponse>> {\n const url = `${apiConfig.baseUrlPam}/${ApiPathsEnum.LEARNING_PATH}/${contentItemId}/Publish`;\n return await put<ILearningDetailsPathBaseApiResponse>(url, {});\n },\n\n async getExportLearningPath(id: string): Promise<IHttpResponse<IGetExportLearningPathApiResponse>> {\n const url = `${apiConfig.baseUrlPam}/${ApiPathsEnum.LEARNING_PATH}/ExportLearningPath`;\n const config = getApiJsonBlobDataHeadersConfig();\n const queryString = returnQueryStringWithParams(url, {\n id,\n });\n\n return await axiosApiInstance.get(queryString, config);\n },\n\n async postDuplicateLearningPath(\n contentItemId: string,\n payload: IDuplicateLearningPathPayload\n ): Promise<IHttpResponse<IDuplicateLearningPathApiResponse>> {\n const url = `${apiConfig.baseUrlPam}/${ApiPathsEnum.LEARNING_PATH}/${contentItemId}/Duplicate`;\n return await post<IDuplicateLearningPathApiResponse>(url, payload);\n },\n};\n","import {axiosApiInstance, IHttpResponse} from 'api';\nimport {ApiPathsEnum} from 'enums';\nimport {config} from 'config';\nimport {del, get, post} from './http-client';\nimport {\n IFetchFilesAllPagedThunkPayload,\n IFetchResourcesThunkPayload,\n IGetAllFilesApiResponse,\n IGetAllFileTypeOptionsApiResponse,\n IGetFileByIdApiResponse,\n IGetInstrumentsThunkPayload,\n IGetInstrumentsApiResponse,\n IGetResourcesApiResponse,\n IResourceItemBase,\n IUpdateFileResourcePayload,\n IUpdateFileResourceApiResponse,\n IUpdateWebLinkResourcePayload,\n IUpdateWebLinkResourceApiResponse,\n IGetFileByResourceIdApiResponse,\n} from 'models';\nimport {\n getApiJsonBlobDataHeadersConfig,\n getApiMultipartFormDataHeadersConfig,\n returnQueryStringWithParams,\n} from 'utils';\n\nconst {jaEeApi: apiConfig} = config;\n\nexport const pamApi = {\n // Enumerations\n\n async getAllFileTypeOptions(): Promise<IHttpResponse<IGetAllFileTypeOptionsApiResponse>> {\n const url = `${apiConfig.baseUrlPam}/${ApiPathsEnum.HELPERS}/GetAllFileTypeOptions`;\n return await get<IGetAllFileTypeOptionsApiResponse>(url);\n },\n\n // Files\n\n async getAllFiles(payload: IFetchFilesAllPagedThunkPayload): Promise<IHttpResponse<IGetAllFilesApiResponse>> {\n const url = `${apiConfig.baseUrlPam}/${ApiPathsEnum.RESOURCES}/List`;\n const {pagination, sortOrder, filter} = payload;\n\n const queryString = returnQueryStringWithParams(url, {\n ...pagination,\n ...sortOrder,\n ...filter,\n });\n return await get<IGetAllFilesApiResponse>(queryString);\n },\n\n // Resources\n\n async getFileById(id: string): Promise<IHttpResponse<IGetFileByIdApiResponse>> {\n const url = `${apiConfig.baseUrlPam}/${ApiPathsEnum.RESOURCES}/${id}/Details`;\n return await get<IGetFileByIdApiResponse>(url);\n },\n\n async getAllResources(payload: IFetchResourcesThunkPayload): Promise<IHttpResponse<IGetResourcesApiResponse>> {\n const url = `${apiConfig.baseUrlPam}/${ApiPathsEnum.RESOURCES}/List`;\n\n const queryString = returnQueryStringWithParams(url, {\n ...payload.filter,\n });\n return await get<IGetResourcesApiResponse>(queryString);\n },\n\n async deleteFileById(contentItemId: string): Promise<IHttpResponse<IResourceItemBase>> {\n const url = `${apiConfig.baseUrlPam}/${ApiPathsEnum.RESOURCES}/${contentItemId}/Delete`;\n return await del<IResourceItemBase>(url, {});\n },\n\n async updateFileResource(\n payload: IUpdateFileResourcePayload\n ): Promise<IHttpResponse<IUpdateFileResourceApiResponse>> {\n const configHeaders = getApiMultipartFormDataHeadersConfig();\n const url = `${apiConfig.baseUrlPam}/${ApiPathsEnum.RESOURCES}/${ApiPathsEnum.FILE}/Update`;\n\n return axiosApiInstance.post(url, payload, configHeaders);\n },\n\n async updateScormResource(\n payload: IUpdateFileResourcePayload\n ): Promise<IHttpResponse<IUpdateFileResourceApiResponse>> {\n const configHeaders = getApiMultipartFormDataHeadersConfig();\n const url = `${apiConfig.baseUrlPam}/${ApiPathsEnum.RESOURCES}/${ApiPathsEnum.SCORM}/Update`;\n\n return axiosApiInstance.post(url, payload, configHeaders);\n },\n\n async updateWebLinkResource(\n payload: IUpdateWebLinkResourcePayload\n ): Promise<IHttpResponse<IUpdateWebLinkResourceApiResponse>> {\n const url = `${apiConfig.baseUrlPam}/${ApiPathsEnum.RESOURCES}/${ApiPathsEnum.WEB_LINK}/Update`;\n\n return await post<IUpdateWebLinkResourceApiResponse>(url, payload);\n },\n\n async downloadFileByResourceId(id: string): Promise<IHttpResponse<IGetFileByResourceIdApiResponse>> {\n const url = `${apiConfig.baseUrlPam}/${ApiPathsEnum.RESOURCES}/GetFileByResourceId`;\n const config = getApiJsonBlobDataHeadersConfig();\n const queryString = returnQueryStringWithParams(url, {\n id,\n });\n\n return await axiosApiInstance.get(queryString, config);\n },\n\n // Instruments\n\n async getAllInstruments(payload: IGetInstrumentsThunkPayload): Promise<IHttpResponse<IGetInstrumentsApiResponse>> {\n const url = `${apiConfig.baseUrlSurvey}/${ApiPathsEnum.INSTRUMENT}/GetInstrumentsForLearningPaths`;\n\n const queryString = returnQueryStringWithParams(url, {\n ...payload.filter,\n });\n return await get<IGetInstrumentsApiResponse>(queryString);\n },\n};\n","import {axiosApiInstance, IHttpResponse} from 'api';\nimport {ApiPathsEnum} from 'enums';\nimport {config} from 'config';\nimport {get} from './http-client';\nimport {\n ICreateFileApiResponse,\n ICreateWebLinkPayload,\n IGetAllFileTypeOptionsApiResponse,\n IUploadScormApiResponse,\n IUploadScormPayload,\n ICreateWebLinkApiResponse,\n IUploadPaperAssessmentsPayload,\n IUploadPaperAssessmentsApiResponse,\n} from 'models';\nimport {getApiMultipartFormDataHeadersConfig} from 'utils/api';\n\nconst {jaEeApi: apiConfig} = config;\n\nexport const uploadResourcesApi = {\n async getUploadFileTypeOptions(): Promise<IHttpResponse<IGetAllFileTypeOptionsApiResponse>> {\n const url = `${apiConfig.baseUrlPam}/${ApiPathsEnum.HELPERS}/GetUploadFileTypeOptions`;\n return await get<IGetAllFileTypeOptionsApiResponse>(url);\n },\n\n // File\n\n async uploadFile(\n payload: FormData,\n onUploadProgress: (progressEvent: ProgressEvent) => void,\n cancelToken: any\n ): Promise<IHttpResponse<ICreateFileApiResponse>> {\n const configHeaders = getApiMultipartFormDataHeadersConfig();\n const baseUrl = `${apiConfig.baseUrlPam}/${ApiPathsEnum.RESOURCES}/${ApiPathsEnum.FILE}/Upload`;\n return axiosApiInstance.post(baseUrl, payload, {\n ...configHeaders,\n onUploadProgress,\n cancelToken,\n });\n },\n\n // Scorm\n\n async uploadScorm(payload: IUploadScormPayload): Promise<IHttpResponse<IUploadScormApiResponse>> {\n const config = getApiMultipartFormDataHeadersConfig();\n const baseUrl = `${apiConfig.baseUrlPam}/${ApiPathsEnum.RESOURCES}/${ApiPathsEnum.SCORM}/Upload`;\n return axiosApiInstance.post(baseUrl, payload, config);\n },\n\n // WebLink\n\n async createWebLink(payload: ICreateWebLinkPayload): Promise<IHttpResponse<ICreateWebLinkApiResponse>> {\n const config = getApiMultipartFormDataHeadersConfig();\n const baseUrl = `${apiConfig.baseUrlPam}/${ApiPathsEnum.RESOURCES}/${ApiPathsEnum.WEB_LINK}/Create`;\n return axiosApiInstance.post(baseUrl, payload, config);\n },\n\n // PaperAssessments\n\n async uploadPaperAssessment(\n payload: IUploadPaperAssessmentsPayload\n ): Promise<IHttpResponse<IUploadPaperAssessmentsApiResponse>> {\n const config = getApiMultipartFormDataHeadersConfig();\n const baseUrl = `${apiConfig.baseUrlPam}/${ApiPathsEnum.PAPER_ASSESSMENTS}/UploadZip`;\n return axiosApiInstance.post(baseUrl, payload, config);\n },\n};\n","export const paths = {\n root: '/',\n adminPortal: {\n root: '/admin',\n dashboard: '/dashboard',\n pathways: '/pathways',\n resource: '/resource',\n upload: '/upload',\n itemImport: {\n root: '/item-import',\n },\n resources: {\n root: '/resources',\n files: '/files',\n learningPaths: {\n root: '/learning-paths',\n edit: '/edit',\n create: '/create',\n all: '/all',\n },\n googleSites: {\n root: '/google-sites',\n details: '/details',\n all: '/all',\n },\n edit: '/edit',\n upload: {\n root: '/upload',\n file: '/file',\n scorm: '/scorm',\n learningPath: '/learning-path',\n webLink: '/web-link',\n },\n },\n library: {\n root: '/library',\n reports: '/reports',\n instruments: '/instruments',\n build: '/build',\n create: '/create',\n items: '/items',\n sessions: '/sessions',\n resources: '/resources',\n preview: '/preview',\n previewWithAnswers: '/preview-answers',\n edit: '/edit',\n editAnswerStack: '/edit-stack',\n printPreview: '/print-preview',\n },\n programs: {\n root: '/programs',\n details: '/details',\n masterInstruments: '/master-instruments',\n reports: '/reports',\n exports: '/exports',\n class: '/class',\n classReports: '/class-reports',\n classExports: '/class-exports',\n classPaperAssessments: '/class-paper-assessments',\n },\n integrations: {\n root: '/integrations',\n details: '/details',\n all: '/all',\n add: '/add',\n },\n },\n survey: {\n root: '/survey',\n },\n surveyGeneral: {\n root: '/survey-general',\n },\n fileDownload: {\n root: '/s',\n notFound: '/not-found',\n },\n fileNotFound: {\n root: '/file',\n notFound: '/not-found',\n },\n noPermission: '/no-permissions',\n error: '/error',\n rest: '*',\n withId: '/:id',\n withItemId: '/:itemId',\n withAnswerStackId: '/:answerStackId',\n withProgramId: '/:programId',\n withClassId: '/:classId',\n withInstrumentId: '/:instrumentId',\n withShortenerUrlId: '/:id',\n withIntegrationId: '/:integrationId',\n authenticationCallback: '/authentication/callback',\n};\n\nexport const pages = {\n adminPortal: {\n library: `${paths.adminPortal.root}${paths.adminPortal.library.root}`,\n resources: `${paths.adminPortal.root}${paths.adminPortal.resources.root}`,\n upload: {\n root: `${paths.adminPortal.root}${paths.adminPortal.resources.root}${paths.adminPortal.resources.upload.root}`,\n file: `${paths.adminPortal.root}${paths.adminPortal.resources.root}${paths.adminPortal.resources.upload.root}${paths.adminPortal.resources.upload.file}`,\n learningPath: `${paths.adminPortal.root}${paths.adminPortal.resources.root}${paths.adminPortal.resources.upload.root}${paths.adminPortal.resources.upload.learningPath}`,\n webLink: `${paths.adminPortal.root}${paths.adminPortal.resources.root}${paths.adminPortal.resources.upload.root}${paths.adminPortal.resources.upload.webLink}`,\n scorm: `${paths.adminPortal.root}${paths.adminPortal.resources.root}${paths.adminPortal.resources.upload.root}${paths.adminPortal.resources.upload.scorm}`,\n },\n files: {\n root: `${paths.adminPortal.root}${paths.adminPortal.resources.root}${paths.adminPortal.resources.files}`,\n details: `${paths.adminPortal.root}${paths.adminPortal.resources.root}${paths.adminPortal.resources.files}${paths.withId}`,\n detailsLink: `${paths.adminPortal.root}${paths.adminPortal.resources.root}${paths.adminPortal.resources.files}`,\n edit: `${paths.adminPortal.root}${paths.adminPortal.resources.root}${paths.adminPortal.resources.files}${paths.adminPortal.resources.edit}${paths.withId}`,\n editLink: `${paths.adminPortal.root}${paths.adminPortal.resources.root}${paths.adminPortal.resources.files}${paths.adminPortal.resources.edit}`,\n },\n googleSites: {\n root: `${paths.adminPortal.root}${paths.adminPortal.resources.root}${paths.adminPortal.resources.googleSites.root}`,\n all: `${paths.adminPortal.root}${paths.adminPortal.resources.root}${paths.adminPortal.resources.googleSites.root}${paths.adminPortal.resources.googleSites.all}`,\n details: `${paths.adminPortal.root}${paths.adminPortal.resources.root}${paths.adminPortal.resources.googleSites.root}${paths.adminPortal.resources.googleSites.details}${paths.withId}`,\n detailsLink: `${paths.adminPortal.root}${paths.adminPortal.resources.root}${paths.adminPortal.resources.googleSites.root}${paths.adminPortal.resources.googleSites.details}`,\n },\n integrations: {\n root: `${paths.adminPortal.root}${paths.adminPortal.integrations.root}`,\n all: `${paths.adminPortal.root}${paths.adminPortal.integrations.root}${paths.adminPortal.integrations.all}`,\n details: `${paths.adminPortal.root}${paths.adminPortal.integrations.root}${paths.adminPortal.integrations.details}${paths.withIntegrationId}`,\n detailsLink: `${paths.adminPortal.root}${paths.adminPortal.integrations.root}${paths.adminPortal.integrations.details}`,\n add: `${paths.adminPortal.root}${paths.adminPortal.integrations.root}${paths.adminPortal.integrations.add}`,\n },\n learningPaths: {\n root: `${paths.adminPortal.root}${paths.adminPortal.resources.root}${paths.adminPortal.resources.learningPaths.root}`,\n all: `${paths.adminPortal.root}${paths.adminPortal.resources.root}${paths.adminPortal.resources.learningPaths.root}${paths.adminPortal.resources.learningPaths.all}`,\n create: `${paths.adminPortal.root}${paths.adminPortal.resources.root}${paths.adminPortal.resources.learningPaths.root}${paths.adminPortal.resources.learningPaths.create}`,\n edit: `${paths.adminPortal.root}${paths.adminPortal.resources.root}${paths.adminPortal.resources.learningPaths.root}${paths.adminPortal.resources.learningPaths.edit}${paths.withId}`,\n editLink: `${paths.adminPortal.root}${paths.adminPortal.resources.root}${paths.adminPortal.resources.learningPaths.root}${paths.adminPortal.resources.learningPaths.edit}`,\n },\n items: {\n root: `${paths.adminPortal.root}${paths.adminPortal.library.root}${paths.adminPortal.library.items}`,\n detailsLink: `${paths.adminPortal.root}${paths.adminPortal.library.root}${paths.adminPortal.library.items}`,\n details: `${paths.adminPortal.root}${paths.adminPortal.library.root}${paths.adminPortal.library.items}${paths.withId}`,\n build: `${paths.adminPortal.root}${paths.adminPortal.library.root}${paths.adminPortal.library.items}${paths.adminPortal.library.build}`,\n create: `${paths.adminPortal.root}${paths.adminPortal.library.root}${paths.adminPortal.library.items}${paths.adminPortal.library.build}${paths.adminPortal.library.create}`,\n edit: `${paths.adminPortal.root}${paths.adminPortal.library.root}${paths.adminPortal.library.items}${paths.adminPortal.library.build}${paths.withId}`,\n editAnswerStack: `${paths.adminPortal.root}${paths.adminPortal.library.root}${paths.adminPortal.library.items}${paths.adminPortal.library.build}${paths.adminPortal.library.editAnswerStack}${paths.withId}${paths.withAnswerStackId}`,\n editLink: `${paths.adminPortal.root}${paths.adminPortal.library.root}${paths.adminPortal.library.items}${paths.adminPortal.library.build}`,\n editAnswerStackLink: `${paths.adminPortal.root}${paths.adminPortal.library.root}${paths.adminPortal.library.items}${paths.adminPortal.library.build}${paths.adminPortal.library.editAnswerStack}`,\n },\n programs: {\n root: `${paths.adminPortal.root}${paths.adminPortal.programs.root}`,\n details: `${paths.adminPortal.root}${paths.adminPortal.programs.root}${paths.adminPortal.programs.details}${paths.withProgramId}`,\n detailsLink: `${paths.adminPortal.root}${paths.adminPortal.programs.root}${paths.adminPortal.programs.details}`,\n\n masterInstruments: `${paths.adminPortal.root}${paths.adminPortal.programs.root}${paths.adminPortal.programs.masterInstruments}${paths.withProgramId}`,\n masterInstrumentsLink: `${paths.adminPortal.root}${paths.adminPortal.programs.root}${paths.adminPortal.programs.masterInstruments}`,\n\n reports: `${paths.adminPortal.root}${paths.adminPortal.programs.root}${paths.adminPortal.programs.reports}${paths.withProgramId}`,\n reportsLink: `${paths.adminPortal.root}${paths.adminPortal.programs.root}${paths.adminPortal.programs.reports}`,\n\n exports: `${paths.adminPortal.root}${paths.adminPortal.programs.root}${paths.adminPortal.programs.exports}${paths.withProgramId}`,\n exportsLink: `${paths.adminPortal.root}${paths.adminPortal.programs.root}${paths.adminPortal.programs.exports}`,\n\n class: `${paths.adminPortal.root}${paths.adminPortal.programs.root}${paths.adminPortal.programs.class}${paths.withProgramId}${paths.withClassId}`,\n classLink: `${paths.adminPortal.root}${paths.adminPortal.programs.root}${paths.adminPortal.programs.class}`,\n\n classReports: `${paths.adminPortal.root}${paths.adminPortal.programs.root}${paths.adminPortal.programs.classReports}${paths.withProgramId}${paths.withClassId}`,\n classReportsLink: `${paths.adminPortal.root}${paths.adminPortal.programs.root}${paths.adminPortal.programs.classReports}`,\n\n classExports: `${paths.adminPortal.root}${paths.adminPortal.programs.root}${paths.adminPortal.programs.classExports}${paths.withProgramId}${paths.withClassId}`,\n classExportsLink: `${paths.adminPortal.root}${paths.adminPortal.programs.root}${paths.adminPortal.programs.classExports}`,\n\n classPaperAssessments: `${paths.adminPortal.root}${paths.adminPortal.programs.root}${paths.adminPortal.programs.classPaperAssessments}${paths.withProgramId}${paths.withClassId}`,\n classPaperAssessmentsLink: `${paths.adminPortal.root}${paths.adminPortal.programs.root}${paths.adminPortal.programs.classPaperAssessments}`,\n },\n instruments: {\n all: `${paths.adminPortal.root}${paths.adminPortal.library.root}${paths.adminPortal.library.instruments}`,\n detailsRoot: `${paths.adminPortal.root}${paths.adminPortal.library.root}${paths.adminPortal.library.instruments}`,\n details: `${paths.adminPortal.root}${paths.adminPortal.library.root}${paths.adminPortal.library.instruments}${paths.withId}`,\n build: `${paths.adminPortal.root}${paths.adminPortal.library.root}${paths.adminPortal.library.instruments}${paths.adminPortal.library.build}${paths.withId}`,\n buildLink: `${paths.adminPortal.root}${paths.adminPortal.library.root}${paths.adminPortal.library.instruments}${paths.adminPortal.library.build}`,\n preview: `${paths.adminPortal.root}${paths.adminPortal.library.root}${paths.adminPortal.library.instruments}${paths.adminPortal.library.preview}${paths.withId}`,\n previewWithAnswers: `${paths.adminPortal.root}${paths.adminPortal.library.root}${paths.adminPortal.library.instruments}${paths.adminPortal.library.previewWithAnswers}${paths.withId}`,\n previewLink: `${paths.adminPortal.root}${paths.adminPortal.library.root}${paths.adminPortal.library.instruments}${paths.adminPortal.library.preview}`,\n previewWithAnswersLink: `${paths.adminPortal.root}${paths.adminPortal.library.root}${paths.adminPortal.library.instruments}${paths.adminPortal.library.previewWithAnswers}`,\n printPreview: `${paths.adminPortal.root}${paths.adminPortal.library.root}${paths.adminPortal.library.instruments}${paths.adminPortal.library.printPreview}${paths.withId}`,\n printPreviewLink: `${paths.adminPortal.root}${paths.adminPortal.library.root}${paths.adminPortal.library.instruments}${paths.adminPortal.library.printPreview}`,\n },\n\n itemImport: {\n root: `${paths.adminPortal.root}${paths.adminPortal.itemImport.root}`,\n },\n },\n survey: {\n takerLink: `${paths.survey.root}`,\n taker: `${paths.survey.root}${paths.withProgramId}${paths.withInstrumentId}`,\n },\n surveyGeneral: {\n takerLink: `${paths.surveyGeneral.root}`,\n taker: `${paths.surveyGeneral.root}${paths.withInstrumentId}`,\n },\n fileDownload: {\n download: `${paths.fileDownload.root}${paths.withShortenerUrlId}`,\n downloadLink: `${paths.fileDownload.root}${paths.withShortenerUrlId}`,\n notFound: `${paths.fileDownload.root}${paths.fileDownload.notFound}`,\n },\n fileNotFound: {\n root: `${paths.fileNotFound.root}${paths.fileNotFound.notFound}`,\n },\n error: paths.error,\n noPermission: paths.noPermission,\n authentication: {\n callback: paths.authenticationCallback,\n },\n};\n","export * from './enums';\nexport * from './hoc';\nexport * from './hooks';\nexport * from './store';\nexport * from './utils';\nexport * from './models';\n","export {default as AdminPortal} from './AdminPortal';\nexport * from './components';\nexport * from './integrations';\nexport * from './items-import';\nexport * from './library';\nexport * from './programs';\nexport * from './resources';\nexport * from './upload';\nexport * from './utils';\n","import {Button} from 'components-lib';\nimport {\n AreaAdminRole,\n EducatorRole,\n StaffRole,\n StudentRole,\n SuperAdminRole,\n SuperAndNationalAdminroles,\n USAAdminRole,\n VolunteerRole,\n} from 'enums/admin-roles';\nimport {withRole, AdminRoles, AllRolesWithoutStudent} from 'permissions';\n\n// SuperAdmin\nexport const ButtonPrimaryWithSuperAdminPermissions = withRole(SuperAdminRole, '')(Button.Primary);\nexport const ButtonSecondaryWithSuperAdminPermissions = withRole(SuperAdminRole, '')(Button.Secondary);\n\n// AreaAdmin\nexport const ButtonPrimaryWithAreaAdminPermissions = withRole(AreaAdminRole, '')(Button.Primary);\nexport const ButtonSecondaryWithAreaAdminPermissions = withRole(AreaAdminRole, '')(Button.Secondary);\n\n// USAAdmin\nexport const ButtonPrimaryWithUSAAdminPermissions = withRole(USAAdminRole, '')(Button.Primary);\nexport const ButtonSecondaryWithUSAAdminPermissions = withRole(USAAdminRole, '')(Button.Secondary);\n\n// Staff\nexport const ButtonPrimaryWithStaffPermissions = withRole(StaffRole, '')(Button.Primary);\nexport const ButtonSecondaryWithStaffPermissions = withRole(StaffRole, '')(Button.Secondary);\n\n// Educator\nexport const ButtonPrimaryWithEducatorPermissions = withRole(EducatorRole, '')(Button.Primary);\nexport const ButtonSecondaryWithEducatorPermissions = withRole(EducatorRole, '')(Button.Secondary);\n\n// Volunteer\nexport const ButtonPrimaryWithVolunteerPermissions = withRole(VolunteerRole, '')(Button.Primary);\nexport const ButtonSecondaryWithVolunteerPermissions = withRole(VolunteerRole, '')(Button.Secondary);\n\n// Student\nexport const ButtonPrimaryWithStudentPermissions = withRole(StudentRole, '')(Button.Primary);\nexport const ButtonSecondaryWithStudentPermissions = withRole(StudentRole, '')(Button.Secondary);\n\n// Super, USA Admin and AreaAdmin\nexport const ButtonPrimaryWithAdminRolesPermissions = withRole(AdminRoles, '')(Button.Primary);\nexport const ButtonSecondaryWithAdminRolesPermissions = withRole(AdminRoles, '')(Button.Secondary);\n\n// Super and USA Admin\nexport const ButtonPrimaryWithAdminRolesWitoutAreaPermissions = withRole(\n SuperAndNationalAdminroles,\n ''\n)(Button.Primary);\nexport const ButtonSecondaryWithAdminRolesWitoutAreaPermissions = withRole(\n SuperAndNationalAdminroles,\n ''\n)(Button.Secondary);\n\n// AllRolesWithoutStudent\nexport const ButtonPrimaryWithAllRolesWithoutStudentPermissions = withRole(AllRolesWithoutStudent, '')(Button.Primary);\nexport const ButtonSecondaryWithAllRolesWithoutStudentPermissions = withRole(\n AllRolesWithoutStudent,\n ''\n)(Button.Secondary);\n","import React, {FC} from 'react';\nimport {Button} from 'components-lib';\nimport {withRole, AllRolesWithoutStudent, SuperAdminRole, USAAndSuperAdminRoles} from 'permissions';\nimport {IComponentWithChildren} from 'models';\nimport {IButtonBaseProps} from 'components-lib/buttons_/IButtonBaseProps';\n\ninterface IButtonWithAdminPermissionsProps extends IComponentWithChildren, IButtonBaseProps {\n withPrimary: boolean;\n withSuperAdminRole?: boolean;\n withUSAAndSuperAdminRole?: boolean;\n}\n\nexport const ButtonWithAdminPermissions: FC<IButtonWithAdminPermissionsProps> = ({\n withPrimary = true,\n withSuperAdminRole = false,\n withUSAAndSuperAdminRole = false,\n clickHandler,\n children,\n className,\n size = 'large',\n}) => {\n if (withPrimary) {\n if (withSuperAdminRole) {\n return (\n <ButtonPrimaryWithSuperAdminPermissions className={className} size={size} clickHandler={clickHandler}>\n {children}\n </ButtonPrimaryWithSuperAdminPermissions>\n );\n }\n\n if (withUSAAndSuperAdminRole) {\n return (\n <ButtonPrimaryWithUSAAndSuperAdminPermissions className={className} size={size} clickHandler={clickHandler}>\n {children}\n </ButtonPrimaryWithUSAAndSuperAdminPermissions>\n );\n }\n\n return (\n <ButtonPrimaryWithAdminPermissions className={className} size={size} clickHandler={clickHandler}>\n {children}\n </ButtonPrimaryWithAdminPermissions>\n );\n }\n\n if (!withPrimary && withSuperAdminRole) {\n return (\n <ButtonSecondaryWithSuperAdminPermissions className={className} size={size} clickHandler={clickHandler}>\n {children}\n </ButtonSecondaryWithSuperAdminPermissions>\n );\n }\n\n if (!withPrimary && withUSAAndSuperAdminRole) {\n return (\n <ButtonSecondaryWithUSAAndSuperAdminPermissions className={className} size={size} clickHandler={clickHandler}>\n {children}\n </ButtonSecondaryWithUSAAndSuperAdminPermissions>\n );\n }\n\n return (\n <ButtonSecondaryWithAdminPermissions className={className} size={size} clickHandler={clickHandler}>\n {children}\n </ButtonSecondaryWithAdminPermissions>\n );\n};\n\nexport const ButtonPrimaryWithAdminPermissions = withRole(AllRolesWithoutStudent, '')(Button.Primary);\nexport const ButtonSecondaryWithAdminPermissions = withRole(AllRolesWithoutStudent, '')(Button.Secondary);\nexport const ButtonDropdownWithAdminPermissions = withRole(AllRolesWithoutStudent, '')(Button.Dropdown);\nexport const ButtonPrimaryWithSuperAdminPermissions = withRole(SuperAdminRole, '')(Button.Primary);\nexport const ButtonSecondaryWithSuperAdminPermissions = withRole(SuperAdminRole, '')(Button.Secondary);\nexport const ButtonDropdownWithSuperAdminPermissions = withRole(SuperAdminRole, '')(Button.Dropdown);\n\nexport const ButtonPrimaryWithUSAAndSuperAdminPermissions = withRole(USAAndSuperAdminRoles, '')(Button.Primary);\nexport const ButtonSecondaryWithUSAAndSuperAdminPermissions = withRole(USAAndSuperAdminRoles, '')(Button.Secondary);\nexport const ButtonDropdownWithUSAAndSuperAdminPermissions = withRole(USAAndSuperAdminRoles, '')(Button.Dropdown);\n","import * as Yup from 'yup';\nimport {FormNameEnum} from 'filters-selections/enums';\nimport {RolesEnum} from 'permissions';\nimport {errorMessages} from 'utils';\n\nexport interface IModalUserActivityFormValues {\n [FormNameEnum.from]: Date;\n [FormNameEnum.to]: Date;\n [FormNameEnum.role]: RolesEnum[];\n}\n\nexport const modalUserActivityFormValidationSchema = Yup.object().shape({\n [FormNameEnum.from]: Yup.date().required(errorMessages.requiredWithFieldName('a Date')).nullable().typeError(''),\n /**\n * Type Error option\n * See: https://github.com/jquense/yup/issues/764\n */\n [FormNameEnum.to]: Yup.date().required(errorMessages.requiredWithFieldName('a Date')).nullable().typeError(''),\n [FormNameEnum.role]: Yup.array().of(Yup.number()).required(errorMessages.requiredWithFieldName('a Role')),\n [FormNameEnum.customValidation]: Yup.boolean()\n .test('is-end-date-earlier-than-start-date', 'The start date must be before the end date!', function () {\n /**\n * Dependency: To date cannot be earlier than From date\n */\n\n const {from, to} = this.parent;\n\n function isBefore(startDate: Date, endDate: Date): boolean {\n if (startDate > endDate) {\n return false;\n }\n return true;\n }\n\n if (from instanceof Date && to instanceof Date) {\n return isBefore(from, to);\n }\n })\n .test('has-max-31-days-between-two-dates', 'Please select at most one month period at the time!', function () {\n /**\n * Constraint for From and To fields is to have a maximum of 31 days (one month) between the two dates\n */\n\n const {from, to} = this.parent;\n\n function largeThanOneMonth(startDate: Date, endDate: Date): boolean {\n /**\n * For reference, please see: https://mentormate.atlassian.net/browse/JADF-618\n */\n\n const ONE_MONTH = 1;\n\n const copiedDate = new Date(startDate.getTime());\n const oneMonthAfter = new Date(copiedDate.setMonth(copiedDate.getMonth() + ONE_MONTH));\n const isSameMonth = startDate.getMonth() === endDate.getMonth();\n const isOneMonthDifference = oneMonthAfter.getTime() === endDate.getTime();\n\n if (isOneMonthDifference || isSameMonth) {\n return true;\n }\n\n return false;\n }\n\n if (from instanceof Date && to instanceof Date) {\n return largeThanOneMonth(from, to);\n }\n\n return false;\n }),\n});\n","import React, {FC, useCallback, useMemo} from 'react';\nimport {Form} from 'forms';\nimport {FormNameEnum} from 'filters-selections';\nimport {\n IModalUserActivityFormValues,\n modalUserActivityFormValidationSchema,\n} from './modalUserActivityFormValidationSchema';\nimport {useUserActivity} from 'permissions';\nimport {FormikHelpers} from 'formik';\n\ninterface IModalUserActivityProps {\n setIsOpen: (arg: boolean) => void;\n}\n\nexport const ModalUserActivityForm: FC<IModalUserActivityProps> = ({children, setIsOpen}) => {\n const {getUserActivityExport} = useUserActivity();\n\n const submitHandler = useCallback(\n ({from, to, rolesList}, {resetForm}: FormikHelpers<any>) =>\n getUserActivityExport(from, to, rolesList)\n .then(() => setIsOpen(false))\n .then(() => resetForm()),\n [setIsOpen, getUserActivityExport]\n );\n\n const initialValues = useMemo(\n () => ({\n [FormNameEnum.from]: null,\n [FormNameEnum.to]: null,\n [FormNameEnum.role]: [],\n }),\n []\n );\n\n return (\n <Form.Form<IModalUserActivityFormValues>\n initialValues={initialValues}\n validationSchema={modalUserActivityFormValidationSchema}\n submitHandler={submitHandler}\n >\n {children}\n </Form.Form>\n );\n};\n","import React, {memo, useCallback} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {AdminNavMoreActionsButton, getAdminToolsOptions, ModalUserActivity, UploadManager} from 'admin';\nimport {AdminRoles, AllRolesWithoutStudent, usePermissions, withRole} from 'permissions';\nimport {useModal, useNavigate} from 'hooks';\nimport {pages} from 'paths';\nimport {NavigationLink, Row, Wrapper} from 'components-lib';\nimport {ButtonDropdownWithSuperAdminPermissions} from '../ButtonsWithPermissions/ButtonWithAdminPermissions';\nimport {ModalUserActivityForm} from '../ModalUserActivity/ModalUserActivityForm';\n\nconst AdminNavEnhanced = withRole(AllRolesWithoutStudent, '')(AdminNav);\n\nexport function AdminPortalNavigation() {\n return <AdminNavEnhanced />;\n}\n\nfunction AdminNav() {\n const classes = useStyles();\n const {push} = useNavigate();\n const {hasPermission} = usePermissions();\n const {isOpen: isUserActivityModalOpen, setIsOpen: setIsUserActivityModalOpen} = useModal();\n\n const shouldRenderLibraryLink = hasPermission(AdminRoles);\n\n const handleOpenUserActivityModal = useCallback(() => setIsUserActivityModalOpen(true), [setIsUserActivityModalOpen]);\n const handleIntegrations = useCallback(() => push(pages.adminPortal.integrations.all), [push]);\n const handleImportItems = useCallback(() => push(pages.adminPortal.itemImport.root), [push]);\n const handleLogInAs = useCallback(() => null, []);\n\n const adminToolsOptions = getAdminToolsOptions(\n handleOpenUserActivityModal,\n handleIntegrations,\n handleImportItems,\n handleLogInAs\n );\n\n return (\n <Row justify=\"flex-end\">\n <Row justify=\"flex-end\" align=\"center\">\n <AdminNavMoreActionsButton />\n <Wrapper className={classes.content}>\n <NavigationLink to={pages.adminPortal.resources}>Resources</NavigationLink>\n <NavigationLink to={pages.adminPortal.programs.root}>Programs</NavigationLink>\n {shouldRenderLibraryLink && <NavigationLink to={pages.adminPortal.library}>Library</NavigationLink>}\n </Wrapper>\n <ButtonDropdownWithSuperAdminPermissions items={adminToolsOptions} text=\"Admin tools\" withText />\n <UploadManager />\n </Row>\n <ModalUserActivityForm setIsOpen={setIsUserActivityModalOpen}>\n <ModalUserActivity isOpen={isUserActivityModalOpen} setIsOpen={setIsUserActivityModalOpen} />\n </ModalUserActivityForm>\n </Row>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n content: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n\n [theme.breakpoints.down('sm')]: {\n display: 'none',\n },\n },\n}));\n\nexport default memo(AdminPortalNavigation);\n","import React, {Fragment, useCallback, useMemo, useState} from 'react';\nimport {makeStyles, Menu} from '@material-ui/core';\nimport {Button, Icon, Row, Text} from 'components-lib';\nimport {IComponentWithChildren, IWithDisabled} from 'models';\n\ninterface IDropdownProps extends IComponentWithChildren, IWithDisabled {\n label?: string;\n text: string;\n disabled?: boolean;\n justify?: 'center' | 'flex-start' | 'flex-end' | 'space-between';\n withTextButton?: boolean;\n withSecondaryButton?: boolean;\n withRow?: boolean;\n}\n\nexport function Dropdown({\n children,\n text,\n label,\n disabled = false,\n justify = 'flex-start',\n withTextButton = true,\n withSecondaryButton = false,\n withRow = true,\n}: IDropdownProps) {\n const classes = useStyles();\n const [menuPosition, setMenuPosition] = useState<any>(null);\n\n const buttonClickHandler = useCallback(\n (event: React.MouseEvent) => {\n if (menuPosition) {\n return;\n }\n event.preventDefault();\n setMenuPosition({\n top: event.pageY,\n left: event.pageX,\n });\n },\n [menuPosition]\n );\n\n const itemClickHandler = useCallback(() => {\n setMenuPosition(null);\n }, []);\n\n const dropdownButton = useMemo(\n () => (\n <Fragment>\n {withTextButton && (\n <Button.Text\n disabled={disabled}\n endIcon={<Icon.ExpandIcon color=\"primary\" />}\n clickHandler={buttonClickHandler}\n className={classes.button}\n >\n {text}\n </Button.Text>\n )}\n {withSecondaryButton && (\n <Button.Secondary\n disabled={disabled}\n clickHandler={buttonClickHandler}\n endIcon={<Icon.ExpandIcon color=\"primary\" />}\n >\n {text}\n </Button.Secondary>\n )}\n </Fragment>\n ),\n [classes.button, text, withSecondaryButton, withTextButton, buttonClickHandler, disabled]\n );\n\n const dropdownContent = useMemo(\n () => (\n <Fragment>\n {label && <Text.Caption>{label}</Text.Caption>}\n {dropdownButton}\n </Fragment>\n ),\n [label, dropdownButton]\n );\n\n return (\n <>\n {withRow ? <Row justify={justify}>{dropdownContent}</Row> : dropdownContent}\n <Menu\n open={!!menuPosition}\n onClose={() => setMenuPosition(null)}\n anchorReference=\"anchorPosition\"\n anchorPosition={menuPosition}\n >\n {children(itemClickHandler, menuPosition)}\n </Menu>\n </>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n button: {\n color: theme.palette.common.black,\n padding: 0,\n },\n}));\n","import React from 'react';\nimport {useFormikContext} from 'formik';\nimport {values} from 'utils';\nimport {ErrorBox} from './ErrorBox';\n\nexport function FormErrorBox() {\n const {errors} = useFormikContext();\n const errorMessages = values(errors);\n\n return errorMessages.length ? (\n <ErrorBox errorMessages={errorMessages} defaultMessage=\"One or more fields are required.\" />\n ) : null;\n}\n","import React, {useCallback, useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Button, Column, Icon, Modal, Row, Text, Wrapper} from 'components-lib';\nimport {IWithModal} from 'models';\nimport {splitStringByNewLine} from 'utils/common';\n\ninterface IModalDeleteProps extends IWithModal {\n title?: string;\n text: string;\n cancelButtonText?: string;\n confirmButtonText?: string;\n loading?: boolean;\n withNewLineText?: boolean;\n confirmHandler: () => void;\n}\n\nexport function ModalDelete({\n isOpen,\n setIsOpen,\n confirmHandler,\n text,\n title = 'Delete Item',\n cancelButtonText = 'Cancel',\n confirmButtonText = 'Delete',\n withNewLineText = false,\n loading,\n}: IModalDeleteProps) {\n const classes = useStyles();\n const splittedText = splitStringByNewLine(text);\n\n const newLineText = useMemo(\n () =>\n splittedText.map((paragraph: string, idx: number) => (\n <Text.Paragraph key={`paragraph-${idx}`}>{paragraph}</Text.Paragraph>\n )),\n [splittedText]\n );\n\n const closeHandler = useCallback(() => setIsOpen(false), [setIsOpen]);\n\n const confirmActionHandler = useCallback(() => {\n confirmHandler();\n setIsOpen(false);\n }, [confirmHandler, setIsOpen]);\n\n return (\n <Modal isOpen={isOpen} handleClose={closeHandler} title={title} size=\"medium\">\n <Column>\n <Row align=\"center\" justify=\"center\">\n <Column>\n <Row align=\"center\" justify=\"center\">\n <Icon.TrashIcon className={classes.icon} />\n </Row>\n <Row justify=\"center\">{withNewLineText ? newLineText : <Text.Paragraph>{text}</Text.Paragraph>}</Row>\n </Column>\n </Row>\n </Column>\n <Wrapper>\n <Button.Secondary clickHandler={closeHandler} size=\"small\">\n {cancelButtonText}\n </Button.Secondary>\n <Button.Primary size=\"small\" clickHandler={confirmActionHandler}>\n {loading ? 'Loading...' : confirmButtonText}\n </Button.Primary>\n </Wrapper>\n </Modal>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n icon: {\n marginBottom: theme.spacing(4),\n },\n}));\n","import React, {Fragment, useCallback, useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Button, Column, Icon, Modal, Row, Text, Wrapper} from 'components-lib';\nimport {IWithModal} from 'models';\nimport {Form} from 'forms';\nimport {splitStringByNewLine} from 'utils/common';\n\ninterface IModalUpdateProps extends IWithModal {\n title?: string;\n text: string;\n loading?: boolean;\n withNewLineText?: boolean;\n withSubmitButton?: boolean;\n confirmHandler: () => void;\n}\n\nexport function ModalUpdate({\n isOpen,\n setIsOpen,\n confirmHandler,\n text,\n title = 'Update Item',\n loading,\n withNewLineText,\n withSubmitButton,\n}: IModalUpdateProps) {\n const classes = useStyles();\n const confirmButtonText = loading ? 'Loading...' : 'Update';\n const splittedText = splitStringByNewLine(text);\n\n const newLineText = useMemo(\n () =>\n splittedText.map((paragraph: string, idx: number) => (\n <Text.Paragraph key={`paragraph-${idx}`}>{paragraph}</Text.Paragraph>\n )),\n [splittedText]\n );\n\n const closeHandler = useCallback(() => setIsOpen(false), [setIsOpen]);\n\n const confirmActionHandler = useCallback(() => {\n confirmHandler();\n setIsOpen(false);\n }, [confirmHandler, setIsOpen]);\n\n return (\n <Modal isOpen={isOpen} handleClose={closeHandler} title={title} size=\"medium\">\n <Column>\n <Row align=\"center\" justify=\"center\">\n <Icon.SettingsIcon className={classes.icon} />\n <Fragment>{withNewLineText ? newLineText : <Text.Paragraph>{text}</Text.Paragraph>}</Fragment>\n </Row>\n </Column>\n <Wrapper>\n <Button.Secondary clickHandler={closeHandler} size=\"small\">\n Cancel\n </Button.Secondary>\n {withSubmitButton ? (\n <Form.ButtonSubmit text={confirmButtonText} size=\"small\" />\n ) : (\n <Button.Primary size=\"small\" clickHandler={confirmActionHandler}>\n {confirmButtonText}\n </Button.Primary>\n )}\n </Wrapper>\n </Modal>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n icon: {\n marginBottom: theme.spacing(4),\n },\n}));\n","import React, {FC, ReactNode, useCallback} from 'react';\nimport {IWithModal} from 'models';\nimport {Button, Column, Modal, Row, Text, Wrapper} from 'components-lib';\nimport {Form} from 'forms';\ninterface IModalUploadProps extends IWithModal {\n title?: string;\n text?: string;\n loading?: boolean;\n content?: ReactNode;\n withSubmitButton?: boolean;\n buttonsSize?: 'small' | 'large';\n disableSubmit?: boolean;\n disableBackdropClick?: boolean;\n confirmHandler: () => void;\n closeHandler?: () => void;\n}\n\nexport const ModalUpload: FC<IModalUploadProps> = ({\n isOpen,\n loading,\n withSubmitButton,\n content,\n text,\n title = 'Upload Resource',\n buttonsSize = 'small',\n disableSubmit = false,\n disableBackdropClick,\n confirmHandler,\n closeHandler,\n}) => {\n const confirmButtonText = loading ? 'Loading...' : 'Upload';\n\n const confirmActionHandler = useCallback(() => confirmHandler(), [confirmHandler]);\n\n return (\n <Modal\n isOpen={isOpen}\n handleClose={closeHandler}\n title={title}\n size=\"medium\"\n disableBackdropClick={disableBackdropClick}\n >\n <Column>\n {text && (\n <Row align=\"center\" justify=\"center\">\n <Text.Paragraph>{text}</Text.Paragraph>\n </Row>\n )}\n {content && content}\n </Column>\n <Wrapper>\n <Button.Secondary clickHandler={closeHandler} size={buttonsSize}>\n Cancel\n </Button.Secondary>\n {withSubmitButton ? (\n <Form.ButtonSubmit text={confirmButtonText} size={buttonsSize} />\n ) : (\n <Button.Primary disabled={disableSubmit} size={buttonsSize} clickHandler={confirmActionHandler}>\n {confirmButtonText}\n </Button.Primary>\n )}\n </Wrapper>\n </Modal>\n );\n};\n","import React, {useCallback, useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {useBeforeunload} from 'react-beforeunload';\nimport {Prompt} from 'react-router-dom';\nimport {Form} from 'forms';\nimport {Button, Column, Modal, Row, Text} from 'components-lib';\nimport {IWithModal} from 'models';\nimport {FormNameEnum, SelectionEnum, SelectionListItems} from 'filters-selections';\nimport {useUserActivity} from 'permissions';\nimport {useFormikContext} from 'formik';\nimport {useDebounce} from 'hooks';\nimport {exportUserActivityMessages} from 'admin/utils';\n\ninterface IModalUserActivityProps extends IWithModal {\n title?: string;\n}\n\nexport function ModalUserActivity({isOpen, setIsOpen, title = 'Export User Login Data'}: IModalUserActivityProps) {\n const classes = useStyles();\n const {exporting} = useUserActivity();\n const {resetForm, errors, dirty} = useFormikContext();\n const debouncedReset = useDebounce(() => resetForm());\n\n useBeforeunload(() => {\n if (exporting || dirty) {\n return exportUserActivityMessages.warning;\n }\n });\n\n const datePickerErrors = errors[FormNameEnum.customValidation];\n\n const closeHandler = useCallback(() => {\n setIsOpen(false);\n debouncedReset();\n }, [debouncedReset, setIsOpen]);\n\n const renderFromDatepicker = useMemo(\n () => <SelectionListItems list={firstColList} className={classes.datepicker} withMargin={false} />,\n [classes.datepicker]\n );\n\n const renderToDatepicker = useMemo(\n () => <SelectionListItems list={secondColList} className={classes.datepicker} withMargin={false} />,\n [classes.datepicker]\n );\n\n const DatePickers = useMemo(\n () => () => (\n <div className={classes.datePickersContainer}>\n {renderFromDatepicker}\n {renderToDatepicker}\n </div>\n ),\n [classes, renderToDatepicker, renderFromDatepicker]\n );\n\n const RoleList = useMemo(\n () => () => {\n return <SelectionListItems list={roleList} withFullWidth />;\n },\n []\n );\n\n return (\n <Modal isOpen={isOpen} handleClose={closeHandler} title={title} size=\"medium\" disableBackdropClick>\n <Column>\n <Row align=\"center\" classes={{root: classes.content}}>\n <DatePickers />\n {datePickerErrors && (\n <Row justify=\"flex-start\" align=\"flex-start\">\n <Text.Error>{datePickerErrors}</Text.Error>\n </Row>\n )}\n <RoleList />\n </Row>\n <Prompt when={exporting} message={exportUserActivityMessages.warning} />\n </Column>\n <div>\n <Button.Secondary clickHandler={closeHandler} size=\"small\">\n Cancel\n </Button.Secondary>\n <Form.ButtonSubmit text={exporting ? 'Loading...' : 'Export'} size=\"small\" disabled={exporting} />\n </div>\n </Modal>\n );\n}\n\nconst firstColList = [SelectionEnum.FromDatePicker];\nconst secondColList = [SelectionEnum.ToDatePicker];\nconst roleList = [SelectionEnum.Role];\n\nconst useStyles = makeStyles((theme) => ({\n content: {\n padding: `${theme.spacing(2)} ${theme.spacing(3)}`,\n },\n datePickersContainer: {\n display: 'flex',\n justifyContent: 'space-between',\n flexDirection: 'row',\n },\n datepicker: {\n marginRight: theme.spacing(3),\n },\n}));\n","import {makeStyles} from '@material-ui/core';\nimport {Bullet, Row, Text} from 'components-lib';\nimport moment from 'moment';\nimport React, {useMemo} from 'react';\n\nconst format = 'MMM Do, YYYY';\n\n// TODO required\ninterface ISidebarAuthorProps {\n author?: string;\n date?: string;\n creatorArea?: string;\n questionType?: string;\n}\nexport function SidebarAuthor({author = '', date = '', creatorArea = '', questionType = ''}: ISidebarAuthorProps) {\n const classes = useStyles();\n const dateFormatted = useMemo(() => {\n return date ? moment(date).format(format) : '';\n }, [date]);\n\n return (\n <>\n {author && (\n <Row justify=\"flex-start\">\n <Bullet className={classes.details} />\n <Text.Paragraph variant=\"body1\">\n Author: {author} {creatorArea && <span>({creatorArea})</span>}\n </Text.Paragraph>\n </Row>\n )}\n {dateFormatted && (\n <Row justify=\"flex-start\">\n <Bullet className={classes.details} />\n <Text.Paragraph variant=\"body1\">{dateFormatted}</Text.Paragraph>\n </Row>\n )}\n {questionType && (\n <Row justify=\"flex-start\">\n <Bullet className={classes.details} />\n <Text.Paragraph variant=\"body1\">{questionType}</Text.Paragraph>\n </Row>\n )}\n </>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n details: {\n marginLeft: theme.spacing(3),\n },\n}));\n","import {makeStyles} from '@material-ui/core';\nimport {Row} from 'components-lib';\nimport React from 'react';\nimport {Link} from 'react-router-dom';\n\ninterface ISidebarLinkProps {\n to: string;\n text: string;\n}\n\nexport function SidebarLink({to, text}: ISidebarLinkProps) {\n const classes = useStyles();\n return (\n <Row justify=\"flex-start\">\n <Link to={to} className={classes.link}>\n {text}\n </Link>\n </Row>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n link: {\n color: theme.palette.primary.main,\n },\n}));\n","import {Row, Tag} from 'components-lib';\nimport React from 'react';\n\ninterface ISidebarTagProps {\n text: string;\n}\n\nexport function SidebarTag({text}: ISidebarTagProps) {\n return (\n <Row justify=\"flex-start\">\n <Tag label={text} color=\"default\" />\n </Row>\n );\n}\n","import React from 'react';\nimport {SidebarTag} from '../SidebarTag/SidebarTag';\n\ninterface ISidebarTagWithValueProps {\n tag: string;\n text: string;\n}\n\nexport function SidebarTagWithValue({tag, text}: ISidebarTagWithValueProps) {\n return text ? <SidebarTag text={`${tag}: ${text}`} /> : null;\n}\n","import {makeStyles} from '@material-ui/core';\nimport {Text} from 'components-lib';\nimport React from 'react';\n\ninterface ISidebarTitleProps {\n text: string;\n}\n\nexport function SidebarTitle({text}: ISidebarTitleProps) {\n const classes = useStyles();\n return (\n <Text.Heading as=\"h4\" classes={{root: classes.titles}}>\n {text}\n </Text.Heading>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n titles: {\n marginBottom: theme.spacing(3),\n },\n}));\n","import React from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Text} from 'components-lib';\nimport {IComponentWithChildren} from 'models';\ninterface ISubtitlePageViewHeaderProps extends IComponentWithChildren {\n as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n color?: 'primary' | 'secondary' | 'textPrimary' | 'error';\n withMargin?: boolean;\n withColor?: boolean;\n}\n\nexport function SubtitlePageViewHeader({\n children,\n color,\n withColor = true,\n withMargin = true,\n as = 'h4',\n}: ISubtitlePageViewHeaderProps) {\n const classes = useStyles({withColor, withMargin});\n return (\n <Text.Heading as={as} color={color} classes={{root: classes.subheading}}>\n {children}\n </Text.Heading>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n subheading: ({withColor, withMargin}: Pick<ISubtitlePageViewHeaderProps, 'withColor' | 'withMargin'>) => {\n let styles: any = {\n color: theme.palette.grey[700],\n\n '@media screen and (max-width: 1200px)': {\n maxWidth: 400,\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n },\n\n '@media screen and (max-width: 1000px)': {\n maxWidth: 300,\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n },\n };\n\n if (withMargin) {\n styles = {...styles, marginLeft: theme.spacing(2), marginRight: theme.spacing(2)};\n }\n\n if (!withColor) {\n styles = {...styles, color: theme.palette.grey[900]};\n }\n\n return styles;\n },\n}));\n","import React, {FC, Fragment} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Label, Text, Wrapper} from 'components-lib';\nimport {IQuestionAnswerStackMetadataValue} from 'models/library/instruments/IQuestionAnswerStack';\n\ninterface IStackFilterProps {\n label: string;\n text?: string;\n list?: IQuestionAnswerStackMetadataValue[];\n isSelected?: boolean;\n withBottomMargin?: boolean;\n}\n\nexport const StackFilter: FC<IStackFilterProps> = ({\n label,\n text,\n list = null,\n isSelected = false,\n withBottomMargin = false,\n}) => {\n const classes = useStyles({isSelected, withBottomMargin});\n\n if (list) {\n return (\n <Wrapper className={classes.container}>\n <Label label={label} className={classes.label} withFontBold withMarginBottom={false} withLeftMargin={false} />\n {list.map((stackFilter, idx: number) => {\n return (\n <Fragment key={idx}>\n {stackFilter?.isSelected ? (\n <StackFilterParagraph text={stackFilter.name} color=\"secondary\" />\n ) : (\n <StackFilterParagraph text={stackFilter.name} withMainColor />\n )}\n </Fragment>\n );\n })}\n {!list.length && <StackFilterParagraph text={'-'} withMainColor />}\n </Wrapper>\n );\n }\n\n return (\n <Wrapper className={classes.container}>\n <Label label={label} className={classes.label} withFontBold withMarginBottom={false} withLeftMargin={false} />\n {isSelected ? (\n <StackFilterParagraph text={text} color=\"secondary\" />\n ) : (\n <StackFilterParagraph text={text} withMainColor />\n )}\n </Wrapper>\n );\n};\n\ninterface IStackFilterParagraphProps {\n text: string;\n withMainColor?: boolean;\n color?: 'primary' | 'secondary' | 'textPrimary' | 'error';\n}\n\nconst StackFilterParagraph: FC<IStackFilterParagraphProps> = ({text, withMainColor = false, color = 'textPrimary'}) => {\n if (withMainColor) {\n return <Text.Paragraph color={color}>{text}</Text.Paragraph>;\n }\n\n return <Text.Paragraph color={color}>{text}</Text.Paragraph>;\n};\n\ntype TStyleProps = Pick<IStackFilterProps, 'isSelected'> & {\n isSelected: boolean;\n withBottomMargin: boolean;\n};\n\nconst useStyles = makeStyles((theme) => ({\n container: ({withBottomMargin}: any) => {\n let containerStyles: any = {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n };\n\n if (withBottomMargin) {\n containerStyles = {...containerStyles, marginBottom: theme.spacing(3)};\n }\n\n return containerStyles;\n },\n label: ({isSelected}: TStyleProps) => {\n let labelStyles: any = {color: theme.palette.grey[700], fontWeight: 'bold'};\n\n if (isSelected) {\n labelStyles = {...labelStyles, color: theme.palette.secondary.main};\n }\n return labelStyles;\n },\n}));\n","import React, {forwardRef, ReactNode} from 'react';\nimport {MenuItem as MUIMenuItem} from '@material-ui/core';\n\ninterface IMenuItemProps {\n clickHandlerCallback: () => void;\n children: ReactNode;\n}\n\nexport const MenuItem = forwardRef(({clickHandlerCallback, children}: IMenuItemProps, ref: any) => {\n return (\n <MUIMenuItem ref={ref} onClick={() => clickHandlerCallback()}>\n {children}\n </MUIMenuItem>\n );\n});\n\nMenuItem.displayName = 'MenuItem';\n","import React from 'react';\nimport {Wrapper} from 'components-lib';\nimport {MenuItem} from '../MenuItem/MenuItem';\n\nexport const MenuItemList = ({itemClickHandler, handleItemClick, getMenuItemsList}) => {\n const list = getMenuItemsList(itemClickHandler, handleItemClick);\n return (\n <Wrapper>\n {list.map(({clickHandler, name}: any, index: number) => (\n <MenuItem key={index} clickHandlerCallback={clickHandler}>\n {name}\n </MenuItem>\n ))}\n </Wrapper>\n );\n};\n","import React, {FC} from 'react';\nimport {MenuItemList} from './MenuItemList';\nimport {Dropdown} from 'admin/components';\n\ninterface ISortByDropdownProps {\n label: string;\n handleItemClick: (sortOrder: any) => any;\n getMenuItemsList: any;\n sortOrder?: any;\n map?: any;\n justify?: 'center' | 'flex-start' | 'flex-end' | 'space-between';\n}\n\nexport const SortByDropdown: FC<ISortByDropdownProps> = ({\n label,\n handleItemClick,\n getMenuItemsList,\n sortOrder,\n map,\n justify,\n}) => {\n const dropdownText = map[sortOrder.order][sortOrder.sort];\n\n return (\n <Dropdown text={dropdownText} label={label} justify={justify}>\n {(itemClickHandler: () => void) => (\n <MenuItemList\n itemClickHandler={itemClickHandler}\n handleItemClick={handleItemClick}\n getMenuItemsList={getMenuItemsList}\n />\n )}\n </Dropdown>\n );\n};\n","import React, {FC, Fragment, ReactNode, useMemo} from 'react';\nimport {ActiveStepEnum} from 'enums/common';\n\ninterface IActiveStepPageProps {\n activeStep: ActiveStepEnum;\n pageLayoutFirst: ReactNode;\n pageLayoutSecond: ReactNode;\n pageLayoutThird: ReactNode;\n}\n\nexport const ActiveStepPage: FC<IActiveStepPageProps> = ({\n activeStep,\n pageLayoutFirst,\n pageLayoutSecond,\n pageLayoutThird,\n}) => {\n const renderActiveStep = useMemo(() => {\n const steps = {\n [ActiveStepEnum.First]: pageLayoutFirst,\n [ActiveStepEnum.Second]: pageLayoutSecond,\n [ActiveStepEnum.Third]: pageLayoutThird,\n };\n\n return steps[activeStep];\n }, [activeStep, pageLayoutFirst, pageLayoutSecond, pageLayoutThird]);\n\n return <Fragment>{renderActiveStep}</Fragment>;\n};\n","import React, {FC, useCallback} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Wrapper} from 'components-lib';\nimport {ActiveHeader} from '../ActiveHeader/ActiveHeader';\n\ninterface INavigationProgressBarProps {\n isFirstStep: boolean;\n isSecondStep: boolean;\n isThirdStep: boolean;\n stepOneText: string;\n stepTwoText: string;\n stepThreeText: string;\n}\n\nexport const NavigationProgressBar: FC<INavigationProgressBarProps> = ({\n isFirstStep,\n isSecondStep,\n isThirdStep,\n stepOneText,\n stepTwoText,\n stepThreeText,\n}) => {\n const classes = useStyles();\n const addSpacingToText = useCallback((text: string) => `\\u00a0 ${text} \\u00a0`, []);\n\n const stepOne = addSpacingToText(stepOneText);\n const stepTwo = addSpacingToText(stepTwoText);\n const stepThree = addSpacingToText(stepThreeText);\n\n return (\n <Wrapper className={classes.progressBar}>\n {'\\u00a0 /'}\n <ActiveHeader isActive={isFirstStep}>{stepOne}</ActiveHeader>\n {'/'}\n <ActiveHeader isActive={isSecondStep}>{stepTwo}</ActiveHeader>\n {'/'}\n <ActiveHeader isActive={isThirdStep}>{stepThree}</ActiveHeader>\n </Wrapper>\n );\n};\n\nconst useStyles = makeStyles(() => ({\n progressBar: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'center',\n alignItems: 'center',\n },\n}));\n","import React, {FC, ReactNode} from 'react';\nimport {SubtitlePageViewHeader} from 'admin/components';\nimport {Row} from 'components-lib';\ninterface ISubtitleProps {\n title: string;\n withColor: boolean;\n withMargin?: boolean;\n as: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n color: 'primary' | 'secondary' | 'textPrimary' | 'error';\n actions?: ReactNode;\n}\n\nexport const Subtitle: FC<ISubtitleProps> = ({withColor, withMargin, as, color, title, actions}) => {\n return (\n <SubtitlePageViewHeader withColor={withColor} withMargin={withMargin} as={as} color={color}>\n <Row justify=\"space-between\">\n {title}\n {actions && actions}\n </Row>\n </SubtitlePageViewHeader>\n );\n};\n","import React, {FC, memo, useMemo} from 'react';\nimport {AttachmentArea, FileUploader} from 'components-lib';\nimport {IWithDisabled} from 'models/common';\nimport {useDragAndDrop} from 'hooks';\ninterface IVerticalPositionedProps extends IWithDisabled {\n name: string;\n loading: boolean;\n accept?: string;\n deleteCallback?: () => void;\n fileRef?: any;\n}\n\nconst VerticalPositioned: FC<IVerticalPositionedProps> = ({name, loading, accept, disabled, deleteCallback}) => {\n const {\n file,\n error,\n fileInputRef,\n addFileClickHandler,\n deleteClickHandler,\n openFileDialogClickHandler,\n } = useDragAndDrop(name, deleteCallback);\n\n const attachmentArea = useMemo(\n () => <AttachmentArea file={file} error={error} loading={loading} deleteCallback={deleteClickHandler} />,\n [error, loading, deleteClickHandler, file]\n );\n\n return (\n <FileUploader.Vertical\n accept={accept}\n file={file}\n error={error}\n disabled={disabled}\n attachmentArea={attachmentArea}\n fileInputName={name}\n fileInputRef={fileInputRef}\n addFileCallback={addFileClickHandler}\n openFileDialogClickHandler={openFileDialogClickHandler}\n />\n );\n};\n\nexport default memo(VerticalPositioned);\n","import React, {FC, useMemo} from 'react';\nimport {AttachmentArea, FileUploader} from 'components-lib';\nimport {IWithDisabled} from 'models/common';\nimport {useDragAndDrop} from 'hooks';\ninterface IHorizontalPositionedProps extends IWithDisabled {\n title?: string;\n loading?: boolean;\n name: string;\n accept?: string;\n withOnlyBrowseButton?: boolean;\n deleteCallback?: () => void;\n}\n\nexport const HorizontalPositioned: FC<IHorizontalPositionedProps> = ({\n name,\n accept,\n loading,\n deleteCallback,\n title,\n disabled,\n withOnlyBrowseButton,\n}) => {\n const {\n file,\n error,\n fileInputRef,\n addFileClickHandler,\n deleteClickHandler,\n openFileDialogClickHandler,\n } = useDragAndDrop(name, deleteCallback);\n\n const attachmentArea = useMemo(\n () => <AttachmentArea file={file} loading={loading} deleteCallback={deleteClickHandler} />,\n [loading, deleteClickHandler, file]\n );\n\n return (\n <FileUploader.Horizontal\n accept={accept}\n file={file}\n error={error}\n disabled={disabled}\n attachmentArea={attachmentArea}\n fileInputName={name}\n fileInputRef={fileInputRef}\n addFileCallback={addFileClickHandler}\n openFileDialogClickHandler={openFileDialogClickHandler}\n title={title}\n withOnlyBrowseButton={withOnlyBrowseButton}\n />\n );\n};\n","import React, {FC, useMemo} from 'react';\nimport {AttachmentArea, FileUploader} from 'components-lib';\nimport {IWithDisabled} from 'models';\nimport {useDragAndDrop} from 'hooks';\n\ninterface IBrowseButtonProps extends IWithDisabled {\n name: string;\n accept?: string;\n withOnlyBrowseButton?: boolean;\n loading?: boolean;\n}\n\nexport const BrowseButton: FC<IBrowseButtonProps> = ({name, accept, disabled, loading, withOnlyBrowseButton}) => {\n const {\n file,\n error,\n fileInputRef,\n addFileClickHandler,\n deleteClickHandler,\n openFileDialogClickHandler,\n } = useDragAndDrop(name);\n\n const attachmentArea = useMemo(\n () => <AttachmentArea file={file} error={error} loading={loading} deleteCallback={deleteClickHandler} />,\n [error, loading, deleteClickHandler, file]\n );\n\n return (\n <FileUploader.Horizontal\n disabled={disabled}\n title=\"\"\n text=\"\"\n align=\"flex-start\"\n buttonSize=\"small\"\n browseButtonText=\"Reupload\"\n withIcon={false}\n attachmentArea={attachmentArea}\n fileInputName={name}\n accept={accept}\n file={file}\n fileInputRef={fileInputRef}\n error={error}\n withOnlyBrowseButton={withOnlyBrowseButton}\n addFileCallback={addFileClickHandler}\n openFileDialogClickHandler={openFileDialogClickHandler}\n />\n );\n};\n","import React, {FC} from 'react';\nimport VerticalPositioned from './VerticalPositioned/VerticalPositioned';\nimport {HorizontalPositioned} from './HorizontalPositioned/HorizontalPositioned';\nimport {BrowseButton} from './BrowseButton/BrowseButton';\nimport {IntegrationCertificateEnum} from 'admin/integrations/enums';\nimport {IWithDisabled} from 'models/common';\ninterface IUploadSingleFileProps extends IWithDisabled {\n position: 'vertical' | 'horizontal';\n name: string;\n contextName?: string;\n loading: boolean;\n accept?: string;\n title?: string;\n withOnlyBrowseButton?: boolean;\n deleteCallback?: () => void;\n}\n\nexport const UploadSingleFile: FC<IUploadSingleFileProps> = ({\n position = 'vertical',\n title,\n name,\n loading,\n accept = IntegrationCertificateEnum.P12,\n disabled,\n withOnlyBrowseButton = false,\n deleteCallback,\n}) => {\n const isPositionVertical = position === 'vertical';\n\n if (isPositionVertical) {\n return (\n <VerticalPositioned\n name={name}\n loading={loading}\n accept={accept}\n disabled={disabled}\n deleteCallback={deleteCallback}\n />\n );\n }\n\n if (!isPositionVertical && withOnlyBrowseButton) {\n return (\n <BrowseButton\n disabled={disabled}\n loading={loading}\n name={name}\n accept={accept}\n withOnlyBrowseButton={withOnlyBrowseButton}\n />\n );\n }\n\n return (\n <HorizontalPositioned\n disabled={disabled}\n title={title}\n name={name}\n accept={accept}\n loading={loading}\n deleteCallback={deleteCallback}\n withOnlyBrowseButton={withOnlyBrowseButton}\n />\n );\n};\n","import React, {FC, useCallback, DragEvent, SyntheticEvent} from 'react';\nimport {useFormikContext} from 'formik';\nimport {IWithChildren} from 'models/common';\nimport {DraggableArea} from 'components-lib';\n\ninterface IUploadDraggableAreaProps extends IWithChildren {\n name: string;\n}\n\nexport const UploadDraggableArea: FC<IUploadDraggableAreaProps> = ({children, name}) => {\n const {setFieldValue, setFieldTouched} = useFormikContext();\n\n const handleFileDrop = useCallback(\n (event: DragEvent<HTMLDivElement>) => {\n event.stopPropagation();\n event.preventDefault();\n\n const newFile = event.dataTransfer.files[0];\n setFieldValue(name, newFile);\n setFieldTouched(name, true, true);\n },\n [setFieldValue, name, setFieldTouched]\n );\n\n const handleDragOver = useCallback((event: SyntheticEvent) => {\n event.stopPropagation();\n event.preventDefault();\n }, []);\n\n return (\n <DraggableArea onDrop={handleFileDrop} onDragOver={handleDragOver}>\n {children}\n </DraggableArea>\n );\n};\n","import React from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Button, Wrapper} from 'components-lib';\nimport {useMainNavigation} from 'hooks';\n\ninterface IAdminNavDropdowns {\n text: string;\n clickHandler: () => void;\n}\n\nexport const AdminNavMoreActionsButton = () => {\n const classes = useStyles();\n const {redirectToResources, redirectToPrograms, redirectToLibrary} = useMainNavigation();\n\n const dropdownItems: IAdminNavDropdowns[] = [\n {\n text: 'Resources',\n clickHandler: () => redirectToResources(),\n },\n {\n text: 'Programs',\n clickHandler: () => redirectToPrograms(),\n },\n {\n text: 'Library',\n clickHandler: () => redirectToLibrary(),\n },\n ];\n\n return (\n <Wrapper className={classes.menuIconContainer}>\n <Button.Dropdown items={dropdownItems} hideOnResize={true} />\n </Wrapper>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n menuIconContainer: {\n paddingRight: theme.spacing(1) + theme.spacing(4),\n\n [theme.breakpoints.up('sm')]: {\n display: 'none',\n },\n [theme.breakpoints.down('sm')]: {\n display: 'flex',\n },\n },\n}));\n","import {createSelector} from '@reduxjs/toolkit';\nimport {TStateStore} from 'store';\nimport {values} from 'utils';\n\nconst getPrograms = (state: TStateStore) => state.filtersSelections.programs;\nexport const programsEntitiesSelector = createSelector(getPrograms, (programs) => programs.entities.programs);\nexport const programsEntitiesCollectionSelector = createSelector(getPrograms, (programs) => {\n return values(programs.entities.programs);\n});\n\nconst getSchoolNames = (state: TStateStore) => state.filtersSelections.schoolNames;\nexport const schoolNamesEntitiesSelector = createSelector(\n getSchoolNames,\n (schoolNames) => schoolNames.entities.schoolNames\n);\nexport const schoolNamesEntitiesCollectionSelector = createSelector(getSchoolNames, (schoolNames) => {\n return values(schoolNames.entities.schoolNames);\n});\nexport const getLoadingStateSchoolNames = (state: TStateStore) => state.filtersSelections.selection.loadingSchoolNames;\n\nconst getResources = (state: TStateStore) => state.filtersSelections.resources;\nexport const resourcesEntitiesSelector = createSelector(getResources, (resources) => resources.entities.resources);\nexport const resourcesEntitiesCollectionSelector = createSelector(getResources, (resources) => {\n return values(resources.entities.resources);\n});\nexport const loadingStateResources = (state: TStateStore) => state.filtersSelections.selection.loadingResources;\n\nconst getResourcesBase = (state: TStateStore) => state.filtersSelections.resourcesBase;\nexport const resourcesBaseEntitiesSelector = createSelector(\n getResourcesBase,\n (resourcesBase) => resourcesBase.entities.resourcesBase\n);\nexport const resourcesBaseEntitiesCollectionSelector = createSelector(getResourcesBase, (resourcesBase) => {\n return values(resourcesBase.entities.resourcesBase);\n});\n\nconst getResourcesConcatenatedBase = (state: TStateStore) => state.filtersSelections.resourcesConcatenatedBase;\nexport const resourcesConcatenatedBaseEntitiesSelector = createSelector(\n getResourcesConcatenatedBase,\n (resourcesConcatenatedBase) => resourcesConcatenatedBase.entities.resourcesConcatenatedBase\n);\nexport const resourcesConcatenatedBaseEntitiesCollectionSelector = createSelector(\n getResourcesConcatenatedBase,\n (resourcesConcatenatedBase) => {\n return values(resourcesConcatenatedBase.entities.resourcesConcatenatedBase);\n }\n);\n\nconst getInstruments = (state: TStateStore) => state.filtersSelections.instruments;\nexport const instrumentsEntitiesSelector = createSelector(\n getInstruments,\n (instruments) => instruments.entities.instruments\n);\nexport const instrumentsEntitiesCollectionSelector = createSelector(getInstruments, (instruments) => {\n return values(instruments.entities.instruments);\n});\nexport const loadingStateInstruments = (state: TStateStore) => state.filtersSelections.selection.loadingInstruments;\n\nconst getInitialMappedInstruments = (state: TStateStore) => state.filtersSelections.initialMappedInstruments;\nexport const initialMappedInstrumentsCollectionSelector = createSelector(\n getInitialMappedInstruments,\n (initialMappedInstruments) => initialMappedInstruments\n);\n\nconst getInstrumentsBase = (state: TStateStore) => state.filtersSelections.instrumentsBase;\nexport const instrumentsBaseEntitiesSelector = createSelector(\n getInstrumentsBase,\n (instrumentsBase) => instrumentsBase.entities.instrumentsBase\n);\nexport const instrumentsBaseEntitiesCollectionSelector = createSelector(getInstrumentsBase, (instrumentsBase) => {\n return values(instrumentsBase.entities.instrumentsBase);\n});\n\nconst getInstrumentsConcatenatedBase = (state: TStateStore) => state.filtersSelections.instrumentsConcatenatedBase;\nexport const instrumentsConcatenatedBaseEntitiesSelector = createSelector(\n getInstrumentsConcatenatedBase,\n (instrumentsConcatenatedBase) => instrumentsConcatenatedBase.entities.instrumentsConcatenatedBase\n);\nexport const instrumentsConcatenatedBaseEntitiesCollectionSelector = createSelector(\n getInstrumentsConcatenatedBase,\n (instrumentsConcatenatedBase) => {\n return values(instrumentsConcatenatedBase.entities.instrumentsConcatenatedBase);\n }\n);\n\nconst getFiltersYears = (state: TStateStore) => state.filtersSelections.years;\nexport const filtersYearsSelector = createSelector(getFiltersYears, (years) => years);\nexport const filtersYearsEntitiesSelector = createSelector(filtersYearsSelector, (years) => years.entities.years);\nexport const filtersYearsEntitiesCollectionSelector = createSelector(getFiltersYears, (years) => {\n return values(years.entities.years);\n});\n\nconst getFiltersFutureYears = (state: TStateStore) => state.filtersSelections.futureYears;\nexport const filtersFutureYearsSelector = createSelector(getFiltersFutureYears, (futureYears) => futureYears);\nexport const filtersFutureYearsEntitiesSelector = createSelector(\n filtersFutureYearsSelector,\n (futureYears) => futureYears.entities.futureYears\n);\nexport const filtersFutureYearsEntitiesCollectionSelector = createSelector(getFiltersFutureYears, (futureYears) => {\n return values(futureYears.entities.futureYears);\n});\n\nconst getFiltersGradeLevels = (state: TStateStore) => state.filtersSelections.gradeLevels;\nexport const filtersGradeLevelsEntitiesSelector = createSelector(\n getFiltersGradeLevels,\n (gradeLevels) => gradeLevels.entities.gradeLevels\n);\nexport const filtersGradeLevelsEntitiesCollectionSelector = createSelector(getFiltersGradeLevels, (gradeLevels) => {\n return values(gradeLevels.entities.gradeLevels);\n});\n\nexport const filtersEntitiesSelector = createSelector(\n [programsEntitiesSelector, filtersYearsSelector, filtersGradeLevelsEntitiesSelector],\n (programs, years, gradeLevels) => {\n return {programs, years, gradeLevels};\n }\n);\n\nexport const filtersEntitiesCollectionSelector = createSelector(\n [\n programsEntitiesCollectionSelector,\n filtersYearsEntitiesCollectionSelector,\n filtersGradeLevelsEntitiesCollectionSelector,\n ],\n (programs, years, gradeLevels) => {\n return {programs, years, gradeLevels};\n }\n);\n\nconst getFiltersAreas = (state: TStateStore) => state.filtersSelections.areas;\nexport const filtersAreasSelector = createSelector(getFiltersAreas, (areas) => areas);\nexport const filtersAreasEntitiesSelector = createSelector(getFiltersAreas, (areas) => areas.entities.areas);\nexport const filtersAreasEntitiesCollectionSelector = createSelector(getFiltersAreas, (areas) => {\n return values(areas.entities.areas);\n});\n\nconst getFiltersEducators = (state: TStateStore) => state.filtersSelections.educators;\nexport const filtersEducatorsEntitiesSelector = createSelector(\n getFiltersEducators,\n (educators) => educators.entities.educators\n);\nexport const filtersEducatorsEntitiesCollectionSelector = createSelector(getFiltersEducators, (educators) => {\n return educators.entities.educators ? values(educators.entities.educators) : [];\n});\n\nconst getFiltersPeriod = (state: TStateStore) => state.filtersSelections.period;\nexport const filtersPeriodSelector = createSelector(getFiltersPeriod, (period) => period);\n\nconst getFiltersSchools = (state: TStateStore) => state.filtersSelections.schools;\nexport const filtersSchoolsEntitiesCollectionSelector = createSelector(getFiltersSchools, (schools) => {\n return schools.entities.schools ? values(schools.entities.schools) : [];\n});\n\nconst getFiltersDistricts = (state: TStateStore) => state.filtersSelections.districts;\nexport const filtersDistrictsSelector = createSelector(getFiltersDistricts, (districts) => districts);\n\nexport const filtersClassEntitiesCollectionSelector = createSelector(\n [\n filtersAreasEntitiesCollectionSelector,\n filtersEducatorsEntitiesCollectionSelector,\n schoolNamesEntitiesCollectionSelector,\n filtersDistrictsSelector,\n filtersYearsEntitiesCollectionSelector,\n ],\n (areas, educators, schoolNames, districts, programYears) => {\n return {areas, educators, schoolNames, districts, programYears};\n }\n);\n\nexport const filtersClassEntitiesSelector = createSelector(\n [\n filtersAreasEntitiesSelector,\n filtersEducatorsEntitiesSelector,\n schoolNamesEntitiesSelector,\n filtersDistrictsSelector,\n filtersYearsEntitiesSelector,\n ],\n (areas, educators, schoolNames, districts, programYears) => {\n return {areas, educators, schoolNames, districts, programYears};\n }\n);\n\nconst getFiltersAudiences = (state: TStateStore) => state.filtersSelections.audiences;\nexport const filtersAudiencesEntitiesSelector = createSelector(\n getFiltersAudiences,\n (audiences) => audiences.entities.audiences\n);\nexport const filtersAudiencesEntitiesCollectionSelector = createSelector(getFiltersAudiences, (audiences) => {\n return values(audiences.entities.audiences);\n});\n\nconst getFiltersPhases = (state: TStateStore) => state.filtersSelections.phases;\nexport const filtersPhasesEntitiesSelector = createSelector(getFiltersPhases, (phases) => phases.entities.phases);\nexport const filtersPhasesEntitiesCollectionSelector = createSelector(getFiltersPhases, (phases) => {\n return values(phases.entities.phases);\n});\n\nexport const filtersMasterInstrumentsEntitiesSelector = createSelector(\n [filtersAudiencesEntitiesSelector, filtersPhasesEntitiesSelector],\n (audiences, phases) => {\n return {audiences, phases};\n }\n);\n\nconst getFiltersInstrumentTypes = (state: TStateStore) => state.filtersSelections.instrumentTypes;\nexport const filtersInstrumentTypesEntitiesSelector = createSelector(\n getFiltersInstrumentTypes,\n (instrumentTypes) => instrumentTypes.entities.instrumentTypes\n);\nexport const filtersInstrumentTypesEntitiesCollectionSelector = createSelector(\n getFiltersInstrumentTypes,\n (instrumentTypes) => {\n return values(instrumentTypes.entities.instrumentTypes);\n }\n);\n\nconst getFiltersInstrumentMainTypes = (state: TStateStore) => state.filtersSelections.instrumentMainTypes;\nexport const filtersInstrumentMainTypesEntitiesSelector = createSelector(\n getFiltersInstrumentMainTypes,\n (instrumentMainTypes) => instrumentMainTypes.entities.instrumentMainTypes\n);\nexport const filtersInstrumentMainTypesEntitiesCollectionSelector = createSelector(\n getFiltersInstrumentMainTypes,\n (instrumentMainTypes) => {\n return values(instrumentMainTypes.entities.instrumentMainTypes);\n }\n);\n\nconst getFiltersInstrumentStatuses = (state: TStateStore) => state.filtersSelections.instrumentStatuses;\nexport const filtersInstrumentStatusesEntitiesSelector = createSelector(\n getFiltersInstrumentStatuses,\n (instrumentStatuses) => instrumentStatuses.entities.instrumentStatuses\n);\nexport const filtersInstrumentStatusesEntitiesCollectionSelector = createSelector(\n getFiltersInstrumentStatuses,\n (instrumentStatuses) => {\n return values(instrumentStatuses.entities.instrumentStatuses);\n }\n);\n\nconst getPillars = (state: TStateStore) => state.filtersSelections.pillars;\nexport const pillarsEntitiesSelector = createSelector(getPillars, (pillars) => pillars.entities.pillars);\nexport const pillarsEntitiesCollectionSelector = createSelector(getPillars, (pillars) => {\n return values(pillars.entities.pillars);\n});\n\nconst getFiltersDomains = (state: TStateStore) => state.filtersSelections.domains;\nexport const filtersDomainsEntitiesSelector = createSelector(getFiltersDomains, (domains) => domains.entities.domains);\nexport const filtersDomainsEntitiesCollectionSelector = createSelector(getFiltersDomains, (domains) => {\n return values(domains.entities.domains);\n});\n\nconst getFiltersEvaluationType = (state: TStateStore) => state.filtersSelections.evaluationTypes;\nexport const filtersEvaluationTypeEntitiesSelector = createSelector(\n getFiltersEvaluationType,\n (evaluationTypes) => evaluationTypes.entities.evaluationTypes\n);\nexport const filtersEvaluationTypeEntitiesCollectionSelector = createSelector(\n getFiltersEvaluationType,\n (evaluationTypes) => {\n return values(evaluationTypes.entities.evaluationTypes);\n }\n);\n\nconst getFiltersCompetencies = (state: TStateStore) => state.filtersSelections.competencies;\nexport const filtersCompetenciesEntitiesSelector = createSelector(\n getFiltersCompetencies,\n (competencies) => competencies.entities.competencies\n);\nexport const filtersCompetenciesEntitiesCollectionSelector = createSelector(getFiltersCompetencies, (competencies) => {\n return values(competencies.entities.competencies);\n});\n\nconst getFiltersConcepts = (state: TStateStore) => state.filtersSelections.concepts;\nexport const filtersConceptsEntitiesSelector = createSelector(\n getFiltersConcepts,\n (concepts) => concepts.entities.concepts\n);\nexport const filtersConceptsEntitiesCollectionSelector = createSelector(getFiltersConcepts, (concepts) => {\n return values(concepts.entities.concepts);\n});\n\nconst getDigitalResourcesFiltersConcepts = (state: TStateStore) => state.filtersSelections.digitalResourcesConcepts;\nexport const DigitalResourcesFiltersConceptsSelector = createSelector(\n getDigitalResourcesFiltersConcepts,\n (concept) => concept\n);\n\nconst getFiltersKeyTerms = (state: TStateStore) => state.filtersSelections.keyTerms;\nexport const KeyTermsSelector = createSelector(getFiltersKeyTerms, (keyTerm) => keyTerm);\n\nconst getFiltersLearningObjectives = (state: TStateStore) => state.filtersSelections.learningObjectives;\nexport const LearningObjectivesSelector = createSelector(getFiltersLearningObjectives, (objective) => objective);\n\nconst getFiltersAdministrations = (state: TStateStore) => state.filtersSelections.administrations;\nexport const filtersAdministrationsEntitiesSelector = createSelector(\n getFiltersAdministrations,\n (administrations) => administrations.entities.administrations\n);\nexport const filtersAdministrationsEntitiesCollectionSelector = createSelector(\n getFiltersAdministrations,\n (administrations) => {\n return values(administrations.entities.administrations);\n }\n);\n\nconst getFiltersSchoolLevels = (state: TStateStore) => state.filtersSelections.schoolLevel;\nexport const filtersSchoolLevelsEntitiesSelector = createSelector(\n getFiltersSchoolLevels,\n (schoolLevel) => schoolLevel.entities.schoolLevel\n);\nexport const filtersSchoolLevelsEntitiesCollectionSelector = createSelector(getFiltersSchoolLevels, (schoolLevel) => {\n return values(schoolLevel.entities.schoolLevel);\n});\n\nconst getFiltersItemTypes = (state: TStateStore) => state.filtersSelections.itemTypes;\nexport const filtersItemTypesEntitiesSelector = createSelector(\n getFiltersItemTypes,\n (itemTypes) => itemTypes.entities.itemTypes\n);\nexport const filtersItemTypesEntitiesCollectionSelector = createSelector(getFiltersItemTypes, (itemTypes) => {\n return values(itemTypes.entities.itemTypes);\n});\n\nconst getFiltersItemStatuses = (state: TStateStore) => state.filtersSelections.itemStatuses;\nexport const filtersItemStatusesEntitiesSelector = createSelector(\n getFiltersItemStatuses,\n (itemStatuses) => itemStatuses.entities.itemStatuses\n);\nexport const filtersItemStatusesEntitiesCollectionSelector = createSelector(getFiltersItemStatuses, (itemStatuses) => {\n return values(itemStatuses.entities.itemStatuses);\n});\n\nconst getFiltersSessions = (state: TStateStore) => state.filtersSelections.sessions;\nexport const filtersSessionsEntitiesSelector = createSelector(\n getFiltersSessions,\n (sessions) => sessions.entities.sessions\n);\nexport const filtersSessionsEntitiesCollectionSelector = createSelector(getFiltersSessions, (sessions) => {\n return values(sessions.entities.sessions);\n});\n\nconst getFiltersTagGradeLevels = (state: TStateStore) => state.filtersSelections.tagGradeLevels;\nexport const filtersTagGradeLevelsEntitiesSelector = createSelector(\n getFiltersTagGradeLevels,\n (tagGradeLevels) => tagGradeLevels.entities.tagGradeLevels\n);\nexport const filtersTagGradeLevelsEntitiesCollectionSelector = createSelector(\n getFiltersTagGradeLevels,\n (tagGradeLevels) => {\n return values(tagGradeLevels.entities.tagGradeLevels);\n }\n);\n\nconst getFiltersSkillsAndBehaviors = (state: TStateStore) => state.filtersSelections.skillsAndBehaviors;\nexport const filtersSkillsAndBehaviorsEntitiesSelector = createSelector(\n getFiltersSkillsAndBehaviors,\n (skillsAndBehaviors) => skillsAndBehaviors.entities.skillsAndBehaviors\n);\nexport const filtersSkillsAndBehaviorsEntitiesCollectionSelector = createSelector(\n getFiltersSkillsAndBehaviors,\n (skillsAndBehaviors) => {\n return values(skillsAndBehaviors.entities.skillsAndBehaviors);\n }\n);\n\nconst getFiltersLanguages = (state: TStateStore) => state.filtersSelections.languages;\nexport const filtersLanguagesEntitiesSelector = createSelector(\n getFiltersLanguages,\n (languages) => languages.entities.languages\n);\nexport const filtersLanguagesEntitiesCollectionSelector = createSelector(getFiltersLanguages, (languages) => {\n return values(languages.entities.languages);\n});\n\nconst getFiltersDefaultKeyTerms = (state: TStateStore) => state.filtersSelections.defaultKeyTerms;\nexport const filtersKeyTermsEntitiesSelector = createSelector(\n getFiltersDefaultKeyTerms,\n (keyTerms) => keyTerms.entities.keyTerms\n);\nexport const filtersDefaultKeyTermsEntitiesCollectionSelector = createSelector(\n getFiltersDefaultKeyTerms,\n (keyTerms) => {\n return values(keyTerms.entities.keyTerms);\n }\n);\n\nconst getDigitalResourceTypes = (state: TStateStore) => state.filtersSelections.digitalResourceTypes;\nexport const filtersDigitalResourceTypesSelector = createSelector(\n getDigitalResourceTypes,\n (digitalResourceTypes) => digitalResourceTypes.entities.digitalResourceTypes\n);\nexport const filtersDigitalResourceTypesEntitiesCollectionSelector = createSelector(\n getDigitalResourceTypes,\n (digitalResourceTypes) => {\n return values(digitalResourceTypes.entities.digitalResourceTypes);\n }\n);\n\nconst getUploadFileTypes = (state: TStateStore) => state.filtersSelections.uploadFileTypes;\nexport const filtersUploadFileTypesSelector = createSelector(\n getUploadFileTypes,\n (uploadFileTypes) => uploadFileTypes.entities.uploadFileTypes\n);\nexport const filtersUploadFileTypesEntitiesCollectionSelector = createSelector(\n getUploadFileTypes,\n (uploadFileTypes) => {\n return values(uploadFileTypes.entities.uploadFileTypes);\n }\n);\n\nconst getIntegrationTypes = (state: TStateStore) => state.filtersSelections.integrationTypes;\nexport const filterIntegrationTypesEntitiesSelector = createSelector(\n getIntegrationTypes,\n (integrationTypes) => integrationTypes.entities.integrationTypes\n);\nexport const filterIntegrationTypesEntitiesCollectionSelector = createSelector(\n getIntegrationTypes,\n (integrationTypes) => {\n return values(integrationTypes.entities.integrationTypes);\n }\n);\n\nconst getAccessibleToStudents = (state: TStateStore) => state.filtersSelections.accessibleToStudents;\nexport const filterAccessibleToStudentsEntitiesSelector = createSelector(\n getAccessibleToStudents,\n (accessibleToStudents) => accessibleToStudents.entities.accessibleToStudents\n);\nexport const filterAccessibleToStudentsEntitiesCollectionSelector = createSelector(\n getAccessibleToStudents,\n (accessibleToStudents) => {\n return values(accessibleToStudents.entities.accessibleToStudents) ?? [];\n }\n);\n\nconst getPublishedBy = (state: TStateStore) => state.filtersSelections.publishedBy;\nexport const filterPublishedByEntitiesSelector = createSelector(\n getPublishedBy,\n (publishedBy) => publishedBy.entities.publishedBy\n);\nexport const filterPublishedByEntitiesCollectionSelector = createSelector(getPublishedBy, (publishedBy) => {\n return values(publishedBy.entities.publishedBy) ?? [];\n});\n\nconst getFileTypes = (state: TStateStore) => state.filtersSelections.fileTypes;\nexport const filterFileTypesEntitiesSelector = createSelector(\n getFileTypes,\n (fileTypes) => fileTypes.entities.fileTypes\n);\nexport const filterFileTypesEntitiesCollectionSelector = createSelector(getFileTypes, (fileTypes) => {\n return values(fileTypes.entities.fileTypes) ?? [];\n});\n\nconst getIntegrationStatuses = (state: TStateStore) => state.filtersSelections.integrationStatuses;\nexport const filterIntegrationStatusesEntitiesSelector = createSelector(\n getIntegrationStatuses,\n (integrationStatuses) => integrationStatuses.entities.integrationStatuses\n);\nexport const filterIntegrationStatusesEntitiesCollectionSelector = createSelector(\n getIntegrationStatuses,\n (integrationStatuses) => {\n return values(integrationStatuses.entities.integrationStatuses);\n }\n);\n\nconst getSchoolDistricts = (state: TStateStore) => state.filtersSelections.schoolDistricts;\nexport const schoolDistrictsEntitiesSelector = createSelector(\n getSchoolDistricts,\n (schoolDistricts) => schoolDistricts.entities.schoolDistricts\n);\nexport const schoolDistrictsEntitiesCollectionSelector = createSelector(getSchoolDistricts, (schoolDistricts) => {\n return values(schoolDistricts.entities.schoolDistricts);\n});\nexport const loadingStateDistricts = (state: TStateStore) => state.filtersSelections.selection.loadingDistricts;\n\nconst getFiltersLearningPathStatuses = (state: TStateStore) => state.filtersSelections.learningPathStatuses;\nexport const filtersLearningPathStatusesSelector = createSelector(\n getFiltersLearningPathStatuses,\n (learningPathStatuses) => learningPathStatuses\n);\nexport const filtersLearningPathStatusesEntitiesSelector = createSelector(\n filtersLearningPathStatusesSelector,\n (learningPathStatuses) => learningPathStatuses.entities.learningPathStatuses\n);\nexport const filtersLearningPathStatusesEntitiesCollectionSelector = createSelector(\n getFiltersLearningPathStatuses,\n (learningPathStatuses) => {\n return values(learningPathStatuses.entities.learningPathStatuses);\n }\n);\n\nconst getFiltersFileStatuses = (state: TStateStore) => state.filtersSelections.fileStatuses;\nexport const filtersFileStatusesSelector = createSelector(getFiltersFileStatuses, (fileStatuses) => fileStatuses);\nexport const filtersFileStatusesEntitiesSelector = createSelector(\n filtersFileStatusesSelector,\n (fileStatuses) => fileStatuses.entities.fileStatuses\n);\nexport const filtersFileStatusesEntitiesCollectionSelector = createSelector(getFiltersFileStatuses, (fileStatuses) => {\n return values(fileStatuses.entities.fileStatuses);\n});\n\nexport const filtersProgramClassInstrumentsEntitiesSelector = createSelector(\n [\n filtersAudiencesEntitiesSelector,\n filtersPhasesEntitiesSelector,\n filtersInstrumentTypesEntitiesSelector,\n filtersInstrumentStatusesEntitiesSelector,\n pillarsEntitiesSelector,\n ],\n (audiences, phases, types, statuses, pillars) => {\n return {audiences, phases, types, statuses, pillars};\n }\n);\n\nexport const itemFiltersEntitiesSelector = createSelector(\n [\n pillarsEntitiesSelector,\n filtersEvaluationTypeEntitiesSelector,\n filtersDomainsEntitiesSelector,\n programsEntitiesSelector,\n filtersCompetenciesEntitiesSelector,\n filtersConceptsEntitiesSelector,\n filtersAdministrationsEntitiesSelector,\n filtersSchoolLevelsEntitiesSelector,\n filtersItemTypesEntitiesSelector,\n filtersItemStatusesEntitiesSelector,\n filtersAreasEntitiesSelector,\n ],\n (\n pillars,\n evaluationTypes,\n domains,\n programs,\n competencies,\n concepts,\n administrations,\n schoolLevels,\n itemTypes,\n itemStatuses,\n areas\n ) => {\n return {\n pillars,\n evaluationTypes,\n domains,\n programs,\n competencies,\n concepts,\n administrations,\n schoolLevels,\n itemTypes,\n itemStatuses,\n areas,\n };\n }\n);\n\nexport const instrumentsFiltersEntitiesSelector = createSelector(\n [\n pillarsEntitiesSelector,\n programsEntitiesSelector,\n filtersInstrumentTypesEntitiesSelector,\n filtersInstrumentStatusesEntitiesSelector,\n filtersAudiencesEntitiesSelector,\n filtersPhasesEntitiesSelector,\n ],\n (pillars, programs, types, statuses, audiences, phases) => ({\n pillars,\n programs,\n types,\n statuses,\n audiences,\n phases,\n })\n);\n\nexport const instrumentsBuilderFiltersEntitiesSelector = createSelector(\n [\n pillarsEntitiesSelector,\n filtersAreasEntitiesSelector,\n filtersEvaluationTypeEntitiesSelector,\n filtersDomainsEntitiesSelector,\n programsEntitiesSelector,\n filtersCompetenciesEntitiesSelector,\n filtersConceptsEntitiesSelector,\n filtersAdministrationsEntitiesSelector,\n filtersSchoolLevelsEntitiesSelector,\n ],\n (pillars, areas, evaluationType, domain, programs, competency, concept, administration, schoolLevel) => ({\n pillars,\n areas,\n evaluationType,\n domain,\n programs,\n competency,\n concept,\n administration,\n schoolLevel,\n })\n);\n\nexport const integrationFiltersEntitiesSelector = createSelector(\n [\n filterIntegrationTypesEntitiesSelector,\n filterIntegrationStatusesEntitiesSelector,\n schoolNamesEntitiesSelector,\n schoolDistrictsEntitiesSelector,\n filtersAreasEntitiesSelector,\n ],\n (integrationTypes, integrationStatuses, schoolNames, schoolDistricts, areas) => ({\n integrationTypes,\n integrationStatuses,\n schoolNames,\n schoolDistricts,\n areas,\n })\n);\n\nexport const filesAllFiltersEntitiesSelector = createSelector(\n [\n filterFileTypesEntitiesSelector,\n programsEntitiesSelector,\n filtersTagGradeLevelsEntitiesSelector,\n pillarsEntitiesSelector,\n filtersCompetenciesEntitiesSelector,\n filtersConceptsEntitiesSelector,\n filterAccessibleToStudentsEntitiesSelector,\n filterPublishedByEntitiesSelector,\n filtersLanguagesEntitiesSelector,\n filtersFileStatusesEntitiesSelector,\n ],\n (\n fileTypes,\n programs,\n gradeLevels,\n pillars,\n competencies,\n knowledgeSkillsAndAbilities,\n accessibleToStudents,\n publishedBy,\n languages,\n fileStatuses\n ) => ({\n fileTypes,\n programs,\n gradeLevels,\n pillars,\n competencies,\n knowledgeSkillsAndAbilities,\n accessibleToStudents,\n publishedBy,\n languages,\n fileStatuses,\n })\n);\n\nexport const learningPathsAllFiltersEntitiesSelector = createSelector(\n [\n pillarsEntitiesSelector,\n programsEntitiesSelector,\n filtersTagGradeLevelsEntitiesSelector,\n filtersLanguagesEntitiesSelector,\n filtersYearsEntitiesSelector,\n filtersLearningPathStatusesEntitiesSelector,\n ],\n (pillars, programs, gradeLevels, languages, programYears, learningPathStatuses) => ({\n pillars,\n programs,\n gradeLevels,\n languages,\n programYears,\n learningPathStatuses,\n })\n);\n","export enum FormNameEnum {\n file = 'file',\n isAccessibleToStudents = 'isAccessibleToStudents',\n hasUploadPermissions = 'hasUploadPermissions',\n displayName = 'displayName',\n keyTerms = 'keyTerms',\n programs = 'programs',\n sessions = 'sessions',\n pillars = 'pillars',\n competencies = 'competencies',\n gradeLevels = 'gradeLevels',\n skillsAndBehaviors = 'skillsAndBehaviors',\n languages = 'languages',\n briefDescription = 'briefDescription',\n learningObjectives = 'learningObjectives',\n accessExpirationDate = 'accessExpirationDate',\n fileType = 'fileType',\n knowledgeSkillsAndAbilities = 'knowledgeSkillsAndAbilities',\n shouldDisableFileType = 'shouldDisableFileType',\n webLink = 'webLink',\n time = 'time',\n expirationDate = 'expirationDate',\n}\n","export enum UploadFormLabelEnum {\n DisplayName = 'Display Name',\n GradeLevel = 'Grade Level',\n Program = 'Program',\n Pillar = 'Pillar',\n KnowledgeSkillsAndAbilities = 'Knowledge, Skills and Abilities',\n Time = 'Time',\n KeyTerms = 'Key Terms',\n BriefDescription = 'Brief Description',\n Competency = 'Competency',\n Language = 'Language',\n Languages = 'Languages',\n AccessExpirationDate = 'Access Expiration Date',\n LearningObjectives = 'Learning Objectives',\n AccessibleToStudents = 'Accessible to Students',\n File = 'File',\n FileType = 'File Type',\n WebLink = 'Web Link',\n}\n","export enum UploadTypeEnum {\n Scorm = 'scorm',\n File = 'file',\n WebLink = 'webLink',\n}\n","export enum InstrumentsFilterNamesEnum {\n SEARCH_BY_NAME = 'name',\n SEARCH = 'search',\n PILLARS = 'pillars',\n PHASES = 'phases',\n PROGRAMS = 'programs',\n TYPES = 'types',\n STATUSES = 'statuses',\n AUDIENCES = 'audiences',\n AREAS = 'areas',\n SORT_BY = 'sortBy',\n ORDER_BY = 'orderBy',\n INSTRUMENT_VIEW_TYPE = 'isGeneralTemplate',\n PILLAR = 'pillar',\n EVALUATION_TYPE = 'evaluationType',\n DOMAIN = 'domain',\n LEARNING_OBJECTIVE = 'learningObjective',\n CATEGORY = 'category',\n COMPETENCY = 'competency',\n CONCEPT = 'concept',\n ADMINISTRATION = 'administration',\n SCHOOL_LEVEL = 'schoolLevel',\n TEXT = 'text',\n}\n","export enum InstrumentsOrderingEnum {\n Name = 'Name',\n Created = 'DateCreated',\n}\n","export enum InstrumentsFormNameEnum {\n headerLogo = 'headerLogo',\n footerLogo = 'footerLogo',\n}\n","export enum InstrumentStatusNamesEnum {\n DRAFT = 'Draft',\n PUBLISHED = 'Published',\n LIVE = 'Live',\n}\n","export enum InstrumentDropdownNameEnum {\n NAME_ASC = 'Name: A-Z',\n NAME_DESC = 'Name: Z-A',\n CREATED_NEWEST = 'Created: Newest First',\n CREATED_OLDEST = 'Created: Oldest First',\n}\n","export enum InstrumentTypeEnum {\n PreProgramSurvey = 100,\n PostProgramSurvey = 200,\n PreSessionSurvey = 300,\n PostSessionSurvey = 400,\n Feedback = 500,\n}\n","import {RolesEnum} from 'permissions';\n\nexport const AdminRolesInstruments = [RolesEnum.SuperAdmin, RolesEnum.USAAdmin];\nexport const AdminRolesWithLocalAreaInstruments = [RolesEnum.SuperAdmin, RolesEnum.USAAdmin, RolesEnum.AreaAdmin];\nexport const AllRolesExceptStudent = [\n RolesEnum.SuperAdmin,\n RolesEnum.USAAdmin,\n RolesEnum.AreaAdmin,\n RolesEnum.Educator,\n RolesEnum.Staff,\n RolesEnum.Volunteer,\n];\n","export enum ItemSortingEnum {\n Name = 't.Name',\n Created = 't.DateCreated',\n}\n","export enum ItemStatusEnum {\n PUBLISHED = 1,\n DRAFT = 0,\n}\n","export enum ItemStatusNamesEnum {\n PUBLISHED = 'Published',\n DRAFT = 'Draft',\n}\n","export enum ItemQuestionAnswersTypeEnum {\n singleSelectAnswerEnum = 10,\n matrixMultiSelectAnswerEnum = 20,\n matrixHeaderAnswerEnum = 30,\n dropdownAnswerEnum = 40,\n ratingAnswerEnum = 50, // ranking\n openEndedAnswerEnum = 60,\n}\n","import {RolesEnum} from 'permissions';\n\nexport const AdminRolesItems = [RolesEnum.SuperAdmin, RolesEnum.USAAdmin, RolesEnum.AreaAdmin];\nexport const AdminRolesItemsWithoutArea = [RolesEnum.SuperAdmin, RolesEnum.USAAdmin];\nexport const AdminWithStaffRolesItems = [\n RolesEnum.SuperAdmin,\n RolesEnum.USAAdmin,\n RolesEnum.AreaAdmin,\n RolesEnum.Staff,\n];\nexport const SuperAdminRolesItems = [RolesEnum.SuperAdmin];\n","export const InstrumentViewTypeEnum = ['Master', 'General'];\n","export enum ItemsOrderingEnum {\n Name = 'Text',\n Created = 'DateCreated',\n}\n","export enum ActiveModeEnum {\n view = 'view',\n edit = 'edit',\n create = 'create',\n build = 'build',\n}\n","export enum DigitalResourcesOrderingEnum {\n Name = 'Name',\n Created = 'Created',\n}\n","export enum DigitalResourceDropdownNameEnum {\n NAME_ASC = 'Name: A-Z',\n NAME_DESC = 'Name: Z-A',\n CREATED_NEWEST = 'Created: Newest First',\n CREATED_OLDEST = 'Created: Oldest First',\n}\n","export enum FilesOrderingAllEnum {\n Name = 'Name',\n Created = 'Created',\n}\n","export enum FilesAllFilterNamesEnum {\n SEARCH_BY_QUERY = 'query',\n FILE_TYPES = 'fileTypes',\n PROGRAMS = 'programs',\n GRADE_LEVELS = 'gradeLevels',\n PILLARS = 'pillars',\n COMPETENCIES = 'competencies',\n KSAS = 'knowledgeSkillsAndAbilities',\n IS_ACCESSIBLE_TO_STUDENTS = 'isAccessibleToStudents',\n PUBLISHED_BY = 'publishedBy',\n LANGUAGES = 'languages',\n FILE_STATUSES = 'fileStatuses',\n}\n","export enum FileAllTableColumnsEnum {\n Name = 'name',\n Type = 'type',\n UserName = 'username',\n Status = 'status',\n}\n","export * from './instruments.selectors';\nexport * from './instruments.slice';\nexport * from './thunks';\nexport * from './IInstrumentsStoreState';\n","export * from './components';\nexport * from './config';\n","export * from './components';\nexport * from './store';\nexport * from './upload';\n\nexport {Resources} from './Resources';\n","export enum LearningPathsAllFilterNamesEnum {\n SEARCH_BY_QUERY = 'query',\n PROGRAMS = 'programs',\n PROGRAM_YEARS = 'programYears',\n GRADE_LEVELS = 'gradeLevels',\n PILLARS = 'pillars',\n LANGUAGES = 'languages',\n LEARNING_PATH_STATUSES = 'learningPathStatuses',\n}\n","export enum LearningPathsOrderingAllEnum {\n Name = 'Name',\n Created = 'Created',\n ProgramYear = 'ProgramYear',\n}\n","export enum LearningPathsDropdownNameEnum {\n NAME_ASC = 'Name: A-Z',\n NAME_DESC = 'Name: Z-A',\n CREATED_NEWEST = 'Created: Newest First',\n CREATED_OLDEST = 'Created: Oldest First',\n PROGRAM_YEAR_NEWEST = 'Program Year: Newest First',\n PROGRAM_YEAR_OLDEST = 'Program Year: Oldest First',\n}\n","export enum LearningPathDropdownEnum {\n Export = 'Export',\n Clone = 'Clone',\n}\n","export const columns: any[] = [\n {id: 'name', label: 'Integration Name'},\n {id: 'integrationType', label: 'Integration Type'},\n {id: 'area', label: 'Area'},\n {id: 'districtName', label: 'School District'},\n {id: 'schoolName', label: 'School Name'},\n {id: 'status', label: 'Status'},\n {id: 'actions', label: ''},\n];\n","import {FiltersEnum} from 'filters-selections';\n\nexport const integrationFilterList = [\n FiltersEnum.IntegrationTypeSingle,\n FiltersEnum.IntegrationStatusMulti,\n FiltersEnum.AreasMultiAutocompleteExternalData,\n FiltersEnum.SchoolDistrictMulti,\n FiltersEnum.SchoolNameBasedOnAreaAndDistrict,\n];\n","import {FiltersEnum} from 'filters-selections';\nimport {IntegrationsFilterNamesEnum} from '../../../enums/IntegrationsFilterNames.enum';\n\nexport const integrationFilterToFilterNameMap = {\n [FiltersEnum.IntegrationTypeSingle]: IntegrationsFilterNamesEnum.INTEGRATION_TYPE,\n [FiltersEnum.IntegrationStatusMulti]: IntegrationsFilterNamesEnum.INTEGRATION_STATUSES,\n [FiltersEnum.AreasMultiAutocompleteExternalData]: IntegrationsFilterNamesEnum.AREAS,\n [FiltersEnum.SchoolNameBasedOnAreaAndDistrict]: IntegrationsFilterNamesEnum.SCHOOL_NAMES,\n [FiltersEnum.SchoolDistrictMulti]: IntegrationsFilterNamesEnum.SCHOOL_DISTRICTS,\n};\n","import {SortingOrderEnum} from 'enums';\nimport {IntegrationDropdownNameEnum, IntegrationsOrderingEnum} from 'admin/integrations';\nimport {IIntegrationsAllSortOrder} from 'models';\n\nexport const getMenuItemsList = (\n itemClickHandler: () => void,\n handleItemClick: (handleItemSortObj: IIntegrationsAllSortOrder) => void\n) => {\n const onClick = (\n itemClickHandler: () => void,\n handleItemClick: (handleItemSortObj: IIntegrationsAllSortOrder) => void,\n handleItemSortObj: IIntegrationsAllSortOrder\n ) => {\n return () => {\n itemClickHandler();\n handleItemClick(handleItemSortObj);\n };\n };\n\n return [\n {\n name: IntegrationDropdownNameEnum.NAME_ASC,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: IntegrationsOrderingEnum.Name,\n sort: SortingOrderEnum.ASC,\n }),\n },\n {\n name: IntegrationDropdownNameEnum.NAME_DESC,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: IntegrationsOrderingEnum.Name,\n sort: SortingOrderEnum.DESC,\n }),\n },\n {\n name: IntegrationDropdownNameEnum.CREATED_NEWEST,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: IntegrationsOrderingEnum.Created,\n sort: SortingOrderEnum.DESC,\n }),\n },\n {\n name: IntegrationDropdownNameEnum.CREATED_OLDEST,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: IntegrationsOrderingEnum.Created,\n sort: SortingOrderEnum.ASC,\n }),\n },\n ];\n};\n","import {SortingOrderEnum} from 'enums';\nimport {IntegrationsOrderingEnum} from '../../../enums';\n\nexport const integrationsOrderingMap = {\n [IntegrationsOrderingEnum.Name]: {\n [SortingOrderEnum.ASC]: 'Name: A-Z',\n [SortingOrderEnum.DESC]: 'Name: Z-A',\n },\n [IntegrationsOrderingEnum.Created]: {\n [SortingOrderEnum.ASC]: 'Created: Oldest First',\n [SortingOrderEnum.DESC]: 'Created: Newest First',\n },\n};\n","import * as Yup from 'yup';\nimport {IntegrationsFilterNamesEnum} from 'admin';\n\nexport interface IIntegrationsAllFiltersFormValues {\n [IntegrationsFilterNamesEnum.INTEGRATION_TYPE]: number;\n [IntegrationsFilterNamesEnum.INTEGRATION_STATUSES]: number[];\n [IntegrationsFilterNamesEnum.AREAS]: number[];\n [IntegrationsFilterNamesEnum.SCHOOL_NAMES]: number[];\n [IntegrationsFilterNamesEnum.SCHOOL_DISTRICTS]: number[];\n [IntegrationsFilterNamesEnum.SEARCH_BY_NAME]: string;\n [IntegrationsFilterNamesEnum.SCHOOL_NAME_QUERY]?: string;\n}\n\nexport const integrationsAllValidationSchema = Yup.object().shape({});\n","import React, {FC, useCallback, useMemo} from 'react';\nimport {useDispatch} from 'react-redux';\nimport {Form} from 'forms';\nimport {Filters} from 'components-lib';\nimport {FiltersList} from 'filters-selections';\nimport {integrationFilterList} from '../../utils';\nimport {IntegrationsFilterNamesEnum, useIntegrations} from 'admin';\nimport {integrationsActions as actions} from '../../../store/integrations.slice';\nimport {IIntegratiosAllFilter} from 'models';\nimport {IIntegrationsAllFiltersFormValues, integrationsAllValidationSchema} from './config';\n\nexport const SidebarIntegrationsAll: FC = () => {\n const dispatch = useDispatch();\n const {filter, pageLoading} = useIntegrations();\n\n const initialValues: IIntegrationsAllFiltersFormValues = useMemo(\n () => ({\n [IntegrationsFilterNamesEnum.INTEGRATION_TYPE]: filter[IntegrationsFilterNamesEnum.INTEGRATION_TYPE],\n [IntegrationsFilterNamesEnum.INTEGRATION_STATUSES]: filter[IntegrationsFilterNamesEnum.INTEGRATION_STATUSES],\n [IntegrationsFilterNamesEnum.AREAS]: filter[IntegrationsFilterNamesEnum.AREAS],\n [IntegrationsFilterNamesEnum.SCHOOL_NAMES]: filter[IntegrationsFilterNamesEnum.SCHOOL_NAMES],\n [IntegrationsFilterNamesEnum.SCHOOL_DISTRICTS]: filter[IntegrationsFilterNamesEnum.SCHOOL_DISTRICTS],\n [IntegrationsFilterNamesEnum.SEARCH_BY_NAME]: filter[IntegrationsFilterNamesEnum.SEARCH_BY_NAME],\n }),\n [filter]\n );\n\n const resetHandler = useCallback(() => {\n dispatch(actions.resetFilterIntegrations());\n }, [dispatch]);\n\n const mapIntegrationAllFilters = useCallback(\n ({\n integrationType,\n integrationStatuses,\n areas,\n schoolNames,\n schoolDistricts,\n name,\n }: IIntegrationsAllFiltersFormValues): IIntegratiosAllFilter => ({\n [IntegrationsFilterNamesEnum.INTEGRATION_TYPE]: integrationType,\n [IntegrationsFilterNamesEnum.INTEGRATION_STATUSES]: integrationStatuses,\n [IntegrationsFilterNamesEnum.AREAS]: areas,\n [IntegrationsFilterNamesEnum.SCHOOL_NAMES]: schoolNames,\n [IntegrationsFilterNamesEnum.SCHOOL_DISTRICTS]: schoolDistricts,\n [IntegrationsFilterNamesEnum.SEARCH_BY_NAME]: name,\n }),\n []\n );\n\n const submitHandler = async (formValues: IIntegrationsAllFiltersFormValues) => {\n const filter: IIntegratiosAllFilter = mapIntegrationAllFilters(formValues);\n dispatch(actions.setFilterIntegrations(filter));\n };\n\n const renderFiltersList = useMemo(() => <FiltersList disableAll={pageLoading} filters={integrationFilterList} />, [\n pageLoading,\n ]);\n\n return (\n <Form.Form<IIntegrationsAllFiltersFormValues>\n initialValues={initialValues}\n validationSchema={integrationsAllValidationSchema}\n submitHandler={submitHandler}\n >\n <Filters.FiltersPanel\n clearButtonClickHandler={resetHandler}\n searchFieldName={IntegrationsFilterNamesEnum.SEARCH_BY_NAME}\n filters={renderFiltersList}\n />\n </Form.Form>\n );\n};\n","import React, {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport {SortByDropdown} from 'admin/components';\nimport {useAppDispatch} from 'hooks';\nimport {getMenuItemsList, integrationsOrderingMap} from '../../utils';\nimport {IIntegrationsAllSortOrder} from 'models/integrations';\nimport {integrationsAllSortOrderSelector, integrationsActions as actions} from 'admin/integrations';\n\nexport const IntegrationsAllSortBy = () => {\n const dispatch = useAppDispatch();\n const sortOrder = useSelector(integrationsAllSortOrderSelector);\n\n const handleItemClick = useCallback(\n (sortOrder: IIntegrationsAllSortOrder) => {\n dispatch(actions.setSortOrderIntegrationsAll(sortOrder));\n },\n [dispatch]\n );\n\n return (\n <SortByDropdown\n label=\"Sort By: \"\n handleItemClick={handleItemClick}\n getMenuItemsList={getMenuItemsList}\n sortOrder={sortOrder}\n map={integrationsOrderingMap}\n />\n );\n};\n","import {integrationsActions as actions} from 'admin';\nimport {useAppDispatch} from 'hooks';\nimport {useCallback} from 'react';\n\nexport const useIntegrationStoreState = () => {\n const dispatch = useAppDispatch();\n\n const clearIntegrationState = useCallback(() => dispatch(actions.clear()), [dispatch]);\n\n const clearIntegrationAuditLogsState = useCallback(() => dispatch(actions.clearAuditLogs()), [dispatch]);\n\n return {clearIntegrationState, clearIntegrationAuditLogsState};\n};\n","import React, {Fragment} from 'react';\nimport {Redirect, Route, Switch} from 'react-router-dom';\nimport {NoPermissionsPage} from 'pages';\nimport {pages, paths} from 'paths';\nimport {SuperAdminRole, withRole} from 'permissions';\nimport {IntegrationsAllView} from './all';\nimport {IntegrationsDetailView} from './details/IntegrationsDetailView';\nimport {AddIntegrationView} from './add-integration/AddIntegrationView';\n\nconst AdminPortalIntegrationsAllEnhanced = withRole(\n SuperAdminRole,\n `${paths.adminPortal.root}${paths.noPermission}`\n)(IntegrationsAllView);\n\nconst AdminPortalIntegrationsDetailEnhanced = withRole(\n SuperAdminRole,\n `${paths.adminPortal.root}${paths.noPermission}`\n)(IntegrationsDetailView);\n\nconst AdminPortalAddIntegrationEnhanced = withRole(\n SuperAdminRole,\n `${paths.adminPortal.root}${paths.noPermission}`\n)(AddIntegrationView);\n\nexport const Integrations = () => {\n return (\n <Fragment>\n <Switch>\n <Route\n exact\n path={pages.adminPortal.integrations.root}\n render={() => <Redirect to={pages.adminPortal.integrations.root} />}\n />\n <Route path={pages.adminPortal.integrations.all}>\n <AdminPortalIntegrationsAllEnhanced />\n <Route path={`${pages.adminPortal.integrations.root}${paths.noPermission}`}>\n <NoPermissionsPage />\n </Route>\n </Route>\n <Route path={pages.adminPortal.integrations.details}>\n <AdminPortalIntegrationsDetailEnhanced />\n <Route path={`${pages.adminPortal.integrations.root}${paths.noPermission}`}>\n <NoPermissionsPage />\n </Route>\n </Route>\n <Route path={pages.adminPortal.integrations.add}>\n <AdminPortalAddIntegrationEnhanced />\n <Route path={`${pages.adminPortal.integrations.root}${paths.noPermission}`}>\n <NoPermissionsPage />\n </Route>\n </Route>\n </Switch>\n </Fragment>\n );\n};\n","import React, {FC, Fragment, useCallback, useEffect, useMemo} from 'react';\nimport {PageLayoutTwoCol, PageLayoutWithFixedAreas} from 'layout';\nimport {PageViewHeader, PaginationLocal, Table as TableLib, Button, Loading, Tag} from 'components-lib';\nimport {ButtonPrimaryWithAdminAndLocalAreaPermissions} from 'admin/library/instruments/components';\nimport {columns, integrationFilterList, integrationFilterToFilterNameMap} from './utils';\nimport {IntegrationsAllSortBy, SidebarIntegrationsAll} from './components';\nimport {pages} from 'paths';\nimport {useNavigate} from 'hooks';\nimport {IntegrationsFilterNamesEnum, useIntegrations} from 'admin';\nimport {IIntegrationDetails, IIntegratiosAllFilter} from 'models';\nimport {cloneDeep} from 'utils/functions';\n\ntype IIntegrationFilterEmptyValue = null | undefined | '';\n\nexport const IntegrationsAllView: FC = () => {\n const {push} = useNavigate();\n const {\n filter,\n filterEntities,\n setCurrentPage,\n setPerPage,\n currentPage,\n perPage,\n totalCount,\n fetchIntegrations,\n fetchIntegrationListDropdown,\n pageLoading,\n integrationsList,\n setIntegrationFilterItems,\n } = useIntegrations();\n\n useEffect(() => {\n fetchIntegrationListDropdown();\n }, [fetchIntegrationListDropdown]);\n\n useEffect(() => {\n fetchIntegrations();\n }, [fetchIntegrations]);\n\n const handleAddIntegration = useCallback(() => push(`${pages.adminPortal.integrations.add}`), [push]);\n const handleViewIntegrationDetails = useCallback(\n (integrationId: string) => push(`${pages.adminPortal.integrations.detailsLink}/${integrationId}`),\n [push]\n );\n\n const sidebar = useMemo(() => <SidebarIntegrationsAll />, []);\n\n const rows = useMemo(() => {\n if (!integrationsList.result.length) {\n return [];\n }\n\n return integrationsList.result.map((key: number) => {\n const integration: IIntegrationDetails = integrationsList.entities.items[key];\n const {id, name, integrationType, areaName, schoolName, status, districtName} = integration;\n const integrationTypeEntity = filterEntities?.integrationTypes[integrationType];\n const type = integrationTypeEntity?.displayText;\n const integrationStatusEntity = filterEntities?.integrationStatuses[status];\n const integrationStatus = integrationStatusEntity?.displayText;\n\n return {\n id,\n name,\n integrationType: type,\n area: areaName,\n districtName,\n schoolName,\n status: integrationStatus,\n actions: (\n <Button.Secondary size=\"small\" clickHandler={() => handleViewIntegrationDetails(id)}>\n View\n </Button.Secondary>\n ),\n };\n });\n }, [\n integrationsList,\n filterEntities?.integrationStatuses,\n filterEntities?.integrationTypes,\n handleViewIntegrationDetails,\n ]);\n\n const renderSortOrder = useMemo(() => <IntegrationsAllSortBy />, []);\n\n const appliedFilters = useMemo(() => {\n const chips: any[] = [];\n\n const resetDropdownFilter = (propName: string, id: string | number) => {\n const updated: IIntegratiosAllFilter = cloneDeep(filter);\n if (propName === IntegrationsFilterNamesEnum.AREAS) {\n updated[IntegrationsFilterNamesEnum.SCHOOL_NAMES] = [];\n }\n updated[propName] = updated[propName].filter((pId: number) => pId !== id);\n setIntegrationFilterItems(updated);\n };\n\n const deleteClickHandler = (name: IntegrationsFilterNamesEnum) => {\n let value = null as IIntegrationFilterEmptyValue;\n\n if (name === IntegrationsFilterNamesEnum.SEARCH_BY_NAME) {\n value = '';\n }\n\n const updated: IIntegratiosAllFilter = {\n ...filter,\n [name]: value,\n };\n setIntegrationFilterItems(updated);\n };\n\n // string[] filters\n integrationFilterList.forEach((integrationFilter) => {\n const mappedFilterName = integrationFilterToFilterNameMap[integrationFilter];\n const current = filter[mappedFilterName];\n\n if (current instanceof Array && current.length > 0) {\n current.forEach((id) => {\n const currentFilter = filterEntities[mappedFilterName][id];\n\n const label = currentFilter?.displayText ? currentFilter?.displayText : currentFilter?.name;\n\n !!currentFilter &&\n chips.push(\n <Tag\n withFilterChip\n key={`${mappedFilterName}-${id}`}\n label={label}\n deleteHandler={() => resetDropdownFilter(mappedFilterName, currentFilter.id)}\n />\n );\n });\n }\n });\n\n if (filter.integrationType !== null) {\n const integrationTypeObj = filterEntities[IntegrationsFilterNamesEnum.INTEGRATION_TYPES][filter.integrationType];\n\n chips.push(\n <Tag\n withFilterChip\n key={filter.integrationType}\n label={integrationTypeObj.displayText}\n deleteHandler={() => deleteClickHandler(IntegrationsFilterNamesEnum.INTEGRATION_TYPE)}\n />\n );\n }\n\n if (!!filter.name) {\n chips.push(\n <Tag\n withFilterChip\n key={filter.name}\n label={filter.name}\n deleteHandler={() => deleteClickHandler(IntegrationsFilterNamesEnum.SEARCH_BY_NAME)}\n />\n );\n }\n\n return chips;\n }, [filter, filterEntities, setIntegrationFilterItems]);\n\n const contentHeader = useMemo(\n () => (\n <PageViewHeader\n heading=\"Integrations\"\n action={\n <ButtonPrimaryWithAdminAndLocalAreaPermissions clickHandler={handleAddIntegration}>\n Add Integration\n </ButtonPrimaryWithAdminAndLocalAreaPermissions>\n }\n sort={renderSortOrder}\n filters={appliedFilters}\n />\n ),\n [handleAddIntegration, renderSortOrder, appliedFilters]\n );\n\n const contentFooter = useMemo(() => {\n return (\n <PaginationLocal\n onPageChange={setCurrentPage}\n onPerPageChange={setPerPage}\n totalCount={totalCount}\n perPage={perPage}\n currentPage={currentPage}\n disabled={pageLoading}\n />\n );\n }, [currentPage, perPage, setCurrentPage, setPerPage, totalCount, pageLoading]);\n\n const hasRows = !!rows.length;\n const Table = useMemo(\n () => () => (hasRows ? <TableLib rows={rows} columns={columns} /> : <Fragment>No results found</Fragment>),\n [hasRows, rows]\n );\n\n const content = useMemo(\n () => (\n <PageLayoutWithFixedAreas withSecondaryNavigation={false} header={contentHeader} footer={contentFooter}>\n {pageLoading ? <Loading /> : <Table />}\n </PageLayoutWithFixedAreas>\n ),\n [contentHeader, contentFooter, pageLoading, Table]\n );\n\n return (\n <Fragment>\n <PageLayoutTwoCol withSecondaryNavigation={false} sidebar={sidebar} content={content} />\n </Fragment>\n );\n};\n","export enum IntegrationType {\n GOOGLE_CLASSROOM = 'Google Classroom',\n MICROSOFT_TEAMS = 'Microsoft Teams',\n GOOGLE_SITES_SOURCE = 'Google Sites Source',\n GOOGLE_SITES_DESTINATION = 'Google Sites Destination',\n}\n","export enum IntegrationStatus {\n TEST_PENDING = 'Test Pending',\n TEST_IN_PROGRESS = 'Testing in Progress',\n TEST_SUCCESS = 'Tested - Success',\n TEST_FAILED = 'Tested - Failed',\n PUBLISHED = 'Published',\n ERROR = 'Error',\n DELETED = 'Deleted',\n}\n","export enum IntegrationTypeNum {\n GOOGLE_CLASSROOM = 1,\n MICROSOFT_TEAMS = 2,\n GOOGLE_SITES_SOURCE = 3,\n GOOGLE_SITES_DESTINATION = 4,\n}\n","export enum IntegrationStatusNum {\n TEST_PENDING = 1,\n TEST_IN_PROGRESS = 2,\n TEST_SUCCESS = 3,\n TEST_FAILED = 4,\n PUBLISHED = 5,\n ERROR = 6,\n DELETED = 7,\n}\n","export enum IntegrationBaseResponseStatusNumEnum {\n SUCCESS = 0,\n INVALID_ARGUMENT = 1,\n ALREADY_EXIST = 2,\n NOT_AUTHORIZED = 3,\n NOT_FOUND = 4,\n UNPROCESSABLE_ENTITY = 5,\n OPERATION_FAILED = 6,\n}\n","export * from './IItemsStoreState';\nexport * from './items.selectors';\nexport * from './items.slice';\nexport * from './thunks';\n","export const prefix = '[Integrations]';\n","import {cloneDeep} from 'utils';\nimport {createAsyncThunk} from '@reduxjs/toolkit';\nimport {integrationsApi} from 'api';\nimport {SortingOrderEnum} from 'enums';\nimport {IGetPageOfEntities, IIntegratiosAllFilter, IPaginationOptions, ISortingOptions} from 'models';\nimport {IIntegrationItem, IIntegrationsAllSortOrder} from 'models/integrations';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\nimport {getIntegrationQueryFilter} from 'admin';\n\ninterface IPayload {\n filter: IIntegratiosAllFilter;\n sortOrder: IIntegrationsAllSortOrder;\n pagination: IGetPageOfEntities;\n}\n\nexport const fetchIntegrationsPagedThunk: any = createAsyncThunk<IIntegrationItem[], any>(\n `${prefix} fetchIntegrationsPaged`,\n async (\n {filter, sortOrder: {order, sort}, pagination: {page, itemsPerPage}}: IPayload,\n {dispatch, rejectWithValue}\n ) => {\n try {\n const sortAsc = sort === SortingOrderEnum.ASC;\n const clonedFilter = cloneDeep(filter);\n const queryFilter = getIntegrationQueryFilter(clonedFilter, ',');\n const pagination = {pageNumber: page, pageSize: itemsPerPage} as IPaginationOptions;\n const sortOptions = {sortBy: order, sortAsc} as ISortingOptions;\n\n const {parsedBody} = await integrationsApi.getIntegrations(pagination, sortOptions, queryFilter);\n return parsedBody;\n } catch (err) {\n dispatch(toastNotificationManager.createErrorToastAction(err.parsedBody));\n return rejectWithValue({error: err});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {integrationsApi} from 'api';\nimport {IIntegrationType} from 'models/integrations';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const fetchIntegrationTypesThunk: any = createAsyncThunk<IIntegrationType[], any>(\n `${prefix} fetchIntegrationTypes`,\n async (_, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await integrationsApi.getIntegrationTypes();\n return parsedBody;\n } catch (error) {\n dispatch(toastNotificationManager.createErrorToastAction(error.parsedBody));\n return rejectWithValue({error});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {integrationsApi} from 'api';\nimport {IIntegrationStatus} from 'models/integrations';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const fetchIntegrationStatusesThunk: any = createAsyncThunk<IIntegrationStatus[], any>(\n `${prefix} fetchIntegrationStatuses`,\n async (_, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await integrationsApi.getIntegrationStatuses();\n return parsedBody;\n } catch (error) {\n dispatch(toastNotificationManager.createErrorToastAction(error.parsedBody));\n return rejectWithValue({error});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {integrationsApi} from 'api';\nimport {IGetServiceEmailResponse} from 'models/integrations';\nimport {prefix} from './config';\n\nexport const fetchServiceEmailThunk: any = createAsyncThunk<IGetServiceEmailResponse, any>(\n `${prefix} fetchServiceEmail`,\n async (_, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await integrationsApi.getServiceEmail();\n return parsedBody;\n } catch (error) {\n return rejectWithValue({error});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {integrationsApi} from 'api';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {IIntegrationDetails} from 'models/integrations';\nimport {prefix} from './config';\n\nexport const fetchIntegrationDetailsThunk: any = createAsyncThunk<IIntegrationDetails, string>(\n `${prefix} fetchIntegrationStatuses`,\n async (integrationId: string, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await integrationsApi.getDetailsIntegration(integrationId);\n return parsedBody;\n } catch (error) {\n dispatch(toastNotificationManager.createErrorToastAction(error.parsedBody));\n return rejectWithValue({error});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {integrationsApi} from 'api';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {IGetAuditLogResponse} from 'models/integrations';\nimport {prefix} from './config';\n\nexport const fetchAuditLogThunk: any = createAsyncThunk<IGetAuditLogResponse, string>(\n `${prefix} fetchAuditLog`,\n async (integrationId: string, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await integrationsApi.getAuditLog(integrationId);\n return parsedBody;\n } catch (error) {\n dispatch(toastNotificationManager.createErrorToastAction(error.parsedBody));\n return rejectWithValue({error});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {integrationsApi} from 'api';\nimport {IGetPublishedApiSourceDetails} from 'models/integrations';\nimport {prefix} from './config';\n\nexport const fetchPublishedSourceDetailsThunk: any = createAsyncThunk<IGetPublishedApiSourceDetails, any>(\n `${prefix} fetchPublishedSourceDetails`,\n async (_, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await integrationsApi.getPublishedSourceDetails();\n return parsedBody;\n } catch (error) {\n return rejectWithValue({error});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {addIntegrationMessages} from 'admin/integrations/add-integration';\nimport {integrationsApi} from 'api';\nimport {ICreateGoogleVirtualClassPayload} from 'models/integrations';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const createGoogleVirtualClassThunk: any = createAsyncThunk(\n `${prefix} createGoogleVirtualClass`,\n async (payload: ICreateGoogleVirtualClassPayload, {dispatch, rejectWithValue}) => {\n try {\n const {data} = await integrationsApi.createGoogleVirtualClass(payload);\n dispatch(toastNotificationManager.createSuccessToastAction(addIntegrationMessages.createIntegrationSuccess));\n return data;\n } catch (error) {\n const errMsg = error.response.data.messages[0];\n dispatch(\n toastNotificationManager.createErrorToastAction(errMsg ?? addIntegrationMessages.unknownIntegrationError)\n );\n return rejectWithValue({error});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {addIntegrationMessages} from 'admin/integrations/add-integration';\nimport {integrationsApi} from 'api';\nimport {ICreateGoogleSitesSourceVirtualClassPayload} from 'models/integrations';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const createGoogleSitesSourceThunk: any = createAsyncThunk(\n `${prefix} createGoogleSitesSourceThunk`,\n async (payload: ICreateGoogleSitesSourceVirtualClassPayload, {dispatch, rejectWithValue}) => {\n try {\n const response = await integrationsApi.createGoogleSitesSource(payload);\n dispatch(toastNotificationManager.createSuccessToastAction(addIntegrationMessages.createIntegrationSuccess));\n return response.data;\n } catch (error) {\n const errMsg = error.response.data.messages[0];\n dispatch(\n toastNotificationManager.createErrorToastAction(errMsg ?? addIntegrationMessages.unknownIntegrationError)\n );\n return rejectWithValue({error});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {addIntegrationMessages} from 'admin/integrations/add-integration';\nimport {integrationsApi} from 'api';\nimport {ICreateGoogleSitesDestinationPayload} from 'models/integrations';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const createGoogleSitesDestinationThunk: any = createAsyncThunk(\n `${prefix} createGoogleSitesDestinationThunk`,\n async (payload: ICreateGoogleSitesDestinationPayload, {dispatch, rejectWithValue}) => {\n try {\n const response = await integrationsApi.createGoogleSitesDestination(payload);\n dispatch(toastNotificationManager.createSuccessToastAction(addIntegrationMessages.createIntegrationSuccess));\n return response.data;\n } catch (error) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n error.messages ?? addIntegrationMessages.unknownIntegrationError\n )\n );\n return rejectWithValue({error});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {addIntegrationMessages} from 'admin/integrations/add-integration';\nimport {integrationsApi} from 'api';\nimport {ICreateMicrosoftTeamsVirtualClassPayload} from 'models/integrations';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const createMicrosoftTeamsThunk: any = createAsyncThunk(\n `${prefix} createMicrosoftTeamsThunk`,\n async (payload: ICreateMicrosoftTeamsVirtualClassPayload, {dispatch, rejectWithValue}) => {\n try {\n const {data} = await integrationsApi.createMicrosoftTeamsVirtualClass(payload);\n dispatch(toastNotificationManager.createSuccessToastAction(addIntegrationMessages.createIntegrationSuccess));\n return data;\n } catch (error) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n error.response.data.messages[0] ?? addIntegrationMessages.unknownIntegrationError\n )\n );\n return rejectWithValue({error});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {integrationsApi} from 'api';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {IUpdateIntegrationPayload} from 'models/integrations';\nimport {prefix} from './config';\n\ninterface IUpdatePayload {\n integrationId: string;\n payload: IUpdateIntegrationPayload;\n}\n\nexport const updateIntegrationThunk: any = createAsyncThunk(\n `${prefix} updateIntegration`,\n async ({integrationId, payload}: IUpdatePayload, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await integrationsApi.updateIntegration(integrationId, payload);\n return parsedBody;\n } catch (error) {\n dispatch(toastNotificationManager.createErrorToastAction(error.parsedBody));\n return rejectWithValue({error});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {integrationsApi} from 'api';\nimport {IUpdateGoogleClassroomIntegrationPayload} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {integrationDetailsMessages} from '../../details/utils/constants';\nimport {prefix} from './config';\n\ninterface IUpdateGoogleClassroom {\n integrationId: string;\n payload: IUpdateGoogleClassroomIntegrationPayload;\n}\n\nexport const updateGoogleClassroomIntegrationThunk: any = createAsyncThunk(\n `${prefix} updateMicrosoftTeamsIntegration`,\n async ({integrationId, payload}: IUpdateGoogleClassroom, {dispatch, rejectWithValue}) => {\n try {\n const {data} = await integrationsApi.updateGoogleClassroomIntegration(integrationId, payload);\n dispatch(toastNotificationManager.createSuccessToastAction(integrationDetailsMessages.updateIntegrationSuccess));\n return data;\n } catch (error) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n error.response.data.messages[0] ?? integrationDetailsMessages.unknownIntegrationError\n )\n );\n return rejectWithValue({error});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {integrationsApi} from 'api';\nimport {IUpdateGoogleSitesSourceIntegrationPayload} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {integrationDetailsMessages} from '../../details/utils/constants';\nimport {prefix} from './config';\n\ninterface IUpdateGoogleSitesSource {\n integrationId: string;\n payload: IUpdateGoogleSitesSourceIntegrationPayload;\n}\n\nexport const updateGoogleSitesSourceIntegrationThunk: any = createAsyncThunk(\n `${prefix} updateGoogleSitesSourceIntegration`,\n async ({integrationId, payload}: IUpdateGoogleSitesSource, {dispatch, rejectWithValue}) => {\n try {\n const {data} = await integrationsApi.updateGoogleSiteSourceIntegration(integrationId, payload);\n dispatch(toastNotificationManager.createSuccessToastAction(integrationDetailsMessages.updateIntegrationSuccess));\n return data;\n } catch (error) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n error.response.data.messages[0] ?? integrationDetailsMessages.unknownIntegrationError\n )\n );\n return rejectWithValue({error});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {integrationsApi} from 'api';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {IUpdateMicrosoftTeamsIntegrationPayload} from 'models/integrations';\nimport {prefix} from './config';\nimport {integrationDetailsMessages} from 'admin/integrations';\n\ninterface IUpdatePayload {\n integrationId: string;\n payload: IUpdateMicrosoftTeamsIntegrationPayload;\n}\n\nexport const updateMicrosoftTeamsIntegrationThunk: any = createAsyncThunk(\n `${prefix} updateMicrosoftTeamsIntegration`,\n async ({integrationId, payload}: IUpdatePayload, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await integrationsApi.updateMicrosoftTeamsIntegration(integrationId, payload);\n dispatch(toastNotificationManager.createSuccessToastAction(integrationDetailsMessages.updateIntegrationSuccess));\n return parsedBody;\n } catch (error) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n error.messages ?? integrationDetailsMessages.unknownIntegrationError\n )\n );\n return rejectWithValue({error});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {integrationsApi} from 'api';\nimport {IUpdateGoogleSitesDestinationIntegrationPayload} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {integrationDetailsMessages} from '../../details/utils/constants';\nimport {prefix} from './config';\n\ninterface IUpdateGoogleSitesDestination {\n integrationId: string;\n payload: IUpdateGoogleSitesDestinationIntegrationPayload;\n}\n\nexport const updateGoogleSitesDestinationIntegrationThunk: any = createAsyncThunk(\n `${prefix} updateGoogleSitesSDestinationIntegration`,\n async ({integrationId, payload}: IUpdateGoogleSitesDestination, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await integrationsApi.updateGoogleSiteDestinationIntegration(integrationId, payload);\n dispatch(toastNotificationManager.createSuccessToastAction(integrationDetailsMessages.updateIntegrationSuccess));\n return parsedBody;\n } catch (error) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n error.messages ?? integrationDetailsMessages.unknownIntegrationError\n )\n );\n return rejectWithValue({error});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {integrationsApi} from 'api';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\nimport {IDeleteIntegrationPayload, IIntegrationDetails} from 'models';\n\nexport const deleteIntegrationThunk: any = createAsyncThunk<IIntegrationDetails, IDeleteIntegrationPayload>(\n `${prefix} deleteIntegration`,\n async ({integrationId}: IDeleteIntegrationPayload, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await integrationsApi.deleteIntegration(integrationId);\n return parsedBody;\n } catch (error) {\n dispatch(toastNotificationManager.createErrorToastAction(error.parsedBody));\n return rejectWithValue({error});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {integrationsApi} from 'api';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\nimport {IPublishIntegrationPayload, IIntegrationDetails} from 'models';\nimport {integrationDetailsMessages} from 'admin/integrations/details/utils';\n\nexport const publishIntegrationThunk: any = createAsyncThunk<IIntegrationDetails, IPublishIntegrationPayload>(\n `${prefix} publishIntegration`,\n async ({integrationId}: IPublishIntegrationPayload, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await integrationsApi.publishIntegration(integrationId);\n return parsedBody;\n } catch (error) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n error.messages ?? integrationDetailsMessages.unknownIntegrationError\n )\n );\n return rejectWithValue({error});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {addIntegrationMessages} from 'admin/integrations/add-integration';\nimport {integrationsApi} from 'api';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {integrationDetailsMessages} from '../../details/utils/constants';\nimport {prefix} from './config';\n\nexport const testMicrosoftTeamsThunk: any = createAsyncThunk(\n `${prefix} testMicrosoftTeamsThunk`,\n async (integrationId: string, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await integrationsApi.testMicrosoftTeamsIntegration(integrationId);\n dispatch(toastNotificationManager.createSuccessToastAction(integrationDetailsMessages.testIntegrationStarting));\n return parsedBody;\n } catch (error) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n error.parsedBody ?? addIntegrationMessages.unknownIntegrationError\n )\n );\n return rejectWithValue({error});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {addIntegrationMessages} from 'admin/integrations/add-integration';\nimport {integrationsApi} from 'api';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {integrationDetailsMessages} from '../../details/utils/constants';\nimport {prefix} from './config';\n\nexport const testGoogleClassroomThunk: any = createAsyncThunk(\n `${prefix} testGoogleClassroomThunk`,\n async (integrationId: string, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await integrationsApi.testGoogleClassroomIntegration(integrationId);\n dispatch(toastNotificationManager.createSuccessToastAction(integrationDetailsMessages.testIntegrationStarting));\n return parsedBody;\n } catch (error) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n error.parsedBody ?? addIntegrationMessages.unknownIntegrationError\n )\n );\n return rejectWithValue({error});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {addIntegrationMessages} from 'admin/integrations/add-integration';\nimport {integrationsApi} from 'api';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {integrationDetailsMessages} from '../../details/utils/constants';\nimport {prefix} from './config';\n\nexport const testGoogleSitesSourceThunk: any = createAsyncThunk(\n `${prefix} testGoogleSitesSourceThunk`,\n async (integrationId: string, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await integrationsApi.testGoogleSitesSourceIntegration(integrationId);\n dispatch(toastNotificationManager.createSuccessToastAction(integrationDetailsMessages.testIntegrationSuccess));\n return parsedBody;\n } catch (error) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n error.messages ?? addIntegrationMessages.unknownIntegrationError\n )\n );\n return rejectWithValue({error});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {addIntegrationMessages} from 'admin/integrations/add-integration';\nimport {integrationsApi} from 'api';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {integrationDetailsMessages} from '../../details/utils/constants';\nimport {prefix} from './config';\n\nexport const testGoogleSitesDestinationThunk: any = createAsyncThunk(\n `${prefix} testGoogleSitesDestination`,\n async (integrationId: string, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await integrationsApi.testGoogleSiteDestinationIntegration(integrationId);\n dispatch(toastNotificationManager.createSuccessToastAction(integrationDetailsMessages.testIntegrationSuccess));\n return parsedBody;\n } catch (error) {\n const errMsg = error.messages;\n dispatch(\n toastNotificationManager.createErrorToastAction(errMsg ?? addIntegrationMessages.unknownIntegrationError)\n );\n return rejectWithValue({error});\n }\n }\n);\n","export const colors = {\n primary: '#01763D',\n primary20: '#E2EFE9',\n primary40: '#C6E0D3',\n primary60: '#71B293',\n primary80: '#01763D',\n primary100: '#025C30',\n\n secondary: '#8FC440',\n secondary20: '#F2F8E9',\n secondary40: '#E6F1D4',\n secondary60: '#C0DE94',\n secondary80: '#8FC440',\n secondary100: '#6D982C',\n\n error: '#FF3B46',\n success: '#1DB46C',\n info: '#4292D7',\n warning: '#FDB614',\n\n white: '#FFFFFF',\n gray: '#F9F9F9',\n gray00: '#F5F8FA',\n gray05: '#E5E9ED',\n gray10: '#D5DAE0',\n gray20: '#C6CCD3',\n gray40: '#A7AFB9',\n gray60: '#697586',\n gray80: '#464E59',\n gray100: '#171A1D',\n};\n","export const config = {\n jaEeApi: {\n baseUrl: process.env.REACT_APP_JA_EE_BASE_URL,\n baseUrlSurvey: process.env.REACT_APP_JA_EE_SURVEY_BASE_URL,\n baseUrlPermissions: process.env.REACT_APP_JA_EE_PERMISSIONS_BASE_URL,\n baseUrlUms: process.env.REACT_APP_JA_EE_UMS_BASE_URL,\n baseUrlUploader: process.env.REACT_APP_JA_EE_UPLOADER_BASE_URL,\n baseUrlDigitalResources: process.env.REACT_APP_JA_EE_DIGITAL_RESOURCES_BASE_URL,\n baseUrlReports: process.env.REACT_APP_JA_EE_REPORTS_BASE_URL,\n baseUrlExports: process.env.REACT_APP_JA_EE_EXPORTS_BASE_URL,\n baseUrlNotFound: process.env.REACT_APP_JA_EE_NOT_FOUND_REDIRECT_URL,\n baseUrlDownloadDigitalResource: process.env.REACT_APP_JA_EE_DIGITAL_RESOURCES_DOWNLOAD_BASE_URL,\n baseUrlIntegrations: process.env.REACT_APP_JA_PIC_INTEGRATIONS_BASE_URL,\n baseUrlLearningPaths: process.env.REACT_APP_JA_PAM_LEARNING_PATHS_BASE_URL,\n baseUrlPam: process.env.REACT_APP_JA_PAM_BASE_URL,\n },\n jaEeTestApi: {\n baseUrl: process.env.REACT_APP_JA_EE_TEST_API_BASE_URL,\n localBaseUrl: process.env.REACT_APP_JA_EE_LOCAL_TEST_API_BASE_URL,\n subscriptionKey: process.env.REACT_APP_JA_EE_TEST_API_SUBSCRIPTION_KEY,\n },\n jaEEfileUploadApi: {\n baseUrl: process.env.REACT_APP_JA_EE_FILE_UPLOAD_URL,\n },\n oidc: {\n authority: process.env.REACT_APP_JASA_AUTHORITY,\n client_id: process.env.REACT_APP_JASA_CLIENT_ID,\n redirect_uri: process.env.REACT_APP_JASA_REDIRECT_URL,\n response_type: 'id_token token',\n scope: 'openid profile jaeeapim',\n post_logout_redirect_uri: process.env.REACT_APP_POST_LOGOUT_PAGE,\n silent_redirect_uri: process.env.REACT_APP_JASA_SILENT_REDIRECT_URL,\n automaticSilentRenew: false,\n loadUserInfo: true,\n monitorSession: false,\n accessTokenExpiringNotificationTime: 60,\n checkSessionInterval: 20000,\n revokeAccessTokenOnSignout: true,\n },\n authentication: {\n endSessionUrl: process.env.REACT_APP_END_SESSION_URL,\n },\n isProduction: process.env.NODE_ENV === 'production',\n};\n","export const mainNavHeight = 65;\nexport const secondaryNavigation = 71;\nexport const secondaryNavigationLarge = 120;\nexport const footerHeight = 82;\nexport const navHeight = mainNavHeight + secondaryNavigation;\nexport const additionalHeight = 70;\n\nexport const heightThreeStepsActivity = `calc(100vh - ${navHeight}px - ${footerHeight}px - ${additionalHeight}px)`;\nexport const heightUploadResources = `calc(100vh - ${navHeight}px - ${footerHeight}px - 45px - ${secondaryNavigation}px)`;\n","export * from './classes';\nexport * from './masterInstruments';\nexport * from './reports';\nexport * from './enums';\n","export const prefix = '[Filters]';\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {filtersApi} from 'api';\nimport {IBindBaseEntity} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const fetchAdministrationsThunk: any = createAsyncThunk<IBindBaseEntity[]>(\n `${prefix} fetchAdministrations`,\n async (_, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await filtersApi.getAdministrations();\n return parsedBody;\n } catch (error) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n error.parsedBody || error.statusText || 'Failed to fetch administrations. Unknown error occurred.'\n )\n );\n return rejectWithValue(error);\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {filtersApi} from 'api';\nimport {IBindBaseEnumEntity} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const fetchAudienceThunk: any = createAsyncThunk<IBindBaseEnumEntity[]>(\n `${prefix} fetchAudience`,\n async (_, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await filtersApi.getInstrumentAudiences();\n return parsedBody;\n } catch (error) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n error.parsedBody || error.statusText || 'Failed to fetch audiences. Unknown error occurred.'\n )\n );\n return rejectWithValue(error);\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {filtersApi} from 'api';\nimport {IBindBaseEntity} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const fetchCompetenciesThunk: any = createAsyncThunk<IBindBaseEntity[]>(\n `${prefix} fetchCompetencies`,\n async (_, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await filtersApi.getCompetencies();\n return parsedBody;\n } catch (error) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n error.parsedBody || error.statusText || 'Failed to fetch competencies. Unknown error occurred.'\n )\n );\n return rejectWithValue(error);\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {filtersApi} from 'api';\nimport {IBindBaseEntity} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const fetchConceptsThunk: any = createAsyncThunk<IBindBaseEntity[], number[]>(\n `${prefix} fetchConcepts`,\n async (payload: number[], {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await filtersApi.getConcepts(payload);\n return parsedBody;\n } catch (error) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n error.parsedBody || error.statusText || 'Failed to fetch concepts. Unknown error occurred.'\n )\n );\n return rejectWithValue(error);\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {filtersApi} from 'api';\nimport {IBindBaseEntity} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const fetchDomainsThunk: any = createAsyncThunk<IBindBaseEntity[]>(\n `${prefix} fetchDomains`,\n async (_, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await filtersApi.getDomains();\n return parsedBody;\n } catch (error) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n error.parsedBody || error.statusText || 'Failed to fetch domains. Unknown error occurred.'\n )\n );\n return rejectWithValue(error);\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {filtersApi} from 'api';\nimport {IBindBaseEntity} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const fetchEvaluationTypesThunk: any = createAsyncThunk<IBindBaseEntity[]>(\n `${prefix} fetchEvaluationTypes`,\n async (_, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await filtersApi.getEvaluationTypes();\n return parsedBody;\n } catch (error) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n error.parsedBody || error.statusText || 'Failed to fetch evaluation types. Unknown error occurred.'\n )\n );\n return rejectWithValue(error);\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {filtersApi} from 'api';\nimport {IEntityBase} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const fetchGradeLevelsThunk: any = createAsyncThunk<IEntityBase[]>(\n `${prefix} fetchGradeLevels`,\n async (_, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await filtersApi.getAvailableGradeLevels();\n return parsedBody;\n } catch (error) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n error.parsedBody || error.statusText || 'Failed to fetch grade levels. Unknown error occurred.'\n )\n );\n return rejectWithValue(error);\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {filtersApi} from 'api';\nimport {IBindBaseEntity} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const fetchInstrumentStatusesThunk: any = createAsyncThunk<IBindBaseEntity[]>(\n `${prefix} fetchInstrumentStatuses`,\n async (_, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await filtersApi.getInstrumentStatuses();\n return parsedBody;\n } catch (error) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n error.parsedBody || error.statusText || 'Failed to fetch instrument statuses. Unknown error occurred.'\n )\n );\n return rejectWithValue(error);\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {filtersApi} from 'api';\nimport {IBindBaseEnumEntity} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const fetchInstrumentTypesThunk: any = createAsyncThunk<IBindBaseEnumEntity[]>(\n `${prefix} fetchInstrumentTypes`,\n async (_, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await filtersApi.getInstrumentTypes();\n return parsedBody;\n } catch (error) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n error.parsedBody || error.statusText || 'Failed to fetch instrument. Unknown error occurred.'\n )\n );\n return rejectWithValue(error);\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {filtersApi} from 'api';\nimport {IBindBaseEntity} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const fetchItemTypesThunk: any = createAsyncThunk<IBindBaseEntity[]>(\n `${prefix} fetchItemTypes`,\n async (_, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await filtersApi.getQuestionTypes();\n return parsedBody;\n } catch (error) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n error.parsedBody || error.statusText || 'Failed to fetch item types. Unknown error occurred.'\n )\n );\n return rejectWithValue(error);\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {filtersApi} from 'api';\nimport {IBindBaseEnumEntity} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const fetchPhasesThunk: any = createAsyncThunk<IBindBaseEnumEntity[]>(\n `${prefix} fetchPhases`,\n async (_, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await filtersApi.getInstrumentPhases();\n return parsedBody;\n } catch (error) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n error.parsedBody || error.statusText || 'Failed to fetch phases. Unknown error occurred.'\n )\n );\n return rejectWithValue(error);\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {filtersApi} from 'api';\nimport {IBindBaseEntity} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const fetchPillarsThunk: any = createAsyncThunk<IBindBaseEntity[]>(\n `${prefix} fetchPillars`,\n async (_, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await filtersApi.getActivePillars();\n return parsedBody;\n } catch (error) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n error.parsedBody || error.statusText || 'Failed to fetch pillars. Unknown error occurred.'\n )\n );\n return rejectWithValue(error);\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {filtersApi} from 'api';\nimport {IEntityBase} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const fetchProgramsThunk: any = createAsyncThunk<IEntityBase[]>(\n `${prefix} fetchPrograms`,\n async (_, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await filtersApi.getPrograms();\n return parsedBody;\n } catch (error) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n error.parsedBody || error.statusText || 'Failed to fetch programs. Unknown error occurred.'\n )\n );\n return rejectWithValue(error);\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {filtersApi} from 'api';\nimport {IBindBaseEntity} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const fetchProgramYearsThunk: any = createAsyncThunk<IBindBaseEntity[]>(\n `${prefix} fetchProgramYears`,\n async (_, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await filtersApi.getFilterProgramYears();\n return parsedBody;\n } catch (error) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n error.parsedBody || error.statusText || 'Failed to fetch program. Unknown error occurred.'\n )\n );\n return rejectWithValue(error);\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {filtersApi} from 'api';\nimport {IEntityBase} from 'models';\nimport {prefix} from './config';\nimport {toastNotificationManager} from 'toast-notifications';\n\nexport const fetchAreasFiltersThunk: any = createAsyncThunk<IEntityBase[]>(\n `${prefix} fetchAreas`,\n async (_, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await filtersApi.getAreas();\n return parsedBody;\n } catch (error) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n error.parsedBody || error.statusText || 'Failed to fetch areas. Unknown error occurred.'\n )\n );\n return rejectWithValue(error);\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {filtersApi} from 'api';\nimport {IEntityBase} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const fetchSessionsThunk: any = createAsyncThunk<IEntityBase[]>(\n `${prefix} fetchSessions`,\n async (_, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await filtersApi.getSessions();\n return parsedBody;\n } catch (error) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n error.parsedBody || error.statusText || 'Failed to fetch sessions. Unknown error occurred.'\n )\n );\n return rejectWithValue(error);\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {filtersApi} from 'api';\nimport {IEntityBase} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const fetchTagGradeLevelsThunk: any = createAsyncThunk<IEntityBase[]>(\n `${prefix} fetchTaggingGradeLevels`,\n async (_, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await filtersApi.getTaggingGradeLevels();\n return parsedBody;\n } catch (error) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n error.parsedBody || error.statusText || 'Failed to fetch grader levels. Unknown error occurred.'\n )\n );\n return rejectWithValue(error);\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {filtersApi} from 'api';\nimport {IEntityBase} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const fetchSkillsAndBehaviorsThunk: any = createAsyncThunk<IEntityBase[]>(\n `${prefix} fetchSkillsAndBehaviors`,\n async (_, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await filtersApi.getSkillsAndBehaviors();\n return parsedBody;\n } catch (error) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n error.parsedBody || error.statusText || 'Failed to fetch skills and behaviors. Unknown error occurred.'\n )\n );\n return rejectWithValue(error);\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {filtersApi} from 'api';\nimport {IEntityBase} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const fetchLanguagesThunk: any = createAsyncThunk<IEntityBase[]>(\n `${prefix} fetchLanguages`,\n async (_, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await filtersApi.getLanguages();\n return parsedBody;\n } catch (error) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n error.parsedBody || error.statusText || 'Failed to fetch languages. Unknown error occurred.'\n )\n );\n return rejectWithValue(error);\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {filtersApi} from 'api';\nimport {IBindBaseEntity} from 'models';\nimport {prefix} from './config';\nimport {toastNotificationManager} from 'toast-notifications';\n\nexport const fetchSessionsByProgramIdsThunk: any = createAsyncThunk<IBindBaseEntity[], number[]>(\n `${prefix} fetchSessionsByProgramIds`,\n async (payload: number[], {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await filtersApi.getSessionsByProgramIds(payload);\n return parsedBody;\n } catch (error) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n error.parsedBody || error.statusText || 'Failed to fetch sessions. Unknown error occurred.'\n )\n );\n return rejectWithValue(error);\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {filtersApi} from 'api';\nimport {IEntityBase} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const fetchDefualtKeyTermsThunk: any = createAsyncThunk<IEntityBase[]>(\n `${prefix} fetchDefaultKeyTerms`,\n async (_, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await filtersApi.getDefualtKeyTerms();\n return parsedBody;\n } catch (error) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n error.parsedBody || error.statusText || 'Failed to fetch default key terms. Unknown error occurred.'\n )\n );\n return rejectWithValue(error);\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\r\nimport {filtersApi} from 'api';\r\nimport {IEntityBase} from 'models';\r\nimport {toastNotificationManager} from 'toast-notifications';\r\nimport {prefix} from './config';\r\n\r\nexport const fetchKeyTermsThunk: any = createAsyncThunk<IEntityBase[]>(\r\n `${prefix} fetchKeyTerms`,\r\n async (_, {rejectWithValue, dispatch}) => {\r\n try {\r\n const {parsedBody} = await filtersApi.getKeyTerms();\r\n return parsedBody;\r\n } catch (error) {\r\n dispatch(\r\n toastNotificationManager.createErrorToastAction(\r\n error.parsedBody || error.statusText || 'Failed to fetch key terms. Unknown error occurred.'\r\n )\r\n );\r\n return rejectWithValue(error);\r\n }\r\n }\r\n);\r\n","import {createAsyncThunk} from '@reduxjs/toolkit';\r\nimport {filtersApi} from 'api';\r\nimport {IEntityBase} from 'models';\r\nimport {toastNotificationManager} from 'toast-notifications';\r\nimport {prefix} from './config';\r\n\r\nexport const fetchLearningObjectivesThunk: any = createAsyncThunk<IEntityBase[]>(\r\n `${prefix} fetchLearningObjectives`,\r\n async (_, {rejectWithValue, dispatch}) => {\r\n try {\r\n const {parsedBody} = await filtersApi.getKLearningObjectives();\r\n return parsedBody;\r\n } catch (error) {\r\n dispatch(\r\n toastNotificationManager.createErrorToastAction(\r\n error.parsedBody || error.statusText || 'Failed to fetch learning objectives. Unknown error occurred.'\r\n )\r\n );\r\n return rejectWithValue(error);\r\n }\r\n }\r\n);\r\n","import {createAsyncThunk} from '@reduxjs/toolkit';\r\nimport {filtersApi} from 'api';\r\nimport {IEntityBase} from 'models';\r\nimport {toastNotificationManager} from 'toast-notifications';\r\nimport {prefix} from './config';\r\n\r\nexport const fetchDigitalResourcesConceptsThunk: any = createAsyncThunk<IEntityBase[], number[]>(\r\n `${prefix} fetchDigitalResourcesConcepts`,\r\n async (_, {rejectWithValue, dispatch}) => {\r\n try {\r\n const {parsedBody} = await filtersApi.getDigitalResourcesConcepts();\r\n return parsedBody;\r\n } catch (error) {\r\n dispatch(\r\n toastNotificationManager.createErrorToastAction(\r\n error.parsedBody || error.statusText || 'Failed to fetch digital resource concepts. Unknown error occurred.'\r\n )\r\n );\r\n return rejectWithValue(error);\r\n }\r\n }\r\n);\r\n","import {createAsyncThunk} from '@reduxjs/toolkit';\r\nimport {filtersApi} from 'api';\r\nimport {IBindBaseEntity} from 'models';\r\nimport {toastNotificationManager} from 'toast-notifications';\r\nimport {prefix} from './config';\r\n\r\nexport const fetchDigitalResourceTypesThunk: any = createAsyncThunk<IBindBaseEntity[]>(\r\n `${prefix} fetchDigitalResourceTypes`,\r\n async (_, {rejectWithValue, dispatch}) => {\r\n try {\r\n const {parsedBody} = await filtersApi.getDigitalResourcesTypes();\r\n return parsedBody;\r\n } catch (error) {\r\n dispatch(\r\n toastNotificationManager.createErrorToastAction(\r\n error.parsedBody || error.statusText || 'Failed to fetch digital resource types. Unknown error occurred.'\r\n )\r\n );\r\n return rejectWithValue(error);\r\n }\r\n }\r\n);\r\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {filtersApi} from 'api';\nimport {IBindBaseEnumEntity} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const fetchInstrumentMainTypesThunk: any = createAsyncThunk<IBindBaseEnumEntity[]>(\n `${prefix} fetchInstrumentMainTypes`,\n async (_, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await filtersApi.getInstrumentMainTypes();\n return parsedBody;\n } catch (error) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n error.parsedBody || error.statusText || 'Failed to fetch instrument main types. Unknown error occurred.'\n )\n );\n return rejectWithValue(error);\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {uploadResourcesApi} from 'api';\nimport {IGetAllFileTypeOptionsApiResponse} from 'models';\nimport {prefix} from './config';\n\nexport const fetchUploadFileTypeOptionsThunk: any = createAsyncThunk<IGetAllFileTypeOptionsApiResponse>(\n `${prefix} fetchUploadFileTypeOptions`,\n async (_, {rejectWithValue}) => {\n try {\n const {parsedBody} = await uploadResourcesApi.getUploadFileTypeOptions();\n return parsedBody;\n } catch (error) {\n return rejectWithValue(error);\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {pamApi} from 'api';\nimport {IGetAllFileTypeOptionsApiResponse} from 'models';\nimport {prefix} from './config';\n\nexport const fetchAllFileTypeOptionsThunk: any = createAsyncThunk<IGetAllFileTypeOptionsApiResponse>(\n `${prefix} fetchAllFileTypeOptions`,\n async (_, {rejectWithValue}) => {\n try {\n const {parsedBody} = await pamApi.getAllFileTypeOptions();\n return parsedBody;\n } catch (error) {\n return rejectWithValue(error);\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {filtersApi} from 'api';\nimport {IBaseFiltersApiResponse} from 'models/filters-selections';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const fetchFutureProgramYearsThunk: any = createAsyncThunk<IBaseFiltersApiResponse, null>(\n `${prefix} fetchFutureProgramYears`,\n async (_, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await filtersApi.getFutureProgramYears();\n return parsedBody;\n } catch (error) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n error.parsedBody || error.statusText || 'Failed to fetch program. Unknown error occurred.'\n )\n );\n return rejectWithValue(error);\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {pamApi} from 'api';\nimport {IFetchResourcesThunkPayload, IGetResourcesApiResponse} from 'models/resources';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const fetchResourcesThunk: any = createAsyncThunk<IGetResourcesApiResponse, null>(\n `${prefix} fetchResourcesThunk`,\n async (payload: IFetchResourcesThunkPayload, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await pamApi.getAllResources(payload);\n return parsedBody;\n } catch (error) {\n dispatch(toastNotificationManager.createErrorToastAction(error.parsedBody));\n return rejectWithValue({error});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {pamApi} from 'api';\nimport {IGetInstrumentsApiResponse, IGetInstrumentsThunkPayload} from 'models/resources';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const fetchInstrumentsThunk: any = createAsyncThunk<IGetInstrumentsApiResponse, null>(\n `${prefix} fetchResources`,\n async (payload: IGetInstrumentsThunkPayload, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await pamApi.getAllInstruments(payload);\n return parsedBody;\n } catch (error) {\n dispatch(toastNotificationManager.createErrorToastAction(error.parsedBody));\n return rejectWithValue({error});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {filtersApi} from 'api';\nimport {IBaseFiltersApiResponse} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const fetchContentItemStatusesThunk: any = createAsyncThunk<IBaseFiltersApiResponse>(\n `${prefix} fetchContentItemStatuses`,\n async (_, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await filtersApi.getFilterContentItemStatuses();\n return parsedBody;\n } catch (error) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n error.parsedBody || error.statusText || 'Failed to fetch learning path statuses. Unknown error occurred.'\n )\n );\n return rejectWithValue(error);\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {filtersApi} from 'api';\nimport {IBaseFiltersApiResponse} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const fetchFileStatusesThunk: any = createAsyncThunk<IBaseFiltersApiResponse>(\n `${prefix} fetchFileStatuses`,\n async (_, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await filtersApi.getFilterFileStatuses();\n return parsedBody;\n } catch (error) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n error.parsedBody || error.statusText || 'Failed to fetch file statuses. Unknown error occurred.'\n )\n );\n return rejectWithValue(error);\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {filtersApi} from 'api';\nimport {IBindBaseEntity} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const fetchSchoolLevelThunk: any = createAsyncThunk<IBindBaseEntity[]>(\n `${prefix} schoolLevel`,\n async (_, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await filtersApi.getSchoolLevels();\n return parsedBody;\n } catch (error) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n error.parsedBody || error.statusText || 'Failed to fetch school levels. Unknown error occurred.'\n )\n );\n return rejectWithValue(error);\n }\n }\n);\n","export const prefix = '[Filters: Items]';\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {integrationsApi} from 'api';\nimport {IIntegrationListDropdown} from 'models/integrations';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const fetchIntegrationListDropdownThunk: any = createAsyncThunk<IIntegrationListDropdown, any>(\n `${prefix} fetchIntegrationListDropdown`,\n async (_, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await integrationsApi.getIntegrationListDropdownData();\n return parsedBody;\n } catch (error) {\n dispatch(toastNotificationManager.createErrorToastAction(error.parsedBody));\n return rejectWithValue({error});\n }\n }\n);\n","export const prefix = '[Filters: Integrations]';\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {integrationsApi} from 'api';\nimport {IBindBaseEnumEntity} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from '../config';\n\nexport const fetchIntegrationTypesThunk: any = createAsyncThunk<IBindBaseEnumEntity[]>(\n `${prefix} fetchIntegrationTypes`,\n async (_, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await integrationsApi.getIntegrationTypes();\n return parsedBody;\n } catch (error) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n error.parsedBody || error.statusText || 'Failed to fetch integration types. Unknown error occurred.'\n )\n );\n return rejectWithValue(error);\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {integrationsApi} from 'api';\nimport {ISearchSchoolsPayload} from 'models/integrations';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const searchSchoolsThunk: any = createAsyncThunk<any, any>(\n `${prefix} searchSchools`,\n async (query: ISearchSchoolsPayload, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await integrationsApi.searchSchools(query);\n return parsedBody;\n } catch (error) {\n dispatch(toastNotificationManager.createErrorToastAction(error.parsedBody));\n return rejectWithValue({error});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {filtersApi} from 'api';\nimport {IBindBaseEntity} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const fetchSchoolDistrictThunk: any = createAsyncThunk<IBindBaseEntity[], string>(\n `${prefix} schoolDistrict`,\n async (query, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await filtersApi.getSchoolDistrictsByQuery(query);\n return parsedBody;\n } catch (error) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n error.parsedBody || error.statusText || 'Failed to fetch school levels. Unknown error occurred.'\n )\n );\n return rejectWithValue(error);\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {itemsApi} from 'api';\nimport {ICreateItemPayload, IQuestionBase} from 'models';\nimport {pages} from 'paths';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {itemsMessages} from '../../utils';\nimport {prefix} from './config';\n\nexport const createItemThunk: any = createAsyncThunk<IQuestionBase, ICreateItemPayload>(\n `${prefix} createItem`,\n async (payload: ICreateItemPayload, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await itemsApi.createUpdateItem(payload);\n dispatch(toastNotificationManager.createSuccessToastAction(itemsMessages.createSuccess));\n payload.push(pages.adminPortal.items.root);\n return parsedBody;\n } catch (err) {\n dispatch(toastNotificationManager.createErrorToastAction(err.parsedBody));\n return rejectWithValue({error: err});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {instrumentsApi} from 'api';\nimport {ICreateQuestionPayload, IQuestionBase} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {itemsMessages} from '../../utils';\nimport {prefix} from './config';\n\nexport const createQuestionThunk: any = createAsyncThunk<IQuestionBase, ICreateQuestionPayload>(\n `${prefix} createQuestion`,\n async (payload: ICreateQuestionPayload, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await instrumentsApi.createQuestion(payload);\n dispatch(toastNotificationManager.createSuccessToastAction(itemsMessages.createQuestionSuccess));\n return parsedBody;\n } catch (err) {\n dispatch(toastNotificationManager.createErrorToastAction(err.parsedBody));\n return rejectWithValue({error: err});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {itemsApi} from 'api';\nimport {IItemDetails, IWithNavigationPush} from 'models';\nimport {pages} from 'paths';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport interface IFetchItemPayload extends IWithNavigationPush {\n id: number;\n fullPageLoad: boolean;\n}\n\nexport const fetchItemThunk: any = createAsyncThunk<IItemDetails, IFetchItemPayload>(\n `${prefix} fetchItem`,\n async ({id, push}: IFetchItemPayload, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await itemsApi.getItemById(id);\n return parsedBody;\n } catch (err) {\n dispatch(toastNotificationManager.createErrorToastAction(err.parsedBody));\n push(pages.error);\n return rejectWithValue({error: err});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {itemsApi} from 'api';\nimport {SortingOrderEnum} from 'enums';\nimport {IBindItemsPage, IItemsFilter, IGetPageOfEntities} from 'models';\nimport {TStateStore} from 'store';\nimport {prefix} from './config';\nimport {IItemsAllSortOrder} from './../../../../../models/library/items/IItemsAllSortOrder';\nimport {toastNotificationManager} from 'toast-notifications';\ninterface IPayload {\n filter: IItemsFilter;\n sortOrder: IItemsAllSortOrder;\n pagination: IGetPageOfEntities;\n}\n\nexport const fetchListItemsPagedThunk: any = createAsyncThunk<IBindItemsPage, any, {dispatch: any; state: TStateStore}>(\n `${prefix} fetchListItemsPaged`,\n async ({filter, sortOrder: {sort, order}, pagination}: IPayload, {dispatch, rejectWithValue}) => {\n try {\n const sortAsc = sort === SortingOrderEnum.ASC;\n const {parsedBody} = await itemsApi.getPageOfItems(\n {pageSize: pagination.itemsPerPage, pageNumber: pagination.page},\n {sortAsc, sortBy: order},\n filter\n );\n return parsedBody;\n } catch (err) {\n dispatch(toastNotificationManager.createErrorToastAction(err.parsedBody));\n return rejectWithValue({error: err});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {itemsApi} from 'api';\nimport {IAnswerStack} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const fetchNewItemThunk: any = createAsyncThunk<IAnswerStack[], null>(\n `${prefix} fetchNewItem`,\n async (_, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await itemsApi.getNewItem();\n return parsedBody;\n } catch (err) {\n dispatch(toastNotificationManager.createErrorToastAction(err.parsedBody));\n return rejectWithValue({error: err});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {instrumentsApi} from 'api';\nimport {TGetQuestionsApiResponse} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const fetchQuestionsThunk: any = createAsyncThunk<TGetQuestionsApiResponse, boolean>(\n `${prefix} fetchQuestions`,\n async (isApproved = false, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await instrumentsApi.getQuestions(isApproved);\n return parsedBody;\n } catch (err) {\n dispatch(toastNotificationManager.createErrorToastAction(err.parsedBody));\n return rejectWithValue({error: err});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {itemsApi} from 'api';\nimport {IBindBaseEntity} from 'models';\nimport {prefix} from '../../../instruments/store/thunks/config';\n\nexport const fetchSortByColumnsThunk: any = createAsyncThunk<IBindBaseEntity[]>(\n `${prefix} fetchSortByColumns`,\n async () => {\n const {parsedBody} = await itemsApi.getItemsSortByColumns();\n return parsedBody;\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {itemsApi} from 'api';\nimport {IBindBaseEntity} from 'models';\nimport {prefix} from '../../../instruments/store/thunks/config';\n\nexport const fetchSortOrderTypesThunk: any = createAsyncThunk<IBindBaseEntity[]>(\n `${prefix} fetchSortOrderTypes`,\n async () => {\n const {parsedBody} = await itemsApi.getItemsSortOrderTypes();\n return parsedBody;\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {itemsApi} from 'api';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {itemsMessages} from '../../utils';\nimport {prefix} from './config';\n\nexport const publishAllAnswerStacksForQuestionThunk: any = createAsyncThunk<any, number>(\n `${prefix} publishAllAnswerStacksForQuestion`,\n async (questionId: number, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await itemsApi.publishAllAnswerStacksForQuestion(questionId);\n dispatch(toastNotificationManager.createSuccessToastAction(itemsMessages.publishAllSuccess));\n return parsedBody;\n } catch (err) {\n dispatch(toastNotificationManager.createErrorToastAction(err.parsedBody));\n return rejectWithValue({error: err});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {itemsApi} from 'api';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {itemsMessages} from '../../utils';\nimport {prefix} from './config';\n\nexport const publishItemAnswerStackThunk: any = createAsyncThunk<any, number>(\n `${prefix} publishItemAnswerStack`,\n async (answerStackId: number, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await itemsApi.publishItemAnswerStack(answerStackId);\n dispatch(toastNotificationManager.createSuccessToastAction(itemsMessages.publishAnswerStackSuccess));\n return parsedBody;\n } catch (err) {\n dispatch(toastNotificationManager.createErrorToastAction(err.parsedBody));\n return rejectWithValue({error: err});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {itemsApi} from 'api';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {itemsMessages} from '../../utils';\nimport {prefix} from './config';\n\nexport const unPublishItemAnswerStackThunk: any = createAsyncThunk<any, number>(\n `${prefix} unPublishItemAnswerStack`,\n async (answerStackId: number, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await itemsApi.unPublishItemAnswerStack(answerStackId);\n dispatch(toastNotificationManager.createSuccessToastAction(itemsMessages.unPublishAnswerStackSuccess));\n return parsedBody;\n } catch (err) {\n dispatch(toastNotificationManager.createErrorToastAction(err.parsedBody));\n return rejectWithValue({error: err});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {itemsApi} from 'api';\nimport {IQuestionBase, IUpdateItemPayload} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {itemsMessages} from '../../utils';\nimport {prefix} from './config';\n\nexport const createUpdateItemThunk: any = createAsyncThunk<IQuestionBase, IUpdateItemPayload>(\n `${prefix} createUpdateItem`,\n async (payload: IUpdateItemPayload, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await itemsApi.createUpdateItem(payload);\n dispatch(toastNotificationManager.createSuccessToastAction(itemsMessages.updateSuccess));\n return parsedBody;\n } catch (err) {\n dispatch(toastNotificationManager.createErrorToastAction(err.parsedBody));\n return rejectWithValue({error: err});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {itemsApi} from 'api';\nimport {IBindStringResponse, IDeleteItemPayload} from 'models';\nimport {pages} from 'paths';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const deleteItemThunk: any = createAsyncThunk<IBindStringResponse, IDeleteItemPayload>(\n `${prefix} deleteItem`,\n async ({itemId, push}: IDeleteItemPayload, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await itemsApi.deleteItem(itemId);\n dispatch(toastNotificationManager.createSuccessToastAction('The item was deleted successfully.'));\n push(pages.adminPortal.items.root);\n return parsedBody;\n } catch (err) {\n dispatch(toastNotificationManager.createErrorToastAction('There was an error while deleting the item.'));\n return rejectWithValue(err);\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {itemsApi} from 'api';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const fetchPossibleDefaultAnswerStacksThunk: any = createAsyncThunk<any>(\n `${prefix} fetchPossibleDefaultAnswerStacks`,\n async (id, {dispatch, rejectWithValue}) => {\n try {\n const questionId = Number(id);\n const {parsedBody} = await itemsApi.getPossibleDefaultAnswerStacks(questionId);\n return parsedBody;\n } catch (err) {\n dispatch(toastNotificationManager.createErrorToastAction(err.parsedBody));\n return rejectWithValue({error: err});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {itemsApi} from 'api';\nimport {IDefaultAnswerStackPayload, IQuestionBase} from 'models';\n\nimport {toastNotificationManager} from 'toast-notifications';\nimport {itemsMessages} from '../../utils';\nimport {prefix} from './config';\n\nexport const addDefaultAnswerStackThunk: any = createAsyncThunk<IQuestionBase, IDefaultAnswerStackPayload>(\n `${prefix} addDefaultAnswerStack`,\n async (payload: IDefaultAnswerStackPayload, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await itemsApi.addDefaultAnswerStack(payload);\n dispatch(toastNotificationManager.createSuccessToastAction(itemsMessages.updateSuccess));\n return parsedBody;\n } catch (err) {\n dispatch(toastNotificationManager.createErrorToastAction(err.parsedBody));\n return rejectWithValue({error: err});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {ICustomAnswerStackPayload, IQuestionBase} from 'models';\nimport {prefix} from './config';\nimport {itemsApi} from 'api';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {itemsMessages} from '../../utils';\n\nexport const addCustomAnswerStackThunk: any = createAsyncThunk<IQuestionBase, ICustomAnswerStackPayload>(\n `${prefix} addDefaultAnswerStack`,\n async (payload, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await itemsApi.addCustomAnswerStack(payload);\n dispatch(toastNotificationManager.createSuccessToastAction(itemsMessages.updateSuccess));\n return parsedBody;\n } catch (err) {\n dispatch(toastNotificationManager.createErrorToastAction(err.parsedBody));\n return rejectWithValue({error: err});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {itemsApi} from 'api';\nimport {IUpdateItemPayload, IUpdateItemResponse} from 'models';\nimport {prefix} from './config';\nimport {itemsMessages} from '../../utils';\nimport {toastNotificationManager} from 'toast-notifications';\n\nexport const updateItemThunk: any = createAsyncThunk<IUpdateItemResponse, IUpdateItemPayload>(\n `${prefix} updateItem`,\n async (payload: IUpdateItemPayload, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await itemsApi.updateItem(payload);\n dispatch(toastNotificationManager.createSuccessToastAction(itemsMessages.updateSuccess));\n return parsedBody;\n } catch (err) {\n dispatch(toastNotificationManager.createErrorToastAction(err.parsedBody));\n return rejectWithValue({error: err});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {itemsApi} from 'api';\nimport {IUpdateAnswerStackPayload, IUpdateItemResponse, IWithNavigationPush} from 'models';\nimport {prefix} from './config';\nimport {itemsMessages} from '../../utils';\nimport {toastNotificationManager} from 'toast-notifications';\n\ninterface IUpdatedAnswerStackPayload extends IUpdateAnswerStackPayload, IWithNavigationPush {}\n\nexport const updateAnswerStackThunk: any = createAsyncThunk<IUpdateItemResponse, IUpdatedAnswerStackPayload>(\n `${prefix} updateAnswerStack`,\n async (payload: IUpdateAnswerStackPayload, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await itemsApi.updateAnswerStack(payload);\n dispatch(toastNotificationManager.createSuccessToastAction(itemsMessages.updateSuccess));\n return parsedBody;\n } catch (err) {\n dispatch(toastNotificationManager.createErrorToastAction(err.parsedBody));\n return rejectWithValue({error: err});\n }\n }\n);\n","import _capitalize from 'lodash.capitalize';\n\nexport function capitalize(value: string) {\n return _capitalize(value);\n}\n","import _cloneDeep from 'lodash.clonedeep';\n\nexport function cloneDeep(value: any) {\n return _cloneDeep(value);\n}\n","import _filter from 'lodash.filter';\n\nexport function filter<T = any, P = any>(collection: T[], predicate: P) {\n return _filter(collection, predicate);\n}\n","import _findIndex from 'lodash.findindex';\n\nexport function findIndex<T = any, P = any>(collection: T[], predicate: P) {\n return _findIndex(collection, predicate);\n}\n","import _groupBy from 'lodash.groupby';\n\nexport function groupBy<T = any>(collection: T[], predicate: (item: T) => any) {\n return _groupBy(collection, predicate);\n}\n","import _intersection from 'lodash.intersection';\n\nexport function intersection(arr1: any[], arr2: any[]) {\n return _intersection(arr1, arr2);\n}\n","import _isEmpty from 'lodash.isempty';\n\nexport function isEmpty<T = any>(value: T) {\n return _isEmpty(value);\n}\n","import _isFunction from 'lodash.isfunction';\n\nexport function isFunction(value: any) {\n return _isFunction(value);\n}\n","import _isNumber from 'lodash.isnumber';\n\nexport function isNumber(value: any) {\n return _isNumber(value);\n}\n","import _isObject from 'lodash.isobject';\n\nexport function isObject(value: any) {\n return _isObject(value);\n}\n","import _isString from 'lodash.isstring';\n\nexport function isString(value: any): value is string {\n return _isString(value);\n}\n","// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport const noop = () => {};\n","import _toNumber from 'lodash.tonumber';\n\nexport function toNumber(value: string | number | boolean): number {\n return _toNumber(value);\n}\n","import _uniqueId from 'lodash.uniqueid';\n\nexport function uniqueId(prefix?: string) {\n return _uniqueId(prefix);\n}\n","import _values from 'lodash.values';\n\nexport function values(value: any): any[] {\n return _values(value);\n}\n","export const camelToTitle = (camelCase) =>\n camelCase\n .replace(/([A-Z])/g, (match) => ` ${match}`)\n .replace(/^./, (match) => match.toUpperCase())\n .trim();\n","import _debounce from 'lodash.filter';\n\nexport function debounce(callback: any, delay: number) {\n return _debounce((...args: any) => callback(...args), delay);\n}\n","import _orderBy from 'lodash.orderby';\n\nexport function orderBy(list: any, column: string, order: any) {\n return _orderBy(list, [column], [order]);\n}\n","import _isEqual from 'lodash.isequal';\n\nexport function isEqual<T = any>(value: T, other: T) {\n return _isEqual(value, other);\n}\n","export function arrayOfStringsToString<T = any>(collection: T[]) {\n return collection.toString();\n}\n","import _uniq from 'lodash.uniq';\n\nexport function uniq<T = any>(collection: T[]) {\n return _uniq(collection);\n}\n","import _uniqBy from 'lodash.uniqby';\n\nexport function uniqBy<T = any>(collection: T[], id: string) {\n return _uniqBy(collection, id);\n}\n","export const prefix = '[Instruments]';\n","import {BuilderItemDragTypeEnum} from 'admin/library/enums';\nimport {useBuilderItemDrag} from 'admin/library/instruments/builder/hooks';\nimport {IBuilderDragItem} from 'admin/library/models';\nimport {DragItem} from 'dragAndDrop';\nimport {QuestionAnswersTypeEnum} from 'enums';\nimport {IAnswer, IQuestionAnswerStackDetails} from 'models';\nimport React, {ReactNode} from 'react';\nimport {AnswersView} from './AnswersView';\n\ninterface IAnswersViewDragProps {\n answers: IAnswer[];\n type: QuestionAnswersTypeEnum;\n questionId: number;\n stackId?: number;\n dropHandler?: (item: IBuilderDragItem) => void;\n disabled?: boolean;\n hasMatchedMetadata: boolean;\n details?: IQuestionAnswerStackDetails;\n headingActions?: ReactNode;\n}\n\nexport function AnswersViewDrag({\n answers = [],\n type,\n questionId,\n stackId,\n dropHandler,\n disabled = false,\n details,\n headingActions,\n hasMatchedMetadata,\n}: IAnswersViewDragProps) {\n const itemDrag: IBuilderDragItem = {\n questionId,\n questionType: type,\n type: BuilderItemDragTypeEnum.item,\n answerStackId: stackId,\n };\n const {drag, isDragging} = useBuilderItemDrag(itemDrag, dropHandler);\n\n return (\n <DragItem drag={drag}>\n <AnswersView\n questionType={type}\n answers={answers}\n disabled={disabled}\n draggable\n isDragging={isDragging}\n details={details}\n headingActions={headingActions}\n hasMatchedMetadata={hasMatchedMetadata}\n />\n </DragItem>\n );\n}\n","import React, {ReactNode} from 'react';\n\nimport {IBuilderDragItem} from 'admin/library/models';\nimport {QuestionAnswersTypeEnum} from 'enums';\nimport {IAnswer, IQuestionAnswerStackDetails} from 'models';\nimport {AnswersView} from './AnswersView';\nimport {AnswersViewDrag} from './AnswersViewDrag';\n\ninterface IAnswersProps {\n answers: IAnswer[];\n type: QuestionAnswersTypeEnum;\n draggable?: boolean;\n questionId: number;\n stackId?: number;\n dropHandler?: (item: IBuilderDragItem) => void;\n disabled?: boolean;\n hasMatchedMetadata?: boolean;\n details?: IQuestionAnswerStackDetails;\n headingActions?: ReactNode;\n}\n\nexport function Answers({\n answers = [],\n type,\n draggable = false,\n questionId,\n stackId,\n dropHandler,\n disabled = false,\n details,\n headingActions,\n hasMatchedMetadata,\n}: IAnswersProps) {\n if (draggable && !disabled) {\n return (\n <AnswersViewDrag\n answers={answers}\n type={type}\n questionId={questionId}\n disabled={disabled}\n dropHandler={dropHandler}\n stackId={stackId}\n details={details}\n headingActions={headingActions}\n hasMatchedMetadata={hasMatchedMetadata}\n />\n );\n }\n\n return (\n <AnswersView\n answers={answers}\n disabled={disabled}\n isDragging={false}\n questionType={type}\n details={details}\n headingActions={headingActions}\n hasMatchedMetadata={hasMatchedMetadata}\n />\n );\n}\n","import {makeStyles, Table, TableBody, TableCell, TableContainer, TableHead, TableRow} from '@material-ui/core';\nimport {Checkbox} from 'components-lib';\nimport {IAnswer, IItemColumn} from 'models';\nimport React from 'react';\n\ninterface IAnswersMatrixViewProps {\n columns: IItemColumn[];\n rows: IAnswer[];\n}\n\nexport function AnswersMatrixView({columns, rows}: IAnswersMatrixViewProps) {\n const classes = useStyles();\n return (\n <TableContainer>\n <Table size=\"small\">\n <TableHead>\n <TableRow>\n {columns &&\n columns.map((col, idx) => (\n <TableCell key={idx} className={classes.cell} align=\"center\">\n {col && col.text}\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {rows &&\n rows.map((row) => (\n <TableRow key={row.value} className={classes.row}>\n {columns &&\n columns.map((c, idx) => {\n if (idx === 0) {\n return (\n <TableCell component=\"th\" scope=\"row\" key={idx} classes={{head: classes.firstCell}}>\n {row.text}\n </TableCell>\n );\n }\n return (\n <TableCell component=\"th\" scope=\"row\" key={idx} align=\"center\" classes={{head: classes.cell}}>\n <Checkbox checked={false} disabled />\n </TableCell>\n );\n })}\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </TableContainer>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n firstCell: {\n backgroundColor: theme.palette.grey[200],\n color: theme.palette.grey[800],\n width: 20,\n },\n cell: {\n backgroundColor: theme.palette.grey[200],\n color: theme.palette.grey[800],\n width: 80,\n },\n row: {\n '&:nth-of-type(odd)': {\n backgroundColor: theme.palette.grey[50],\n },\n },\n circle: {\n width: theme.spacing(3),\n height: theme.spacing(3),\n borderRadius: '50%',\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: theme.palette.primary.main,\n },\n}));\n","import {IAnswer, IItemColumn, IQuestionAnswerStack} from 'models';\nimport React from 'react';\nimport {AnswersMatrixView} from './AnswersMatrixView';\n\ninterface IAnswersMatrixProps {\n // columns?: IItemColumn[] | IQuestionAnswerStack[];\n columns?: any; // TODO model\n rows?: IAnswer[];\n}\n\nexport function AnswersMatrix({columns = [], rows = []}: IAnswersMatrixProps) {\n const isFromBuilder = (columns[0] && (columns[0] as any).questionAnswerStackId) ?? false;\n // TODO add question text for the builder items\n const columnsUpdated: any = isFromBuilder\n ? addExtraColumn(mapColumns(columns as IQuestionAnswerStack[]))\n : addExtraColumn(columns);\n return <AnswersMatrixView columns={columnsUpdated} rows={rows} />;\n}\n\nfunction mapColumns(columns: IQuestionAnswerStack[]): IItemColumn[] {\n return columns[0].choices.map((choice, idx) => ({text: choice.text, value: choice.value, position: idx}));\n}\n\nfunction addExtraColumn(columns: IItemColumn[]): IItemColumn[] {\n return [null, ...columns];\n}\n","import React, {FC, useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {PreviewEditor, TextArea} from 'components-lib';\n\ninterface IAnswerInstructionaTextProps {\n html: string;\n}\n\nexport const AnswerInstructionaText: FC<IAnswerInstructionaTextProps> = ({html = ''}) => {\n const classes = useStyles();\n const shouldRender = !!html;\n\n const textArea = useMemo(() => <TextArea placeholder={'...'} rows={5} disabled fullWidth />, []);\n const previewEditor = useMemo(() => <PreviewEditor htmlStr={html} />, [html]);\n\n if (!shouldRender) {\n return <div className={classes.textArea}>{textArea}</div>;\n }\n\n return <div className={classes.instructionalText}>{previewEditor}</div>;\n};\n\nconst useStyles = makeStyles((theme) => ({\n instructionalText: {\n maxWidth: 800,\n color: theme.palette.grey[800],\n fontSize: '0.75rem',\n padding: `${theme.spacing(1)}px ${theme.spacing(3)}px ${theme.spacing(3)}px ${\n theme.spacing(5) + theme.spacing(1)\n }px`,\n },\n textArea: {\n width: '95%',\n padding: `${theme.spacing(1)}px 0px ${theme.spacing(3)}px ${theme.spacing(1) + theme.spacing(2)}px`,\n },\n}));\n","import React, {FC} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {IAnswer, IToggleOption} from 'models';\nimport {mapToggleButtonOptions} from 'admin/library/utils';\nimport {ToggleButtonGroup, ToggleButton} from '@material-ui/lab';\n\ninterface IAnswerBuilderRatingProps {\n answers: IAnswer[];\n name?: string;\n withSmallButtons?: boolean;\n}\n\nexport const AnswerBuilderRating: FC<IAnswerBuilderRatingProps> = ({answers, withSmallButtons}) => {\n const classes = useStyles({withSmallButtons});\n const options = mapToggleButtonOptions(answers) as IToggleOption[];\n\n return (\n <div className={classes.ratingAnswer}>\n <ToggleButtonGroup aria-label=\"toggle\">\n {options.map((option, idx: number) => (\n <ToggleButton\n className={classes.toggleButton}\n key={`button-${idx}`}\n value={option.value}\n aria-label={option.label}\n disabled\n selected={option.selected}\n >\n {option.label}\n </ToggleButton>\n ))}\n </ToggleButtonGroup>\n </div>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n ratingAnswer: {\n height: theme.spacing(5),\n marginLeft: theme.spacing(2),\n display: 'flex',\n alignItems: 'center',\n },\n toggleButton: ({withSmallButtons}: Pick<IAnswerBuilderRatingProps, 'withSmallButtons'>) => {\n let styles = {\n padding: 7.7,\n color: theme.palette.grey[900],\n fontWeight: 700,\n border: `1px solid ${theme.palette.grey[300]}`,\n '&.Mui-selected': {\n color: theme.palette.primary.contrastText,\n backgroundColor: theme.palette.secondary.main,\n },\n '&:hover': {\n color: theme.palette.primary.contrastText,\n backgroundColor: theme.palette.secondary.main,\n },\n '& span': {\n width: 10,\n },\n };\n\n if (withSmallButtons) {\n styles = {...styles, padding: 5};\n }\n\n return styles;\n },\n}));\n","import {Text} from 'components-lib';\nimport React from 'react';\n\ninterface IEntityHeaderNameProps {\n name: string;\n}\n\nexport function EntityHeaderName({name}: IEntityHeaderNameProps) {\n return (\n <div style={{display: 'flex', width: '100%'}}>\n <Text.Heading as=\"h3\">{name}</Text.Heading>\n </div>\n );\n}\n","import React, {FC} from 'react';\nimport {makeStyles} from '@material-ui/core';\n\nimport {Text} from 'components-lib';\n\ninterface IEntityHeaderInstructionalTextProps {\n instructionText: string;\n}\n\nexport const EntityHeaderInstructionalText: FC<IEntityHeaderInstructionalTextProps> = ({instructionText}) => {\n const classes = useStyles();\n\n return (\n <div className={classes.instructionText}>\n <Text.Heading as=\"h3\">{instructionText}</Text.Heading>\n </div>\n );\n};\n\nconst useStyles = makeStyles(() => ({\n instructionText: {\n display: 'flex',\n width: '100%',\n },\n}));\n","import {makeStyles} from '@material-ui/core';\nimport {CardLinkInfoTooltip} from 'admin/library/instruments/components';\nimport {Divider, Row, Tag, Text} from 'components-lib';\nimport {QuestionAnswersTypeEnum} from 'enums';\nimport React, {Fragment, ReactNode} from 'react';\nimport {cardTypeMap} from '../../enums';\n\ninterface ICardBodyProps {\n id: string;\n type?: QuestionAnswersTypeEnum;\n title?: string;\n position: number;\n itemPrefixText?: string;\n actions?: ReactNode;\n withItemInfo?: boolean;\n openInfoLinkClickHandler?: () => void;\n linkedQuestionAnswerStackId?: number;\n}\n\nexport function EntityCardBody({\n id,\n type,\n title,\n position,\n itemPrefixText = 'Item',\n actions,\n withItemInfo,\n linkedQuestionAnswerStackId,\n openInfoLinkClickHandler,\n}: ICardBodyProps) {\n const classes = useStyles();\n return (\n <>\n <Row justify=\"flex-start\" classes={{root: classes.header}}>\n <Tag label={`${itemPrefixText} ${position + 1}`} color=\"primary\" />\n {type && (\n <>\n <Divider.Vertical size=\"small\" />\n <Text.Paragraph variant=\"body2\">{cardTypeMap.get(type)}</Text.Paragraph>\n </>\n )}\n {id && (\n <Fragment>\n <Divider.Vertical size=\"small\" />\n <Text.Paragraph variant=\"body2\">Item ID: {id}</Text.Paragraph>\n </Fragment>\n )}\n {linkedQuestionAnswerStackId && withItemInfo && (\n <>\n <Divider.Vertical size=\"small\" />\n <CardLinkInfoTooltip clickHandler={openInfoLinkClickHandler} />\n </>\n )}\n {!!actions && <div className={classes.actions}>{actions}</div>}\n </Row>\n {title && (\n <Row justify=\"flex-start\">\n <Text.Heading as=\"h3\">{title}</Text.Heading>\n </Row>\n )}\n </>\n );\n}\n\nconst useStyles = makeStyles((theme) => {\n const marginBottom = theme.spacing(3);\n return {\n header: {\n marginBottom,\n },\n heading: {\n marginBottom,\n },\n actions: {\n marginLeft: 'auto',\n },\n paragraph: {\n color: theme.palette.grey[100],\n },\n };\n});\n","import {isInstructionalTextQuestion} from 'admin/library/instruments/builder/utils';\nimport {Card} from 'components-lib';\nimport {IInstrumentItem} from 'models';\nimport React, {ReactNode} from 'react';\nimport {toNumber} from 'utils';\nimport {EntityCardAnswers} from './EntityCardAnswers';\nimport {EntityCardBody} from './EntityCardBody';\n\ninterface ICardItemProps {\n item: IInstrumentItem;\n position: number;\n itemPrefixText?: string;\n withTitle?: boolean;\n actions?: ReactNode;\n openInfoLinkClickHandler?: () => void;\n}\n\nexport function EntityCard({\n position,\n item,\n itemPrefixText,\n withTitle = true,\n actions,\n openInfoLinkClickHandler,\n}: ICardItemProps) {\n const {\n id,\n name,\n type,\n questionOptionsTypeId,\n questionAnswerStackId,\n questionAnswerStackIdOriginal,\n linkedQuestionAnswerStackId,\n title,\n choices,\n columns,\n rows,\n html,\n } = item;\n const entityType = type || questionOptionsTypeId;\n const questionId = name || id || questionAnswerStackIdOriginal || questionAnswerStackId;\n const isInstructionalTextType = isInstructionalTextQuestion(entityType);\n const entityId = !isInstructionalTextType ? questionId.toString() : '';\n\n return (\n <Card>\n <EntityCardBody\n id={entityId}\n type={entityType}\n title={withTitle ? title : ''}\n position={position}\n itemPrefixText={itemPrefixText}\n withItemInfo={!!openInfoLinkClickHandler}\n linkedQuestionAnswerStackId={linkedQuestionAnswerStackId}\n openInfoLinkClickHandler={openInfoLinkClickHandler}\n actions={actions}\n />\n <EntityCardAnswers\n type={entityType}\n choices={choices}\n columns={columns}\n rows={rows}\n questionId={toNumber(entityId)}\n html={html}\n />\n </Card>\n );\n}\n","import {makeStyles} from '@material-ui/core';\nimport {Column} from 'components-lib';\nimport React, {ReactNode, useCallback} from 'react';\nimport {EntityCard} from '../EntityCard/EntityCard';\n\ninterface IEntityItemsProps<T> {\n items: T[];\n itemPrefixText?: string;\n withTitle?: boolean;\n actions?: (isApproved: boolean, canBeUnpublished: boolean, id: number) => ReactNode;\n setCurrentItem?: (item: any) => void;\n handleLinkModalOpen?: () => void;\n}\n\nexport function EntityItems<T>({\n items,\n itemPrefixText,\n withTitle = true,\n actions,\n setCurrentItem,\n handleLinkModalOpen,\n}: IEntityItemsProps<T>) {\n const classes = useStyles();\n\n const openInfoLinkClickHandler = useCallback(\n (item) => {\n setCurrentItem(item);\n handleLinkModalOpen();\n },\n [handleLinkModalOpen, setCurrentItem]\n );\n\n return (\n <Column className={classes.root}>\n {items.map((item: any, idx) => {\n const openInfoLinkClickChanger = openInfoLinkClickHandler ? () => openInfoLinkClickHandler(item) : null;\n\n return (\n <EntityCard\n key={idx}\n item={item}\n position={idx}\n itemPrefixText={itemPrefixText}\n withTitle={withTitle}\n openInfoLinkClickHandler={openInfoLinkClickChanger}\n actions={\n actions &&\n actions(\n item.isApproved,\n item.canBeUnpublished,\n item.questionAnswerStackIdOriginal ?? item.questionAnswerStackId\n )\n }\n />\n );\n })}\n </Column>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginTop: theme.spacing(3),\n marginRight: theme.spacing(3),\n },\n}));\n","import React from 'react';\nimport {paths} from 'paths';\nimport {Navigation, NavigationLink, Icon} from 'components-lib';\n\nexport function LibraryNavBar() {\n return (\n <Navigation type=\"secondary\">\n <NavigationLink\n to={`${paths.adminPortal.root}${paths.adminPortal.library.root}${paths.adminPortal.library.instruments}`}\n type=\"secondary\"\n >\n <>\n <Icon.DescriptionIcon />\n Instruments\n </>\n </NavigationLink>\n <NavigationLink\n to={`${paths.adminPortal.root}${paths.adminPortal.library.root}${paths.adminPortal.library.items}`}\n type=\"secondary\"\n >\n <>\n <Icon.SubjectIcon />\n Questions\n </>\n </NavigationLink>\n </Navigation>\n );\n}\n","import React from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Text} from 'components-lib';\nimport {EntityStatusEnum} from 'enums';\n\ninterface IStatusProps {\n status: EntityStatusEnum;\n loading?: boolean;\n message?: string;\n}\n\nconst getStatusText = (status: EntityStatusEnum, message: string) => {\n if (status === EntityStatusEnum.live) {\n return EntityStatusEnum.published;\n }\n\n if (status === EntityStatusEnum.error) {\n return message;\n }\n\n return status;\n};\n\nexport function Status({status, loading, message}: IStatusProps) {\n const isLive = status === EntityStatusEnum.live;\n const isPublished = status === EntityStatusEnum.published;\n const isLiveOrPublished = isLive || isPublished;\n\n const statusText = getStatusText(status, message);\n\n const classes = useStyles({status, isLiveOrPublished});\n\n return <Text.Paragraph>Status: {<span className={classes.status}>{loading ? '' : statusText}</span>}</Text.Paragraph>;\n}\ninterface IStatusStyles {\n isLiveOrPublished: boolean;\n}\n\nconst useStyles = makeStyles((theme) => ({\n status: ({isLiveOrPublished}: IStatusStyles) => {\n return {\n color: !isLiveOrPublished ? theme.palette.error.main : theme.palette.secondary.main,\n };\n },\n}));\n","export const ClassTypes = ['On-Site', 'Virtual'];\n","export enum ExportTypesEnum {\n DataFile,\n DataFileDetailed,\n}\n","export enum ReportExportFormatsEnum {\n PDF,\n CSV,\n}\n","export enum ReportTypesEnum {\n ImpactSummary,\n AchievementSummary,\n StudentGradebookReport,\n StudentAchievementSummary,\n}\n","export enum ReportTypesNamesEnum {\n ImpactSummary = 'Impact Summary Report',\n AchievementSummary = 'Achievement Summary Report',\n StudentGradebook = 'Student Gradebook Report',\n StudentAchievementSummary = 'Student Achievement Report',\n}\n","export enum ReportTypeTermsEnum {\n Impact = 'Impact',\n Achievement = 'Achievement',\n Student = 'Student',\n Gradebook = 'Student',\n}\n","export enum ProgramDetailsViewTypeEnum {\n Program,\n Class,\n}\n","export enum DefaultProgramMenuItemOptionEnum {\n ProgramLevel = 'Program Level (All)',\n ClassLevel = 'Class Level (All)',\n}\n","export enum ExportTypesNamesEnum {\n RawDataFile = 'Raw Data File',\n RawDataFileDetailed = 'Raw Data File (Detailed)',\n}\n","export const utcDatetimeInAmPmFormat = 'YYYY-MM-DD hh:mm A';\nexport const dateMMddYYYYFormat = 'MM/DD/yyyy';\n","import moment from 'moment';\n\nexport const getDatetimeAMPMinUTC = (utcDate: string) => moment.utc(utcDate).format('MM/DD/YYYY hh:mm A');\n","import moment from 'moment';\nimport {dateMMddYYYYFormat} from './datetimeFormats';\n\nexport const getDateMMDDyyyy = (utcDate: string) => moment.utc(utcDate).format(dateMMddYYYYFormat);\n","import {convertToISOString} from './convertToISOString';\n\nexport const getDateFromISOString = (date: Date) => {\n const dateString = convertToISOString(date);\n return dateString.split('T')[0];\n};\n","import moment from 'moment';\n\nexport const convertToISOString = (date: Date, keepOffset = true): string => moment(date).toISOString(keepOffset);\n","import moment from 'moment';\nimport {getDateFromISOString} from './getDateFromISOString';\n\nexport const getIsBeforeDate = (beforeDate: Date, afterDate?: Date) => {\n let today = new Date();\n\n if (afterDate) {\n today = afterDate;\n }\n\n const beforeISOString = getDateFromISOString(beforeDate);\n const todayISOString = getDateFromISOString(today);\n\n return moment(beforeISOString).isBefore(moment(todayISOString));\n};\n","const maxChar = 45;\n\nexport function updateSelectLabel(label: string) {\n const slicedLabel = label.slice(0, maxChar);\n const shouldRenderDots = label.length > maxChar;\n const updatedLabel = `${slicedLabel} ${shouldRenderDots ? '...' : ''}`;\n\n return {\n shouldRenderDots,\n updatedLabel,\n };\n}\n","export function prepareMultiPartFormData(formValues) {\n const data = new FormData();\n data.append('file', formValues);\n return data;\n}\n","import {IntegrationsOrderingEnum} from 'admin/integrations/enums/IntegrationsOrdering.enum';\nimport {InstrumentsOrderingEnum} from 'admin/library/instruments/enums/InstrumentsOrderingEnum';\nimport {ProgramsAllOrderingEnum} from 'admin/programs/all/enums/ProgramsAllOrdering.enum';\nimport {ProgramsClassesOrderingEnum} from 'admin/programs/details/classes/all/enums';\nimport {ProgramClassInstrumentsOrderingEnum} from 'admin/programs/details/classes/details/instruments/enums';\nimport {ProgramsMasterInstrumentsOrderingEnum} from 'admin/programs/details/masterInstruments/enums';\nimport {DigitalResourcesOrderingEnum} from 'admin/resources/files/views/all';\n\nimport {ISortingOptions} from 'models';\n\nexport const getSortingOptions = (\n order:\n | ProgramsAllOrderingEnum\n | IntegrationsOrderingEnum\n | DigitalResourcesOrderingEnum\n | InstrumentsOrderingEnum\n | ProgramsClassesOrderingEnum\n | ProgramsMasterInstrumentsOrderingEnum\n | InstrumentsOrderingEnum\n | ProgramClassInstrumentsOrderingEnum,\n sortAsc: boolean\n): ISortingOptions => ({\n sortBy: order,\n sortAsc,\n});\n","import {SortingOrderEnum} from '../../enums/SortingOrder.enum';\n\nexport const getIsAscSortOrder = (sort: SortingOrderEnum) => sort === SortingOrderEnum.ASC;\n","//eslint-disable-next-line\nexport const emailRegex = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n","import {v4 as uuidv4} from 'uuid';\n\nexport const createUniqueId = () => uuidv4();\n","export const splitStringByNewLine = (text: string) => text.split('\\n');\n","export const getFirstTwoCharsFromFullName = (fullName: string) => {\n const [firstName, lastName] = fullName.split(' ');\n const first = firstName ? firstName.charAt(0) : 'J';\n const last = lastName ? lastName.charAt(0) : 'A';\n return `${first}${last}`;\n};\n","import {useSelector} from 'react-redux';\nimport {\n isSomeOfSessionsInEditModeSelector,\n isSomeOfSessionsWithEmptyNameSelector,\n builderSessionItemsCollectionSelector,\n builderSessionItemsEntitiesSelector,\n builderSessionItemsResultSelector,\n learningPathsCreateBuilderIsAllSessionsExpanded,\n} from '../../session-builder/store';\nimport {\n instrumentsBaseEntitiesCollectionSelector,\n instrumentsBaseEntitiesSelector,\n instrumentsConcatenatedBaseEntitiesCollectionSelector,\n instrumentsConcatenatedBaseEntitiesSelector,\n resourcesBaseEntitiesCollectionSelector,\n resourcesBaseEntitiesSelector,\n resourcesConcatenatedBaseEntitiesCollectionSelector,\n resourcesConcatenatedBaseEntitiesSelector,\n} from 'filters-selections';\nimport {ZERO_NUMBER} from 'utils';\n\nexport const useLearningPathBuilderItemsEntities = () => {\n const builderSessionItemsEntities = useSelector(builderSessionItemsEntitiesSelector);\n const builderSessionItemsResult = useSelector(builderSessionItemsResultSelector);\n const builderSessionItemsCollection = useSelector(builderSessionItemsCollectionSelector);\n\n const isAllSessionsExpanded = useSelector(learningPathsCreateBuilderIsAllSessionsExpanded);\n\n const resourcesBaseEntities = useSelector(resourcesBaseEntitiesSelector);\n const resourcesBaseEntitiesCollection = useSelector(resourcesBaseEntitiesCollectionSelector);\n\n const resourcesConcatenatedBaseEntities = useSelector(resourcesConcatenatedBaseEntitiesSelector);\n const resourcesConcatenatedBaseEntitiesCollection = useSelector(resourcesConcatenatedBaseEntitiesCollectionSelector);\n\n const instrumentsBaseEntities = useSelector(instrumentsBaseEntitiesSelector);\n const instrumentsBaseEntitiesCollection = useSelector(instrumentsBaseEntitiesCollectionSelector);\n\n const instrumentsConcatenatedBaseEntities = useSelector(instrumentsConcatenatedBaseEntitiesSelector);\n const instrumentsConcatenatedBaseEntitiesCollection = useSelector(\n instrumentsConcatenatedBaseEntitiesCollectionSelector\n );\n\n const isSomeOfSessionsInEditMode = useSelector(isSomeOfSessionsInEditModeSelector);\n const isSomeOfSessionsWithEmptyName = useSelector(isSomeOfSessionsWithEmptyNameSelector);\n\n const hasSessions = builderSessionItemsCollection.length > ZERO_NUMBER;\n\n return {\n builderSessionItemsEntities,\n builderSessionItemsResult,\n builderSessionItemsCollection,\n\n resourcesBaseEntities,\n resourcesBaseEntitiesCollection,\n resourcesConcatenatedBaseEntities,\n resourcesConcatenatedBaseEntitiesCollection,\n\n instrumentsBaseEntities,\n instrumentsBaseEntitiesCollection,\n instrumentsConcatenatedBaseEntities,\n instrumentsConcatenatedBaseEntitiesCollection,\n\n isAllSessionsExpanded,\n isSomeOfSessionsInEditMode,\n isSomeOfSessionsWithEmptyName,\n\n hasSessions,\n };\n};\n","import {useCallback} from 'react';\nimport {useAppDispatch} from 'hooks';\nimport {IBaseResourceItem} from 'models/resources';\nimport {\n IAddInstrumentItemsPayload,\n IAddResourceItemsPayload,\n ILearningPathSessionItem,\n} from 'models/resources/learning-paths';\nimport {ILearningPathSessionsFormBaseValues} from '../utils';\nimport {sessionBuilderSliceSitesActions as actions} from '../store';\nimport {useLearningPathBuilderItemsEntities} from './useLearningPathBuilderItemsEntities';\nimport {SessionBuilderEditModeEnum} from 'enums/learning-paths';\n\nexport const useSessionBuilderStoreActions = () => {\n const dispatch = useAppDispatch();\n const {\n isAllSessionsExpanded,\n builderSessionItemsCollection,\n builderSessionItemsEntities,\n } = useLearningPathBuilderItemsEntities();\n\n const addSessionBuilderItem: (item: ILearningPathSessionItem) => void = useCallback(\n (item: ILearningPathSessionItem) => dispatch(actions.addSessionBuilderItem(item)),\n [dispatch]\n );\n\n const deleteSessionBuilderItem: (item: ILearningPathSessionItem) => void = useCallback(\n (item: ILearningPathSessionItem) => dispatch(actions.removeSessionBuilderItem(item)),\n [dispatch]\n );\n\n const clearBuilder: () => void = useCallback(() => dispatch(actions.clearBuilder()), [dispatch]);\n\n const mapUpdateSessionBuilderItem: (\n item: ILearningPathSessionItem,\n formValues: ILearningPathSessionsFormBaseValues\n ) => ILearningPathSessionItem = useCallback(\n (item: ILearningPathSessionItem, formValues: ILearningPathSessionsFormBaseValues) => ({\n ...item,\n id: item.id,\n title: formValues.sessionName && formValues.sessionName.trim(),\n description: formValues.sessionDescription && formValues.sessionDescription.trim(),\n isAccordionExpanded: false,\n }),\n []\n );\n\n const updateSessionBuilderItem = useCallback(\n (item: ILearningPathSessionItem, formValues: ILearningPathSessionsFormBaseValues) => {\n const payload = mapUpdateSessionBuilderItem(item, formValues);\n return dispatch(actions.updateSessionBuilderItem(payload));\n },\n [dispatch, mapUpdateSessionBuilderItem]\n );\n\n const updateSessionBuilderItemMode = useCallback(\n (item: ILearningPathSessionItem) => {\n return dispatch(\n actions.updateSessionBuilderItem({\n ...item,\n mode:\n item.mode !== SessionBuilderEditModeEnum.Edit\n ? SessionBuilderEditModeEnum.Edit\n : SessionBuilderEditModeEnum.View,\n })\n );\n },\n [dispatch]\n );\n\n const collapseSessionBuilderItem = useCallback(\n (item: ILearningPathSessionItem) => {\n return dispatch(actions.collapseSessionBuilderItem(item));\n },\n [dispatch]\n );\n\n const collapseAllSessionBuilderItems = useCallback(() => {\n return dispatch(actions.collapseAllSessionBuilderItems(!isAllSessionsExpanded));\n }, [dispatch, isAllSessionsExpanded]);\n\n const addSessionBuilderResourceItem = useCallback(\n (item: ILearningPathSessionItem, resourceItem: IBaseResourceItem) => {\n const {id} = item;\n return dispatch(actions.addSessionBuilderResourceItem({id, resourceItem}));\n },\n [dispatch]\n );\n\n const addSessionBuilderResourceItems = useCallback(\n (payload: IAddResourceItemsPayload) => {\n return dispatch(actions.addSessionBuilderResourceItems(payload));\n },\n [dispatch]\n );\n\n const addSessionBuilderInstrumentItems = useCallback(\n (payload: IAddInstrumentItemsPayload) => {\n return dispatch(actions.addSessionBuilderInstrumentItems(payload));\n },\n [dispatch]\n );\n\n const deleteSessionBuilderResourceItem = useCallback(\n (contentItemId: string, itemId: string) =>\n dispatch(actions.removeSessionResourceBuilderItem({contentItemId, itemId})),\n [dispatch]\n );\n\n const deleteSessionBuilderInstrumentItem = useCallback(\n (instrumentId: number, itemId: string) =>\n dispatch(actions.removeSessionInstrumentBuilderItem({instrumentId, itemId})),\n [dispatch]\n );\n\n const clearBuilderItems = useCallback(() => dispatch(actions.clearBuilder()), [dispatch]);\n\n const checkIfEmptySessionExist = useCallback(() => dispatch(actions.checkIfEmptySession()), [dispatch]);\n\n const moveSessionItem = useCallback(\n (dragIndex: number, hoverIndex: number) => {\n const dragItem = builderSessionItemsCollection[dragIndex];\n dispatch(\n actions.moveSessionItem({\n dragItem,\n from: dragIndex,\n to: hoverIndex,\n })\n );\n },\n [dispatch, builderSessionItemsCollection]\n );\n\n const moveSessionResourceItem = useCallback(\n (dragIndex: number, hoverIndex: number, itemId: string) => {\n const resourcesCollection = builderSessionItemsEntities[itemId]\n ? builderSessionItemsEntities[itemId].resources\n : [];\n\n const dragItem = resourcesCollection[dragIndex];\n dispatch(\n actions.moveSessionResourceItem({\n dragItem,\n from: dragIndex,\n to: hoverIndex,\n itemId,\n })\n );\n },\n [dispatch, builderSessionItemsEntities]\n );\n\n return {\n addSessionBuilderItem,\n deleteSessionBuilderItem,\n updateSessionBuilderItem,\n updateSessionBuilderItemMode,\n clearBuilder,\n collapseSessionBuilderItem,\n collapseAllSessionBuilderItems,\n addSessionBuilderResourceItem,\n addSessionBuilderResourceItems,\n addSessionBuilderInstrumentItems,\n deleteSessionBuilderResourceItem,\n deleteSessionBuilderInstrumentItem,\n clearBuilderItems,\n checkIfEmptySessionExist,\n moveSessionItem,\n moveSessionResourceItem,\n };\n};\n","import {useCallback} from 'react';\nimport {useAppDispatch} from 'hooks';\nimport {ILearningPathSessionItem} from 'models/resources';\nimport {useLearningPathBuilderItemsEntities} from '..';\nimport {sessionBuilderSliceSitesActions as actions} from '../store';\n\nexport const useSessionBuilderMode = () => {\n const dispatch = useAppDispatch();\n const {isSomeOfSessionsInEditMode} = useLearningPathBuilderItemsEntities();\n\n const setSessionBuilderMode = useCallback(\n (item: ILearningPathSessionItem) => dispatch(actions.setSessionBuilderMode(item)),\n [dispatch]\n );\n\n const getSessionBuilderMode = useCallback((item: ILearningPathSessionItem) => item.mode, []);\n\n return {getSessionBuilderMode, setSessionBuilderMode, isSomeOfSessionsInEditMode};\n};\n","export enum IntegrationSortingEnum {\n None = 'None',\n Integration = 'Integration',\n IntegrationType = 'IntegrationType',\n IntegrationStatus = 'IntegrationStatus',\n}\n","export enum IntegrationsOrderingEnum {\n Name = 'Name',\n Created = 'Created',\n}\n","export enum IntegrationDropdownNameEnum {\n NAME_ASC = 'Name: A-Z',\n NAME_DESC = 'Name: Z-A',\n CREATED_NEWEST = 'Created: Newest First',\n CREATED_OLDEST = 'Created: Oldest First',\n}\n","export enum NavigationProgressBarTextEnum {\n // Text = 'Text',\n // GoogleClassRoom = 'Google Class Room',\n // MicrosoftTeams = 'Microsoft Teams',\n // PreviewAndTest = 'Preview and Test',\n // GoogleSitesSource = 'Google Sites Source',\n // GoogleSitesDestination = 'Google Sites Destination',\n Step1Text = 'Choose Integration Details',\n Step2Text = 'Set up Integration',\n Step3Text = 'Preview and Test',\n}\n","export enum IntegrationCertificateEnum {\n P12 = 'application/x-pkcs12',\n}\n","export enum IntegrationLabel {\n IntegrationType = 'Integration Type',\n Area = 'Area',\n SchoolName = 'School Name',\n ClientID = 'Client ID',\n Certificate = 'Certificate',\n IntegrationName = 'Integration Name',\n SchoolDistrict = 'School District',\n ServiceEmailAdress = 'Service Email Address',\n ClientSecret = 'Client Secret',\n GoogleDriveSourceFolderLink = 'Google Drive Source Folder Link',\n GoogleDriveDestinationFolderLink = 'Google Drive Destination Folder Link',\n AuthorityUrl = 'Authority URL',\n ExpiryDateCertificate = 'Expiry Date of Certificate',\n Status = 'Status',\n UserToImpersonate = 'User to Impersonate',\n}\n","export enum IntegrationModeEnum {\n Add,\n Edit,\n}\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {instrumentsApi} from 'api';\nimport {IMetaDataDto} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\ninterface ICloneInstrumentPayload {\n instrumentId: number;\n metaData: IMetaDataDto;\n isGeneral: boolean;\n}\n\nexport const cloneInstrumentThunk: any = createAsyncThunk<number, ICloneInstrumentPayload>(\n `${prefix} cloneInstrument`,\n async (payload: ICloneInstrumentPayload, {dispatch}) => {\n try {\n const {parsedBody} = await instrumentsApi.postCloneTemplate(\n payload.instrumentId,\n payload.metaData,\n payload.isGeneral\n );\n dispatch(toastNotificationManager.createSuccessToastAction('The instrument was cloned successfully.'));\n return parsedBody;\n } catch (err) {\n throw new Error(err.parsedBody);\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {instrumentsApi} from 'api';\nimport {IMetaDataDto} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\ninterface ICreateNewInstrumentPayload {\n metaData: IMetaDataDto;\n isGeneral: boolean;\n}\n\nexport const createNewInstrumentThunk: any = createAsyncThunk<number, ICreateNewInstrumentPayload>(\n `${prefix} createNewInstrument`,\n async (payload: ICreateNewInstrumentPayload, {dispatch}) => {\n try {\n const {parsedBody} = await instrumentsApi.createNewTemplate(payload.metaData, payload.isGeneral);\n dispatch(toastNotificationManager.createSuccessToastAction('The instrument was created successfully.'));\n return parsedBody;\n } catch (err) {\n throw new Error(err.parsedBody);\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {instrumentsApi} from 'api';\nimport {IBindStringResponse} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\ninterface IDeleteInstrumentPayload {\n instrumentId: number;\n}\n\nexport const deleteInstrumentThunk: any = createAsyncThunk<IBindStringResponse, IDeleteInstrumentPayload>(\n `${prefix} deleteInstrument`,\n async ({instrumentId}: IDeleteInstrumentPayload, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await instrumentsApi.postDeleteTemplate(instrumentId);\n dispatch(toastNotificationManager.createSuccessToastAction('The instrument was deleted successfully.'));\n return parsedBody;\n } catch (err) {\n dispatch(toastNotificationManager.createErrorToastAction('There was an error while deleting the instrument.'));\n return rejectWithValue(err);\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {instrumentsApi} from 'api';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\ninterface IDuplicateInstrumentPayload {\n instrumentId: number;\n programSessionId: number;\n}\n\nexport const duplicateInstrumentThunk: any = createAsyncThunk<number, IDuplicateInstrumentPayload>(\n `${prefix} duplicateInstrument`,\n async ({instrumentId, programSessionId}: IDuplicateInstrumentPayload, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await instrumentsApi.postDuplicateTemplate(instrumentId, programSessionId);\n\n return parsedBody;\n } catch (err) {\n dispatch(toastNotificationManager.createErrorToastAction('There was an error while duplicating the instrument.'));\n return rejectWithValue(err);\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {instrumentsApi} from 'api';\nimport {IInstrumentDetails} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const fetchInstrumentThunk: any = createAsyncThunk<IInstrumentDetails, number>(\n `${prefix} fetchInstrument`,\n async (templateId: number, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await instrumentsApi.getInstrumentById(templateId);\n return parsedBody;\n } catch (err) {\n dispatch(toastNotificationManager.createErrorToastAction(err.parsedBody));\n return rejectWithValue({error: err});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {instrumentsApi} from 'api';\nimport {IBindInstrumentsAllPage, IGetPageOfInstrumentsPayload} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const fetchInstrumentsAllPagedThunk: any = createAsyncThunk<\n IBindInstrumentsAllPage,\n IGetPageOfInstrumentsPayload,\n {dispatch: any}\n>(`${prefix} fetchListInstrumentsPaged`, async (payload: IGetPageOfInstrumentsPayload, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await instrumentsApi.getPageOfInstruments(payload);\n return parsedBody;\n } catch (err) {\n dispatch(toastNotificationManager.createErrorToastAction(err.parsedBody));\n return rejectWithValue({error: err});\n }\n});\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {instrumentsApi} from 'api';\nimport {IInstrumentDetailsAndParticipantSummary} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const fetchInstrumentItemsAndParticipants: any = createAsyncThunk<\n IInstrumentDetailsAndParticipantSummary,\n number\n>(`${prefix} fetchInstrumentItemsAndParticipants`, async (templateId: number, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await instrumentsApi.getInstrumentItemsAndParticipantsById(templateId);\n return parsedBody;\n } catch (err) {\n dispatch(toastNotificationManager.createErrorToastAction(err.parsedBody));\n return rejectWithValue({error: err});\n }\n});\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {instrumentsApi} from 'api';\nimport {IFetchPoolItemsPayload, IGetItemsApiResponse} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {isFunction} from 'utils';\nimport {prefix} from './config';\n\nexport const fetchMatrixRelatedPoolItemsThunk: any = createAsyncThunk<IGetItemsApiResponse, IFetchPoolItemsPayload>(\n `${prefix} fetchMatrixRelatedPoolItems`,\n async (\n {defaultAnswerStackId, pageNumber, builderFilter, searchText = '', setSubmitting},\n {rejectWithValue, dispatch}\n ) => {\n try {\n const {parsedBody} = await instrumentsApi.getMatrixRelatedItems(\n defaultAnswerStackId,\n pageNumber,\n builderFilter,\n searchText\n );\n\n isFunction(setSubmitting) && setSubmitting(false);\n return parsedBody;\n } catch (err) {\n dispatch(toastNotificationManager.createErrorToastAction(err.parsedBody || err.message));\n isFunction(setSubmitting) && setSubmitting(false);\n return rejectWithValue({error: err});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {instrumentsApi} from 'api';\nimport {IFetchPoolItemsPayload, IGetItemsApiResponse} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {isFunction} from 'utils';\nimport {prefix} from './config';\n\nexport const fetchPoolItemsThunk: any = createAsyncThunk<IGetItemsApiResponse, IFetchPoolItemsPayload>(\n `${prefix} fetchPoolItems`,\n async ({pageNumber, builderFilter, setSubmitting}, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await instrumentsApi.getItems(pageNumber, builderFilter);\n isFunction(setSubmitting) && setSubmitting(false);\n return parsedBody;\n } catch (err) {\n dispatch(toastNotificationManager.createErrorToastAction(err.parsedBody));\n isFunction(setSubmitting) && setSubmitting(false);\n return rejectWithValue({error: err});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {instrumentsApi} from 'api';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const unPublishSessionInstrumentThunk: any = createAsyncThunk<undefined, number>(\n `${prefix} unPublishSessionInstrument`,\n async (templateId: number, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await instrumentsApi.unPublishSessionInstrument(templateId);\n return parsedBody;\n } catch (err) {\n dispatch(toastNotificationManager.createErrorToastAction(err.parsedBody));\n return rejectWithValue({error: err});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {instrumentsApi} from 'api';\nimport {IUpdateDraftInstrumentPayload, IWithOnSuccessCallback} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {errorMessages, isString, isFunction} from 'utils';\nimport {instrumentsMessages} from '../../utils';\nimport {prefix} from './config';\n\ninterface IUpdateInstrumentPayloadWithOnSuccessCallback extends IWithOnSuccessCallback {\n payload: IUpdateDraftInstrumentPayload;\n}\n\nexport const updateDraftInstrumentThunk: any = createAsyncThunk<any, IUpdateInstrumentPayloadWithOnSuccessCallback>(\n `${prefix} updateDraftInstrument`,\n async ({payload, onSuccess}: IUpdateInstrumentPayloadWithOnSuccessCallback, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await instrumentsApi.updateDraftInstrumentById(payload);\n\n dispatch(toastNotificationManager.createSuccessToastAction(instrumentsMessages.saveSuccess));\n\n isFunction(onSuccess) && onSuccess();\n\n return parsedBody;\n } catch (err) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n isString(err.parsedBody) ? err.parsedBody : errorMessages.defaultErrorMessage\n )\n );\n return rejectWithValue({error: err});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {instrumentsApi} from 'api';\nimport {prefix} from './config';\n\nexport const fetchPossiblePretestItemsThunk: any = createAsyncThunk(\n `${prefix} fetchPossiblePretestItems`,\n async (templateId: number, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await instrumentsApi.getPossiblePretestItems(templateId);\n return parsedBody;\n } catch (err) {\n dispatch(toastNotificationManager.createErrorToastAction(err.parsedBody));\n return rejectWithValue({error: err});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {fileManagerApi} from 'api';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const uploadInstrumentHeaderLogoThunk: any = createAsyncThunk<any, FormData>(\n `${prefix} uploadInstrumentHeaderLogo`,\n async (payload: FormData, {rejectWithValue, dispatch}) => {\n try {\n const parsedBody = await fileManagerApi.uploadHeaderLogo(payload);\n return parsedBody;\n } catch (err) {\n dispatch(toastNotificationManager.createErrorToastAction(err.parsedBody));\n return rejectWithValue({error: err});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {instrumentsApi} from 'api';\nimport {IInstrumentDetails, IUpdateInstrumentInfoPayload} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const updateInstrumentInfoThunk: any = createAsyncThunk<IInstrumentDetails, IUpdateInstrumentInfoPayload>(\n `${prefix} updateInstrumentName`,\n async (payload: IUpdateInstrumentInfoPayload, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await instrumentsApi.updateInstrumentInfo(payload);\n return parsedBody;\n } catch (err) {\n dispatch(toastNotificationManager.createErrorToastAction(err.parsedBody));\n return rejectWithValue({error: err});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {fileManagerApi} from 'api';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const uploadInstrumentFooterLogoThunk: any = createAsyncThunk<any, FormData>(\n `${prefix} uploadInstrumentHeaderLogo`,\n async (payload: FormData, {rejectWithValue, dispatch}) => {\n try {\n const parsedBody = await fileManagerApi.uploadFooterLogo(payload);\n return parsedBody;\n } catch (err) {\n dispatch(toastNotificationManager.createErrorToastAction(err.parsedBody));\n return rejectWithValue({error: err});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {IGetGeneralInstrumentExportResponse} from 'models';\nimport {IHttpResponse, instrumentsApi} from 'api';\nimport {prefix} from './config';\nimport {config} from 'config';\nimport {instrumentsMessages} from '../../utils';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {returnQueryStringWithParams} from 'utils';\n\ninterface IQueryParams {\n templateId: number;\n}\n\nconst EXPORTS_URL = `${config.jaEeApi.baseUrlExports}/AssigmentResultsExport/GetByTemplateId`;\n\nexport const fetchGeneralInstrumentExportThunk: any = createAsyncThunk(\n `${prefix} fetchInstrumentExport`,\n async (templateId: number, {rejectWithValue, dispatch}) => {\n const params: IQueryParams = {\n templateId,\n };\n const url = returnQueryStringWithParams(EXPORTS_URL, params);\n\n try {\n const response: IHttpResponse<IGetGeneralInstrumentExportResponse> = await instrumentsApi.getGeneralInstrumentExport(\n url\n );\n\n if (response.ok) {\n dispatch(toastNotificationManager.createSuccessToastAction(instrumentsMessages.exportSuccess));\n return response.parsedBody;\n }\n } catch (error) {\n dispatch(toastNotificationManager.createErrorToastAction(error.statusText || instrumentsMessages.exportError));\n return rejectWithValue(error);\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {IGetAreaProgramClassExportResponse} from 'models';\nimport {IHttpResponse, instrumentsApi} from 'api';\nimport {prefix} from './config';\nimport {config} from 'config';\nimport {instrumentsMessages} from '../../utils';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {returnQueryStringWithParams} from 'utils';\nimport {IFetchAreaProgramClassQueryParams} from '../../models';\n\nconst PROGRAM_CLASS_EXPORTS_URL = `${config.jaEeApi.baseUrlExports}/AssigmentResultsExport/GetExport`;\n\nexport const fetchAreaProgramClassExportThunk: any = createAsyncThunk(\n `${prefix} fetchAreaProgramClassExport`,\n async (params: IFetchAreaProgramClassQueryParams, {rejectWithValue, dispatch}) => {\n const url = returnQueryStringWithParams(PROGRAM_CLASS_EXPORTS_URL, params);\n\n try {\n const response: IHttpResponse<IGetAreaProgramClassExportResponse> = await instrumentsApi.getAreaProgramClassExport(\n url\n );\n\n if (response.ok) {\n dispatch(toastNotificationManager.createSuccessToastAction(instrumentsMessages.exportSuccess));\n return response.parsedBody;\n }\n } catch (error) {\n dispatch(toastNotificationManager.createErrorToastAction(error.statusText || instrumentsMessages.exportError));\n return rejectWithValue(error);\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {instrumentsApi} from 'api';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\nimport {instrumentsMessages} from '../../utils/messages';\n\nexport const publishMasterInstrumentThunk: any = createAsyncThunk<undefined, number>(\n `${prefix} publishInstrumentThunk`,\n async (templateId: number, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await instrumentsApi.putPublishMasterTemplate(templateId);\n dispatch(toastNotificationManager.createSuccessToastAction(instrumentsMessages.publishSuccess));\n return parsedBody;\n } catch (err) {\n dispatch(toastNotificationManager.createErrorToastAction(err.parsedBody));\n return rejectWithValue({error: err});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {instrumentsApi} from 'api';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const fetchInstrumentForPreview: any = createAsyncThunk(\n `${prefix} fetchInstrumentForPreview`,\n async (templateId: number, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await instrumentsApi.getInstrumentForPreview(templateId);\n return parsedBody;\n } catch (error) {\n dispatch(toastNotificationManager.createErrorToastAction(error.parsedBody));\n return rejectWithValue({error});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {instrumentsApi} from 'api';\nimport {IUpdateInstrumentApiResponse, IUpdateInstrumentPayload} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {instrumentsMessages} from '../../utils';\nimport {prefix} from './config';\n\nconst defaultMessage = 'Something went wrong!';\n\nexport const updateInstrumentThunk: any = createAsyncThunk<IUpdateInstrumentApiResponse, IUpdateInstrumentPayload>(\n `${prefix} updateInstrument`,\n async (payload: IUpdateInstrumentPayload, {rejectWithValue, dispatch}) => {\n try {\n const response = await instrumentsApi.updateInstrument(payload);\n dispatch(toastNotificationManager.createSuccessToastAction(instrumentsMessages.saveSuccess));\n return response.data;\n } catch (error) {\n let message = defaultMessage;\n\n if (error.response.data) {\n message = error.response.data.error;\n }\n\n dispatch(toastNotificationManager.createErrorToastAction(message));\n return rejectWithValue({error});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {IGetAreaProgramClassExportResponse} from 'models';\nimport {IHttpResponse, instrumentsApi} from 'api';\nimport {prefix} from './config';\nimport {config} from 'config';\nimport {instrumentsMessages} from '../../utils';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {returnQueryStringWithParams} from 'utils';\nimport {IFetchAreaProgramClassQueryParams} from '../../models';\n\nconst PROGRAM_CLASS_DETAILED_EXPORTS_URL = `${config.jaEeApi.baseUrlExports}/AssigmentResultsExport/GetDetailedExport`;\n\nexport const fetchAreaProgramClassDetailedExportThunk: any = createAsyncThunk(\n `${prefix} fetchAreaProgramClassDetailedExport`,\n async (params: IFetchAreaProgramClassQueryParams, {rejectWithValue, dispatch}) => {\n const url = returnQueryStringWithParams(PROGRAM_CLASS_DETAILED_EXPORTS_URL, params);\n\n try {\n const response: IHttpResponse<IGetAreaProgramClassExportResponse> = await instrumentsApi.getAreaProgramClassDetailedExport(\n url\n );\n\n if (response.ok) {\n dispatch(toastNotificationManager.createSuccessToastAction(instrumentsMessages.exportSuccess));\n return response.parsedBody;\n }\n } catch (error) {\n dispatch(toastNotificationManager.createErrorToastAction(error.statusText || instrumentsMessages.exportError));\n return rejectWithValue(error);\n }\n }\n);\n","export const fileEditMessages = {\n webLink: 'The Web Link',\n scormPackage: 'The SCORM package',\n file: 'The File',\n cannotOpenArchive: 'Archives cannot be open. Please download.',\n hasNotShortUrl: ' is not yet ready.',\n clickToOpen: 'Click here to open.',\n clickToDownload: 'Click here to download.',\n clickToCopy: 'Click here to copy.',\n copied: 'The resource link has been copied.',\n expiredResource: 'This resource has expired and the URL cannot be copied and shared.',\n fileDownload: 'File was downloaded successfully.',\n warningUnsavedChanges:\n 'Are you sure you want to leave this page? You have unsaved changes. If you leave the page, these changes will be lost!',\n openInNewTab: 'The resource is being opened in a new tab.',\n};\n","export const fileDetailsMessages = {\n deleteSuccess: 'The file was deleted successfully.',\n};\n","import {FormNameEnum} from 'enums/form';\nimport {IFileDetails, IFileTypeRecognition, IResourceMetadata} from 'models/resources';\n\nexport const mapEditFileInitialValues = (\n fileDetails: IFileDetails,\n fileMetadata: IResourceMetadata,\n fileTypeRecognition: IFileTypeRecognition,\n hasUploadPermissions: boolean\n) => ({\n [FormNameEnum.fileType]: fileDetails?.contentType ?? null,\n [FormNameEnum.displayName]: fileDetails?.name ?? null,\n [FormNameEnum.gradeLevels]: fileMetadata?.gradeLevels ?? [],\n [FormNameEnum.competencies]: fileMetadata?.competencies ?? [],\n [FormNameEnum.languages]: fileMetadata?.languages ?? [],\n [FormNameEnum.keyTerms]: fileMetadata?.keyTerms ?? null,\n [FormNameEnum.isAccessibleToStudents]: fileMetadata?.isAccessibleToStudents?.toString() ?? null,\n [FormNameEnum.briefDescription]: fileDetails?.description ?? '',\n [FormNameEnum.programs]: fileMetadata?.programs ?? [],\n [FormNameEnum.pillars]: fileMetadata?.pillars ?? [],\n [FormNameEnum.knowledgeSkillsAndAbilities]: fileMetadata?.ksAs ?? [],\n [FormNameEnum.expirationDate]: fileMetadata?.expirationDate ?? null,\n [FormNameEnum.learningObjectives]: fileMetadata?.learningObjectives ?? '',\n [FormNameEnum.shouldDisableFileType]: true,\n [FormNameEnum.webLink]: fileDetails?.url ?? null,\n [FormNameEnum.file]: fileDetails?.file ?? null,\n [FormNameEnum.fileVersion]: fileDetails?.versionNumber ?? null,\n [FormNameEnum.versions]: fileDetails?.versionDetails?.versions,\n [FormNameEnum.hasUploadPermissions]: hasUploadPermissions ? hasUploadPermissions : false,\n [FormNameEnum.canEdit]: fileDetails?.canEdit ?? false,\n [FormNameEnum.time]: fileMetadata?.lengthInMinutes ?? null,\n [FormNameEnum.fileTypeRecognition]: fileTypeRecognition ?? {\n isResource: false,\n isScormPackage: false,\n isWebLink: false,\n isArchive: false,\n isVideo: false,\n isAudio: false,\n isImage: false,\n isPDF: false,\n isFillablePdf: false,\n isDocument: false,\n isExcel: false,\n },\n});\n","import {IColumn} from 'models/library/common';\n\nexport const getFileEditLearningPathColumns = (): IColumn[] => [\n {\n id: 'title',\n label: 'Name',\n align: 'left',\n },\n {\n id: 'createdBy',\n label: 'Created By',\n align: 'left',\n },\n {\n id: 'createdUtc',\n label: 'Date Created',\n align: 'left',\n },\n {\n id: 'updatedBy',\n label: 'Updated By',\n align: 'left',\n },\n {\n id: 'modifiedUtc',\n label: 'Date Updated',\n align: 'left',\n },\n];\n","import {IEditFileMetadataFormBaseValues} from '../components/FilesEditResourceForm/config';\n\nexport const mapResourceMetadata = ({\n keyTerms,\n learningObjectives,\n expirationDate,\n languages,\n programs,\n pillars,\n gradeLevels,\n isAccessibleToStudents,\n competencies,\n knowledgeSkillsAndAbilities,\n time,\n}: IEditFileMetadataFormBaseValues) => ({\n isAccessibleToStudents: isAccessibleToStudents,\n keyTerms: keyTerms ?? '',\n learningObjectives: learningObjectives ?? '',\n accessExpirationDate: expirationDate ?? null,\n languages: languages ?? [],\n competencies: competencies ?? [],\n pillars: pillars ?? [],\n programs: programs ?? [],\n gradeLevels: gradeLevels ?? [],\n ksAs: knowledgeSkillsAndAbilities ?? [],\n lengthInMinutes: time ?? null,\n});\n","import {IEditFileMetadataFormBaseValues} from '../components/FilesEditResourceForm/config';\n\nexport const mapUpdateResourceBasePayload = (\n baseData: {data: FormData; fileId: string; metadata},\n formValues: IEditFileMetadataFormBaseValues\n) => {\n const {data, fileId, metadata} = baseData;\n\n data.append('id', fileId);\n data.append('file', formValues?.file);\n data.append('displayName', formValues.displayName);\n data.append('briefDescription', formValues.briefDescription);\n data.append('metadata', JSON.stringify(metadata));\n\n return data;\n};\n","import {mapResourceMetadata} from './mapResourceMetadata';\nimport {mapUpdateResourceBasePayload} from './mapUpdateResourceBasePayload';\nimport {IEditFileMetadataFormBaseValues} from '../components/FilesEditResourceForm/config';\n\nexport const mapUpdateResourceFilePayload = (fileId: string, formValues: IEditFileMetadataFormBaseValues) => {\n const metadata = mapResourceMetadata(formValues);\n const data = mapUpdateResourceBasePayload({data: new FormData(), fileId, metadata}, formValues);\n\n data.append('fileTypeId', formValues.fileType.toString());\n\n return data;\n};\n","import {mapResourceMetadata} from './mapResourceMetadata';\nimport {mapUpdateResourceBasePayload} from './mapUpdateResourceBasePayload';\nimport {IEditFileMetadataFormBaseValues} from '../components/FilesEditResourceForm/config';\n\nexport const mapUpdateResourceScormPayload = (fileId: string, formValues: IEditFileMetadataFormBaseValues) => {\n const metadata = {...mapResourceMetadata(formValues), lengthInMinutes: formValues.time};\n const baseData = {data: new FormData(), fileId, metadata};\n const data = mapUpdateResourceBasePayload(baseData, formValues);\n\n return data;\n};\n","import {IEditFileMetadataFormBaseValues} from '../components/FilesEditResourceForm/config';\nimport {mapResourceMetadata} from './mapResourceMetadata';\n\nexport const mapUpdateResourceWebLinkPayload = (fileId: string, formValues: IEditFileMetadataFormBaseValues) => {\n const metadata = mapResourceMetadata(formValues);\n return {\n id: fileId,\n displayName: formValues.displayName,\n briefDescription: formValues.briefDescription,\n url: formValues.webLink,\n metadata,\n };\n};\n","import {IHttpResponse} from 'api/models';\nimport {IGetFileByResourceIdApiResponse} from 'models';\n\nconst mapFileName = (list: string[]) => {\n const rawData = list[1].trim();\n const fileName = rawData.replace(/[=;\"']/gi, '');\n return fileName;\n};\n\nexport const getContentResponseHeaders = (response: IHttpResponse<IGetFileByResourceIdApiResponse>) => {\n const mimeType = response.headers['content-type'];\n const contentDisposition = response.headers['content-disposition'];\n const contentDispositionList = contentDisposition.split('filename');\n const fileName = mapFileName(contentDispositionList);\n\n return {mimeType, fileName};\n};\n","import {SelectionEnum} from 'filters-selections';\nimport {IEditFileMetadataFormBaseValues} from '../components/FilesEditResourceForm/config';\n\nexport const getEditFileFirstColumnExtendedList = (list: SelectionEnum[], values: IEditFileMetadataFormBaseValues) => {\n const extendedList = [...list];\n\n if (!extendedList.includes(SelectionEnum.AdminPermissionCheckbox) && values?.file) {\n extendedList.push(SelectionEnum.AdminPermissionCheckbox);\n } else if (extendedList.includes(SelectionEnum.AdminPermissionCheckbox) && !values?.file) {\n extendedList.pop();\n }\n\n return extendedList;\n};\n","import {EntityStatusEnum} from 'enums';\nimport {ResponseApiStatusEnum} from 'enums/common';\n\nexport const getFileStatus = (processingStatus: number, fileDetailsStatus: EntityStatusEnum) => {\n if (processingStatus === ResponseApiStatusEnum.Error) {\n return EntityStatusEnum.error;\n }\n\n return fileDetailsStatus;\n};\n","export enum AddIntegrationLabelEnum {\n IntegrationType = 'Integration Type',\n Area = 'Area',\n SchoolName = 'School Name',\n ClientID = 'Client ID',\n Certificate = 'Certificate',\n IntegrationName = 'Integration Name',\n SchoolDistrict = 'School District',\n ServiceEmailAdress = 'Service Email Address',\n ClientSecret = 'Client Secret',\n GoogleDriveSourceFolderLink = 'Google Drive Source Folder Link',\n GoogleDriveDestinationFolderLink = 'Google Drive Destination Folder Link',\n AuthorityUrl = 'Authority URL',\n UserToImpersonate = 'User to Impersonate',\n}\n","import {\n IDigitalResourcesFormats,\n IFileSizes,\n IPapperAssessmentsFormats,\n ITags,\n IUploaderMessages,\n IVideoFormats,\n IDigitalResourceTagsMessages,\n IDigitalResourceNumberType,\n IDigitalResourceType,\n} from 'models';\nimport moment from 'moment';\n\n// TODO refactor\nexport const formInputRegexes = {\n email: /^[a-zA-Z0-9.!#$%&'*+=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/,\n // at least 1 lowercase letter, 1 uppercase letter, 1 numeric character and be at least 8 symbols long\n password: /^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.{8,})/,\n queryParamRetrievar: '=(.*?)(&|$)',\n};\n\nexport const errorMessages = {\n invalidDate: 'The date is invalid',\n invalidDatePeriod: 'Invalid date period',\n queryParam: 'Query parameter was not found',\n userNotLoggedIn: 'User is not logged in.',\n required: 'Required!',\n requiredWithFieldName: (fieldName: string, optionalText = 'You should select') => `${optionalText} ${fieldName}!`,\n requiredWithInputName: (fieldName: string, optionalText = 'You should enter') => `${optionalText} ${fieldName}!`,\n defaultErrorMessage: 'Something Went Wrong.',\n\n questionTextRequired: 'Question is required.',\n instrumentNameRequired: 'Instrument Name is required.',\n audienceRequired: 'Audience is required.',\n phaseRequired: 'Phase is required.',\n pillarRequired: 'Pillar is required.',\n instrumentTypeRequired: 'Type is required.',\n programRequired: 'At least one program is required.',\n subTypeRequired: 'Sub type is required.',\n\n onlyFeedbackTypeAllowed: 'Only surveys with Type: Feedback are allowed for the selected Audience!',\n onlyGeneralAllowed: 'This type is not allowed for the selected Audience!',\n};\n\nexport const MIN_INSTRUMENT_NAME_LENGTH = 32;\n\nexport const DISPLAY_PAGE_MARGIN = 2;\n\nexport const AUTOCOMPLETE_OR_MULTISELECT_THRESHOLD = 8;\n\nexport const dateFormat = 'MM/DD/YYYY';\n\nexport const returnDateRange = (startDate: any, endDate: any) => {\n return returnDateRangeStr(returnFormattedDate(startDate), returnFormattedDate(endDate));\n};\n\nexport const returnDateRangeStr = (startDate: string, endDate: string): string => {\n return startDate + ' - ' + endDate;\n};\n\nexport const returnFormattedDate = (date: any): string => {\n if (!date) {\n return '';\n }\n\n return moment(date).format(dateFormat);\n};\n\n// Uploader\n\nexport const INDICATOR = {\n number: 'number',\n string: 'string',\n};\n\nexport const UPLOADER_MESSAGES: IUploaderMessages = {\n errInvalidFormat: 'Invalid format',\n errInvalidFileSize: 'Invalid file size',\n errNotAllowedFormats: 'This format does not meet allowed formats',\n allowedFileSize: 'Max allowed file size: 1024 MB (1GB)',\n};\n\nexport const EXTERNAL_ID = 'externalId';\nexport const ADAPTIVE_CARD = 'Adaptive Card';\nexport const VIRTUAL_CLASS_ADAPTIVE_CARD = 'Virtual Class Adaptive Card';\nexport const K12_RESOURCES = 'K-12 Resources';\n\nexport const AUTOCOMPLETE_TIMEOUT = 1500; //ms\nexport const VIDEO_PLAYER_TIMEOUT = 100;\nexport const EDIT_MODAL_OPEN_TIMEOUT = 1200;\n\nexport const DROPZONE_TEXT = 'Drag and drop a file here or';\nexport const PICK_TAGS_TEXT = 'Pick and add tags to the already selected file.';\n\n// Digital Resources\n\nexport const TAGS: ITags = {\n pillars: 'Pillars',\n pillar: 'Pillar',\n competencies: 'Competencies',\n sessions: 'Session',\n programs: 'Programs',\n gradeLevels: 'Grade Levels',\n languages: 'Languages',\n skillsAndBehaviors: 'Skills and Behaviors',\n timing: 'Timing',\n selectPlaceholder: 'Select',\n drmExpirationDate: 'DRM Expiration Date',\n keyTerms: 'Key Terms',\n concepts: 'KSAs',\n addTags: 'Add tags',\n learningObjective: 'Learning Objective',\n tags: 'Tags',\n};\n\nexport const ARCHIVE_FORMATS = 'rar, zip, 7z, targz, tgz, tarZ, tarbz2, tbz2, tarlz, tlz, tarxz, txz';\nexport const ALLOWED_DIGITAL_RESOURCES_FORMATS =\n 'audio/*, image/*, .ODP, .ODS, .MOV, .MP4, .M4V, .RTF, .DJVU, .DOC, .DOCX, .TXT, .ODT, .XLS, .XLSX, .PPT, .PPTX, .PPS, .PPSX, .PDF, .GIF';\nexport const ALLOWED_PAPER_ASSESSMENTS_FORMAT = '.zip';\nexport const ALLOWED_VIDEO_FORMATS = '.avi,.mp4,.mov,.mpeg4,.wmv,.mpegps,.flv,.3gp,.3g2,.ogv,.mpg,.m4v';\nexport const NOT_ALLOWED_VIDEO_FORMATS = '.avi,.wmv.flv,.3gp,.3g2,.mpg,';\nexport const ALLOWED_AUDIO_FORMATS = '.mp3,.m4a,.ogg,.wav';\nexport const ALLOWED_DOC_FORMATS = '.pdf,.doc,.docx,.ppt,.pptx,.pps,.ppsx,.odt,.xls,.xlsx';\nexport const ALLOWED_IMG_FORMATS = '.jpg,.jpeg,.png,.gif';\n\nexport const VIRTUAL_CLASS_TYPE = 'virtual class';\nexport const VIDEO_TYPE = 'video';\nexport const K12_RESOURCE = 'k-12 resource';\nexport const PAPER_ASSSESSMENT = 'paper assessment';\nexport const OTHERS = 'others';\nexport const CHAT_BOT = 'chat bot';\nexport const DIGITAL_RESOURCES_TYPES = 'document,audio,image,paper assessment,others';\n\nexport const AZURE_STREAMING_FORMAT = 'application/vnd.ms-sstr+xml';\n\nexport const VIDEO_FORMATS: IVideoFormats = {\n AVI: 'avi',\n MP4: 'mp4',\n MOV: 'mov',\n MPEG4: 'mpeg4',\n WMV: 'wmv',\n MPEGPS: 'mpegps',\n FLV: 'flv',\n};\n\nexport const DIGITAL = 'digital';\nexport const DIGITAL_RESOURCES_FORMATS: IDigitalResourcesFormats = {\n AVI: 'avi',\n MP4: 'mp4',\n MOV: 'mov',\n MPEG4: 'mpeg4',\n WMV: 'wmv',\n MPEGPS: 'mpegps',\n FLV: 'flv',\n M4A: ',4a',\n MP3: 'mp3',\n OGG: 'ogg',\n WAV: 'wav',\n DOC: 'doc',\n DOCX: 'docx',\n ODT: 'odt',\n XLS: 'xls',\n XLSX: 'xlsx',\n PPT: 'ppt',\n PPTX: 'pptx',\n PPS: 'pps',\n PPSX: 'ppsx',\n PDF: 'pdf',\n JPG: 'jpg',\n JPEG: 'jpeg',\n PNG: 'png',\n GIF: 'gif',\n};\n\nexport const PAPPER_ASSESSMENTS_FORMATS: IPapperAssessmentsFormats = {\n ZIP: 'zip',\n};\n\nexport const DIGITAL_RESOURCE_TAGS_MESSAGES: IDigitalResourceTagsMessages = {\n editK12TagsSuccess: 'K12 tags were updated successfully',\n};\n\nexport const FILE_SIZES: IFileSizes = {\n mb: 'MB',\n};\n\nexport const MAX_ALLOWED_SIZE = 1024; // MB\nexport const MAX_PERCENT = 100;\nexport const MIN_PERCENT = 0;\nexport const FIVE_PERCENT = 5;\nexport const ZERO_NUMBER = 0;\nexport const ONE_NUMBER = 1;\nexport const SEC_DURATION = 1000;\nexport const UPLOAD_ITEM_HEIGHT = 48;\nexport const UPLOAD_ITEM_WIDTH = 352;\nexport const ROUNDED_BY_TWO_DIGITS = 2;\n\nexport const videoMetaData = {\n programs: [],\n sessions: [],\n pillars: [],\n competencies: [],\n levels: [],\n languages: [],\n keyTerms: [],\n concepts: [],\n learningObjective: [],\n drmExpirationDate: '',\n skilsAndBehaviors: [],\n};\n\nexport const TAGS_SELECTOR = {\n keyTerms: 'keyTerms',\n concepts: 'concepts',\n learningObjective: 'learningObjective',\n drmExpirationDate: 'drmExpirationDate',\n competencies: 'competencies',\n sessions: 'sessions',\n levels: 'levels',\n programs: 'programs',\n pillars: 'pillars',\n skilsAndBehaviors: 'skilsAndBehaviors',\n languages: 'languages',\n};\n\nexport const DEFAULT_COPY_MSG = 'Copied!';\n\nexport const MODAL_MESSAGES = {\n VERIFY_DELETE: 'Are you sure you want to delete the file?',\n WARN_DELETE: 'This action cannot be undone!',\n};\n\nexport const RESOURCE_TYPE: IDigitalResourceType = {\n 1: 'Virtual Class',\n 2: 'Video',\n 3: 'Audio',\n 4: 'Document',\n 5: 'Image',\n 6: 'Paper Assessment',\n 7: 'K-12 Resource',\n 8: 'Chatbot',\n 100: 'Others',\n};\n\nexport const RESOURCE_NUMBER_TYPE: IDigitalResourceNumberType = {\n virtualClass: 1,\n video: 2,\n audio: 3,\n document: 4,\n image: 5,\n paperAssessment: 6,\n k12Resource: 7,\n chatBot: 8,\n others: 100,\n};\n\n// Answer Rating\n\nexport const BUTTON_NUM_LIST: number[] = [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\n\n// Instrument Template\n\nexport const ALLOWED_LOGO_SIZE = 1024;\nexport const SUPPORTED_LOGO_FORMATS = ['image/jpg', 'image/jpeg', 'image/png'];\n\nexport const allowedHeaderLogoDimensions = {\n width: 600,\n height: 140,\n};\n\nexport const allowedFooterLogoDimensions = {\n width: 360,\n height: 80,\n};\n\nexport const ALLOWED_INSTRUCTIONAL_TEXT_LENGTH = 500;\n\nexport const ALL_AREAS_INDEX = -1;\n\nexport const RANDOM_MULTIPLIER = 900000000;\nexport const RANDOM_COLLECTIVELY = 100000000;\nexport const NEGATIVE_ONE = -1;\n","import {QuestionAnswersTypeEnum} from 'enums';\nimport {IAnswerStackCustom} from 'models';\nimport {\n INITIAL_QUESTION_ID,\n INITIAL_QUESTION_ANSWERSTACK_ID,\n INITIAL_ORIGINAL_QUESTION_ANSWERSTACK_ID,\n uniqueId,\n INITIAL_ANSWER_POSITION,\n camelToTitle,\n MAX_EMPTY_ANSWERS,\n} from 'utils';\n\nexport function createEmptyAnswer(isCorrect = false, position = INITIAL_ANSWER_POSITION) {\n return {\n id: uniqueId(`answer`),\n text: '',\n position,\n isCorrect,\n };\n}\n\nexport const createEmptyFourAnswers = (listLength = MAX_EMPTY_ANSWERS) =>\n Array(listLength).fill(createEmptyAnswer(false));\n\nexport function createEmptyCustomAnswerStack(): IAnswerStackCustom {\n return {\n id: uniqueId('customAnswerStack'),\n questionType: QuestionAnswersTypeEnum.checkbox,\n isSelected: true,\n isApproved: false,\n title: '',\n questionId: INITIAL_QUESTION_ID,\n questionAnswerStackId: INITIAL_QUESTION_ANSWERSTACK_ID,\n originalAnswerStackId: INITIAL_ORIGINAL_QUESTION_ANSWERSTACK_ID,\n canBeUnpublished: true,\n canEdit: false,\n canModifyAnswerQuestionAnswerstacks: false,\n metaData: {\n pillars: [],\n evaluationTypes: [],\n domain: {id: null, name: 's'},\n programs: [],\n competencies: [],\n concepts: [],\n administration: {id: null, name: ''},\n schoolLevels: [],\n category: '',\n instruments: [],\n },\n choices: [createEmptyAnswer(true)],\n };\n}\n\nexport const updateNameConceptsWithKSAs = (key: string) => {\n return key === 'concepts' ? 'KSAs' : camelToTitle(key);\n};\n","import {\n IAnswerStackDetails,\n ICustomAnswerStackPayload,\n IDefaultAnswerStackPayload,\n IUpdateAnswerStackPayload,\n IUpdateItemPayload,\n} from 'models';\n\nexport function mapItemFormDataToUpdatePayload(data: IUpdateItemPayload) {\n return {\n questionId: data.questionId,\n text: data.text,\n questionTextHtml: data.questionTextHtml,\n isDeleted: false,\n };\n}\n\nexport function mapItemFormDataPayload(data): ICustomAnswerStackPayload | IDefaultAnswerStackPayload {\n const metaData = buildMetadataPayload(data);\n\n return {\n answerTypeName: data.answerTypeName,\n choices: data.choices.map((choice, idx) => {\n delete choice.id;\n choice.position = idx + 1;\n return choice;\n }),\n defaultAnswerStackId: data.defaultAnswerStackId,\n metaData,\n questionId: data.questionId,\n questionType: data.questionType,\n rangeFrom: data.rangeFrom,\n rangeTo: data.rangeTo,\n minimumRateDescription: data.minimumRateDescription,\n maximumRateDescription: data.maximumRateDescription,\n positiveScores: data.positiveScores,\n };\n}\n\nexport function mapItemDefaultAnswerStacksPayload(data): IDefaultAnswerStackPayload {\n const metaData = buildMetadataPayload(data);\n const {answerTypeName, defaultAnswerStackId, choices} = getDefaultAnswerStackFormData(data);\n\n return {\n questionId: data.questionId,\n defaultAnswerStackId,\n answerTypeName,\n choices,\n metaData,\n };\n}\n\nexport function getDefaultAnswerStackFormData(data) {\n const searchProperty = 'isSelected';\n\n const {answerTypeName, defaultAnswerStackId, choices} = data.answerStacks.filter((stack) =>\n stack.hasOwnProperty(searchProperty)\n )[0];\n\n return {\n answerTypeName,\n defaultAnswerStackId,\n choices,\n };\n}\n\nexport function mapItemFormDataToUpdateAnswerStackPayload(data): IUpdateAnswerStackPayload {\n const metaData = buildMetadataPayload(data);\n\n return {\n questionAnswerStackId: data.questionAnswerStackId,\n isDeleted: data.isDeleted,\n choices: data.choices,\n rangeFrom: data.rangeFrom,\n rangeTo: data.rangeTo,\n positiveScores: data.positiveScores,\n minimumRateDescription: data.minimumRateDescription,\n maximumRateDescription: data.maximumRateDescription,\n metaData,\n };\n}\n\nexport function buildMetadataPayload(data) {\n return {\n competencies: mapId(data.competencies),\n concepts: mapId(data.concepts),\n evaluationTypes: mapId(data.evaluationTypes),\n pillars: mapId(data.pillars),\n programs: mapId(data.programs),\n schoolLevels: mapId(data.schoolLevels),\n domain: {id: data.domain},\n administration: {id: data.administration},\n learningObjective: data.learningObjective,\n category: data.category,\n };\n}\n\nexport function mapId(collection: any[]) {\n if (!collection) {\n return [];\n }\n\n if (!Array.isArray(collection)) {\n const updatedCollection = [collection];\n return updatedCollection.map((id) => ({id}));\n }\n\n return collection.map((id) => ({id}));\n}\n\nexport function getIsJaUSA(details: IAnswerStackDetails) {\n const jaUSA = 'JA USA';\n return details ? details.creatorArea.includes(jaUSA) : false;\n}\n","import {IItemDetails} from 'models';\n\nexport const getAnswerStackData = (item: IItemDetails, answerStackId: number) => {\n return item.elements.filter((el) => el.questionAnswerStackId === answerStackId)[0];\n};\n","import {QuestionAnswersTypeEnum} from 'enums';\nimport {IChoice} from 'models/library/common/IAnswer';\n\nexport const getTypeRadioGroup = (questionTypeAnswerStack: string) =>\n questionTypeAnswerStack === QuestionAnswersTypeEnum.radioGroup;\n\nexport const getTypeCheckbox = (questionTypeAnswerStack: string) =>\n questionTypeAnswerStack === QuestionAnswersTypeEnum.checkbox;\n\nexport const getTypeDropdown = (questionTypeAnswerStack: string) =>\n questionTypeAnswerStack === QuestionAnswersTypeEnum.dropdown;\n\nexport const checkCorrectAnswer = (choices: IChoice[]) => {\n const isCorrect = choices.find((choice) => choice.isCorrect);\n return !!isCorrect;\n};\n","import {ItemQuestionAnswersTypeEnum as answerTypeEnum} from 'admin/library/items/enums';\n\nexport const getAnswerType = (questionType) => {\n const isAnswerTypeSingleChoice = questionType === answerTypeEnum.singleSelectAnswerEnum;\n const isAnswerTypeMultiChoice = questionType === answerTypeEnum.matrixMultiSelectAnswerEnum;\n const isAnswerTypeDropdown = questionType === answerTypeEnum.dropdownAnswerEnum;\n const isAnswerTypeSingleOrMultiOrDropdownChoice =\n isAnswerTypeSingleChoice || isAnswerTypeMultiChoice || isAnswerTypeDropdown;\n const isAnswerTypeSingleDropdownChoice = isAnswerTypeSingleChoice || isAnswerTypeDropdown;\n const isAnswerTypeOpenEnded = questionType === answerTypeEnum.openEndedAnswerEnum;\n const isAnswerTypeNumericScale = questionType === answerTypeEnum.ratingAnswerEnum;\n\n return {\n isAnswerTypeSingleChoice,\n isAnswerTypeMultiChoice,\n isAnswerTypeDropdown,\n isAnswerTypeSingleOrMultiOrDropdownChoice,\n isAnswerTypeSingleDropdownChoice,\n isAnswerTypeOpenEnded,\n isAnswerTypeNumericScale,\n };\n};\n","export const getIsDomainKnowledge = (selectedDomain: number, domainKnowledgeId = 10) =>\n selectedDomain === domainKnowledgeId;\n","import {ActiveModeEnum} from '../../enums';\n\nexport const getQuestionMode = (mode: ActiveModeEnum) => {\n const isCreateMode = mode === ActiveModeEnum.create;\n const isEditMode = mode === ActiveModeEnum.edit;\n\n return {\n isCreateMode,\n isEditMode,\n };\n};\n","export const prefix = '[Google Sites]';\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {googleSitesApi} from 'api';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\nimport {IGoogleSiteDetails} from 'models/resources';\n\nexport const fetchGoogleSitesSourceDetailsThunk: any = createAsyncThunk<IGoogleSiteDetails, string>(\n `${prefix} fetchGoogleSitesSourceDetails`,\n async (siteFieldId: string, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await googleSitesApi.getDetailsGoogleSiteSource(siteFieldId);\n return parsedBody;\n } catch (error) {\n dispatch(toastNotificationManager.createErrorToastAction(error.parsedBody));\n return rejectWithValue({error});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {integrationsApi} from 'api';\nimport {prefix} from './config';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {integrationDetailsMessages} from 'admin/integrations/details';\nimport {IGoogleSitesSourceHistoryApiResponse} from 'models/resources/google-sites';\n\nexport const fetchGoogleSitesSourceHistoryThunk: any = createAsyncThunk<IGoogleSitesSourceHistoryApiResponse, any>(\n `${prefix} fetchGoogleSitesSourceHistory`,\n async (integrationId: string, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await integrationsApi.getGoogleSitesSourceHistory(integrationId);\n return parsedBody;\n } catch (error) {\n const errMsg = error.messages;\n dispatch(\n toastNotificationManager.createErrorToastAction(errMsg ?? integrationDetailsMessages.unknownIntegrationError)\n );\n return rejectWithValue({error});\n }\n }\n);\n","import {googleSitesMessages} from './../../utils/constants/messages';\nimport {createAsyncThunk} from '@reduxjs/toolkit';\nimport {googleSitesApi} from 'api';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\nimport {IGoogleSiteCopyApiResponse, IGoogleSiteCopyPayload} from 'models/resources';\nimport {arrayOfStringsToString, isEmpty} from 'utils';\n\nexport const fetchGoogleSitesCopySiteThunk: any = createAsyncThunk<IGoogleSiteCopyApiResponse, IGoogleSiteCopyPayload>(\n `${prefix} fetchGoogleSitesCopySite`,\n async (payload, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await googleSitesApi.getGoogleSitesCopySite(payload);\n dispatch(toastNotificationManager.createSuccessToastAction(googleSitesMessages.copySuccess));\n return parsedBody;\n } catch (error) {\n if (!isEmpty(error.messages)) {\n const errorMsg = arrayOfStringsToString(error.messages);\n dispatch(toastNotificationManager.createErrorToastAction(errorMsg));\n } else {\n dispatch(toastNotificationManager.createErrorToastAction(googleSitesMessages.copyError));\n }\n\n return rejectWithValue({error});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {googleSitesApi} from 'api';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\nimport {IGoogleSitesListApiResponse} from 'models/resources';\nimport {arrayOfStringsToString, isEmpty} from 'utils';\n\nexport const fetchGoogleSiteListThunk: any = createAsyncThunk<IGoogleSitesListApiResponse>(\n `${prefix} fetchGoogleSiteList`,\n async (_, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await googleSitesApi.getGoogleSitesList();\n return parsedBody;\n } catch (error) {\n if (!isEmpty(error.messages)) {\n const errorMsg = arrayOfStringsToString(error.messages);\n dispatch(toastNotificationManager.createErrorToastAction(errorMsg));\n } else {\n dispatch(toastNotificationManager.createErrorToastAction('Google Sites cannot be fetched.'));\n }\n\n return rejectWithValue({error});\n }\n }\n);\n","import {IActionFulfilled} from 'models/common';\nimport {googleSitesInitialState} from '.';\nimport {IGoogleSitesStoreState} from './IGoogleSitesStoreState';\nimport {IGoogleSiteDetailsSortOrder, IGoogleSiteListSortOrder} from 'models/resources/google-sites';\n\nexport const googleSitesReducer = {\n clear(state: IGoogleSitesStoreState) {\n state.googleSite = {...googleSitesInitialState.googleSite};\n },\n\n clearSortOrder(state: IGoogleSitesStoreState) {\n state.details.sortOrder = {...googleSitesInitialState.details.sortOrder};\n },\n\n clearHistory(state: IGoogleSitesStoreState) {\n state.details.history = {...googleSitesInitialState.details.history};\n },\n\n clearHistoryCopyIntegrationId(state: IGoogleSitesStoreState) {\n state.details.history.copyData = {...googleSitesInitialState.details.history.copyData};\n },\n\n setCopyIntegrationId(state: IGoogleSitesStoreState, action: IActionFulfilled<null, string>) {\n state.details.history.copyData.integrationId = action.payload;\n },\n\n setSortOrderGoogleSiteDetails: (\n state: IGoogleSitesStoreState,\n action: IActionFulfilled<null, IGoogleSiteDetailsSortOrder>\n ) => {\n state.details.sortOrder = action.payload;\n },\n\n setSortOrderGoogleSites: (\n state: IGoogleSitesStoreState,\n action: IActionFulfilled<null, IGoogleSiteListSortOrder>\n ) => {\n state.googleSites.sortOrder = action.payload;\n },\n\n setCurrentPageGoogleSites: (state: IGoogleSitesStoreState, action: IActionFulfilled<null, number>) => {\n state.googleSites.pagination.currentPage = action.payload;\n },\n\n setPerPageGoogleSites: (state: IGoogleSitesStoreState, action: IActionFulfilled<null, number>) => {\n state.googleSites.pagination.perPage = action.payload;\n\n resetPagination(state);\n },\n\n setTotalCountGoogleSites: (state: IGoogleSitesStoreState, action: IActionFulfilled<null, number>) => {\n state.googleSites.pagination.totalCount = action.payload;\n },\n};\n\nconst resetPagination = (state: IGoogleSitesStoreState) => {\n state.pagination.currentPage = googleSitesInitialState.pagination.currentPage;\n};\n","import {createSelector} from '@reduxjs/toolkit';\nimport {TStateStore} from 'store';\nimport {values} from 'utils';\n\nconst getGoogleSitesState = (state: TStateStore) => state.resources.googleSites;\nconst getGoogleSiteDetailsState = createSelector(getGoogleSitesState, (googleSites) => googleSites.details);\nconst getGoogleSitesAllState = createSelector(getGoogleSitesState, (googleSites) => googleSites.googleSites);\n\nexport const paginationSelector = createSelector(getGoogleSitesAllState, (googleSites) => googleSites.pagination);\nexport const pageLoadingSelector = createSelector(getGoogleSitesState, (googleSites) => googleSites.page.loading);\n\nexport const googleSitesListSelector = createSelector(getGoogleSitesAllState, (googleSitesAll) => googleSitesAll.list);\n\nexport const googleSitesListItemIdsSelector = createSelector(googleSitesListSelector, (list) => list.result);\nexport const googleSitesEntitiesSelector = createSelector(googleSitesListSelector, (list) => list.entities.items ?? {});\nexport const googleSitesEntitiesBaseCollectionSelector = createSelector(\n [googleSitesListItemIdsSelector, googleSitesEntitiesSelector],\n (ids, listItems) => {\n return ids.map((id) => {\n const item = listItems[id];\n\n return {\n id,\n createdTime: item?.createdTime,\n lastModifiedTime: item?.lastModifiedTime,\n mimetype: item?.mimetype,\n name: item?.name,\n };\n });\n }\n);\n\nexport const googleSitesListSortOrderSelector = createSelector(\n getGoogleSitesAllState,\n (googleSites) => googleSites.sortOrder\n);\n\nexport const googleSiteIntegrationDetailsSelector = createSelector(\n getGoogleSitesState,\n (googleSites) => googleSites.googleSite\n);\n\nexport const googleSiteDetailsSortOrderSelector = createSelector(\n getGoogleSiteDetailsState,\n (googleSiteDetails) => googleSiteDetails.sortOrder\n);\n\nexport const googleSiteDetailsHistorySelector = createSelector(\n getGoogleSiteDetailsState,\n (googleSiteDetails) => googleSiteDetails.history\n);\n\nexport const googleSiteDetailsHistoryListSelector = createSelector(\n googleSiteDetailsHistorySelector,\n (history) => history.historyList\n);\n\nexport const googleSiteDetailsHistoryItemsEntitiesSelector = createSelector(\n googleSiteDetailsHistoryListSelector,\n (historyList) => historyList.entities.items ?? {}\n);\n\nexport const googleSiteDetailsHistoryItemsResultSelector = createSelector(\n googleSiteDetailsHistoryListSelector,\n (historyList) => historyList.result ?? []\n);\n\nexport const googleSiteDetailsHistoryItemsCollectionSelector = createSelector(\n googleSiteDetailsHistoryListSelector,\n (historyList) => (historyList.entities.items ? values(historyList.entities.items) : [])\n);\n\nexport const googleSiteDetailsHistoryListLoadingSelector = createSelector(\n googleSiteDetailsHistorySelector,\n (googleSiteHistory) => googleSiteHistory.loading\n);\n\nexport const googleSiteDetailsHistoryListItemCopyDataSelector = createSelector(\n googleSiteDetailsHistorySelector,\n (googleSiteHistory) => googleSiteHistory.copyData\n);\n\nexport const googleSiteDetailsHistoryListItemCopyingSelector = createSelector(\n googleSiteDetailsHistoryListItemCopyDataSelector,\n (copyData) => copyData.copying\n);\n\nexport const googleSiteDetailsHistoryListItemCopyIntegrationIdSelector = createSelector(\n googleSiteDetailsHistoryListItemCopyDataSelector,\n (copyData) => copyData.integrationId\n);\n","import {IGoogleSitesStoreState} from './IGoogleSitesStoreState';\nimport {\n IGoogleSitePage,\n IGoogleSiteDetails,\n IGoogleSiteOwner,\n IGoogleSiteLastModifyingUser,\n} from '../../../../models/resources/google-sites';\nimport {EntitiesPerPageEnum, SortingOrderEnum} from 'enums';\nimport {GoogleSitesDetailOrderingEnum} from '../details/enums';\nimport {GoogleSitesOrderingEnum} from '../all/enums';\nimport {IResourcePagination} from 'models';\n\nconst googleSiteDefaultOwner = {\n displayName: null,\n emailAddress: null,\n avatarUrl: null,\n} as IGoogleSiteOwner;\n\nconst googleSiteDefaultLastModifyingUser = {\n displayName: null,\n emailAddress: null,\n avatarUrl: null,\n} as IGoogleSiteLastModifyingUser;\n\nconst pageDefault = {\n loading: false,\n} as IGoogleSitePage;\n\nconst googleSiteDefault = {\n createdTime: null,\n editLink: null,\n id: null,\n lastModifiedTime: null,\n lastModifyingUser: googleSiteDefaultLastModifyingUser,\n mimetype: null,\n siteOwner: googleSiteDefaultOwner,\n name: null,\n version: 0,\n} as IGoogleSiteDetails;\n\nconst googleSiteDetailsDefault = {\n sortOrder: {\n order: GoogleSitesDetailOrderingEnum.LastCopiedDate,\n sort: SortingOrderEnum.DESC,\n },\n history: {\n historyList: {\n result: [],\n entities: {\n items: {},\n },\n },\n loading: false,\n copyData: {\n integrationId: null,\n copying: false,\n },\n },\n};\n\nconst paginationDefault: IResourcePagination = {\n currentPage: 1,\n totalCount: 0,\n perPage: EntitiesPerPageEnum.FIFTY,\n};\n\nconst googleSitesDefault = {\n sortOrder: {\n order: GoogleSitesOrderingEnum.LastModifiedDate,\n sort: SortingOrderEnum.DESC,\n },\n pagination: paginationDefault,\n list: {\n result: [],\n entities: {\n items: {},\n },\n },\n};\n\nexport const googleSitesInitialState: IGoogleSitesStoreState = {\n googleSite: googleSiteDefault,\n details: googleSiteDetailsDefault,\n page: pageDefault,\n googleSites: googleSitesDefault,\n pagination: paginationDefault,\n};\n","import {schema as Schema} from 'normalizr';\n\nexport const integrationsListEntity = new Schema.Entity('googleSites', {}, {idAttribute: 'id'});\nexport const integrationsListSchema = new Schema.Array(integrationsListEntity);\n\nexport const historyListEntity = new Schema.Entity('items', {}, {idAttribute: 'integrationId'});\nexport const historyListSchema = new Schema.Array(historyListEntity);\n\nexport const googleSitesListEntity = new Schema.Entity('items', {}, {idAttribute: 'id'});\nexport const googleSitesListSchema = new Schema.Array(googleSitesListEntity);\n","import {\n fetchGoogleSiteListThunk,\n fetchGoogleSitesCopySiteThunk,\n fetchGoogleSitesSourceDetailsThunk,\n fetchGoogleSitesSourceHistoryThunk,\n} from './thunks';\nimport {IGoogleSitesStoreState} from './IGoogleSitesStoreState';\nimport {IActionFulfilled} from 'models/common';\nimport {\n IGoogleSiteCopyApiResponse,\n IGoogleSiteCopyPayload,\n IGoogleSitesListApiResponse,\n IGoogleSitesSourceDetailsResponse,\n IGoogleSitesSourceHistoryApiResponse,\n} from 'models';\nimport {isObject} from 'utils';\nimport {normalize} from 'normalizr';\nimport {googleSitesListSchema, historyListSchema} from './normalizationSchemas';\n// import {HistoryTableStatusEnum} from '../details/enums';\n\nexport const googleSitesExtraReducer = {\n // fetchGoogleSitesSourceDetailsThunk\n [fetchGoogleSitesSourceDetailsThunk.fulfilled]: (\n state: IGoogleSitesStoreState,\n action: IActionFulfilled<null, IGoogleSitesSourceDetailsResponse>\n ) => {\n if (isObject(action.payload)) {\n const {data} = action.payload;\n state.googleSite = {...data};\n }\n state.page.loading = false;\n },\n [fetchGoogleSitesSourceDetailsThunk.pending]: (state: IGoogleSitesStoreState) => {\n state.page.loading = true;\n },\n [fetchGoogleSitesSourceDetailsThunk.rejected]: (state: IGoogleSitesStoreState) => {\n state.page.loading = false;\n },\n\n // fetchGoogleSitesSourceHistoryThunk\n [fetchGoogleSitesSourceHistoryThunk.fulfilled]: (\n state: IGoogleSitesStoreState,\n action: IActionFulfilled<null, IGoogleSitesSourceHistoryApiResponse>\n ) => {\n if (isObject(action.payload)) {\n const {data} = action.payload;\n\n state.details.history.historyList = normalize(data, historyListSchema);\n }\n state.details.history.loading = false;\n },\n [fetchGoogleSitesSourceHistoryThunk.pending]: (state: IGoogleSitesStoreState) => {\n state.details.history.loading = true;\n },\n [fetchGoogleSitesSourceHistoryThunk.rejected]: (state: IGoogleSitesStoreState) => {\n state.details.history.loading = false;\n },\n\n // fetchGoogleSitesCopySiteThunk;\n [fetchGoogleSitesCopySiteThunk.fulfilled]: (\n state: IGoogleSitesStoreState,\n action: IActionFulfilled<IGoogleSiteCopyPayload, IGoogleSiteCopyApiResponse>\n ) => {\n if (isObject(action.payload)) {\n state.details.history.copyData.copying = false;\n state.details.history.copyData.integrationId = null;\n }\n },\n [fetchGoogleSitesCopySiteThunk.pending]: (state: IGoogleSitesStoreState) => {\n state.details.history.copyData.copying = true;\n },\n [fetchGoogleSitesCopySiteThunk.rejected]: (state: IGoogleSitesStoreState) => {\n state.details.history.copyData.copying = false;\n state.details.history.copyData.integrationId = null;\n },\n\n // fetchGoogleSiteListThunk\n [fetchGoogleSiteListThunk.fulfilled]: (\n state: IGoogleSitesStoreState,\n action: IActionFulfilled<null, IGoogleSitesListApiResponse>\n ) => {\n if (isObject(action.payload)) {\n const {\n data: {list},\n } = action.payload;\n\n state.googleSites.list = normalize(list, googleSitesListSchema);\n state.googleSites.pagination.totalCount = list.length;\n }\n state.page.loading = false;\n },\n [fetchGoogleSiteListThunk.pending]: (state: IGoogleSitesStoreState) => {\n state.page.loading = true;\n },\n [fetchGoogleSiteListThunk.rejected]: (state: IGoogleSitesStoreState) => {\n state.page.loading = false;\n },\n};\n","import {IEntityBase} from 'models';\n\nexport const idProp = 'id';\n\nexport function getFormValue(collection: IEntityBase[] | IEntityBase, prop: string): number[] {\n if (Array.isArray(collection)) {\n return collection.map((item) => item[prop]);\n }\n\n return collection ? [collection.id] : [];\n}\n","import {AnswerOpenEnded} from '../components/AnswerOpenEnded/AnswerOpenEnded';\nimport {AnswersRating} from '../components/Rating/AnswersRating/AnswerRating';\nimport {QuestionAnswersTypeEnum} from 'enums';\nimport {IToggleOption} from 'models';\nimport {AnswerBuilderRating, Answers, AnswersMatrix, AnswerInstructionaText} from '../components';\n\nexport const getAnswersComponentMap = (withBuilder = false) => {\n return {\n 0: Answers,\n '': Answers,\n [QuestionAnswersTypeEnum.checkbox]: Answers,\n [QuestionAnswersTypeEnum.radioGroup]: Answers,\n [QuestionAnswersTypeEnum.dropdown]: Answers,\n [QuestionAnswersTypeEnum.text]: withBuilder ? Answers : AnswerOpenEnded,\n [QuestionAnswersTypeEnum.openEndedAnswerEnum]: AnswerOpenEnded,\n [QuestionAnswersTypeEnum.rating]: withBuilder ? AnswerBuilderRating : AnswersRating,\n [QuestionAnswersTypeEnum.questionAnswerEnum]: AnswersMatrix,\n [QuestionAnswersTypeEnum.matrix]: AnswersMatrix,\n [QuestionAnswersTypeEnum.matrixEnum]: AnswersMatrix,\n [QuestionAnswersTypeEnum.html]: AnswerInstructionaText,\n };\n};\n\nexport const mapToggleButtonOptions = (options): IToggleOption[] => {\n return options.map(({text, isCorrect}) => {\n return {value: Number(text), label: text, selected: isCorrect};\n });\n};\n","import {SortDropdownNameEnum, SortingOrderEnum} from 'enums';\nimport {IItemsAllSortOrder} from 'models';\nimport {ItemsOrderingEnum} from '../items/enums';\n\nexport const getSortMenuItemsList = (\n itemClickHandler: () => void,\n handleItemClick: (handleItemSortObj: IItemsAllSortOrder) => void\n) => {\n const onClick = (\n itemClickHandler: () => void,\n handleItemClick: (handleItemSortObj: IItemsAllSortOrder) => void,\n handleItemSortObj: IItemsAllSortOrder\n ) => {\n return () => {\n itemClickHandler();\n handleItemClick(handleItemSortObj);\n };\n };\n\n return [\n {\n name: SortDropdownNameEnum.NAME_ASC,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: ItemsOrderingEnum.Name,\n sort: SortingOrderEnum.ASC,\n }),\n },\n {\n name: SortDropdownNameEnum.NAME_DESC,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: ItemsOrderingEnum.Name,\n sort: SortingOrderEnum.DESC,\n }),\n },\n {\n name: SortDropdownNameEnum.CREATED_NEWEST,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: ItemsOrderingEnum.Created,\n sort: SortingOrderEnum.DESC,\n }),\n },\n {\n name: SortDropdownNameEnum.CREATED_OLDEST,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: ItemsOrderingEnum.Created,\n sort: SortingOrderEnum.ASC,\n }),\n },\n ];\n};\n","import {useSelector} from 'react-redux';\nimport {builderItemsCollectionSelector, builderItemsEntitiesSelector, builderItemsResultSelector} from '../../store';\n\nexport function useBuilderItemsEntities() {\n const builderItemsEntities = useSelector(builderItemsEntitiesSelector);\n const builderItemsResult = useSelector(builderItemsResultSelector);\n const builderItemsEntitiesCollection = useSelector(builderItemsCollectionSelector);\n\n return {builderItemsEntities, builderItemsResult, builderItemsEntitiesCollection};\n}\n","import {useSelector} from 'react-redux';\nimport {builderPoolItemsEntitiesSelector} from '../../store';\n\nexport function useBuilderPoolItemsEntities() {\n const builderPoolItemsEntities = useSelector(builderPoolItemsEntitiesSelector);\n\n return {\n builderPoolItemsEntities,\n };\n}\n","import {useCallback, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport {useParams} from 'react-router-dom';\nimport {useAppDispatch} from 'hooks';\n\nimport {BuilderItemDragTypeEnum} from 'admin/library/enums';\nimport {IBuilderDragItem} from 'admin/library/models';\nimport {\n IAnswer,\n IInstrumentInstructionalItem,\n IInstrumentItem,\n IInstrumentsAllFilter,\n IItemColumn,\n IQuestionUpdate,\n} from 'models';\nimport {isNumber, toNumber} from 'utils';\nimport {\n instrumentsActions,\n instrumentsAllFilterSelector,\n instrumentsPageSelector,\n savingSelector,\n updateDraftInstrumentThunk,\n} from '../../store';\nimport {\n generateRandomQuestionId,\n isInstructionalTextQuestion,\n isMatrixQuestion,\n mapBuilderItemInstructionalText,\n} from '../utils';\nimport {useBuilderItemsEntities} from './useBuilderItemsEntities';\nimport {useBuilderPoolItemsEntities} from './useBuilderPoolItemsEntities';\nimport {QuestionAnswersTypeEnum} from 'enums';\n\nexport function useBuilder() {\n const dispatch = useAppDispatch();\n\n const {builderItemsResult, builderItemsEntities} = useBuilderItemsEntities();\n const {builderPoolItemsEntities} = useBuilderPoolItemsEntities();\n\n const urlParams = useParams<{id: string}>();\n const instrumentId = toNumber(urlParams?.id);\n\n const filter = useSelector(instrumentsAllFilterSelector);\n\n const {loading} = useSelector(instrumentsPageSelector);\n const saving = useSelector(savingSelector);\n\n const [pristine, setPristine] = useState<boolean>(true);\n\n const builderItems: any = builderItemsResult.map((id) => mapBuilderItem(builderItemsEntities[toNumber(id)]));\n\n const pristineStateHandler = useCallback(() => {\n pristine && setPristine(false);\n }, [pristine]);\n\n const deleteBuilderItem = useCallback(\n (id: number) => {\n dispatch(instrumentsActions.removeBuilderItem(id));\n pristineStateHandler();\n },\n [pristineStateHandler, dispatch]\n );\n\n const linkBuilderItem = useCallback(\n (item) => {\n dispatch(instrumentsActions.linkBuilderItem(item));\n pristineStateHandler();\n },\n [pristineStateHandler, dispatch]\n );\n\n const moveBuilderItem = useCallback(\n (movedItemIdx: number, newPosition: number) => {\n const dragItem = builderItems[movedItemIdx];\n dispatch(\n instrumentsActions.moveBuilderItem({\n id: dragItem.answerStackId,\n from: movedItemIdx,\n to: newPosition,\n })\n );\n pristineStateHandler();\n },\n [builderItems, dispatch, pristineStateHandler]\n );\n\n const getBuilderItem = (isMatrix: boolean, element: any, itemRaw: any) => {\n if (isMatrix) {\n return {\n rows: [],\n columns: mapAnswerToMatrixColumn(element.choices),\n questionAnswerStackId: element.questionAnswerStackId,\n originalAnswerStackId: element.questionAnswerStackId,\n defaultAnswerStackId: element.defaultAnswerStackId,\n questionIdOriginal: element.questionId,\n questionId: element.questionId,\n questionType: itemRaw.questionOptionsTypeId,\n type: itemRaw.questionOptionsTypeId,\n text: itemRaw.text,\n title: itemRaw.text,\n name: '',\n };\n }\n\n return {\n ...element,\n questionIdOriginal: element.questionId,\n text: itemRaw.text,\n };\n };\n\n const addBuilderItems = useCallback(\n (position: number) => (item: IBuilderDragItem) => {\n const itemRaw = builderPoolItemsEntities[item.questionId];\n const isMatrix = isMatrixQuestion(itemRaw.questionOptionsTypeId);\n const element = builderPoolItemsEntities[item.questionId]?.elements[position];\n\n const builderItem: any = getBuilderItem(isMatrix, element, itemRaw);\n\n dispatch(instrumentsActions.addBuilderItem(builderItem));\n pristineStateHandler();\n },\n [builderPoolItemsEntities, dispatch, pristineStateHandler]\n );\n\n const addMatrixRow = useCallback(\n (questionAnswerStackId: number) => (item: IBuilderDragItem) => {\n const itemRaw = builderPoolItemsEntities[item.questionId];\n const row: IAnswer = {\n questionAnswerStackId: item.answerStackId, // TODO this is not the stackId\n questionId: item.questionId,\n text: itemRaw.text,\n value: `${item.questionId}`,\n };\n\n dispatch(instrumentsActions.addMatrixRow({questionAnswerStackId, row}));\n pristineStateHandler();\n },\n [builderPoolItemsEntities, dispatch, pristineStateHandler]\n );\n\n const addInstructionalText = useCallback(() => {\n const randomNumber = generateRandomQuestionId();\n\n const builderItem = {\n questionAnswerStackId: randomNumber,\n html: null,\n questionType: QuestionAnswersTypeEnum.html,\n } as IInstrumentInstructionalItem;\n\n dispatch(instrumentsActions.addInstructionalText(builderItem));\n }, [dispatch]);\n\n const updateInstructionalText = useCallback(\n (item: IInstrumentItem, html: string) => {\n const builderItem = mapBuilderItemInstructionalText(item, html);\n\n dispatch(instrumentsActions.updateInstructionalText(builderItem));\n },\n [dispatch]\n );\n\n const deleteMatrixRow = useCallback(\n (id: number) => (rowIdx: number) => {\n dispatch(instrumentsActions.removeMatrixRow({id, rowIdx}));\n pristineStateHandler();\n },\n [pristineStateHandler, dispatch]\n );\n\n const moveMatrixRow = useCallback(\n (id: number) => (dragIdx: number, hoverIdx: number) => {\n dispatch(instrumentsActions.moveMatrixRow({id, from: dragIdx, to: hoverIdx}));\n pristineStateHandler();\n },\n [dispatch, pristineStateHandler]\n );\n\n const save = useCallback(\n (onSuccess?: () => void) => {\n const items = mapItemsForSave(builderItems);\n dispatch(updateDraftInstrumentThunk({payload: {instrumentId, items}, onSuccess}));\n },\n [builderItems, dispatch, instrumentId]\n );\n\n const setFilter = useCallback(\n (filter: IInstrumentsAllFilter) => dispatch(instrumentsActions.setFilterInstruments(filter)),\n [dispatch]\n );\n\n return {\n pageLoading: loading,\n pageSaving: saving,\n filter,\n instrumentId,\n builderItems,\n save,\n pristine,\n addBuilderItems,\n moveBuilderItem,\n deleteBuilderItem,\n linkBuilderItem,\n addMatrixRow,\n moveMatrixRow,\n deleteMatrixRow,\n setFilter,\n addInstructionalText,\n updateInstructionalText,\n };\n}\n\nfunction mapItemsForSave(items: IBuilderDragItem[]): IQuestionUpdate[] {\n return items.reduce((acc: IQuestionUpdate[], item: IBuilderDragItem) => {\n if (isMatrixQuestion(item.questionType)) {\n const {originalAnswerStackId} = item;\n\n if (!item.rows.length) {\n acc.push({\n questionAnswerStackId: null,\n parentQuestionAnswerStackId: originalAnswerStackId,\n });\n\n return acc;\n }\n\n item.rows.forEach((row) => {\n acc.push({\n questionAnswerStackId: row.questionAnswerStackId,\n parentQuestionAnswerStackId: originalAnswerStackId,\n linkedQuestionAnswerStackId: row.linkedQuestionAnswerStackId,\n });\n });\n return acc;\n }\n\n if (isInstructionalTextQuestion(item.questionType)) {\n acc.push({\n instructionalTextId: item.answerStackId,\n instructionalText: item.html ?? '',\n });\n\n return acc;\n }\n\n acc.push({\n questionAnswerStackId: item.answerStackId,\n parentQuestionAnswerStackId: null,\n linkedQuestionAnswerStackId: item.linkedQuestionAnswerStackId,\n });\n\n return acc;\n }, []);\n}\n\nfunction mapBuilderItem(builderItem: IInstrumentItem): IBuilderDragItem {\n if (!builderItem) return;\n\n return {\n questionId: builderItem.questionIdOriginal ?? builderItem.questionId,\n answerStackId: builderItem.questionAnswerStackId,\n originalAnswerStackId: isNumber(builderItem.originalAnswerStackId) ? builderItem.originalAnswerStackId : -1,\n defaultAnswerStackId: builderItem.defaultAnswerStackId,\n linkedQuestionAnswerStackId: builderItem.linkedQuestionAnswerStackId,\n type: BuilderItemDragTypeEnum.item,\n questionType: builderItem.type || builderItem.questionType,\n rows: builderItem.rows,\n columns: builderItem.columns,\n html: builderItem.html,\n builderInstructionalText: builderItem.builderInstructionalText,\n domain: mapDomain(builderItem),\n };\n}\n\nfunction mapAnswerToMatrixColumn(answers: IAnswer[]): IItemColumn[] {\n return answers.map(({answerId, position, text}) => ({\n answerId,\n order: position,\n position,\n text,\n value: `${answerId}`,\n }));\n}\n\nfunction mapDomain(builderItem: IInstrumentItem) {\n let domain = null;\n\n if (builderItem?.domain) {\n domain = builderItem.domain.id;\n }\n\n if (builderItem?.metaData?.domain) {\n domain = builderItem.metaData.domain.id;\n }\n\n return domain;\n}\n","import {BuilderItemDragTypeEnum} from 'admin/library/enums';\nimport {useDrop} from 'react-dnd';\n\nexport function useBuilderDrop() {\n const [{canDrop, isOver}, drop] = useDrop({\n accept: BuilderItemDragTypeEnum.item,\n drop: () => ({\n name: `${allowedDropEffect}`,\n allowedDropEffect,\n }),\n canDrop: () => {\n return true;\n },\n // options\n collect: (monitor: any) => ({\n isOver: monitor.isOver(),\n canDrop: monitor.canDrop(),\n }),\n });\n\n const isActive = canDrop && isOver;\n\n return {isActive, drop};\n}\n\nconst allowedDropEffect = 'any';\n","import {useState} from 'react';\nimport {BuilderEditModeEnum} from '../enums';\n\nexport interface IBuilderEditMode {\n questionAnswerStackId: number | null;\n defaultAnswerStackId: number | null;\n position: number | null;\n mode: BuilderEditModeEnum;\n}\n\nconst defaultBuilderEditModeAllTypes = {\n questionAnswerStackId: null,\n defaultAnswerStackId: null,\n position: null,\n mode: BuilderEditModeEnum.allTypes,\n};\n\nexport function useBuilderEditMode() {\n const [builderEditMode, setBuilderEditMode] = useState<IBuilderEditMode>(defaultBuilderEditModeAllTypes);\n\n const isAllTypesMode = builderEditMode.mode === BuilderEditModeEnum.allTypes;\n const isEditMatrixMode = builderEditMode.mode === BuilderEditModeEnum.matrix;\n const isEditInstructionalText = builderEditMode.mode === BuilderEditModeEnum.instructionalText;\n\n return {\n defaultBuilderEditModeAllTypes,\n builderEditMode,\n setBuilderEditMode,\n isAllTypesMode,\n isEditMatrixMode,\n isEditInstructionalText,\n };\n}\n","import {IBuilderDragItem} from 'admin/library/models';\nimport {IDropResult} from 'dragAndDrop';\nimport {DragLayerMonitor, DragSourceMonitor, useDrag} from 'react-dnd';\n\nexport function useBuilderItemDrag(itemDrag: IBuilderDragItem, dropHandler?: (item: IBuilderDragItem) => void) {\n const [{isDragging}, drag] = useDrag({\n item: itemDrag,\n end(target: any | undefined, monitor: DragSourceMonitor) {\n const dropResult: IDropResult = monitor.getDropResult();\n if (itemDrag && dropResult) {\n dropHandler && dropHandler(target);\n }\n },\n collect: (monitor: DragLayerMonitor) => ({\n isDragging: monitor.isDragging(),\n }),\n });\n\n return {drag, isDragging};\n}\n","import {BuilderItemDragTypeEnum} from 'admin/library/enums';\nimport {IBuilderDragItem} from 'admin/library/models';\nimport {useDrag, useDrop} from 'react-dnd';\n\nexport function useBuilderItemDrop(\n item: IBuilderDragItem,\n ref: any,\n position: number,\n moveHandler: (dragIdx: number, hoverIdx: number) => void\n) {\n const [, drop] = useDrop({\n accept: BuilderItemDragTypeEnum.builderItem,\n hover(item: IBuilderDragItem) {\n if (!ref.current) {\n return;\n }\n const dragIndex = item.position;\n const hoverIndex = position;\n\n if (dragIndex === hoverIndex) {\n return;\n }\n\n moveHandler(dragIndex, hoverIndex);\n item.position = hoverIndex;\n },\n });\n\n const [, drag] = useDrag({\n item,\n });\n\n drag(drop(ref));\n}\n","import {useAppDispatch} from 'hooks';\nimport {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport {useInstruments} from '../../hooks';\nimport {\n builderPoolItemsEntitiesBaseCollectionSelector,\n builderPossiblePretestEntitiesBaseCollectionSelector,\n fetchMatrixRelatedPoolItemsThunk,\n fetchPoolItemsThunk,\n fetchPossiblePretestItemsThunk,\n instrumentsActions,\n instrumentsBuilderFilterSelector,\n searchTextSelector,\n} from '../../store';\nimport {useBuilderPoolItemsEntities} from './useBuilderPoolItemsEntities';\nimport {instrumentsBuilderFiltersEntitiesSelector} from 'filters-selections';\nimport {mapBuilderFilterPayload} from '../utils';\n\nexport function useBuilderState() {\n const dispatch = useAppDispatch();\n const {pageLoading, poolItemsLoading} = useInstruments();\n const {builderPoolItemsEntities} = useBuilderPoolItemsEntities();\n\n const builderPoolBaseItems = useSelector(builderPoolItemsEntitiesBaseCollectionSelector);\n const builderPossiblePretestItems = useSelector(builderPossiblePretestEntitiesBaseCollectionSelector);\n const searchText = useSelector(searchTextSelector);\n const builderFilter = useSelector(instrumentsBuilderFilterSelector);\n const builderFilterEntities = useSelector(instrumentsBuilderFiltersEntitiesSelector);\n\n const getPoolItems = useCallback(\n (pageNumber = 1, builderFilter = initialBuilderFilter, setSubmitting?: (isSubmitting: boolean) => void) => {\n const filter = mapBuilderFilterPayload(builderFilter);\n dispatch(fetchPoolItemsThunk({pageNumber, builderFilter: filter, setSubmitting}));\n },\n [dispatch]\n );\n\n const getPossiblePretestItems: (templateId: string) => void = useCallback(\n (templateId) => {\n dispatch(fetchPossiblePretestItemsThunk(templateId));\n },\n [dispatch]\n );\n\n const clearState: () => void = useCallback(() => dispatch(instrumentsActions.clear()), [dispatch]);\n\n const clearPoolItems: () => void = useCallback(() => dispatch(instrumentsActions.clearPoolItems()), [dispatch]);\n\n const getMatrixRelatedPoolItems = useCallback(\n (defaultAnswerStackId, pageNumber = 1, builderFilter = initialBuilderFilter, searchText = '', setSubmitting?) => {\n const filter = !!builderFilter ? mapBuilderFilterPayload(builderFilter) : initialBuilderFilter;\n\n dispatch(\n fetchMatrixRelatedPoolItemsThunk({\n defaultAnswerStackId,\n pageNumber,\n builderFilter: filter,\n searchText: searchText ? searchText.trim() : '',\n setSubmitting,\n })\n );\n },\n [dispatch]\n );\n\n const setSearch: (text: string) => void = useCallback(\n (text: string) => dispatch(instrumentsActions.setSearch(text)),\n [dispatch]\n );\n\n const setFilterInstrumentsAction = useCallback(\n (filter) => {\n const updatedFilter = {...filter};\n delete updatedFilter.search;\n dispatch(instrumentsActions.setFilterInstruments(updatedFilter));\n },\n [dispatch]\n );\n\n const setBuilderFilterInstruments = useCallback(\n (filter: any) => {\n dispatch(instrumentsActions.setBuilderFilterInstruments(filter));\n },\n [dispatch]\n );\n\n const resetBuilderFilter: () => void = useCallback(\n () => dispatch(instrumentsActions.resetBuilderFilterInstruments()),\n [dispatch]\n );\n\n const resetTemporaryBuilderItems: () => void = useCallback(\n () => dispatch(instrumentsActions.resetTemporaryBuilderItems()),\n [dispatch]\n );\n\n const setTemporaryBuilderItems: () => void = useCallback(\n () => dispatch(instrumentsActions.setTemporaryBuilderItems()),\n [dispatch]\n );\n\n const setBuilderItems: () => void = useCallback(() => dispatch(instrumentsActions.setBuilderItems()), [dispatch]);\n\n return {\n initialBuilderFilter,\n builderFilter,\n builderFilterEntities,\n builderPoolBaseItems,\n builderPossiblePretestItems,\n builderPoolItemsEntities,\n pageLoading,\n poolItemsLoading,\n searchText,\n\n getPoolItems,\n getMatrixRelatedPoolItems,\n getPossiblePretestItems,\n clearPoolItems,\n clearState,\n setSearch,\n setFilterInstrumentsAction,\n setBuilderFilterInstruments,\n resetBuilderFilter,\n resetTemporaryBuilderItems,\n setTemporaryBuilderItems,\n setBuilderItems,\n };\n}\n\nexport const initialBuilderFilter = {\n searchText: '',\n areas: [],\n pillars: [],\n evaluationType: [],\n domain: [],\n programs: [],\n category: '',\n learningObjective: '',\n concept: [],\n competency: [],\n administration: [],\n schoolLevel: [],\n};\n","import {useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport {pagesTotalSelector} from '../../store';\n\nconst initialPage = 1;\n\nexport function usePoolItemsPagination() {\n const [currentPage, setCurrentPage] = useState(initialPage);\n const {poolItems: poolItemsPagesTotal} = useSelector(pagesTotalSelector);\n const hasMorePages = poolItemsPagesTotal > currentPage;\n\n return {\n poolItemsPagesTotal,\n initialPage,\n currentPage,\n setCurrentPage,\n hasMorePages,\n };\n}\n","export enum ActiveStepEnum {\n First = 1,\n Second = 2,\n Third = 3,\n}\n","export enum MuiTableCellEnum {\n Id = 'id',\n Error = 'error',\n ClassName = 'className',\n HasError = 'hasError',\n}\n","export enum NavigationProgressStepsEnum {\n StepOne = 'Step 1: ',\n StepTwo = 'Step 2: ',\n StepThree = 'Step 3: ',\n}\n","export enum EnvironmentConfigurationEnum {\n Dev = 'dev',\n Test = 'testing',\n Staging = 'staging',\n Prod = 'production',\n}\n","export enum ResponseApiStatusEnum {\n Created = 0,\n Processing = 1,\n Ready = 2,\n Error = 3,\n}\n","import React, {Dispatch, MutableRefObject, SetStateAction, useRef, useState} from 'react';\nimport {FormikProps, FormikValues} from 'formik';\n\nexport interface IContextProps {\n isDirty: boolean;\n setIsDirty: Dispatch<SetStateAction<boolean>>;\n formikFormRef: MutableRefObject<FormikProps<FormikValues>>;\n refresher?: number;\n setRefresher?: Dispatch<SetStateAction<number>>;\n forceUpdate: () => void;\n submitFormikForm: () => void;\n resetIsDirty: () => void;\n}\n\n/**\n * Used to connect up buttons ouside of a Formik form elsewhere in the app\n */\nexport const FormContext = React.createContext<Partial<IContextProps>>({});\n\n// https://github.com/deeppatel234/react-context-devtool\nFormContext.displayName = 'FormContext';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface IProviderProps {}\n\nexport const FormContextProvider: React.FC<IProviderProps> = ({children}) => {\n // Note, can't add specific TS form values to useRef here because the form will change from page to page.\n const formikFormRef = useRef<FormikProps<FormikValues>>(null);\n const [isDirty, setIsDirty] = useState(false);\n const [refresher, setRefresher] = useState<number>(0);\n\n const store: IContextProps = {\n isDirty,\n setIsDirty,\n formikFormRef,\n // workaround to allow components to observe the ref changes like formikFormRef.current.dirty\n forceUpdate: () => setRefresher(refresher + 1),\n submitFormikForm: () => formikFormRef?.current?.submitForm() && setIsDirty(false),\n resetIsDirty: () => setIsDirty(false),\n };\n\n return <FormContext.Provider value={store}>{children}</FormContext.Provider>;\n};\n","export * from './utils';\nexport * from './hooks';\nexport * from './enums';\n\nexport {AddIntegrationView} from './AddIntegrationView';\n","export enum ResourceTypeNumEnum {\n Video = 1,\n Audio = 2,\n Image = 3,\n Document = 4,\n PDF = 5,\n FillablePDF = 6,\n Other = 7,\n ScormPackage = 8,\n WebLink = 9,\n K12Resource = 10,\n Excel = 11,\n Archive = 12,\n}\n","export enum ResourceTypeEnum {\n Video = 'Video',\n Audio = 'Audio',\n Image = 'Image',\n Document = 'Document',\n PDF = 'PDF',\n FillablePDF = 'FillablePDF',\n File = 'File',\n ScormPackage = 'SCORMPackage',\n WebLink = 'WebLink',\n Excel = 'Excel',\n Archive = 'Archive',\n}\n","export enum IBaseFileItemStatusEnum {\n Published = 'Published',\n Expired = 'Expired',\n}\n","export const prefix = '[Items]';\n","import {IBuilderDragItem, IBuilderLinkItem} from 'admin/library/models';\nimport {IBuilderFilter} from '../models';\nimport {QuestionAnswersTypeEnum, QuestionDomainNumEnum, QuestionPropertiesType} from 'enums';\nimport {IFetchPoolItemsFilterPayload} from 'models/library/instruments/IFetchPoolItemsPayload';\nimport {IInstrumentItem} from 'models';\nimport {NEGATIVE_ONE, RANDOM_COLLECTIVELY, RANDOM_MULTIPLIER} from 'utils';\nimport {InstrumentTypeEnum} from '../../enums';\n\nexport function isMatrixQuestion(questionType: QuestionAnswersTypeEnum): boolean {\n return questionType === QuestionAnswersTypeEnum.matrix || questionType === QuestionAnswersTypeEnum.matrixEnum;\n}\n\nexport const isInstructionalTextQuestion = (questionType: QuestionAnswersTypeEnum): boolean => {\n return questionType === QuestionAnswersTypeEnum.html;\n};\n\nexport const getLinkedItem = (builderPossiblePretestItems: IBuilderLinkItem[], linkedQuestionAnswerStackId: number) =>\n builderPossiblePretestItems.filter((item) => item.questionAnswerStackId === linkedQuestionAnswerStackId)[0];\n\nexport const getChildQuestion = (builderItem, isMatrix: boolean) =>\n isMatrix &&\n builderItem?.rows.find(\n (childQuestion: IBuilderDragItem) => childQuestion.questionId === builderItem.childQuestionAnswerStackId\n );\n\nexport const mapInitialValues = (isMatrix: boolean, parentItem: IBuilderDragItem, childItem: IBuilderDragItem) => {\n let newLinkedQuestionAnswerStackId = [];\n const matrixInitialLinkedQuestionAnswerStackIdList = [childItem[QuestionPropertiesType.linkedQuestionAnswerStackId]];\n\n if (isMatrix && childItem?.linkedQuestionAnswerStackId) {\n newLinkedQuestionAnswerStackId = matrixInitialLinkedQuestionAnswerStackIdList;\n } else if (parentItem?.linkedQuestionAnswerStackId) {\n newLinkedQuestionAnswerStackId = [parentItem?.linkedQuestionAnswerStackId];\n }\n\n return {\n linkedQuestionAnswerStackId: newLinkedQuestionAnswerStackId,\n };\n};\n\nexport const checkIfValidFormValues = (value: number): boolean => !!value;\n\nexport const applyItemLinkChanges = (\n isMatrix: boolean,\n parentItem: IBuilderDragItem,\n childItem: IBuilderDragItem,\n value: number\n) => {\n const isValid = checkIfValidFormValues(value);\n\n if (isMatrix && childItem) {\n childItem[QuestionPropertiesType.linkedQuestionAnswerStackId] = isValid ? value : null;\n } else {\n parentItem[QuestionPropertiesType.linkedQuestionAnswerStackId] = isValid ? value : null;\n }\n return parentItem;\n};\n\nexport const mapBuilderFilter = (\n search: string,\n areas: number[],\n pillars: string[],\n evaluationType: number[],\n domain: number[],\n programs: number[],\n category: string,\n learningObjective: string,\n concept: number[],\n competency: number[],\n administration: number[],\n schoolLevel: number[]\n): IBuilderFilter => {\n return {\n search,\n areas,\n pillars,\n evaluationType,\n domain,\n programs,\n category,\n learningObjective,\n concept,\n competency,\n administration,\n schoolLevel,\n };\n};\n\nexport const mapBuilderFilterPayload = (builderFilter: IFetchPoolItemsFilterPayload) => ({\n text: builderFilter.search ? builderFilter.search.trim() : '',\n areasFilter: builderFilter.areas ?? [],\n pillarsFilter: builderFilter.pillars ?? [],\n evaluationTypesFilter: builderFilter.evaluationType ?? [],\n domainsFilter: builderFilter.domain ?? [],\n programsFilter: builderFilter.programs ?? [],\n categoryFilter: builderFilter.category ?? [],\n learningObjectiveFilter: builderFilter.learningObjective ?? [],\n conceptsFilter: builderFilter.concept ?? [],\n competenciesFilter: builderFilter.competency ?? [],\n administrationsFilter: builderFilter.administration ?? [],\n schoolLevelsFilter: builderFilter.schoolLevel ?? [],\n});\n\nexport const generateRandomQuestionId = () =>\n (Math.floor(Math.random() * RANDOM_MULTIPLIER) + RANDOM_COLLECTIVELY) * NEGATIVE_ONE;\n\nexport const mapBuilderItemInstructionalText = (item: IInstrumentItem, html: string) => ({\n ...item,\n html,\n});\n\nconst getIsAllowedInstrumentLink = (instrumentTypeId: number) => {\n const isPostSessionSurvey =\n instrumentTypeId > InstrumentTypeEnum.PostSessionSurvey && instrumentTypeId < InstrumentTypeEnum.Feedback;\n\n return (\n instrumentTypeId === InstrumentTypeEnum.PostProgramSurvey ||\n instrumentTypeId === InstrumentTypeEnum.PostSessionSurvey ||\n isPostSessionSurvey\n );\n};\n\nexport const getCanLinkItem = (item: IBuilderDragItem, instrumentTypeId: number) => {\n const isLinkAllowed = getIsAllowedInstrumentLink(instrumentTypeId);\n\n if (item.domain) {\n return isLinkAllowed && item.domain !== QuestionDomainNumEnum.Knowledge;\n }\n\n return false;\n};\n","import {IFilterListNameMap} from './../models/IFilterListNameMap';\nimport {InstrumentsFilterNamesEnum} from 'admin/library/instruments/enums';\nimport {FiltersEnum} from 'filters-selections';\n\nexport const getFilterList = (): FiltersEnum[] => [\n FiltersEnum.PillarMulti,\n FiltersEnum.EvaluationType,\n FiltersEnum.Domain,\n FiltersEnum.ProgramMulti,\n FiltersEnum.LearningObjective,\n FiltersEnum.Category,\n FiltersEnum.Competency,\n FiltersEnum.Concept,\n FiltersEnum.Administration,\n FiltersEnum.SchoolLevel,\n FiltersEnum.Areas,\n FiltersEnum.Search,\n];\n\nexport const getFilterToFilterNameMap = (): IFilterListNameMap => ({\n [FiltersEnum.PillarMulti]: InstrumentsFilterNamesEnum.PILLARS,\n [FiltersEnum.EvaluationType]: InstrumentsFilterNamesEnum.EVALUATION_TYPE,\n [FiltersEnum.Domain]: InstrumentsFilterNamesEnum.DOMAIN,\n [FiltersEnum.ProgramMulti]: InstrumentsFilterNamesEnum.PROGRAMS,\n [FiltersEnum.LearningObjective]: InstrumentsFilterNamesEnum.LEARNING_OBJECTIVE,\n [FiltersEnum.Category]: InstrumentsFilterNamesEnum.CATEGORY,\n [FiltersEnum.Competency]: InstrumentsFilterNamesEnum.COMPETENCY,\n [FiltersEnum.Concept]: InstrumentsFilterNamesEnum.CONCEPT,\n [FiltersEnum.Administration]: InstrumentsFilterNamesEnum.ADMINISTRATION,\n [FiltersEnum.SchoolLevel]: InstrumentsFilterNamesEnum.SCHOOL_LEVEL,\n [FiltersEnum.Areas]: InstrumentsFilterNamesEnum.AREAS,\n [FiltersEnum.Search]: InstrumentsFilterNamesEnum.SEARCH,\n});\n","export * from './all';\nexport * from './details';\nexport * from './store';\n\nexport {GoogleSites} from './GoogleSites';\n","export enum FilterBackendNamesEnum {\n SEARCH_BY_NAME = 'name',\n AUDIENCES = 'audiences',\n PHASES = 'phases',\n TYPES = 'types',\n INSTRUMENT_STATUSES = 'statuses',\n INSTRUMENT_TYPE = 'type',\n INSTRUMENT_VIEW_TYPE = 'isGeneralTemplate',\n PILLARS = 'pillars',\n}\n","export enum ProgramClassInstrumentsOrderingEnum {\n Name = 'Name',\n Type = 'Type',\n}\n","export enum ProgramClassInstrumentsDropdownNameEnum {\n Name_ASC = 'Name: A-Z',\n Name_DESC = 'Name: Z-A',\n Type_PRE_POST = 'Type: Pre-Post',\n Type_POST_PRE = 'Type: Post-Pre',\n}\n","export enum BuilderItemDragTypeEnum {\n item = 'item',\n builderItem = 'builderItem',\n sessionItem = 'sessionItem',\n sessionResourceItem = 'sessionResourceItem',\n sessionInstrumentItem = 'sessionInstrumentItem',\n}\n","export enum QuestionColumnCellEnum {\n checkbox = 'checkbox',\n}\n","import {QuestionAnswersTypeEnum} from 'enums';\n\nexport const cardTypeMap = new Map();\n\nconst questionAndAnswerTitle = 'Question & Answer';\nconst matrixTitle = 'Matrix';\nconst openEndedTitle = 'Open-ended';\nconst ratingTitle = 'Numeric Scale';\nconst dropDownTitle = 'Dropdown';\nconst singleSelectTitle = 'Single Select';\nconst multiSelectTitle = 'Multiple Select';\nconst htmlTitle = 'Instructional Text';\n\ncardTypeMap.set(QuestionAnswersTypeEnum.radioGroup, singleSelectTitle);\ncardTypeMap.set(QuestionAnswersTypeEnum.checkbox, multiSelectTitle);\ncardTypeMap.set(QuestionAnswersTypeEnum.dropdown, dropDownTitle);\ncardTypeMap.set(QuestionAnswersTypeEnum.text, openEndedTitle);\ncardTypeMap.set(QuestionAnswersTypeEnum.rating, ratingTitle);\ncardTypeMap.set(QuestionAnswersTypeEnum.questionAnswerEnum, questionAndAnswerTitle);\ncardTypeMap.set(QuestionAnswersTypeEnum.matrix, matrixTitle);\ncardTypeMap.set(QuestionAnswersTypeEnum.matrixEnum, matrixTitle);\ncardTypeMap.set(QuestionAnswersTypeEnum.html, htmlTitle);\n","import {schema as Schema} from 'normalizr';\n\nexport const sessionItemBuilderEntity = new Schema.Entity('items', {}, {idAttribute: 'id'});\nexport const sessionBuilderItemsSchema = new Schema.Array(sessionItemBuilderEntity);\n","import {ISessionBuilderStoreState} from './ISessionBuilderStoreState';\n\nconst builderSessionItemsDefault = {\n result: [],\n entities: {\n items: {},\n },\n};\n\nexport const sessionBuilderInitialState: ISessionBuilderStoreState = {\n builder: {\n builderSessionItems: builderSessionItemsDefault,\n isAllSessionsExpanded: false,\n isSomeOfSessionsInEditMode: false,\n isSomeOfSessionsWithEmptyName: false,\n },\n};\n","import update from 'immutability-helper';\nimport {normalize} from 'normalizr';\nimport {cloneDeep, uniqBy, values} from 'utils';\nimport {IActionFulfilled} from 'models/common';\nimport {\n IAddInstrumentItemsPayload,\n IAddResourceItemsPayload,\n IBaseInstrumentItem,\n IBaseResourceItem,\n ILearningPathAddSessionBuilderResourceItem,\n ILearningPathSessionItem,\n IMoveSessionResourceItemActionPayload,\n} from 'models/resources';\nimport {ISessionBuilderStoreState} from './ISessionBuilderStoreState';\nimport {sessionBuilderItemsSchema} from './normalizationSchemas';\nimport {SessionBuilderEditModeEnum} from 'enums/learning-paths';\nimport {sessionBuilderInitialState} from './sessionBuilder.initialState';\n\nimport {IMoveSessionItemActionPayload} from 'models';\n\nexport const sessionBuilderReducer = {\n clearBuilder: (state: ISessionBuilderStoreState) => {\n state.builder = {...sessionBuilderInitialState.builder};\n },\n\n addSessionBuilderItem: (\n state: ISessionBuilderStoreState,\n action: IActionFulfilled<null, ILearningPathSessionItem>\n ) => {\n const {id} = action.payload;\n state.builder.builderSessionItems.entities.items[id] = action.payload;\n state.builder.builderSessionItems.result = [...state.builder.builderSessionItems.result, id];\n\n state.builder.isSomeOfSessionsInEditMode = true;\n state.builder.isSomeOfSessionsWithEmptyName = true;\n },\n\n updateSessionBuilderItem: (\n state: ISessionBuilderStoreState,\n action: IActionFulfilled<null, ILearningPathSessionItem>\n ) => {\n const {id} = action.payload;\n\n state.builder.builderSessionItems.entities.items[id] = {\n ...action.payload,\n isAccordionExpanded: false,\n mode: SessionBuilderEditModeEnum.View,\n };\n },\n\n removeSessionBuilderItem: (\n state: ISessionBuilderStoreState,\n action: IActionFulfilled<null, ILearningPathSessionItem>\n ) => {\n const {id} = action.payload;\n\n delete state.builder.builderSessionItems.entities.items[id];\n\n state.builder.builderSessionItems.result = state.builder.builderSessionItems.result.filter(\n (sessionId) => sessionId !== id\n );\n },\n\n collapseSessionBuilderItem: (\n state: ISessionBuilderStoreState,\n action: IActionFulfilled<null, ILearningPathSessionItem>\n ) => {\n const {id} = action.payload;\n const sessionItem = state.builder.builderSessionItems.entities.items[id];\n\n state.builder.builderSessionItems.entities.items[id] = {\n ...sessionItem,\n isAccordionExpanded: sessionItem.isAccordionExpanded ? false : true,\n };\n },\n\n collapseAllSessionBuilderItems: (state: ISessionBuilderStoreState, action: IActionFulfilled<null, boolean>) => {\n const isExpanded = action.payload;\n\n const clonedSessionItemsCollection = getClonedSessionEntitiesCollection(\n state.builder.builderSessionItems.entities.items\n );\n\n const sessionItems = clonedSessionItemsCollection.map((item) => {\n return {\n ...item,\n isAccordionExpanded: isExpanded ? true : false,\n };\n }) as ILearningPathSessionItem[];\n\n const sessionItemsObj = normalize(sessionItems, sessionBuilderItemsSchema) as any;\n\n state.builder.isAllSessionsExpanded = isExpanded;\n state.builder.builderSessionItems = sessionItemsObj;\n },\n\n addSessionBuilderResourceItem: (\n state: ISessionBuilderStoreState,\n action: IActionFulfilled<null, ILearningPathAddSessionBuilderResourceItem>\n ) => {\n const {\n id,\n resourceItem: {contentItemId},\n } = action.payload;\n\n state.builder.builderSessionItems.entities.items[id].resources[contentItemId] = action.payload.resourceItem;\n },\n\n addSessionBuilderResourceItems: (\n state: ISessionBuilderStoreState,\n action: IActionFulfilled<null, IAddResourceItemsPayload>\n ) => {\n const {id, resources} = action.payload;\n const uniqueResources = uniqBy(\n [...state.builder.builderSessionItems.entities.items[id].resources, ...resources],\n 'contentItemId'\n );\n\n state.builder.builderSessionItems.entities.items[id].resources = uniqueResources;\n },\n\n addSessionBuilderInstrumentItems: (\n state: ISessionBuilderStoreState,\n action: IActionFulfilled<null, IAddInstrumentItemsPayload>\n ) => {\n const {id, instruments} = action.payload;\n const uniqueInstruments = uniqBy(\n [...state.builder.builderSessionItems.entities.items[id].instruments, ...instruments],\n 'id'\n );\n\n state.builder.builderSessionItems.entities.items[id].instruments = uniqueInstruments;\n },\n\n removeSessionResourceBuilderItem: (\n state: ISessionBuilderStoreState,\n action: IActionFulfilled<null, {contentItemId: string; itemId: string}>\n ) => {\n const {itemId, contentItemId} = action.payload;\n const resources = state.builder.builderSessionItems.entities.items[itemId].resources;\n\n state.builder.builderSessionItems.entities.items[itemId].resources = removeResourceItemUtil(\n resources,\n contentItemId\n );\n },\n\n removeSessionInstrumentBuilderItem: (\n state: ISessionBuilderStoreState,\n action: IActionFulfilled<null, {instrumentId: number; itemId: string}>\n ) => {\n const {itemId, instrumentId} = action.payload;\n const instruments = state.builder.builderSessionItems.entities.items[itemId].instruments;\n\n state.builder.builderSessionItems.entities.items[itemId].instruments = removeInstrumentItemUtil(\n instruments,\n instrumentId\n );\n },\n\n setSessionBuilderMode: (\n state: ISessionBuilderStoreState,\n action: IActionFulfilled<null, ILearningPathSessionItem>\n ) => {\n const {id} = action.payload;\n const cloned = cloneDeep(state.builder.builderSessionItems.entities.items[id]);\n const isEdit = cloned.mode === SessionBuilderEditModeEnum.Edit;\n\n state.builder.builderSessionItems.entities.items[id] = {\n ...state.builder.builderSessionItems.entities.items[id],\n mode: isEdit ? SessionBuilderEditModeEnum.View : SessionBuilderEditModeEnum.Edit,\n };\n },\n\n checkIfEmptySession: (state: ISessionBuilderStoreState) => {\n const builderSessionCollectionItems = values(state.builder.builderSessionItems.entities.items);\n const isSomeOfSessionsWithEmptyName = checkIfSessionsWithEmptyNameUtil(builderSessionCollectionItems);\n\n state.builder.isSomeOfSessionsWithEmptyName = isSomeOfSessionsWithEmptyName;\n },\n\n moveSessionItem: (\n state: ISessionBuilderStoreState,\n action: IActionFulfilled<null, IMoveSessionItemActionPayload>\n ) => {\n const {dragItem, from, to} = action.payload;\n const clonedSessionItemsCollection = getClonedSessionEntitiesCollection(\n state.builder.builderSessionItems.entities.items\n );\n\n const updatedSessionItems = update(clonedSessionItemsCollection, {\n $splice: [\n [from, 1],\n [to, 0, dragItem],\n ],\n });\n\n const normalizedSessionEntities = normalize(updatedSessionItems, sessionBuilderItemsSchema) as any;\n state.builder.builderSessionItems = normalizedSessionEntities;\n },\n\n moveSessionResourceItem: (\n state: ISessionBuilderStoreState,\n action: IActionFulfilled<null, IMoveSessionResourceItemActionPayload>\n ) => {\n const clonedBuilderSessionEntityItems = cloneDeep(state.builder.builderSessionItems.entities.items);\n const {dragItem, from, to, itemId} = action.payload;\n const session = clonedBuilderSessionEntityItems[itemId];\n\n const updatedResourceItems = update(session.resources, {\n $splice: [\n [from, 1],\n [to, 0, dragItem],\n ],\n });\n\n state.builder.builderSessionItems.entities.items[itemId].resources = updatedResourceItems;\n },\n};\n\nfunction removeResourceItemUtil(resources: IBaseResourceItem[], contentItemId: string) {\n return resources.filter((resource) => resource.contentItemId !== contentItemId);\n}\n\nfunction removeInstrumentItemUtil(instruments: IBaseInstrumentItem[], instrumentId: number) {\n return instruments.filter((instrument) => instrument.id !== instrumentId);\n}\n\nfunction checkIfSessionsWithEmptyNameUtil(sessions: ILearningPathSessionItem[]) {\n if (!sessions.length) {\n return false;\n }\n\n return sessions.some((session) => session.title === '');\n}\n\nfunction getClonedSessionEntitiesCollection(items: any) {\n const clonedSessionItemsEntities = cloneDeep(items);\n const clonedSessionItemsCollection = values(clonedSessionItemsEntities) as ILearningPathSessionItem[];\n\n return clonedSessionItemsCollection;\n}\n","import {ISessionBuilderStoreState} from './ISessionBuilderStoreState';\nimport {fetchLearningPathByIdThunk, updateLearningPathThunk} from '../../edit/store';\nimport {IActionFulfilled, IGetLearningPathByIdApiResponse} from 'models';\nimport {isObject} from 'utils/functions';\nimport {normalize} from 'normalizr';\nimport {sessionBuilderItemsSchema} from './normalizationSchemas';\n\nexport const sessionBuilderExtraReducer = {\n // fetchLearningPathByIdThunk\n [fetchLearningPathByIdThunk.fulfilled]: (\n state: ISessionBuilderStoreState,\n action: IActionFulfilled<null, IGetLearningPathByIdApiResponse>\n ) => {\n if (isObject(action.payload)) {\n const {\n data: {sessions},\n } = action.payload;\n\n if (Array.isArray(sessions)) {\n const sessionItems = normalize(sessions, sessionBuilderItemsSchema) as any;\n state.builder.builderSessionItems = sessionItems;\n }\n }\n },\n\n // updateLearningPathThunk\n [updateLearningPathThunk.fulfilled]: (\n state: ISessionBuilderStoreState,\n action: IActionFulfilled<null, IGetLearningPathByIdApiResponse>\n ) => {\n if (isObject(action.payload)) {\n const {\n data: {sessions},\n } = action.payload;\n\n if (Array.isArray(sessions)) {\n const sessionItems = normalize(sessions, sessionBuilderItemsSchema) as any;\n state.builder.builderSessionItems = sessionItems;\n }\n }\n },\n};\n","import {createSelector} from '@reduxjs/toolkit';\nimport {TStateStore} from 'store';\nimport {values} from 'utils';\n\nconst getLearningPathsState = (state: TStateStore) => state.resources.learningPaths;\n\nexport const getSessionBuilderState = createSelector(\n getLearningPathsState,\n (learningPaths) => learningPaths.sessionBuilder\n);\n\nexport const getBuilderState = createSelector(getSessionBuilderState, (sessionBuilder) => sessionBuilder.builder);\n\nexport const getLearningPathsBuilderSessionItems = createSelector(\n getBuilderState,\n (builder) => builder.builderSessionItems\n);\n\nexport const builderSessionItemsEntitiesSelector = createSelector(\n getLearningPathsBuilderSessionItems,\n (builderSessionItems) => builderSessionItems.entities.items ?? {}\n);\n\nexport const builderSessionItemsResultSelector = createSelector(\n getLearningPathsBuilderSessionItems,\n (builderSessionItems) => builderSessionItems.result ?? []\n);\n\nexport const builderSessionItemsCollectionSelector = createSelector(\n getLearningPathsBuilderSessionItems,\n (builderSessionItems) => {\n return builderSessionItems.entities.items ? values(builderSessionItems.entities.items) : [];\n }\n);\n\nexport const learningPathsCreateBuilderIsAllSessionsExpanded = createSelector(getBuilderState, (builder) => {\n return builder.isAllSessionsExpanded;\n});\n\nexport const isSomeOfSessionsInEditModeSelector = createSelector(getBuilderState, (builder) => {\n return builder.isSomeOfSessionsInEditMode;\n});\n\nexport const isSomeOfSessionsWithEmptyNameSelector = createSelector(getBuilderState, (builder) => {\n return builder.isSomeOfSessionsWithEmptyName;\n});\n","import {createSlice} from '@reduxjs/toolkit';\nimport {sessionBuilderInitialState} from './sessionBuilder.initialState';\nimport {sessionBuilderReducer} from './sessionBuilder.reducer';\nimport {sessionBuilderExtraReducer} from './sessionBuilderExtra.reducer';\n\nexport const sessionBuilderSlice = createSlice({\n name: 'sessionBuilder',\n initialState: sessionBuilderInitialState,\n reducers: sessionBuilderReducer,\n extraReducers: sessionBuilderExtraReducer,\n});\n\nexport const {actions: sessionBuilderSliceSitesActions} = sessionBuilderSlice;\n","import React, {FC, ReactNode} from 'react';\nimport {Text} from 'components-lib';\nimport {FastField as FormikFastField, Field as FormikField, FieldProps} from 'formik';\nimport {IComponentWithChildren, IOption} from 'models';\n\ninterface IFieldProps<T> extends IComponentWithChildren {\n name: string;\n loading?: boolean;\n value?: string | number | Date;\n placeholder?: string;\n label?: string;\n disabled?: boolean;\n readOnly?: boolean;\n toolbarHidden?: boolean;\n checked?: boolean;\n Component: FC<any>;\n options?: IOption[];\n multiple?: boolean;\n withMinDate?: boolean;\n withMaxDate?: boolean;\n maxWidth?: boolean;\n minDateFormField?: string;\n maxDateFormField?: string;\n minDateMessage?: string;\n maxDateMessage?: string;\n withDefaultChangeHandler?: boolean;\n withEdit?: boolean;\n withIcon?: boolean;\n customValueChangeHandler?: T;\n debounceDelay?: number;\n withInstructionalText?: boolean;\n noOptionsText?: string;\n type?: string;\n min?: string;\n max?: string;\n withCheckboxRenderOption?: boolean;\n withSearchOnType?: boolean;\n withFontWeightBold?: boolean;\n disableCloseOnSelect?: boolean;\n color?: 'primary' | 'secondary';\n iconPosition?: string;\n icon?: ReactNode;\n rows?: number;\n disableFuture?: boolean;\n disablePast?: boolean;\n format?: string;\n isFilter?: boolean;\n open?: string | boolean;\n submitDisabled?: boolean;\n filterOptions?: (options: IOption[]) => IOption[];\n autoFocus?: boolean;\n inputChangeHandler?: (value: string) => void;\n onOpen?: (value: boolean) => void;\n}\n\nexport function Field<T = any>({name, Component, children, ...rest}: IFieldProps<T>) {\n return (\n <FormikField id={name} name={name}>\n {(props: FieldProps) => {\n const error: any = props.form.errors[name];\n return (\n <>\n <Component name={name} onBlur={props.field.onBlur} {...props} {...rest}>\n {children}\n </Component>\n {error && <Text.Error>{error}</Text.Error>}\n </>\n );\n }}\n </FormikField>\n );\n}\n\nexport function FastField<T = any>({name, Component, children, ...rest}: IFieldProps<T>) {\n return (\n <FormikFastField id={name} name={name}>\n {(props: FieldProps) => {\n const error: any = props.form.errors[name];\n return (\n <>\n <Component name={name} onBlur={props.field.onBlur} {...props} {...rest}>\n {children}\n </Component>\n {error && <Text.Error>{error}</Text.Error>}\n </>\n );\n }}\n </FormikFastField>\n );\n}\n","import {RolesEnum} from 'permissions';\n\nexport const SuperAdminRole = [RolesEnum.SuperAdmin];\nexport const AreaAdminRole = [RolesEnum.AreaAdmin];\nexport const USAAdminRole = [RolesEnum.USAAdmin];\nexport const StaffRole = [RolesEnum.Staff];\nexport const EducatorRole = [RolesEnum.Educator];\nexport const VolunteerRole = [RolesEnum.Volunteer];\nexport const StudentRole = [RolesEnum.Student];\nexport const SuperAndNationalAdminroles = [RolesEnum.USAAdmin, RolesEnum.SuperAdmin];\nexport const AdminRoles = [RolesEnum.USAAdmin, RolesEnum.SuperAdmin, RolesEnum.AreaAdmin];\nexport const AllRolesWithoutStudent = [\n RolesEnum.AreaAdmin,\n RolesEnum.Educator,\n RolesEnum.Staff,\n RolesEnum.SuperAdmin,\n RolesEnum.USAAdmin,\n RolesEnum.Volunteer,\n];\n","import {withStyles} from '@material-ui/core/styles';\nimport 'react-select/dist/react-select.css';\nimport 'react-virtualized-select/styles.css';\n\nexport const GlobalCss = withStyles({\n '@global': {\n 'html, body': {\n height: '100vh',\n overflow: 'hidden',\n },\n },\n})(() => null);\n","import {createMuiTheme, responsiveFontSizes} from '@material-ui/core/styles';\nimport {colors} from './colors';\n\nexport const muiTheme = responsiveFontSizes(\n createMuiTheme({\n palette: {\n primary: {\n main: colors.primary,\n dark: colors.primary100,\n light: colors.primary20,\n contrastText: colors.white,\n },\n secondary: {\n main: colors.secondary,\n dark: colors.secondary100,\n light: colors.secondary20,\n contrastText: colors.white,\n },\n error: {\n main: colors.error,\n },\n warning: {\n main: colors.warning,\n },\n info: {\n main: colors.info,\n },\n success: {\n main: colors.success,\n },\n grey: {\n 50: colors.gray00,\n 100: colors.gray05,\n 200: colors.gray10,\n 300: colors.gray20,\n 500: colors.gray40,\n 700: colors.gray60,\n 800: colors.gray80,\n 900: colors.gray100,\n },\n text: {\n primary: colors.gray100,\n secondary: colors.gray60,\n disabled: colors.gray40,\n hint: colors.gray60,\n },\n divider: colors.gray10,\n },\n typography: {\n fontFamily: 'Open Sans, sans-serif',\n h1: {\n fontSize: '1.5rem',\n lineHeight: 1.25,\n fontWeight: 600,\n color: colors.gray80,\n marginTop: 16,\n marginBottom: 16,\n },\n h2: {\n fontSize: '1.125rem',\n lineHeight: 1.25,\n fontWeight: 600,\n color: colors.gray80,\n marginTop: 16,\n marginBottom: 16,\n },\n h3: {\n fontSize: '1rem',\n lineHeight: 1.25,\n fontWeight: 600,\n color: colors.gray80,\n marginTop: 16,\n marginBottom: 16,\n },\n h4: {\n fontSize: '0.8125rem',\n lineHeight: 1.25,\n fontWeight: 600,\n color: colors.gray80,\n marginTop: 16,\n marginBottom: 16,\n },\n h5: {\n fontSize: '0.7rem',\n lineHeight: 1.25,\n fontWeight: 600,\n color: colors.gray80,\n marginTop: 16,\n marginBottom: 16,\n },\n h6: {\n fontSize: '0.6rem',\n lineHeight: 1.25,\n fontWeight: 600,\n color: colors.gray80,\n marginTop: 8,\n marginBottom: 8,\n },\n body1: {\n fontSize: '0.875rem',\n lineHeight: 1.5,\n color: colors.gray80,\n },\n body2: {\n fontSize: '0.875rem',\n lineHeight: 1.5,\n color: colors.gray60,\n },\n caption: {\n fontSize: '0.75rem',\n lineHeight: 1.25,\n color: colors.gray60,\n },\n },\n spacing: [0, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048],\n overrides: {\n MuiOutlinedInput: {\n root: {\n '&&[class*=\"MuiOutlinedInput-root\"]': {\n padding: 1.8,\n backgroundColor: 'white',\n },\n '& .MuiOutlinedInput-input ': {\n fontSize: '0.8125rem',\n fontWeight: 600,\n padding: '11px 9px',\n color: colors.gray100,\n },\n '& .Mui-disabled': {\n fontSize: '0.8125rem',\n color: colors.gray60,\n },\n position: 'relative',\n '& $notchedOutline': {\n borderColor: colors.gray20, // gray10\n },\n '&:hover:not($disabled):not($focused):not($error) $notchedOutline': {\n borderColor: colors.gray80, // primary80\n '@media (hover: none)': {\n borderColor: colors.gray80,\n },\n },\n '&$focused $notchedOutline': {\n borderColor: colors.secondary, // secondary80\n borderWidth: 1,\n },\n },\n },\n MuiChip: {\n root: {\n backgroundColor: colors.white,\n border: `1px solid ${colors.gray10}`,\n borderRadius: 6,\n height: 24,\n position: 'relative',\n zIndex: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n '&:hover': {\n '& .MuiChip-deleteIcon': {\n color: colors.white,\n },\n },\n },\n label: {\n color: colors.gray100,\n backgroundColor: colors.white,\n fontWeight: 'bold',\n },\n deleteIcon: {\n color: colors.white,\n },\n },\n MuiInputBase: {\n root: {\n color: colors.gray100,\n },\n },\n },\n })\n);\n","import {muiTheme} from './mui.theme';\n\nexport const borderGeneral = {\n borderRadius: muiTheme.spacing(1),\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: muiTheme.palette.divider,\n};\n","import * as Yup from 'yup';\nimport {FormNameEnum} from 'enums/form';\nimport {emailRegex, errorMessages, isEmpty} from 'utils';\nimport {useIntegrationDetailType} from 'admin';\nimport {GOOGLE_DRIVE_URL, SUPPORTED_CERTIFICATE_FORMATS} from 'admin/integrations/add-integration';\n\nexport const integrationDetailsFormBaseValidationSchema = Yup.object().shape({\n // All integrations\n\n [FormNameEnum.integrationName]: Yup.string()\n .trim()\n .required(errorMessages.requiredWithInputName('an Integration Name')),\n\n // Google Classroom\n\n [FormNameEnum.masterClassroomEmailAccount]: Yup.string()\n .trim()\n .nullable()\n // Optional field\n .test('is-valid-master-email-account', 'User to impersonate should be a valid email!', function () {\n const {integrationType, masterClassroomEmailAccount} = this.parent;\n\n // Check if a type exist and a master account is empty\n if (!integrationType || isEmpty(masterClassroomEmailAccount)) {\n return true;\n }\n\n const {isGoogleClassRoom} = useIntegrationDetailType(integrationType);\n\n if (isGoogleClassRoom) {\n // Check if a master user email account is not empty and match an email regex\n return masterClassroomEmailAccount.match(emailRegex);\n }\n\n return true;\n }),\n\n // Google Classroom + Google Sites Source\n\n [FormNameEnum.serviceEmail]: Yup.string()\n .nullable()\n .trim()\n // Required field\n .test('is-service-email-exist', errorMessages.requiredWithInputName('a Service Email Address'), function () {\n const {integrationType, serviceEmail} = this.parent;\n\n // Double check if type exist\n if (!integrationType) {\n return true;\n }\n\n const {isGoogleClassRoom, isGoogleSitesSource} = useIntegrationDetailType(integrationType);\n\n if (isGoogleClassRoom || isGoogleSitesSource) {\n // Check if the service email is not empty\n return !isEmpty(serviceEmail);\n }\n\n return true;\n })\n .test('is-valid-service-email', 'Service Email Address should be a valid email!', function () {\n const {serviceEmail} = this.parent;\n\n if (serviceEmail) {\n return serviceEmail.match(emailRegex);\n }\n\n return true;\n }),\n\n [FormNameEnum.certificate]: Yup.mixed()\n .nullable()\n .test('has-correct-format', 'Only .p12 format is supported', function () {\n const {integrationType, certificate} = this.parent;\n\n // Check if a type exist\n if (!integrationType || !certificate) {\n return true;\n }\n\n const {isGoogleClassRoom, isGoogleSitesSource} = useIntegrationDetailType(integrationType);\n\n if (isGoogleClassRoom || isGoogleSitesSource) {\n return SUPPORTED_CERTIFICATE_FORMATS.includes(certificate.type);\n }\n\n return true;\n }),\n\n // Microsoft teams\n\n [FormNameEnum.clientId]: Yup.string()\n .nullable()\n .trim('The client id cannot include leading and trailing spaces!')\n .test('is-client-id-exist', errorMessages.requiredWithInputName('a Client ID'), function () {\n const {integrationType, clientId} = this.parent;\n\n // Check if a type exist\n if (!integrationType) {\n return true;\n }\n\n const {isMicrosoftTeams} = useIntegrationDetailType(integrationType);\n\n if (isMicrosoftTeams) {\n return !isEmpty(clientId);\n }\n\n return true;\n }),\n\n [FormNameEnum.clientSecret]: Yup.string()\n .nullable()\n .trim('The client secret cannot include leading and trailing spaces!')\n .test('is-client-secret-exist', errorMessages.requiredWithInputName('a Client Secret'), function () {\n const {integrationType, clientSecret} = this.parent;\n\n // Check if a type exist\n if (!integrationType) {\n return true;\n }\n\n const {isMicrosoftTeams} = useIntegrationDetailType(integrationType);\n\n if (isMicrosoftTeams) {\n return !isEmpty(clientSecret);\n }\n\n return true;\n }),\n\n [FormNameEnum.authorityUrl]: Yup.string()\n .trim()\n .url('Authority url should be a valid url!')\n .nullable()\n .test('is-authority-url-exist', errorMessages.requiredWithInputName('a Authority url'), function () {\n const {integrationType, authorityUrl} = this.parent;\n\n // Check if a type exist\n if (!integrationType) {\n return true;\n }\n\n const {isMicrosoftTeams} = useIntegrationDetailType(integrationType);\n\n if (isMicrosoftTeams) {\n return !isEmpty(authorityUrl);\n }\n\n return true;\n }),\n\n // Google Sites Source\n\n [FormNameEnum.googleDriveSourceFolderLink]: Yup.string()\n .nullable()\n .url('Google Drive Source folder link should be a valid url!')\n .test(\n 'is-google-drive-source-url-exist',\n errorMessages.requiredWithInputName('a Google Drive Source url'),\n function () {\n const {integrationType, googleDriveSourceFolderLink} = this.parent;\n\n // Check if a type exist\n if (!integrationType) {\n return true;\n }\n\n const {isGoogleSitesSource} = useIntegrationDetailType(integrationType);\n\n if (isGoogleSitesSource) {\n return !isEmpty(googleDriveSourceFolderLink);\n }\n\n return true;\n }\n )\n .test('has-google-drive-url', 'You should enter a valid google drive link!', (value) =>\n value ? value.includes(GOOGLE_DRIVE_URL) : true\n ),\n\n // Google Sites Destination\n\n [FormNameEnum.googleDriveDestinationFolderLink]: Yup.string()\n .nullable()\n .url('Google Drive Destination folder link should be a valid url!')\n .test(\n 'is-google-drive-destination-url-exist',\n errorMessages.requiredWithInputName('a Google Drive Destination url'),\n function () {\n const {integrationType, googleDriveDestinationFolderLink} = this.parent;\n\n // Check if a type exist\n if (!integrationType) {\n return true;\n }\n\n const {isGoogleSitesDestination} = useIntegrationDetailType(integrationType);\n\n if (isGoogleSitesDestination) {\n return !isEmpty(googleDriveDestinationFolderLink);\n }\n\n return true;\n }\n )\n .test('has-google-drive-url', 'You should enter a valid google drive link!', (value) =>\n value ? value.includes(GOOGLE_DRIVE_URL) : true\n ),\n});\n","import {useAppDispatch, useNavigate} from 'hooks';\nimport {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\n\nimport {activeEntitySelector, fetchProgramThunk, loadingSelector, programDetailsActions as actions} from '../store';\n\nexport function useProgram(programId: number) {\n const dispatch = useAppDispatch();\n const program = useSelector(activeEntitySelector);\n const loading = useSelector(loadingSelector);\n const {push} = useNavigate();\n\n const fetchProgram = useCallback(\n (optional?: boolean) => {\n if (!loading && (!optional || !program || program.id !== programId)) {\n dispatch(actions.resetActiveEntry());\n dispatch(fetchProgramThunk({programId, push}));\n }\n },\n [dispatch, programId, loading, program, push]\n );\n\n return {loading, program, fetchProgram, reset: actions.resetActiveEntry};\n}\n","import {useState} from 'react';\nimport {SortingOrderEnum} from 'enums';\nimport {IBindBaseEntity} from 'models';\n\nexport const useSortOrder = () => {\n const EN = 'en';\n const SENSITIVITY = 'base';\n const [order, setOrder] = useState(SortingOrderEnum.ASC);\n\n const sortBy = (list: IBindBaseEntity[], prop: string, order: SortingOrderEnum) => {\n const sorted = list.sort((a, b) => a[prop].localeCompare(b[prop], EN, {sensitivity: SENSITIVITY}));\n return order.toUpperCase() === SortingOrderEnum.ASC ? sorted : sorted.reverse();\n };\n\n return {order, setOrder, sortBy};\n};\n","import {useCallback, useState} from 'react';\nimport {useParams} from 'react-router-dom';\nimport {useAppDispatch} from 'hooks';\nimport {ALL_AREAS_INDEX} from 'utils';\nimport {getExportTypes, getReportTypes} from '..';\nimport {fetchLevelsOfReportingListThunk} from '../store';\nimport {IProgramClassExportParams} from 'models';\n\nexport const useProgramReports = () => {\n const [loading, setIsLoading] = useState<boolean>(false);\n const [selectedAreaId, setSelectedAreaId] = useState<number>(ALL_AREAS_INDEX);\n\n const {programId, classId} = useParams<IProgramClassExportParams>();\n const dispatch = useAppDispatch();\n const reportTypes = getReportTypes();\n const exportTypes = getExportTypes();\n\n const fetchProgramLevelsOfReporting = useCallback(\n () => dispatch(fetchLevelsOfReportingListThunk({programId})),\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [programId]\n );\n\n const fetchProgramClassLevelsOfReporting = useCallback(\n () => dispatch(fetchLevelsOfReportingListThunk({classId})),\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [programId, classId]\n );\n\n return {\n loading,\n setIsLoading,\n selectedAreaId,\n setSelectedAreaId,\n reportTypes,\n exportTypes,\n\n fetchProgramLevelsOfReporting,\n fetchProgramClassLevelsOfReporting,\n };\n};\n","import {useCallback, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {useParams} from 'react-router';\nimport {useAppDispatch} from 'hooks';\nimport {\n levelOfReportsLoadingSelector,\n levelOfReportsMenuItemsSelector,\n programDetailsActions as actions,\n selectedIdSelector,\n} from '../store';\nimport {IProgramClassReportMenuListOption, IProgramClassReportParams} from 'models';\nimport {defaultProgramClassMenuItemOption, defaultProgramMenuItemOption} from '../store/programDetails.initialState';\n\nexport const useProgramReportsStoreActions = () => {\n const dispatch = useAppDispatch();\n const {classId} = useParams<IProgramClassReportParams>();\n\n const loading = useSelector(levelOfReportsLoadingSelector) as boolean;\n const selectedId = useSelector(selectedIdSelector) as number;\n const menuList = useSelector(levelOfReportsMenuItemsSelector) as IProgramClassReportMenuListOption[];\n\n const selectedItem = useMemo(() => {\n const defaultSelectedOption = classId ? defaultProgramClassMenuItemOption : defaultProgramMenuItemOption;\n\n if (!menuList.length) {\n return defaultSelectedOption;\n }\n\n return menuList.find((item) => item.id === selectedId);\n }, [selectedId, menuList, classId]);\n\n const clearProgramReportsState = useCallback(() => dispatch(actions.clearLevelOfReports()), [dispatch]);\n\n const setSelectedId: (id: number) => void = useCallback((id: number) => dispatch(actions.setSelectedId(id)), [\n dispatch,\n ]);\n\n const isProgramLevelAllOption = selectedItem?.id === defaultProgramMenuItemOption.id;\n\n return {\n loading,\n selectedId,\n selectedItem,\n menuList,\n setSelectedId,\n isProgramLevelAllOption,\n clearProgramReportsState,\n };\n};\n","import {IDigitalResourceFileMetaData} from 'models';\n\nexport const mapFileToUpdate = (\n id: string,\n name: string,\n digitalResourceGuid: string,\n streamingUrl: string,\n drmExpirationDate: string,\n metadata: IDigitalResourceFileMetaData\n) => {\n return {\n id,\n name,\n digitalResourceGuid,\n json: '',\n streamingUrl,\n drmExpirationDate,\n metadata,\n };\n};\n\nexport const mapFileToUpdateMetadata = (\n programs: number[],\n sessions: number[],\n pillars: number[],\n competencies: number[],\n gradeLevels: number[],\n skillsAndBehaviors: number[],\n languages: number[],\n keyTerms: string[],\n concepts: string[],\n learningObjectives: string[],\n drmExpirationDate: string\n) => {\n return {\n programs,\n sessions,\n pillars,\n competencies,\n gradeLevels,\n skillsAndBehaviors,\n languages,\n keyTerms,\n concepts,\n learningObjectives,\n drmExpirationDate,\n };\n};\n","import {FiltersEnum} from 'filters-selections';\n\nexport const filesAllFilterList = [\n FiltersEnum.ProgramMulti,\n FiltersEnum.TagGradeLevels,\n FiltersEnum.Languages,\n FiltersEnum.Pillar,\n FiltersEnum.Competencies,\n FiltersEnum.KnowledgeSkillsAndAbilities,\n FiltersEnum.FileTypeMulti,\n FiltersEnum.AccessibleToStudentsRadio,\n FiltersEnum.FileStatusesCheckbox,\n FiltersEnum.PublishedByRadio,\n];\n","import {FiltersEnum} from 'filters-selections';\nimport {FilesAllFilterNamesEnum} from '../../enums';\n\nexport const filesAllFilterToFilterNameMap = {\n [FiltersEnum.FileTypeMulti]: FilesAllFilterNamesEnum.FILE_TYPES,\n [FiltersEnum.ProgramMulti]: FilesAllFilterNamesEnum.PROGRAMS,\n [FiltersEnum.TagGradeLevels]: FilesAllFilterNamesEnum.GRADE_LEVELS,\n [FiltersEnum.Pillar]: FilesAllFilterNamesEnum.PILLARS,\n [FiltersEnum.Competencies]: FilesAllFilterNamesEnum.COMPETENCIES,\n [FiltersEnum.KnowledgeSkillsAndAbilities]: FilesAllFilterNamesEnum.KSAS,\n [FiltersEnum.Languages]: FilesAllFilterNamesEnum.LANGUAGES,\n [FiltersEnum.AccessibleToStudentsRadio]: FilesAllFilterNamesEnum.IS_ACCESSIBLE_TO_STUDENTS,\n [FiltersEnum.FileStatusesCheckbox]: FilesAllFilterNamesEnum.FILE_STATUSES,\n};\n","export const filesAllMessages = {\n scormHasNotShortUrlMessage: 'The SCORM package is not yet ready.',\n fileExpiredMessage: 'This resource has expired and the URL cannot be copied and shared.',\n fileDownload: 'File was downloaded successfully.',\n warningUnsavedChanges:\n 'Are you sure you want to leave this page? You have unsaved changes. If you leave the page, these changes will be lost!',\n openInNewTab: 'The resource is being opened in a new tab.',\n resourceCopied: 'The resource link has been copied.',\n resourceDownloading: 'The resource is being downloaded.',\n};\n","import {SortingOrderEnum} from 'enums';\nimport {DigitalResourceDropdownNameEnum, DigitalResourcesOrderingEnum} from '../enums';\n\nexport const digitalResourcesOrderingMap = {\n [DigitalResourcesOrderingEnum.Name]: {\n [SortingOrderEnum.ASC]: DigitalResourceDropdownNameEnum.NAME_ASC,\n [SortingOrderEnum.DESC]: DigitalResourceDropdownNameEnum.NAME_DESC,\n },\n [DigitalResourcesOrderingEnum.Created]: {\n [SortingOrderEnum.ASC]: DigitalResourceDropdownNameEnum.CREATED_OLDEST,\n [SortingOrderEnum.DESC]: DigitalResourceDropdownNameEnum.CREATED_NEWEST,\n },\n};\n","import {SortingOrderEnum} from 'enums';\nimport {IntegrationDropdownNameEnum} from 'admin/integrations';\nimport {IFilesAllSortOrder} from 'models';\nimport {FilesOrderingAllEnum} from '../enums';\n\nexport const getFilesAllMenuItemsList = (\n itemClickHandler: () => void,\n handleItemClick: (handleItemSortObj: IFilesAllSortOrder) => void\n) => {\n const onClick = (\n itemClickHandler: () => void,\n handleItemClick: (handleItemSortObj: IFilesAllSortOrder) => void,\n handleItemSortObj: IFilesAllSortOrder\n ) => {\n return () => {\n itemClickHandler();\n handleItemClick(handleItemSortObj);\n };\n };\n\n return [\n {\n name: IntegrationDropdownNameEnum.NAME_ASC,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: FilesOrderingAllEnum.Name,\n sort: SortingOrderEnum.ASC,\n }),\n },\n {\n name: IntegrationDropdownNameEnum.NAME_DESC,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: FilesOrderingAllEnum.Name,\n sort: SortingOrderEnum.DESC,\n }),\n },\n {\n name: IntegrationDropdownNameEnum.CREATED_NEWEST,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: FilesOrderingAllEnum.Created,\n sort: SortingOrderEnum.DESC,\n }),\n },\n {\n name: IntegrationDropdownNameEnum.CREATED_OLDEST,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: FilesOrderingAllEnum.Created,\n sort: SortingOrderEnum.ASC,\n }),\n },\n ];\n};\n","import {SortingOrderEnum} from 'enums';\nimport {IFetchFilesAllPagedThunkPayload, IFilesAllFilter, IFilesAllSortOrder} from 'models/resources/files';\n\nexport const mapFetchFilesAllPayload = (\n sortOrder: IFilesAllSortOrder,\n pageNumber: number,\n pageSize: number,\n filter: IFilesAllFilter\n): IFetchFilesAllPagedThunkPayload => {\n let filterFilesAllPayload = {};\n\n if (filter.query) {\n filterFilesAllPayload = {query: filter.query};\n }\n\n if (filter.fileTypes.length > 0) {\n filterFilesAllPayload = {...filterFilesAllPayload, contentTypes: filter.fileTypes};\n }\n\n if (filter.programs.length > 0) {\n filterFilesAllPayload = {...filterFilesAllPayload, programs: filter.programs};\n }\n\n if (filter.gradeLevels.length > 0) {\n filterFilesAllPayload = {...filterFilesAllPayload, gradeLevels: filter.gradeLevels};\n }\n\n if (filter.pillars.length > 0) {\n filterFilesAllPayload = {...filterFilesAllPayload, pillars: filter.pillars};\n }\n\n if (filter.competencies.length > 0) {\n filterFilesAllPayload = {...filterFilesAllPayload, competencies: filter.competencies};\n }\n\n if (filter.knowledgeSkillsAndAbilities.length > 0) {\n filterFilesAllPayload = {...filterFilesAllPayload, kSAs: filter.knowledgeSkillsAndAbilities};\n }\n\n if (filter.languages.length > 0) {\n filterFilesAllPayload = {...filterFilesAllPayload, languages: filter.languages};\n }\n\n if (filter.fileStatuses.length > 0) {\n filterFilesAllPayload = {...filterFilesAllPayload, statuses: filter.fileStatuses};\n }\n\n if (!!filter.isAccessibleToStudents || filter.isAccessibleToStudents === 0) {\n filterFilesAllPayload = {...filterFilesAllPayload, isAccessibleToStudents: filter.isAccessibleToStudents};\n }\n\n if (filter.publishedBy) {\n filterFilesAllPayload = {...filterFilesAllPayload, publishedBy: filter.publishedBy};\n }\n\n return {\n sortOrder: {\n sortBy: sortOrder.order,\n sortAsc: sortOrder.sort === SortingOrderEnum.ASC,\n },\n pagination: {\n pageNumber,\n pageSize,\n },\n filter: filterFilesAllPayload,\n };\n};\n","import {IFilesAllFilter} from 'models/resources';\nimport {IFilesAllFiltersFormValues} from '../components/FilesViewAllSidebar/config';\nimport {FilesAllFilterNamesEnum} from '../enums';\n\nexport const mapFilesAllFilters = (formValues: IFilesAllFiltersFormValues): IFilesAllFilter => ({\n [FilesAllFilterNamesEnum.SEARCH_BY_QUERY]: formValues.query,\n [FilesAllFilterNamesEnum.FILE_TYPES]: formValues.fileTypes,\n [FilesAllFilterNamesEnum.PROGRAMS]: formValues.programs,\n [FilesAllFilterNamesEnum.GRADE_LEVELS]: formValues.gradeLevels,\n [FilesAllFilterNamesEnum.PILLARS]: formValues.pillars,\n [FilesAllFilterNamesEnum.COMPETENCIES]: formValues.competencies,\n [FilesAllFilterNamesEnum.KSAS]: formValues.knowledgeSkillsAndAbilities,\n [FilesAllFilterNamesEnum.IS_ACCESSIBLE_TO_STUDENTS]: formValues.isAccessibleToStudents,\n [FilesAllFilterNamesEnum.PUBLISHED_BY]: formValues.publishedBy,\n [FilesAllFilterNamesEnum.LANGUAGES]: formValues.languages,\n [FilesAllFilterNamesEnum.FILE_STATUSES]: formValues.fileStatuses,\n});\n","import {IColumn} from 'models';\nimport {FileAllTableColumnsEnum} from '../enums';\n\nexport const getFilteredFilesColumns = (columns: IColumn[], filterParam: FileAllTableColumnsEnum) =>\n columns.filter((col) => col.id !== filterParam);\n","import {DropdownItemTextEnum} from '../enums';\n\nexport const filesDropdownList = [\n {\n text: DropdownItemTextEnum.open,\n isOpenInNewWindow: true,\n },\n {\n text: DropdownItemTextEnum.copyLink,\n isCopyLink: true,\n },\n {\n text: DropdownItemTextEnum.download,\n isDownload: true,\n },\n];\n","import {IVerticalDropdownItem} from 'admin/resources/files';\n\nexport const mapFilesDropdownList = (list: IVerticalDropdownItem[], isFileExpired: boolean) =>\n list.map((item) => {\n if (isFileExpired && !item.isDownload) {\n return {\n ...item,\n disabled: true,\n };\n }\n return item;\n });\n","export * from './hooks';\nexport * from './enums';\nexport * from './store';\nexport * from './models';\nexport * from './utils';\n\nexport {ItemImport} from './ItemImport';\n","export const prefix = '[Import]';\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\nimport {importItemsMessages} from '../../utils/constants/messages';\nimport {itemImportApi} from 'api';\nimport {TGetItemBankImportApiResponse} from 'models/library/items-import';\n\nexport const importItemsThunk: any = createAsyncThunk<TGetItemBankImportApiResponse, any>(\n `${prefix} importItems`,\n async (itemImportId: number, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await itemImportApi.startItemBankImport(itemImportId);\n dispatch(toastNotificationManager.createSuccessToastAction(importItemsMessages.importStarting));\n return parsedBody;\n } catch (error) {\n dispatch(toastNotificationManager.createErrorToastAction(error.parsedBody));\n return rejectWithValue({error});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\nimport {importItemsMessages} from '../../utils/constants/messages';\nimport {itemImportApi} from 'api';\nimport {TGetImportTemplateApiResponse} from 'models';\n\nexport const fetchImportItemsTemplateThunk: any = createAsyncThunk<TGetImportTemplateApiResponse, null>(\n `${prefix} fetchImportItemsTemplate`,\n async (_, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await itemImportApi.getImportTemplate();\n dispatch(toastNotificationManager.createSuccessToastAction(importItemsMessages.downloadSuccess));\n return parsedBody;\n } catch (error) {\n dispatch(toastNotificationManager.createErrorToastAction(error.parsedBody));\n return rejectWithValue({error});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\nimport {itemImportApi} from 'api';\nimport {TGetImportInstructionalTextApiResponse} from 'models';\nimport {errorMessages} from 'utils/constants';\n\nexport const fetchImportInstructionalTextThunk: any = createAsyncThunk<TGetImportInstructionalTextApiResponse, null>(\n `${prefix} fetchImportInstructionalText`,\n async (_, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await itemImportApi.getImportInstructionalText();\n return parsedBody;\n } catch (error) {\n dispatch(toastNotificationManager.createErrorToastAction(errorMessages.defaultErrorMessage));\n return rejectWithValue({error});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\nimport {itemImportApi} from 'api';\nimport {TGetUploadItemBankApiRequestPayload} from 'models';\nimport {importItemsMessages} from 'admin';\n\nexport const uploadItemBankThunk: any = createAsyncThunk<any, TGetUploadItemBankApiRequestPayload>(\n `${prefix} uploadItemBankThunk`,\n async (payload: TGetUploadItemBankApiRequestPayload, {rejectWithValue, dispatch}) => {\n try {\n const response = await itemImportApi.uploadItemBank(payload);\n dispatch(toastNotificationManager.createSuccessToastAction(importItemsMessages.mappingSuccess));\n return response.data;\n } catch (error) {\n dispatch(toastNotificationManager.createErrorToastAction(error.parsedBody));\n return rejectWithValue({error});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\nimport {itemImportApi} from 'api';\nimport {TGetItemBankVerificationApiResponse} from '../../../../models/library';\n\nexport const fetchItemBankPreviewTableRowsThunk: any = createAsyncThunk<TGetItemBankVerificationApiResponse, null>(\n `${prefix} fetchItemBankPreviewTableRows`,\n async (itemImportId: number, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await itemImportApi.getItemBankVerification(itemImportId);\n return parsedBody;\n } catch (error) {\n dispatch(toastNotificationManager.createErrorToastAction(error.parsedBody));\n return rejectWithValue({error});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\nimport {importItemsMessages} from '../../utils/constants/messages';\nimport {itemImportApi} from 'api';\nimport {IGetCriticalIssuesApiResponse} from 'models';\n\nexport const fetchImportCriticalIssuesThunk: any = createAsyncThunk<IGetCriticalIssuesApiResponse, null>(\n `${prefix} fetchImportCriticalIssues`,\n async (itemImportId: number, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await itemImportApi.getImportCriticalIssues(itemImportId);\n dispatch(toastNotificationManager.createSuccessToastAction(importItemsMessages.downloadIssuesSuccess));\n return parsedBody;\n } catch (error) {\n dispatch(toastNotificationManager.createErrorToastAction(error.parsedBody));\n return rejectWithValue({error});\n }\n }\n);\n","import {\n filtersAudiencesEntitiesCollectionSelector,\n filtersInstrumentTypesEntitiesCollectionSelector,\n} from 'filters-selections';\nimport {useSelector} from 'react-redux';\nimport {audienceGeneralId, feedbackTypeName, generalAudienceName, typeFeedbackId} from 'utils/instruments';\n\nexport function useGeneralInstrumentMeta() {\n const instrumentTypes = useSelector(filtersInstrumentTypesEntitiesCollectionSelector);\n const audiences = useSelector(filtersAudiencesEntitiesCollectionSelector);\n\n const feedbackType = instrumentTypes.filter((type) => type.name === feedbackTypeName)[0] ?? {\n id: typeFeedbackId,\n displayText: feedbackTypeName,\n };\n const audienceType = audiences.filter((type) => type.name === generalAudienceName)[0] ?? {\n id: audienceGeneralId,\n displayText: generalAudienceName,\n };\n\n return {feedbackType, audienceType};\n}\n","import {useSelector} from 'react-redux';\nimport {\n instrumentsPageSelector,\n paginationSelector,\n instrumentsAllFilterSelector,\n instrumentsAllSortOrderSelector,\n fetchInstrumentsAllPagedThunk,\n instrumentsAllSelector,\n savingSelector,\n builderPoolItemsLoadingSelector,\n deletingSelector,\n} from '../store';\nimport {useAppDispatch} from 'hooks';\nimport {useCallback} from 'react';\nimport {instrumentsActions as actions} from '../store/instruments.slice';\nimport {instrumentsFiltersEntitiesSelector} from 'filters-selections';\nimport {getIsAscSortOrder, getSortingOptions} from 'utils/common';\n\nexport function useInstruments() {\n const dispatch = useAppDispatch();\n const {loading} = useSelector(instrumentsPageSelector);\n const saving = useSelector(savingSelector);\n const deleting = useSelector(deletingSelector);\n\n const poolItemsLoading = useSelector(builderPoolItemsLoadingSelector);\n\n const filter = useSelector(instrumentsAllFilterSelector);\n const sortOrder = useSelector(instrumentsAllSortOrderSelector);\n\n const {currentPage, perPage, totalCount} = useSelector(paginationSelector);\n\n const setCurrentPage = useCallback((newPage: number) => dispatch(actions.setCurrentPage(newPage)), [dispatch]);\n const setPerPage = useCallback((perPage: number) => dispatch(actions.setPerPage(perPage)), [dispatch]);\n\n const filterEntities = useSelector(instrumentsFiltersEntitiesSelector);\n const instrumentsList = useSelector(instrumentsAllSelector);\n\n const fetchInstruments = useCallback(() => {\n const sortAsc = getIsAscSortOrder(sortOrder?.sort);\n const sortOptions = getSortingOptions(sortOrder?.order, sortAsc);\n\n return dispatch(\n fetchInstrumentsAllPagedThunk({\n filter,\n pagination: {\n pageNumber: currentPage - 1,\n pageSize: perPage,\n },\n sortOptions,\n })\n );\n }, [currentPage, dispatch, filter, perPage, sortOrder]);\n\n return {\n pageLoading: loading,\n pageSaving: saving,\n pageDeleting: deleting,\n filter,\n filterEntities,\n sortOrder,\n currentPage,\n perPage,\n totalCount,\n instrumentsList,\n fetchInstruments,\n setCurrentPage,\n setPerPage,\n poolItemsLoading,\n };\n}\n","import {useState} from 'react';\n\nexport function useInstrumentItem() {\n const [currentItem, setCurrentItem] = useState(null);\n\n return {\n currentItem,\n setCurrentItem,\n };\n}\n","import {useAppDispatch} from 'hooks';\nimport {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport {builderPossiblePretestEntitiesBaseCollectionSelector, fetchPossiblePretestItemsThunk} from '../store';\n\nexport function usePretestItem() {\n const dispatch = useAppDispatch();\n const possiblePretestItems = useSelector(builderPossiblePretestEntitiesBaseCollectionSelector);\n\n const getPossiblePretestItems = useCallback(\n (templateId) => {\n dispatch(fetchPossiblePretestItemsThunk(templateId));\n },\n [dispatch]\n );\n\n return {\n getPossiblePretestItems,\n possiblePretestItems,\n };\n}\n","import {Icon} from 'components-lib';\nimport React from 'react';\n\nexport function getInstrumentIcon(isGeneralInstrument: boolean, isMasterInstrument: boolean) {\n return isGeneralInstrument ? <Icon.GeneralInstrumentIcon /> : !!isMasterInstrument ? <Icon.MasterTemplateIcon /> : '';\n}\n","import {IMetaDataDto} from 'models';\nimport {POST_SESSION_NUM, PRE_SESSION_NUM} from 'utils';\nimport {ICloneInstrumentFormData} from '../components/CloneInstrumentForm';\nimport {ICreateInstrumentFormData} from '../components/CreateInstrumentForm';\n\nexport const mapInstrumentCreateModalMetadata = ({\n instrumentName,\n audience,\n phase,\n pillars,\n programs,\n type,\n subType,\n isGeneralInstrument,\n}: ICreateInstrumentFormData | ICloneInstrumentFormData) => {\n let newType = type;\n\n if (type === PRE_SESSION_NUM || type === POST_SESSION_NUM) {\n newType = subType;\n }\n\n let metaData: IMetaDataDto = {\n audience: audience,\n instrumentName: instrumentName,\n phase: phase,\n pillar: {id: pillars},\n programs: programs.map((program) => {\n return {id: program};\n }),\n type: newType,\n };\n\n if (isGeneralInstrument) {\n metaData = {\n audience: audience,\n instrumentName: instrumentName,\n type: type,\n };\n }\n\n return metaData;\n};\n","import {SortingOrderEnum} from 'enums';\nimport {IInstrumentsAllSortOrder} from 'models';\nimport {InstrumentDropdownNameEnum, InstrumentsOrderingEnum} from '../enums';\n\nexport const getSortInstrumentMenuItemsList = (\n itemClickHandler: () => void,\n handleItemClick: (handleItemSortObj: IInstrumentsAllSortOrder) => void\n) => {\n const onClick = (\n itemClickHandler: () => void,\n handleItemClick: (handleItemSortObj: IInstrumentsAllSortOrder) => void,\n handleItemSortObj: IInstrumentsAllSortOrder\n ) => {\n return () => {\n itemClickHandler();\n handleItemClick(handleItemSortObj);\n };\n };\n\n return [\n {\n name: InstrumentDropdownNameEnum.NAME_ASC,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: InstrumentsOrderingEnum.Name,\n sort: SortingOrderEnum.ASC,\n }),\n },\n {\n name: InstrumentDropdownNameEnum.NAME_DESC,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: InstrumentsOrderingEnum.Name,\n sort: SortingOrderEnum.DESC,\n }),\n },\n {\n name: InstrumentDropdownNameEnum.CREATED_NEWEST,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: InstrumentsOrderingEnum.Created,\n sort: SortingOrderEnum.DESC,\n }),\n },\n {\n name: InstrumentDropdownNameEnum.CREATED_OLDEST,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: InstrumentsOrderingEnum.Created,\n sort: SortingOrderEnum.ASC,\n }),\n },\n ];\n};\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {pamApi} from 'api';\nimport {IGetAllFilesApiResponse} from 'models/resources';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\nimport {IFetchFilesAllPagedThunkPayload} from 'models/resources/files';\n\nexport const fetchFilesAllPagedThunk: any = createAsyncThunk<IGetAllFilesApiResponse, null>(\n `${prefix} fetchFilesAllPaged`,\n async (payload: IFetchFilesAllPagedThunkPayload, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await pamApi.getAllFiles(payload);\n return parsedBody;\n } catch (error) {\n dispatch(toastNotificationManager.createErrorToastAction(error.parsedBody));\n return rejectWithValue({error});\n }\n }\n);\n","export const prefix = '[Files]';\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {pamApi} from 'api';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {getContentResponseHeaders} from '../../../edit/utils';\nimport {filesAllMessages} from '../../utils';\n\nimport {prefix} from './config';\n\nexport const downloadFileThunk: any = createAsyncThunk<any, string>(\n `${prefix} downloadFile`,\n async (id, {dispatch, rejectWithValue}) => {\n dispatch(toastNotificationManager.createSuccessToastAction(filesAllMessages.resourceDownloading));\n try {\n const response = await pamApi.downloadFileByResourceId(id);\n const {mimeType, fileName} = getContentResponseHeaders(response);\n\n return {\n blob: response.data,\n fileName,\n mimeType,\n };\n } catch (error) {\n dispatch(toastNotificationManager.createErrorToastAction(error.parsedBody));\n return rejectWithValue({error});\n }\n }\n);\n","import {EntitiesPerPageEnum, SortingOrderEnum} from 'enums';\nimport {IFilesAllFilter} from 'models/resources/files';\nimport {FilesAllFilterNamesEnum, FilesOrderingAllEnum} from '../enums';\nimport {IFilesAllStoreState} from './IFilesAllStoreState';\n\nconst filesAllpaginationDefault = {\n currentPage: 1,\n totalCount: 0,\n perPage: EntitiesPerPageEnum.FIFTY,\n};\n\nconst filesAllDefault = {\n result: [],\n entities: {\n items: {},\n },\n};\n\nconst filterDefault: IFilesAllFilter = {\n [FilesAllFilterNamesEnum.SEARCH_BY_QUERY]: '',\n [FilesAllFilterNamesEnum.FILE_TYPES]: [],\n [FilesAllFilterNamesEnum.PROGRAMS]: [],\n [FilesAllFilterNamesEnum.GRADE_LEVELS]: [],\n [FilesAllFilterNamesEnum.PILLARS]: [],\n [FilesAllFilterNamesEnum.COMPETENCIES]: [],\n [FilesAllFilterNamesEnum.KSAS]: [],\n [FilesAllFilterNamesEnum.LANGUAGES]: [],\n [FilesAllFilterNamesEnum.FILE_STATUSES]: [],\n [FilesAllFilterNamesEnum.IS_ACCESSIBLE_TO_STUDENTS]: null,\n [FilesAllFilterNamesEnum.PUBLISHED_BY]: null,\n};\n\nexport const filesAllInitialState: IFilesAllStoreState = {\n page: {\n loading: false,\n },\n pagination: filesAllpaginationDefault,\n sortOrder: {\n order: FilesOrderingAllEnum.Created,\n sort: SortingOrderEnum.DESC,\n },\n filter: filterDefault,\n file: null,\n fileDownload: {\n id: null,\n downloading: false,\n },\n files: filesAllDefault,\n};\n","import {schema as Schema} from 'normalizr';\n\nexport const filesAllSchemaEntity = new Schema.Entity('items', {}, {idAttribute: 'contentItemId'});\nexport const filesAllSchema = new Schema.Array(filesAllSchemaEntity);\n","import {IActionFulfilled, IGetAllFilesApiResponse} from 'models';\nimport {normalize} from 'normalizr';\nimport {isObject} from 'utils';\nimport {IFilesAllStoreState} from './IFilesAllStoreState';\nimport {downloadFileThunk, fetchFilesAllPagedThunk} from './thunks';\nimport {filesAllSchema} from './normalizationSchemas';\n\nexport const filesAllExtraReducer = {\n // fetchFilesAllPagedThunk\n [fetchFilesAllPagedThunk.fulfilled]: (\n state: IFilesAllStoreState,\n action: IActionFulfilled<null, IGetAllFilesApiResponse>\n ) => {\n if (isObject(action.payload)) {\n const {\n data,\n metadata: {totalCount, pageNumber, pageSize},\n } = action.payload;\n\n state.files = normalize(data, filesAllSchema);\n state.pagination.totalCount = totalCount;\n state.pagination.currentPage = pageNumber;\n state.pagination.perPage = pageSize;\n }\n\n state.page.loading = false;\n },\n [fetchFilesAllPagedThunk.pending]: (state: IFilesAllStoreState) => {\n state.page.loading = true;\n },\n [fetchFilesAllPagedThunk.rejected]: (state: IFilesAllStoreState) => {\n state.page.loading = false;\n },\n\n // downloadFileThunk\n [downloadFileThunk.fulfilled]: (state: IFilesAllStoreState) => {\n state.fileDownload.id = null;\n state.fileDownload.downloading = false;\n },\n [downloadFileThunk.pending]: (state: IFilesAllStoreState, action: IActionFulfilled<null, any>) => {\n state.fileDownload.id = action.meta.arg;\n state.fileDownload.downloading = true;\n },\n [downloadFileThunk.rejected]: (state: IFilesAllStoreState) => {\n state.fileDownload.id = null;\n state.fileDownload.downloading = false;\n },\n};\n","import {IActionFulfilled} from 'models/common';\nimport {IFilesAllFilter, IFilesAllSortOrder} from 'models/resources/files';\nimport {cloneDeep} from 'utils/functions';\nimport {filesAllInitialState} from './filesAll.initialState';\nimport {IFilesAllStoreState} from './IFilesAllStoreState';\n\nexport const filesAllReducer = {\n clear(state: IFilesAllStoreState) {\n state.files = {...filesAllInitialState.files};\n },\n\n clearFile(state: IFilesAllStoreState) {\n state.file = {...filesAllInitialState.file};\n },\n\n setCurrentPage: (state: IFilesAllStoreState, action: IActionFulfilled<null, number>) => {\n state.pagination.currentPage = action.payload;\n },\n\n setPerPage: (state: IFilesAllStoreState, action: IActionFulfilled<null, number>) => {\n state.pagination.perPage = action.payload;\n resetPagination(state);\n },\n\n setSortOrderFilesAll: (state: IFilesAllStoreState, action: IActionFulfilled<null, IFilesAllSortOrder>) => {\n state.sortOrder = action.payload;\n },\n\n setFilterFilesAll: (state: IFilesAllStoreState, action: IActionFulfilled<null, IFilesAllFilter>) => {\n state.filter = action.payload;\n resetPagination(state);\n },\n\n resetFilterFilesAll: (state: IFilesAllStoreState) => {\n state.filter = cloneDeep(filesAllInitialState.filter);\n resetPagination(state);\n },\n};\n\nconst resetPagination = (state: IFilesAllStoreState) => {\n state.pagination.currentPage = filesAllInitialState.pagination.currentPage;\n state.pagination.totalCount = filesAllInitialState.pagination.totalCount;\n};\n","import {createSlice} from '@reduxjs/toolkit';\nimport {filesAllExtraReducer} from './filesAllExtra.reducer';\nimport {filesAllReducer} from './filesAll.reducer';\nimport {filesAllInitialState} from './filesAll.initialState';\n\nexport const filesAllSlice = createSlice({\n name: 'filesAll',\n initialState: filesAllInitialState,\n reducers: filesAllReducer,\n extraReducers: filesAllExtraReducer,\n});\n\nexport const {actions: filesActions} = filesAllSlice;\n","import {createSelector} from '@reduxjs/toolkit';\nimport {TStateStore} from 'store';\nimport {values} from 'utils/functions';\n\nconst getFilesState = (state: TStateStore) => state.resources.files;\n\nexport const getFilesAllState = createSelector(getFilesState, (files) => files.all);\n\nexport const pageLoadingSelector = createSelector(getFilesAllState, (filesAll) => filesAll.page.loading);\nexport const paginationSelector = createSelector(getFilesAllState, (filesAll) => filesAll.pagination);\nexport const filesAllSortOrderSelector = createSelector(getFilesAllState, (filesAll) => filesAll.sortOrder);\n\nexport const filesAllFilterSelector = createSelector(getFilesAllState, (filesAll) => filesAll.filter);\n\nexport const filesAllSelector = createSelector(getFilesAllState, (filesAll) => filesAll.files);\nexport const filesAllIdsSelector = createSelector(getFilesAllState, (filesAll) => filesAll.files.result);\nexport const filesAllEntitiesSelector = createSelector(getFilesAllState, (filesAll) => filesAll.files.entities.items);\nexport const filesAllEntitiesCollectionSelector = createSelector(getFilesAllState, (filesAll) =>\n filesAll.files.entities.items ? values(filesAll.files.entities?.items) : []\n);\n\nexport const fileDetailsSelector = createSelector(getFilesAllState, (filesAll) => filesAll.file);\n\nexport const fileDownloadingSelector = createSelector(\n getFilesAllState,\n (filesAll) => filesAll.fileDownload.downloading\n);\n\nexport const downloadingIdSelector = createSelector(getFilesAllState, (filesAll) => filesAll.fileDownload.id);\n","import React from 'react';\nimport {FormContextProvider} from 'forms';\nimport {LearningPathViewCreateContainer} from './components';\nimport {useCreateLearningPath} from './hooks';\n\nexport const LearningPathViewCreate = () => {\n const {loading} = useCreateLearningPath();\n\n return (\n <FormContextProvider>\n <LearningPathViewCreateContainer loading={loading} />\n </FormContextProvider>\n );\n};\n","import {AddIntegrationLabelEnum} from 'admin/integrations/add-integration/enums';\n\nexport const getDefaultPreviewFirstColumnList = ({\n integrationTypeStringValue,\n areaName,\n schoolNameStringValue,\n certificateName,\n}) => {\n return [\n {\n label: AddIntegrationLabelEnum.IntegrationType,\n value: integrationTypeStringValue ?? '',\n options: {\n withForm: false,\n disabled: true,\n },\n },\n {\n label: AddIntegrationLabelEnum.Area,\n value: areaName ?? '',\n options: {\n withForm: false,\n disabled: true,\n },\n },\n {\n label: AddIntegrationLabelEnum.SchoolName,\n value: schoolNameStringValue ?? '',\n options: {\n withForm: false,\n disabled: true,\n },\n },\n {\n label: AddIntegrationLabelEnum.Certificate,\n value: certificateName ?? '',\n options: {\n withForm: false,\n disabled: true,\n },\n },\n ];\n};\n","import {AddIntegrationLabelEnum} from 'admin/integrations/add-integration/enums';\n\nexport const getDefaultPreviewSecondColumnList = ({\n integrationName,\n schoolDistrictStringValue,\n email,\n googleDriveSourceFolderLink,\n}) => {\n return [\n {\n label: AddIntegrationLabelEnum.IntegrationName,\n value: integrationName ?? '',\n options: {\n withForm: false,\n disabled: true,\n },\n },\n {\n label: AddIntegrationLabelEnum.SchoolDistrict,\n value: schoolDistrictStringValue ?? '',\n options: {\n withForm: false,\n disabled: true,\n },\n },\n {\n label: AddIntegrationLabelEnum.ServiceEmailAdress,\n value: email ?? '',\n options: {\n withForm: false,\n disabled: true,\n },\n },\n {\n label: AddIntegrationLabelEnum.GoogleDriveSourceFolderLink,\n value: googleDriveSourceFolderLink ?? '',\n options: {\n withForm: false,\n disabled: true,\n },\n },\n ];\n};\n","import {IntegrationTypeNum} from 'enums/integrations';\n\nexport const getIsGoogleClassRoom = (type: number) => type === IntegrationTypeNum.GOOGLE_CLASSROOM;\n","import {IntegrationTypeNum} from 'enums/integrations';\n\nexport const getIsMicrosoftTeams = (type: number) => type === IntegrationTypeNum.MICROSOFT_TEAMS;\n","import {IntegrationTypeNum} from 'enums/integrations';\n\nexport const getIsGoogleSitesSource = (type: number): boolean => type === IntegrationTypeNum.GOOGLE_SITES_SOURCE;\n","import {EXAMPLE_EMAIL} from '../constants';\n\nexport const getEditorPermissionCheckboxText = (serviceEmail: string) =>\n `I have given editor permissions to <${serviceEmail ?? EXAMPLE_EMAIL}> for this folder`;\n","import {IntegrationTypeNum} from 'enums/integrations';\n\nexport const getIsGoogleSitesDestination = (type: number): boolean =>\n type === IntegrationTypeNum.GOOGLE_SITES_DESTINATION;\n","import {replaceWithNullIfEmptyString} from 'admin/integrations';\nimport {IIntegrationDetailsFormBaseValues} from 'models/integrations';\n\nexport const mapUpdateMicrosoftTeamsPayload = ({\n clientId,\n clientSecret,\n authorityUrl,\n integrationName,\n}: IIntegrationDetailsFormBaseValues) => {\n const isSecretStartsWithAsteristic = clientSecret.startsWith('*');\n\n const configClientId = replaceWithNullIfEmptyString(clientId);\n const configAuthorityUrl = replaceWithNullIfEmptyString(authorityUrl);\n const configIntegrationName = replaceWithNullIfEmptyString(integrationName);\n\n return {\n name: configIntegrationName,\n clientId: configClientId,\n clientSecret: !isSecretStartsWithAsteristic ? clientSecret : null,\n authorityUrl: configAuthorityUrl,\n };\n};\n","import {replaceWithNullIfEmptyString} from 'admin';\nimport {IIntegrationDetailsFormBaseValues} from 'models/integrations';\n\nexport const mapUpdateGoogleClassroomPayload = ({\n serviceEmail,\n integrationName,\n certificate,\n masterClassroomEmailAccount,\n}: IIntegrationDetailsFormBaseValues) => {\n const data = new FormData();\n\n const configServiceEmail = replaceWithNullIfEmptyString(serviceEmail);\n const configIntegrationName = replaceWithNullIfEmptyString(integrationName);\n\n if (masterClassroomEmailAccount) {\n data.append('masterClassroomEmailAccount', masterClassroomEmailAccount);\n }\n\n data.append('certificate', certificate ?? null);\n data.append('name', configIntegrationName);\n data.append('serviceEmailAccount', configServiceEmail);\n\n return data;\n};\n","import {replaceWithNullIfEmptyString} from 'admin';\nimport {IIntegrationDetailsFormBaseValues} from 'models/integrations';\n\nexport const mapGoogleSitesSourcePayload = ({\n integrationName,\n certificate,\n serviceEmail,\n googleDriveSourceFolderLink,\n}: IIntegrationDetailsFormBaseValues) => {\n const data = new FormData();\n\n const configServiceEmail = replaceWithNullIfEmptyString(serviceEmail);\n const configDefaultFolderLink = replaceWithNullIfEmptyString(googleDriveSourceFolderLink);\n const configIntegrationName = replaceWithNullIfEmptyString(integrationName);\n\n data.append('certificate', certificate ?? null);\n data.append('name', configIntegrationName);\n data.append('serviceEmailAccount', configServiceEmail);\n data.append('defaultFolderLink', configDefaultFolderLink);\n\n return data;\n};\n","import {replaceWithNullIfEmptyString} from 'admin';\nimport {IIntegrationDetailsFormBaseValues} from 'models/integrations';\n\nexport const mapGoogleSitesDestinationPayload = ({\n integrationName,\n googleDriveDestinationFolderLink,\n}: IIntegrationDetailsFormBaseValues) => {\n const configIntegrationName = replaceWithNullIfEmptyString(integrationName);\n const configDefaultFolderLink = replaceWithNullIfEmptyString(googleDriveDestinationFolderLink);\n\n return {\n name: configIntegrationName,\n defaultFolderLink: configDefaultFolderLink,\n };\n};\n","export const replaceWithNullIfEmptyString = (fieldValue: string) => {\n if (typeof fieldValue === 'string' && !fieldValue.length) {\n return null;\n }\n\n return fieldValue;\n};\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {userApi} from 'api';\nimport {IFetchUserPayload} from 'models';\nimport {paths} from 'paths';\nimport {prefix} from './config';\n\nexport const fetchUserIdThunk: any = createAsyncThunk<number, IFetchUserPayload>(\n `${prefix} fetchUserId`,\n async (payload: IFetchUserPayload, {rejectWithValue}) => {\n try {\n const {parsedBody} = await userApi.getUserIdByUserEmail(payload.email);\n return parsedBody;\n } catch (err) {\n const {push} = payload;\n push(paths.error);\n return rejectWithValue(err);\n }\n }\n);\n","export const prefix = '[User]';\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {userApi} from 'api';\nimport {IFetchUserIdAndAreaIdApiResponse, IFetchUserPayload} from 'models';\nimport {paths} from 'paths';\nimport {prefix} from './config';\n\nexport const fetchUserIdAndAreaIdThunk: any = createAsyncThunk<IFetchUserIdAndAreaIdApiResponse, IFetchUserPayload>(\n `${prefix} fetchUserIdAndAreaId`,\n async (payload: IFetchUserPayload, {rejectWithValue}) => {\n try {\n const {parsedBody} = await userApi.getUserIdAndAreaByUserEmail(payload.email);\n return parsedBody;\n } catch (err) {\n const {push} = payload;\n push(paths.error);\n return rejectWithValue(err);\n }\n }\n);\n","import {createSelector} from '@reduxjs/toolkit';\nimport {TStateStore} from 'store';\n\nconst getUserStateLoading = (state: TStateStore) => state.user.loading;\nexport const userStateLoadingSelector = createSelector(getUserStateLoading, (loading) => loading);\n\nconst getUserStateError = (state: TStateStore) => state.user.error;\nexport const userStateErrorSelector = createSelector(getUserStateError, (error) => error);\n\nconst getUserId = (state: TStateStore) => state.user.profile.id;\nexport const userIdSelector = createSelector(getUserId, (id) => id);\n\nconst getUserArea = (state: TStateStore) => state.user.profile.areaId;\nexport const userAreaSelector = createSelector(getUserArea, (areaId) => areaId);\n\nconst getUserProfile = (state: TStateStore) => state.oidc?.user?.profile;\nexport const userProfileSelector = createSelector(getUserProfile, (user) => user);\n\nconst getUserProfileLoading = (state: TStateStore) => state.oidc?.isLoadingUser;\nexport const userProfileLoadingSelector = createSelector(getUserProfileLoading, (loading) => loading);\n","import {IActionFulfilled, IFetchUserIdAndAreaIdApiResponse, IFetchUserPayload} from 'models';\nimport {isObject} from 'utils';\nimport {IUserStoreState} from './IUserStoreState';\nimport {fetchUserIdAndAreaIdThunk, fetchUserIdThunk} from './thunks';\n\nexport const userExtraReducer = {\n //fetchUserIdThunk\n [fetchUserIdThunk.fulfilled]: (state: IUserStoreState, action: IActionFulfilled<IFetchUserPayload, number>) => {\n if (typeof action.payload === 'string') {\n state.loading = false;\n state.error = true;\n return;\n }\n state.profile.id = action.payload;\n state.loading = false;\n state.error = false;\n },\n [fetchUserIdThunk.pending]: (state: IUserStoreState) => {\n state.loading = true;\n },\n [fetchUserIdThunk.rejected]: (state: IUserStoreState) => {\n state.loading = false;\n state.error = true;\n },\n\n //fetchUserIdAndAreaIdThunk\n [fetchUserIdAndAreaIdThunk.fulfilled]: (\n state: IUserStoreState,\n action: IActionFulfilled<IFetchUserPayload, IFetchUserIdAndAreaIdApiResponse>\n ) => {\n if (typeof action.payload === 'string') {\n state.loading = false;\n state.error = true;\n return;\n }\n\n if (isObject(action.payload)) {\n const {userId, userArea} = action.payload;\n state.profile.id = userId;\n state.profile.areaId = userArea;\n state.loading = false;\n state.error = false;\n }\n },\n [fetchUserIdAndAreaIdThunk.pending]: (state: IUserStoreState) => {\n state.loading = true;\n },\n [fetchUserIdAndAreaIdThunk.rejected]: (state: IUserStoreState) => {\n state.loading = false;\n state.error = true;\n },\n};\n","import {createSlice} from '@reduxjs/toolkit';\nimport {userInitialState} from './user.initialState';\nimport {userReducer as reducers} from './user.reducer';\nimport {userExtraReducer} from './userExtra.reducer';\n\nexport const userSlice = createSlice({\n name: 'user',\n initialState: userInitialState,\n reducers,\n extraReducers: userExtraReducer,\n});\n\nexport const {reducer: userReducer} = userSlice;\n","import {IUserStoreState} from './IUserStoreState';\n\nexport const userInitialState: IUserStoreState = {\n profile: {\n id: 0,\n areaId: null,\n },\n loading: true,\n error: false,\n};\n","export const userReducer = {};\n","import {useAppDispatch, useNavigate} from 'hooks';\nimport {useEffect} from 'react';\nimport {useSelector} from 'react-redux';\nimport {fetchUserIdAndAreaIdThunk, userProfileSelector, userStateErrorSelector} from '../store';\n\nexport function useUser() {\n const {push} = useNavigate();\n const userProfile = useSelector(userProfileSelector);\n const userStateError = useSelector(userStateErrorSelector);\n const dispatch = useAppDispatch();\n const userEmail = userProfile?.email;\n const userId = userProfile?.id;\n useEffect(() => {\n const shouldFetch = userEmail && !userStateError && !userId;\n shouldFetch && dispatch(fetchUserIdAndAreaIdThunk({email: userEmail, push}));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [userEmail, userStateError]);\n}\n","import {useSelector} from 'react-redux';\nimport {userIdSelector, userStateErrorSelector, userStateLoadingSelector, userAreaSelector} from '../store';\n\nexport function useUserId() {\n const userId = useSelector(userIdSelector);\n const userLoading = useSelector(userStateLoadingSelector);\n const userError = useSelector(userStateErrorSelector);\n const userAreaId = useSelector(userAreaSelector);\n return {userId, userLoading, userError, userAreaId};\n}\n","import {UserManager} from 'oidc-client';\nimport {createUserManager} from 'redux-oidc';\nimport {redirectWindowLocation, UserStore} from 'utils';\nimport {config} from '../../config';\n\nclass AuthenticationManager {\n #userManager: UserManager;\n #userStore: UserStore;\n\n constructor() {\n this.#userManager = createUserManager(config.oidc);\n this.#userStore = new UserStore();\n }\n\n public getUserManager() {\n return this.#userManager;\n }\n\n public logout() {\n this.#userManager.clearStaleState();\n this.#userManager.removeUser();\n this.#userManager.revokeAccessToken();\n this.#userStore.removeAllItems();\n redirectWindowLocation(config.authentication.endSessionUrl);\n }\n}\n\nexport const authenticationManager = new AuthenticationManager();\n","export const integrationsMock: any[] = [\n {\n id: 1,\n integrationName: 'Integration Name 1',\n integrationType: 'MS Teams',\n area: 'Area Name1',\n schoolName: 'School Name1',\n status: 'Published',\n },\n {\n id: 2,\n integrationName: 'Integration Name 2',\n integrationType: 'Google Classroom',\n area: 'Area Name2',\n schoolName: 'School Name2',\n status: 'Tested',\n },\n {\n id: 3,\n integrationName: 'Integration Name 3',\n integrationType: 'MS Teams',\n area: 'Area Name3',\n schoolName: 'School Name3',\n status: 'Published',\n },\n {\n id: 4,\n integrationName: 'Integration Name 4',\n integrationType: 'Google Classroom',\n area: 'Area Name3',\n schoolName: 'School Name',\n status: 'Tested',\n },\n {\n id: 5,\n integrationName: 'Integration Name 5',\n integrationType: 'MS Teams',\n area: 'Area Name 5',\n schoolName: 'School Name',\n status: 'Tested',\n },\n {\n id: 6,\n integrationName: 'Integration Name 6',\n integrationType: 'Google Classroom',\n area: 'Area Name3',\n schoolName: 'School Name',\n status: 'Tested',\n },\n {\n id: 7,\n integrationName: 'Integration Name 7',\n integrationType: 'MS Teams',\n area: 'Area Name 5',\n schoolName: 'School Name',\n status: 'Tested',\n },\n {\n id: 8,\n integrationName: 'Integration Name 8',\n integrationType: 'Google Classroom',\n area: 'Area Name3',\n schoolName: 'School Name',\n status: 'Tested',\n },\n {\n id: 9,\n integrationName: 'Integration Name 9',\n integrationType: 'MS Teams',\n area: 'Area Name 5',\n schoolName: 'School Name',\n status: 'Tested',\n },\n];\n","import {IIntegratiosAllFilter} from 'models';\nimport {IGetIntegrationsQueryFilter} from '../../../../models/integrations/IGetIntegrationsQueryFilter';\nimport {IIntegrationsPagedFilterEnum} from '../../enums/IIntegrationsPagedFilter.enum';\n\nexport const getIntegrationQueryFilter = (\n filter: IIntegratiosAllFilter,\n separator: string\n): IGetIntegrationsQueryFilter => {\n const {areas, integrationType, integrationStatuses, name, schoolNames, schoolDistricts} = filter;\n const queryFilter = {};\n\n const joinList = (list: any, separator: string) => {\n return list.join(separator);\n };\n\n if (areas.length) {\n queryFilter[IIntegrationsPagedFilterEnum.AREA_IDS] = joinList(areas, separator);\n }\n\n if (integrationStatuses.length) {\n queryFilter[IIntegrationsPagedFilterEnum.INTEGRATION_STATUSES] = joinList(integrationStatuses, separator);\n }\n\n if (schoolNames.length) {\n queryFilter[IIntegrationsPagedFilterEnum.SCHOOL_IDS] = joinList(schoolNames, separator);\n }\n\n if (schoolDistricts.length) {\n queryFilter[IIntegrationsPagedFilterEnum.DISTRICT_IDS] = joinList(schoolDistricts, separator);\n }\n\n if (!!integrationType) {\n queryFilter[IIntegrationsPagedFilterEnum.INTEGRATION_TYPE] = integrationType;\n }\n\n if (!!name) {\n queryFilter[IIntegrationsPagedFilterEnum.SEARCH_BY_NAME] = name;\n }\n\n return queryFilter;\n};\n","export enum FilterBackendNamesEnum {\n SEARCH_BY_NAME = 'name',\n AUDIENCES = 'audiences',\n PHASES = 'phases',\n STATUSES = 'statuses',\n}\n","export enum ProgramsMasterInstrumentsOrderingEnum {\n Name = 'Name',\n Type = 'Type',\n}\n","export enum ProgramMasterInstrumentsDropdownNameEnum {\n Name_ASC = 'Name: A-Z',\n Name_DESC = 'Name: Z-A',\n Type_PRE_POST = 'Type: Pre-Post',\n Type_POST_PRE = 'Type: Post-Pre',\n}\n","export const itemsMessages = {\n createSuccess: 'The item was created successfully.',\n updateSuccess: 'The item was updated successfully.',\n createQuestionSuccess: 'Your question was created successfully.',\n publishAnswerStackSuccess: 'The answer stack was published successfully.',\n unPublishAnswerStackSuccess: 'The answer stack was un-published successfully.',\n publishAllSuccess: 'All items were published successfully.',\n promoteAnswerStackSuccess: 'The item was moved to the JA USA item bank successfully.',\n};\n","export * from './hooks';\nexport * from './components';\nexport * from './models';\n\nexport {DragAndDropProvider} from './DragAndDropProvider';\n","import * as Yup from 'yup';\nimport {LearningPathsAllFilterNamesEnum} from '../../enums';\n\nexport interface ILearningPathsFiltersFormValues {\n [LearningPathsAllFilterNamesEnum.SEARCH_BY_QUERY]: string;\n [LearningPathsAllFilterNamesEnum.PROGRAMS]: number[];\n [LearningPathsAllFilterNamesEnum.PROGRAM_YEARS]: number[];\n [LearningPathsAllFilterNamesEnum.GRADE_LEVELS]: number[];\n [LearningPathsAllFilterNamesEnum.PILLARS]: number[];\n [LearningPathsAllFilterNamesEnum.LANGUAGES]: number[];\n [LearningPathsAllFilterNamesEnum.LEARNING_PATH_STATUSES]: number[];\n}\n\nexport const learningPathsAllValidationSchema = Yup.object().shape({\n [LearningPathsAllFilterNamesEnum.SEARCH_BY_QUERY]: Yup.string(),\n [LearningPathsAllFilterNamesEnum.PROGRAMS]: Yup.array().of(Yup.number()),\n [LearningPathsAllFilterNamesEnum.PROGRAM_YEARS]: Yup.array().of(Yup.number()),\n [LearningPathsAllFilterNamesEnum.GRADE_LEVELS]: Yup.array().of(Yup.number()),\n [LearningPathsAllFilterNamesEnum.PILLARS]: Yup.array().of(Yup.number()),\n [LearningPathsAllFilterNamesEnum.LANGUAGES]: Yup.array().of(Yup.number()),\n [LearningPathsAllFilterNamesEnum.LEARNING_PATH_STATUSES]: Yup.array().of(Yup.number()),\n});\n","import {ILearningPathsAllFilter} from 'models/resources/learning-paths';\nimport {ILearningPathsFiltersFormValues} from '../schema';\nimport {LearningPathsAllFilterNamesEnum} from './../../enums';\n\nexport const mapLearningPathsAllFilters = (formValues: ILearningPathsFiltersFormValues): ILearningPathsAllFilter => ({\n [LearningPathsAllFilterNamesEnum.SEARCH_BY_QUERY]: formValues.query,\n [LearningPathsAllFilterNamesEnum.PROGRAMS]: formValues.programs,\n [LearningPathsAllFilterNamesEnum.PROGRAM_YEARS]: formValues.programYears,\n [LearningPathsAllFilterNamesEnum.GRADE_LEVELS]: formValues.gradeLevels,\n [LearningPathsAllFilterNamesEnum.PILLARS]: formValues.pillars,\n [LearningPathsAllFilterNamesEnum.LANGUAGES]: formValues.languages,\n [LearningPathsAllFilterNamesEnum.LEARNING_PATH_STATUSES]: formValues.learningPathStatuses,\n});\n","import {FiltersEnum} from 'filters-selections';\n\nexport const filesAllLearningPathsFilterList = [\n FiltersEnum.ProgramMulti,\n FiltersEnum.ProgramYearMulti,\n FiltersEnum.TagGradeLevels,\n FiltersEnum.Pillar,\n FiltersEnum.Languages,\n FiltersEnum.LearningPathStatusesCheckbox,\n];\n","import {FiltersEnum} from 'filters-selections';\nimport {LearningPathsAllFilterNamesEnum} from '../../enums';\n\nexport const learningPathsAllFilterToFilterNameMap = {\n [FiltersEnum.ProgramMulti]: LearningPathsAllFilterNamesEnum.PROGRAMS,\n [FiltersEnum.Pillar]: LearningPathsAllFilterNamesEnum.PILLARS,\n [FiltersEnum.ProgramYearMulti]: LearningPathsAllFilterNamesEnum.PROGRAM_YEARS,\n [FiltersEnum.TagGradeLevels]: LearningPathsAllFilterNamesEnum.GRADE_LEVELS,\n [FiltersEnum.Languages]: LearningPathsAllFilterNamesEnum.LANGUAGES,\n [FiltersEnum.LearningPathStatusesCheckbox]: LearningPathsAllFilterNamesEnum.LEARNING_PATH_STATUSES,\n};\n","export const learningPathsMessages = {\n warning:\n 'Are you sure you want to leave this page? You have unsaved changes. If you leave the page, these changes will be lost.',\n cloning: 'The selected learning path is being cloned. Please check back in a bit.',\n exporting: 'The export is being downloaded.',\n warningUnsavedChanges:\n 'Are you sure you want to leave this page? You have unsaved changes. If you leave the page, these changes will be lost!',\n errorDuplicating: 'There was an error while duplicating the learning path.',\n};\n","import {IColumn} from 'models/library/common';\n\nexport const learningPathsColumns: IColumn[] = [\n {id: 'name', label: 'Name'},\n {id: 'programYear', label: 'Program Year'},\n {id: 'status', label: 'Status'},\n {id: 'resourcesCount', label: 'Resources', align: 'right'},\n {id: 'actions', label: '', align: 'right'},\n];\n","import {IFetchLearningPathsAllQueryFilters, IGetLearningPathsPayload} from 'models/resources/learning-paths';\nimport {SortingOrderEnum} from 'enums';\n\nexport const mapFetchLearningPathsAllPayload = ({\n sortOrder,\n currentPage,\n perPage,\n filter,\n programYearsCollection,\n}: IFetchLearningPathsAllQueryFilters): IGetLearningPathsPayload => {\n let filterFilesAllPayload = {};\n\n if (filter.query) {\n filterFilesAllPayload = {...filterFilesAllPayload, query: filter.query};\n }\n\n if (filter.programs.length) {\n filterFilesAllPayload = {...filterFilesAllPayload, programs: filter.programs};\n }\n\n if (filter.programYears.length) {\n const filteredProgramYears = programYearsCollection.filter((programYear) =>\n filter.programYears.includes(programYear.id)\n );\n const programYearNames = filteredProgramYears.map((programYear) => programYear.displayText);\n\n filterFilesAllPayload = {...filterFilesAllPayload, programYears: programYearNames};\n }\n\n if (filter.gradeLevels.length) {\n filterFilesAllPayload = {...filterFilesAllPayload, gradeLevels: filter.gradeLevels};\n }\n\n if (filter.pillars.length) {\n filterFilesAllPayload = {...filterFilesAllPayload, pillars: filter.pillars};\n }\n\n if (filter.languages.length) {\n filterFilesAllPayload = {...filterFilesAllPayload, languages: filter.languages};\n }\n\n if (filter.learningPathStatuses.length) {\n filterFilesAllPayload = {...filterFilesAllPayload, statuses: filter.learningPathStatuses};\n }\n\n return {\n sortOrder: {\n sortBy: sortOrder.order,\n sortAsc: sortOrder.sort === SortingOrderEnum.ASC,\n },\n pagination: {\n pageNumber: currentPage,\n pageSize: perPage,\n },\n filter: filterFilesAllPayload,\n };\n};\n","import {SortingOrderEnum} from 'enums';\nimport {LearningPathsDropdownNameEnum, LearningPathsOrderingAllEnum} from '../enums';\nimport {ILearningPathsAllSortOrder} from 'models/resources';\n\nexport const getLearningPathsAllMenuItemsList = (\n itemClickHandler: () => void,\n handleItemClick: (handleItemSortObj: ILearningPathsAllSortOrder) => void\n) => {\n const onClick = (\n itemClickHandler: () => void,\n handleItemClick: (handleItemSortObj: ILearningPathsAllSortOrder) => void,\n handleItemSortObj: ILearningPathsAllSortOrder\n ) => {\n return () => {\n itemClickHandler();\n handleItemClick(handleItemSortObj);\n };\n };\n\n return [\n {\n name: LearningPathsDropdownNameEnum.NAME_ASC,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: LearningPathsOrderingAllEnum.Name,\n sort: SortingOrderEnum.ASC,\n }),\n },\n {\n name: LearningPathsDropdownNameEnum.NAME_DESC,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: LearningPathsOrderingAllEnum.Name,\n sort: SortingOrderEnum.DESC,\n }),\n },\n {\n name: LearningPathsDropdownNameEnum.CREATED_NEWEST,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: LearningPathsOrderingAllEnum.Created,\n sort: SortingOrderEnum.DESC,\n }),\n },\n {\n name: LearningPathsDropdownNameEnum.CREATED_OLDEST,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: LearningPathsOrderingAllEnum.Created,\n sort: SortingOrderEnum.ASC,\n }),\n },\n {\n name: LearningPathsDropdownNameEnum.PROGRAM_YEAR_NEWEST,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: LearningPathsOrderingAllEnum.ProgramYear,\n sort: SortingOrderEnum.DESC,\n }),\n },\n {\n name: LearningPathsDropdownNameEnum.PROGRAM_YEAR_OLDEST,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: LearningPathsOrderingAllEnum.ProgramYear,\n sort: SortingOrderEnum.ASC,\n }),\n },\n ];\n};\n","import {IColumn} from 'models';\n\nexport const getFilteredLPColumns = (columns: IColumn[]) => columns.filter((col) => col.id !== 'status');\n","export enum FilterNamesEnum {\n SEARCH_BY_NAME = 'searchByName',\n PROGRAMS = 'programsFilter',\n GRADE_LEVELS = 'gradeLevelsFilter',\n YEARS = 'programYearsFilter',\n ORDER_BY = 'orderBy',\n ORDER_ASC = 'orderAsc',\n}\n","export enum ProgramsAllOrderingEnum {\n Name = 'Name',\n ProgramYear = 'ProgramYear',\n}\n","export enum ProgramDropdownNameEnum {\n NAME_ASC = 'Name: A-Z',\n NAME_DESC = 'Name: Z-A',\n CREATED_NEWEST = 'Program Year: Newest First',\n CREATED_OLDEST = 'Program Year: Oldest First',\n}\n","import React, {memo} from 'react';\nimport {ReactComponent as PageNotFoundImage} from 'resources/images/errorPage/Illustration_Error_404.svg';\nimport {makeStyles} from '@material-ui/core';\nimport {Button, Container, Row, Text} from 'components-lib';\nimport {useNavigate} from 'hooks';\nimport {paths} from 'paths';\nimport {layoutConfig} from 'layout';\ninterface IErrorPageProps {\n returnHomeClickHandler?: () => void;\n}\n\nexport function ErrorPage({returnHomeClickHandler}: IErrorPageProps) {\n const {push} = useNavigate();\n const classes = useStyles();\n\n function returnToHome() {\n push(paths.root);\n }\n\n return (\n <Container classes={{root: classes.container}}>\n <Container>\n <Row>\n <PageNotFoundImage />\n </Row>\n <Row>\n <Text.Heading as=\"h1\">Page Not Found!</Text.Heading>\n </Row>\n <Row>\n <Text.Heading as=\"h3\">\n The page you are looking for might have been removed, had its name changed,\n <br /> or it's temporarily unavailable.\n </Text.Heading>\n </Row>\n <Row>\n <div className={classes.returnButton}>\n <Button.Secondary clickHandler={returnHomeClickHandler ? returnHomeClickHandler : returnToHome}>\n Return To Home Page\n </Button.Secondary>\n </div>\n </Row>\n </Container>\n </Container>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n height: `calc(100vh - ${layoutConfig.scrollableAreaWithoutSecondaryNavigationSubtrahend}px)`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n textAlign: 'center',\n },\n h1: {\n color: theme.palette.grey[700],\n marginTop: theme.spacing(4),\n marginBottom: theme.spacing(2),\n },\n h3: {\n color: theme.palette.grey[700],\n },\n returnButton: {\n marginTop: theme.spacing(4),\n },\n}));\n\nexport default memo(ErrorPage);\n","import {useNavigate} from 'hooks';\nimport {paths} from 'paths';\nimport React, {useEffect} from 'react';\nimport {useSelector} from 'react-redux';\nimport {userProfileLoadingSelector, userProfileSelector} from 'user';\nimport {isObject} from 'utils';\nimport {ErrorPage} from '../ErrorPage/ErrorPage';\n\nexport function AuthFailedPage() {\n const {push} = useNavigate();\n const userProfile = useSelector(userProfileSelector);\n const userStateLoading = useSelector(userProfileLoadingSelector);\n\n const returnHomeClickHandler = () => {\n // use window location instead of 'push', because of an issue with oidc library\n window.location.replace(paths.root);\n };\n\n useEffect(() => {\n if (!userStateLoading && isObject(userProfile)) {\n push(paths.root);\n }\n }, [userStateLoading, userProfile, push]);\n\n return <ErrorPage returnHomeClickHandler={returnHomeClickHandler} />;\n}\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_3239\",\n \"data-name\": \"Group 3239\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1357\",\n \"data-name\": \"Path 1357\",\n d: \"M424.335,597.058V626.9l-9.777-4.115-4.63-9.431v-6.173l3.773-6.516Z\",\n transform: \"translate(-369.542 -515.347)\",\n fill: \"#f2f6f9\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1358\",\n \"data-name\": \"Path 1358\",\n d: \"M619.805,597.058V626.9l-9.777-4.115-4.63-9.431v-6.173l3.773-6.516Z\",\n transform: \"translate(-380.461 -515.347)\",\n fill: \"#f2f6f9\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1359\",\n \"data-name\": \"Path 1359\",\n d: \"M797.446,516.429l28.3-5.916V657.385l-29.315-6.846c-2.947-2.6-25.414-18.074-35-38.134-6.163-12.894-5.536-48.941-3.322-56.622,1.7-5.9,9.681-7.7,11.317-13.375C772.215,532.711,796.178,520.828,797.446,516.429Z\",\n transform: \"translate(-388.903 -510.513)\",\n fill: \"#f5f8fa\"\n}), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_3236\",\n \"data-name\": \"Group 3236\",\n transform: \"translate(434.007 143.27)\"\n}, /*#__PURE__*/React.createElement(\"line\", {\n id: \"Line_1\",\n \"data-name\": \"Line 1\",\n y2: 190.626,\n transform: \"translate(2.833 0)\",\n fill: \"#cbd2d9\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle_2226\",\n \"data-name\": \"Rectangle 2226\",\n width: 5.665,\n height: 190.626,\n fill: \"#cbd2d9\"\n})), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_3237\",\n \"data-name\": \"Group 3237\",\n transform: \"translate(402.46 331.063)\"\n}, /*#__PURE__*/React.createElement(\"line\", {\n id: \"Line_2\",\n \"data-name\": \"Line 2\",\n x2: 63.095,\n transform: \"translate(2.832 2.833)\",\n fill: \"#cbd2d9\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1360\",\n \"data-name\": \"Path 1360\",\n d: \"M859.351,866.828H796.256a2.832,2.832,0,1,1,0-5.665h63.094a2.832,2.832,0,1,1,0,5.665Z\",\n transform: \"translate(-793.424 -861.163)\",\n fill: \"#cbd2d9\"\n})), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_3238\",\n \"data-name\": \"Group 3238\",\n transform: \"translate(365.78 2.133)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1361\",\n \"data-name\": \"Path 1361\",\n d: \"M891.406,609.019a4.935,4.935,0,0,1-1.455,3.513L854.333,648.15a4.937,4.937,0,0,1-3.513,1.456H800.447a4.937,4.937,0,0,1-3.513-1.456l-35.619-35.619a4.935,4.935,0,0,1-1.455-3.513V558.647a4.937,4.937,0,0,1,1.455-3.514l35.619-35.618a4.934,4.934,0,0,1,3.513-1.456H850.82a4.933,4.933,0,0,1,3.513,1.456l35.619,35.618a4.937,4.937,0,0,1,1.455,3.514v50.372Zm-33.335-93.242a10.189,10.189,0,0,0-7.252-3H800.447a10.189,10.189,0,0,0-7.252,3l-35.619,35.618a10.192,10.192,0,0,0-3,7.253v50.372a10.189,10.189,0,0,0,3,7.252L793.2,651.889a10.189,10.189,0,0,0,7.252,3H850.82a10.189,10.189,0,0,0,7.252-3l35.619-35.619a10.189,10.189,0,0,0,3-7.252V558.647a10.193,10.193,0,0,0-3-7.253l-35.619-35.618Z\",\n transform: \"translate(-754.573 -512.772)\",\n fill: \"#cbd2d9\"\n})), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1362\",\n \"data-name\": \"Path 1362\",\n d: \"M832.331,542.905A24.157,24.157,0,0,0,808.2,567.034v22.489l-3.335-3.794a2.856,2.856,0,1,0-4.291,3.77l8.337,9.487a2.854,2.854,0,0,0,2.145.971h.025a2.856,2.856,0,0,0,2.154-1.008l8.049-9.486a2.856,2.856,0,0,0-4.355-3.7l-3.016,3.554V567.034a18.417,18.417,0,0,1,36.834,0v52.873a2.856,2.856,0,0,0,5.712,0V567.034A24.157,24.157,0,0,0,832.331,542.905Z\",\n transform: \"translate(-391.323 -512.322)\",\n fill: \"#f36a10\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1363\",\n \"data-name\": \"Path 1363\",\n d: \"M437.888,655.723l-70.735,70.732,8.745,3.6,74.851-74.337Z\",\n transform: \"translate(-367.153 -518.624)\",\n fill: \"#f2f6f9\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1364\",\n \"data-name\": \"Path 1364\",\n d: \"M483.343,655.723l-70.735,70.732,8.745,3.6L496.2,655.723Z\",\n transform: \"translate(-369.692 -518.624)\",\n fill: \"#f2f6f9\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1365\",\n \"data-name\": \"Path 1365\",\n d: \"M528.84,655.723,458.1,726.454l8.745,3.6L541.7,655.723Z\",\n transform: \"translate(-372.233 -518.624)\",\n fill: \"#f2f6f9\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1366\",\n \"data-name\": \"Path 1366\",\n d: \"M620.924,655.723l-70.736,70.732,8.745,3.6,74.851-74.337Z\",\n transform: \"translate(-377.377 -518.624)\",\n fill: \"#f2f6f9\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1367\",\n \"data-name\": \"Path 1367\",\n d: \"M666.421,655.723l-70.735,70.732,9.821,2.537,67.323-66.86Z\",\n transform: \"translate(-379.918 -518.624)\",\n fill: \"#f2f6f9\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1368\",\n \"data-name\": \"Path 1368\",\n d: \"M574.882,655.723l-70.736,70.732,8.746,3.6,74.851-74.337Z\",\n transform: \"translate(-374.805 -518.624)\",\n fill: \"#f2f6f9\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1369\",\n \"data-name\": \"Path 1369\",\n d: \"M659.293,649.385H610.284V629.816a18.118,18.118,0,1,0-5.785-.111v19.68H424.838V629.761a18.321,18.321,0,1,0-5.785,0v19.624H370.045a2.89,2.89,0,0,0-2.892,2.893v73.589a2.89,2.89,0,0,0,2.892,2.892H395.4V846.026H375.695a2.892,2.892,0,1,0,0,5.785h45.194a2.892,2.892,0,1,0,0-5.785h-19.7v-87.74H628.153v87.74h-19.7a2.892,2.892,0,1,0,0,5.785h45.194a2.892,2.892,0,1,0,0-5.785H633.938V728.758h25.355a2.89,2.89,0,0,0,2.893-2.892V652.277A2.891,2.891,0,0,0,659.293,649.385ZM595.4,611.735a12.536,12.536,0,1,1,12.536,12.533A12.549,12.549,0,0,1,595.4,611.735Zm-185.994,0a12.536,12.536,0,1,1,12.536,12.533A12.549,12.549,0,0,1,409.41,611.735ZM587.038,722.974l67.8-67.8H656.4v33.571l-34.23,34.233Zm-43.314,0,67.8-67.8h35.133l-67.8,67.8Zm-43.308,0,67.8-67.8h35.128l-67.8,67.8Zm-43.314,0,67.8-67.8h35.133l-67.8,67.8Zm-43.313,0,67.8-67.8h35.134l-67.8,67.8ZM372.938,677.2,394.97,655.17H430.1l-57.165,57.163ZM386.79,655.17l-13.852,13.852V655.17Zm-13.852,65.343,65.346-65.343h35.128l-67.8,67.8h-32.67ZM628.153,752.5H401.185V728.758H628.153Zm2.2-29.526L656.4,696.922v26.052Z\",\n transform: \"translate(-367.153 -515.144)\",\n fill: \"#cbd2d9\"\n}), /*#__PURE__*/React.createElement(\"circle\", {\n id: \"Ellipse_56\",\n \"data-name\": \"Ellipse 56\",\n cx: 6.169,\n cy: 6.169,\n r: 6.169,\n transform: \"translate(48.801 90.03)\",\n fill: \"#f36a10\"\n}), /*#__PURE__*/React.createElement(\"circle\", {\n id: \"Ellipse_57\",\n \"data-name\": \"Ellipse 57\",\n cx: 6.169,\n cy: 6.169,\n r: 6.169,\n transform: \"translate(234.619 90.03)\",\n fill: \"#f36a10\"\n}));\n\nvar SvgPermissionsRequired = function SvgPermissionsRequired(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Illustration_-_Permissions_needed\",\n \"data-name\": \"Illustration - Permissions needed\",\n width: 507.9,\n height: 336.728,\n viewBox: \"0 0 507.9 336.728\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgPermissionsRequired, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/permissionsRequired.834bf1fc.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\nimport {ReactComponent as PermissionsRequired} from 'resources/images/permissionsRequired.svg';\nimport {makeStyles} from '@material-ui/core';\nimport {Column, Container, Text} from 'components-lib';\nimport {layoutConfig} from 'layout';\n\nexport function NoPermissionsPage() {\n const classes = useStyles();\n return (\n <Container classes={{root: classes.container}}>\n <Column className={classes.column}>\n <PermissionsRequired className={classes.withMargin} />\n <Text.Heading as=\"h1\">Permissions Needed</Text.Heading>\n <Text.Paragraph>The page requires access level that you do not have!</Text.Paragraph>\n </Column>\n </Container>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n height: `calc(100vh - ${layoutConfig.scrollableAreaWithoutSecondaryNavigationSubtrahend}px)`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n column: {\n alignItems: 'center',\n maxWidth: 510,\n },\n withMargin: {\n marginBottom: theme.spacing(5),\n },\n}));\n","import React from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Icon, Container, Row, Text, Column} from 'components-lib';\nimport {layoutConfig} from 'layout';\n\nexport const FileNotFoundPage = () => {\n const classes = useStyles();\n\n return (\n <Container classes={{root: classes.container}}>\n <Column>\n <Row>\n <Icon.ErrorNotFound />\n </Row>\n <Row>\n <Text.Heading as=\"h1\">File not found!</Text.Heading>\n </Row>\n <Row>\n <Text.Heading as=\"h3\">\n The file you are looking for might have been removed, had its name changed,\n <br /> or it's temporarily unavailable.\n </Text.Heading>\n </Row>\n </Column>\n </Container>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n height: `calc(100vh - ${layoutConfig.scrollableAreaWithoutSecondaryNavigationSubtrahend}px)`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n textAlign: 'center',\n },\n h1: {\n color: theme.palette.grey[700],\n marginTop: theme.spacing(4),\n marginBottom: theme.spacing(2),\n },\n h3: {\n color: theme.palette.grey[700],\n },\n returnButton: {\n marginTop: theme.spacing(4),\n },\n}));\n","import React, {useEffect} from 'react';\n\nimport {makeStyles} from '@material-ui/core';\nimport {Container, Loading, Row} from 'components-lib';\nimport {redirectWindowLocation} from 'utils';\nimport {config} from 'config';\nimport {useParams} from 'react-router';\ninterface IFileDownloadParamType {\n id: string;\n}\n\nexport const FileDownloadPage = () => {\n const classes = useStyles();\n const {id} = useParams<IFileDownloadParamType>();\n const redirectDownloadUrl = `${config.jaEeApi.baseUrlDownloadDigitalResource}/${id}`;\n\n useEffect(() => {\n redirectWindowLocation(redirectDownloadUrl);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <Container classes={{root: classes.container}}>\n <Container>\n <Row>\n <Loading fullHeight />\n </Row>\n </Container>\n </Container>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n height: '100vh',\n textAlign: 'center',\n display: 'flex',\n alignItems: 'center',\n alignContent: 'center',\n },\n h1: {\n color: theme.palette.grey[700],\n marginTop: theme.spacing(4),\n marginBottom: theme.spacing(2),\n },\n}));\n","import {IOption} from 'models';\nimport {\n MAX_ALLOWED_SIZE,\n ARCHIVE_FORMATS,\n DIGITAL,\n NOT_ALLOWED_VIDEO_FORMATS,\n ALLOWED_AUDIO_FORMATS,\n RESOURCE_NUMBER_TYPE,\n ALLOWED_VIDEO_FORMATS,\n ALLOWED_DOC_FORMATS,\n ALLOWED_IMG_FORMATS,\n ALLOWED_PAPER_ASSESSMENTS_FORMAT,\n} from 'utils';\nimport {IUploadFile} from '../models';\nimport {UploadFileStatusEnum} from '../enums';\nimport {AxiosError} from 'axios';\nimport {FormNameEnum} from 'filters-selections';\n\nexport const validateFormat = (fileFormat: string, resourceType: any) => {\n const isArchiveFormat = ARCHIVE_FORMATS.includes(fileFormat);\n const isZipFormat = ALLOWED_PAPER_ASSESSMENTS_FORMAT.includes(fileFormat);\n const isDigitalResourceType = resourceType.toLowerCase().includes(DIGITAL);\n const isAllowedVideoFormat = !NOT_ALLOWED_VIDEO_FORMATS.includes(fileFormat);\n const isDigitalResource = isDigitalResourceType && isAllowedVideoFormat && !isArchiveFormat;\n const isPaperAssessment = isZipFormat && !isDigitalResourceType;\n const canBeUploaded = isDigitalResource || isPaperAssessment;\n\n return canBeUploaded ? canBeUploaded : false;\n};\n\nexport const convertBytesToMegaBytes = (bytes: number, digits: number) => {\n const calculation = Number((bytes / (1024 * 1024)).toFixed(digits));\n return calculation;\n};\n\nexport const validateFileSize = (bytes: number, digits: number) => {\n const fileSizeInMB = convertBytesToMegaBytes(bytes, digits);\n\n return fileSizeInMB < MAX_ALLOWED_SIZE ? true : false;\n};\n\nexport const convertToSelectOptionData = (data: any, value: string, label: string) => {\n interface IOption {\n label: string;\n value: number;\n }\n\n return data.map((p: IOption) => {\n return {\n value: p[value],\n label: p[label],\n };\n });\n};\n\nexport const extractDataBeforeSeparator = (raw: string, separator: string) => raw.substr(0, raw.lastIndexOf(separator));\n\nexport const convertToDropDownData = (data) =>\n data?.map((e: {id: number; name: string}) => {\n return {\n value: e.id,\n label: e.name,\n };\n });\n\nexport const convertStringListToDropDownData = (data: string[]) =>\n data?.map((e: string) => {\n return {\n value: e,\n label: e,\n };\n });\n\nexport const filterDataById = (data: IOption[], id: number, filterId: string) =>\n data.filter((el) => el[filterId] === id);\n\nexport const filterDropdownData = (data: IOption[], id: number, filterId: string) => {\n const filteredData = filterDataById(data, id, filterId);\n return convertToSelectOptionData(filteredData, 'id', 'name');\n};\n\nexport const updateFileUploadPercent = (files: IUploadFile[], updatedFileUpload: IUploadFile) => {\n const existingFile = files.find((f: IUploadFile) => f.id === updatedFileUpload?.id);\n if (!existingFile) {\n return [...files, updatedFileUpload];\n }\n\n if (existingFile.percentage <= 100) {\n const updatedFiles = files.map((f) =>\n f.id === existingFile.id ? {...existingFile, percentage: updatedFileUpload.percentage} : f\n );\n return updatedFiles;\n }\n};\n\nexport const updateUploadFileStatus = (files: IUploadFile[], {name, status}) => {\n const existingFile = files.length\n ? files.find((f: IUploadFile) => f?.name?.toLowerCase() === name?.toLowerCase())\n : null;\n\n if (existingFile) {\n const updatedFiles = files.map((f) => (f.name === name ? {...existingFile, status} : f));\n return updatedFiles;\n }\n return;\n};\n\nexport const getUploadingFileNumber = (files, status: string) => {\n return files ? files.reduce((acc, f) => acc + (f.status === status), 0) : 0;\n};\n\nexport const markCancelFileUpload = (files: IUploadFile[], id: string) => {\n const existingFile = files.find((f: IUploadFile) => f?.id === id);\n\n if (existingFile) {\n const updatedFiles = files.map((f) =>\n f.id === id ? {...existingFile, isCanceledUpload: true, status: UploadFileStatusEnum.Failed} : f\n );\n return updatedFiles;\n }\n return;\n};\n\nexport const addFileToUpload = (files: IUploadFile[], fileToUpload: IUploadFile) => {\n const existingFile = files.length ? files.find((f: IUploadFile) => f?.id === fileToUpload?.id) : null;\n if (!existingFile) {\n return [...files, fileToUpload];\n }\n\n return;\n};\n\nexport const getUploadErrorMessage = (err: AxiosError, filename: string, errorMessage: string) => {\n if (err.response.data) {\n return err.response.data.error;\n } else {\n return `File: ${filename} ${errorMessage}`;\n }\n};\n\nexport const mapInitialUploadFormValues = () => {\n return {\n [FormNameEnum.uploadResourceType]: null,\n [FormNameEnum.fileUpload]: null,\n [FormNameEnum.programs]: [],\n [FormNameEnum.sessions]: [],\n [FormNameEnum.pillars]: [],\n [FormNameEnum.competencies]: [],\n [FormNameEnum.gradeLevels]: [],\n [FormNameEnum.skillsAndBehaviors]: [],\n [FormNameEnum.languages]: [],\n [FormNameEnum.drmExpirationDate]: null,\n [FormNameEnum.keyTerms]: [],\n [FormNameEnum.learningObjectives]: [],\n [FormNameEnum.concepts]: [],\n };\n};\n\nexport const mapDigitalResourceType = (fileFormat: string) => {\n const isDocument = ALLOWED_DOC_FORMATS.includes(fileFormat.toLowerCase());\n const isVideo = ALLOWED_VIDEO_FORMATS.includes(fileFormat.toLowerCase());\n const isAudio = ALLOWED_AUDIO_FORMATS.includes(fileFormat.toLowerCase());\n const isImage = ALLOWED_IMG_FORMATS.includes(fileFormat.toLowerCase());\n const isPaperAssessment = ALLOWED_PAPER_ASSESSMENTS_FORMAT.includes(fileFormat.toLowerCase());\n\n if (isVideo) {\n return RESOURCE_NUMBER_TYPE.video;\n }\n\n if (isAudio) {\n return RESOURCE_NUMBER_TYPE.audio;\n }\n\n if (isDocument) {\n return RESOURCE_NUMBER_TYPE.document;\n }\n\n if (isImage) {\n return RESOURCE_NUMBER_TYPE.image;\n }\n\n if (isPaperAssessment) {\n return RESOURCE_NUMBER_TYPE.paperAssessment;\n }\n};\n\nexport const extractFileTypeFromString = (raw: string) => raw?.substr(raw.lastIndexOf('.'), raw.length - 1);\nexport const calculateLengthText = (text: string) => (text.length > 10 ? true : false);\n","export const uploadMessages = {\n uploadSuccess: 'was successfully uploaded',\n uploadError: 'uploading failed.',\n abortRequest: 'uploading was aborted.',\n warning:\n 'Are you sure you want to leave this page? You have unsaved changes. If you leave the page, these changes will be lost.“',\n};\n","export const GOOGLE_DRIVE_URL = 'https://drive.google.com/';\n\nexport const fixedInputHeight = 90;\nexport const jaUSAId = 999999;\n","import {IntegrationType, IntegrationTypeNum} from 'enums/integrations';\n\nexport const integrationTypeMap = {\n [IntegrationTypeNum.GOOGLE_CLASSROOM]: IntegrationType.GOOGLE_CLASSROOM,\n [IntegrationTypeNum.MICROSOFT_TEAMS]: IntegrationType.MICROSOFT_TEAMS,\n [IntegrationTypeNum.GOOGLE_SITES_SOURCE]: IntegrationType.GOOGLE_SITES_SOURCE,\n [IntegrationTypeNum.GOOGLE_SITES_DESTINATION]: IntegrationType.GOOGLE_SITES_DESTINATION,\n};\n","export const addIntegrationMessages = {\n createIntegrationSuccess: 'Integration was created successfully.',\n createIntegrationStarting: 'Integration creation starting...',\n unknownIntegrationError: 'Something went wrong.',\n};\n","export const addIntegrationValidationWarnings = {\n hasSelectedAreaOrSchoolNameOrSchoolDistrictField: 'You should select an Area, a School Name, or a School District!',\n urlWarning: (name: string) => `${name} must be a valid url!`,\n certificateSupportedFormatWarning: 'Only .p12 format is supported',\n validationGoogleDriveLinkWarning: 'You should enter a valid google drive link!',\n validationServiceEmailWarning: 'Service Email Address must be a valid email!',\n validationmMsterClassroomEmailAccountlWarning: 'User to impersonate must be a valid email!',\n};\n","import {IntegrationCertificateEnum} from 'admin/integrations/enums';\n\nexport const SUPPORTED_CERTIFICATE_FORMATS = [IntegrationCertificateEnum.P12];\n","export const integrationDetailsMessages = {\n testIntegrationSuccess: 'Integration was tested successfully.',\n testIntegrationStarting: 'The integration will be tested. The process may take a few minutes.',\n updateIntegrationSuccess: 'Integration was updated successfully.',\n unknownIntegrationError: 'Something went wrong.',\n};\n","import React, {FC} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Text} from 'components-lib';\n\ninterface INoResourcesProps {\n text?: string;\n}\n\nexport const NoResources: FC<INoResourcesProps> = ({text}) => {\n const classes = useStyles();\n return <Text.Paragraph className={classes.text}>{text ? text : 'No Resources'}</Text.Paragraph>;\n};\n\nconst useStyles = makeStyles((theme) => ({\n text: {\n marginLeft: theme.spacing(2),\n marginBottom: theme.spacing(2),\n },\n}));\n","import React, {FC} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Container, LinkWithTooltip, Icon, Row, Wrapper, Tooltip} from 'components-lib';\nimport {USAAndSuperAdminRoles, usePermissions} from 'permissions';\n\ninterface ILearningPathListItemProps {\n name: string;\n linkTooltip: string;\n acessibleToStudentsTooltip: string;\n disableLink: boolean;\n disableDelete: boolean;\n isDeletedOrExpired?: boolean;\n isAvailableToStudents: boolean;\n isResource?: boolean;\n isEditMode?: boolean;\n linkClickHandler: () => void;\n openModalClickHandler: () => void;\n}\n\nexport const LearningPathListItem: FC<ILearningPathListItemProps> = ({\n name,\n linkTooltip,\n acessibleToStudentsTooltip,\n disableLink,\n disableDelete,\n isAvailableToStudents,\n linkClickHandler,\n openModalClickHandler,\n isDeletedOrExpired = false,\n isEditMode = false,\n isResource,\n}) => {\n const {hasPermission} = usePermissions();\n const canDrag = hasPermission(USAAndSuperAdminRoles);\n const isDraggable = isResource && isEditMode && canDrag;\n const classes = useStyles({isDraggable});\n\n return (\n <Container disableGutters classes={{root: classes.root}}>\n <Row justify=\"space-between\" align=\"center\">\n <Wrapper className={classes.row}>\n <Wrapper className={classes.icon}>\n <Icon.DragHandleIcon color=\"inherit\" />\n </Wrapper>\n {name && (\n <LinkWithTooltip\n clickHandler={linkClickHandler}\n tooltipTitle={linkTooltip ? linkTooltip : name}\n withNewTab\n maxWidth={250}\n isDeletedOrExpired={isDeletedOrExpired}\n disabled={disableLink || !!linkTooltip}\n >\n {name}\n </LinkWithTooltip>\n )}\n </Wrapper>\n <Wrapper className={classes.row}>\n <Tooltip title={acessibleToStudentsTooltip}>\n <Icon.Button disabled>\n {isAvailableToStudents ? <Icon.VisibilityOnIcon /> : <Icon.VisibilityOffIcon />}\n </Icon.Button>\n </Tooltip>\n <Icon.Button disabled={disableDelete} clickHandler={openModalClickHandler}>\n <Icon.DeleteIcon color={disableDelete ? 'disabled' : 'error'} />\n </Icon.Button>\n </Wrapper>\n </Row>\n </Container>\n );\n};\n\ninterface IRootStyles {\n isDraggable: boolean;\n}\n\nexport const useStyles = makeStyles((theme) => ({\n root: ({isDraggable}: IRootStyles) => ({\n paddingLeft: theme.spacing(3),\n background: theme.palette.background.paper,\n borderRadius: theme.spacing(1),\n border: `1px solid ${theme.palette.grey[400]}`,\n cursor: isDraggable ? 'move' : 'default',\n }),\n row: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-start',\n },\n icon: {\n display: 'flex',\n alignItems: 'center',\n marginRight: theme.spacing(2),\n },\n}));\n","import * as Yup from 'yup';\nimport {FormNameEnum} from 'enums/form';\nimport {IBaseResourceItem} from 'models/resources';\n\nexport interface IAddSessionResourcesFormValues {\n [FormNameEnum.resources]: string[];\n [FormNameEnum.selectedResourcesIds]: string[];\n [FormNameEnum.selectedResources]: IBaseResourceItem[];\n}\n\nexport const addSessionResourcesFormValidationSchema = Yup.object().shape({\n [FormNameEnum.resources]: Yup.array().of(Yup.string()),\n [FormNameEnum.selectedResourcesIds]: Yup.array().of(Yup.string()),\n [FormNameEnum.selectedResources]: Yup.mixed(),\n});\n","import React, {FC, MutableRefObject, useCallback, useMemo} from 'react';\nimport {batch} from 'react-redux';\nimport {FormikHelpers, FormikProps, FormikValues} from 'formik';\nimport {IWithChildren} from 'models/common';\nimport {Form} from 'forms';\nimport {FormNameEnum} from 'enums/form';\nimport {mapAddResourceItemsPayload} from 'admin/resources/learning-paths/views/create/utils';\nimport {IAddSessionResourcesFormValues, addSessionResourcesFormValidationSchema} from './config';\nimport {\n useLearningPathBuilderItemsEntities,\n useSessionBuilderStoreActions,\n} from 'admin/resources/learning-paths/views/session-builder';\n\ninterface IAddResourcesFormProps extends IWithChildren {\n id: string;\n formikFormRef: MutableRefObject<FormikProps<FormikValues>>;\n closeDrawerClickHandler?: () => void;\n resetIsDirty: () => void;\n}\n\nexport const AddSessionResourcesForm: FC<IAddResourcesFormProps> = ({\n id,\n formikFormRef,\n children,\n closeDrawerClickHandler,\n resetIsDirty,\n}) => {\n const {addSessionBuilderResourceItems} = useSessionBuilderStoreActions();\n const {resourcesConcatenatedBaseEntitiesCollection} = useLearningPathBuilderItemsEntities();\n\n const submitHandler = useCallback(\n ({selectedResourcesIds}, {resetForm}: FormikHelpers<any>) => {\n const payload = mapAddResourceItemsPayload(id, selectedResourcesIds, resourcesConcatenatedBaseEntitiesCollection);\n\n return batch(() => {\n addSessionBuilderResourceItems(payload);\n closeDrawerClickHandler();\n resetForm();\n resetIsDirty();\n });\n },\n [\n id,\n addSessionBuilderResourceItems,\n closeDrawerClickHandler,\n resourcesConcatenatedBaseEntitiesCollection,\n resetIsDirty,\n ]\n );\n\n const initialValues = useMemo(\n () => ({\n [FormNameEnum.resources]: [],\n [FormNameEnum.selectedResourcesIds]: [],\n [FormNameEnum.selectedResources]: [],\n }),\n []\n );\n\n return (\n <Form.Form<IAddSessionResourcesFormValues>\n formikRef={formikFormRef}\n initialValues={initialValues}\n validationSchema={addSessionResourcesFormValidationSchema}\n submitHandler={submitHandler}\n >\n {children}\n </Form.Form>\n );\n};\n","import React, {Fragment, useCallback, useContext} from 'react';\nimport {batch} from 'react-redux';\nimport {SessionListDragItem} from '..';\nimport {USAAndSuperAdminRoles, usePermissions} from 'permissions';\nimport {useLearningPathBuilderItemsEntities} from 'admin/resources/learning-paths/views/session-builder';\nimport {\n useSessionBuilderMode,\n useSessionBuilderStoreActions,\n} from 'admin/resources/learning-paths/views/session-builder';\nimport {SessionBuilderEditModeEnum} from 'enums/learning-paths';\nimport {FormContext} from 'forms/formik/FormContextProvider';\n\nexport const SessionList = () => {\n const {builderSessionItemsResult, builderSessionItemsEntities} = useLearningPathBuilderItemsEntities();\n const {getSessionBuilderMode, setSessionBuilderMode} = useSessionBuilderMode();\n const {hasPermission} = usePermissions();\n const {collapseSessionBuilderItem, moveSessionItem} = useSessionBuilderStoreActions();\n const {setIsDirty} = useContext(FormContext);\n\n const hasAdminPermission = hasPermission(USAAndSuperAdminRoles);\n\n const moveSession = useCallback(\n (movedItemIdx: number, newPosition: number) => {\n return batch(() => {\n moveSessionItem(movedItemIdx, newPosition);\n setIsDirty(true);\n });\n },\n [moveSessionItem, setIsDirty]\n );\n\n return (\n <Fragment>\n {builderSessionItemsResult.length\n ? builderSessionItemsResult?.map((id: string, index: number) => {\n const item = builderSessionItemsEntities[id];\n const sessionBuilderMode = getSessionBuilderMode(item);\n const isNew = !item?.title?.length;\n const shouldExpand = item?.isAccordionExpanded;\n const sessionMode = isNew ? SessionBuilderEditModeEnum.Edit : sessionBuilderMode;\n\n return (\n <SessionListDragItem\n key={id}\n index={index}\n item={item}\n disabled={!hasAdminPermission}\n moveSession={moveSession}\n sessionMode={sessionMode}\n shouldExpand={shouldExpand}\n setSessionBuilderMode={setSessionBuilderMode}\n collapseSessionBuilderItem={collapseSessionBuilderItem}\n />\n );\n })\n : 'No Sessions'}\n </Fragment>\n );\n};\n","import React, {FC, Fragment, useCallback, useEffect, useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {useFormikContext} from 'formik';\nimport {Accordion, Column, Row, Wrapper, Text, Icon} from 'components-lib';\nimport {AdditionalResourcesList, SessionDetails, SessionDetailsDivider, SessionsListItemActionButtons} from '..';\nimport {SessionBuilderEditModeEnum} from 'enums/learning-paths';\nimport {ILearningPathSessionsFormBaseValues} from 'admin/resources/learning-paths/views/session-builder/utils';\nimport {ILearningPathSessionItem} from 'models/resources';\nimport {USAAndSuperAdminRoles, usePermissions} from 'permissions';\nimport {FormNameEnum} from 'enums/form';\n\ninterface ILearningPathSessionsListItemProps {\n item: ILearningPathSessionItem;\n headingActionLeft?: string;\n initialIsExpanded?: boolean;\n disabled?: boolean;\n withBorder?: boolean;\n sessionBuilderMode?: SessionBuilderEditModeEnum;\n collapseAccordionCallback: () => void;\n setSessionBuilderMode: (mode: SessionBuilderEditModeEnum) => void;\n}\n\nexport const LearningPathSessionsListItem: FC<ILearningPathSessionsListItemProps> = ({\n item,\n headingActionLeft = '',\n initialIsExpanded = false,\n disabled = false,\n withBorder = true,\n sessionBuilderMode,\n setSessionBuilderMode,\n}) => {\n const classes = useStyles();\n const {hasPermission} = usePermissions();\n const canDrag = hasPermission(USAAndSuperAdminRoles);\n\n const {\n values: {sessionName},\n dirty,\n setFieldTouched,\n } = useFormikContext<ILearningPathSessionsFormBaseValues>();\n\n const hasItemAssets = item.resources.length || item.instruments.length || !!item.title;\n\n const markFieldAsTouched = useCallback(() => {\n if (item.resources.length) {\n setFieldTouched(FormNameEnum.resources, true, true);\n }\n\n if (item.instruments.length) {\n setFieldTouched(FormNameEnum.instruments, true, true);\n }\n\n if (item.title) {\n setFieldTouched(FormNameEnum.sessionName, true, true);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [item.resources, item.instruments, item.title]);\n\n useEffect(() => {\n if (hasItemAssets && !dirty) {\n markFieldAsTouched();\n }\n }, [hasItemAssets, dirty, markFieldAsTouched]);\n\n const isEditMode = sessionBuilderMode === SessionBuilderEditModeEnum.Edit;\n\n const header = useMemo(\n () => (\n <Fragment>\n <Wrapper className={classes.icon}>\n <Icon.DragHandleIcon color=\"inherit\" />\n </Wrapper>\n <Text.Heading as=\"h4\" classes={{root: classes.heading}}>\n {sessionName ?? item?.title}\n </Text.Heading>\n </Fragment>\n ),\n [classes.icon, classes.heading, item, sessionName]\n );\n\n return (\n <Accordion\n heading={header}\n headingActionLeft={headingActionLeft}\n initialIsExpanded={initialIsExpanded}\n withBorder={withBorder}\n withGrayBackground\n draggable={canDrag}\n >\n <Row justify=\"flex-start\" align=\"flex-start\" classes={{root: classes.row}}>\n <SessionDetailsDivider />\n <Row justify=\"flex-start\" align=\"flex-start\">\n <Column sm={4} md={4} lg={3} xl={3}>\n <SessionDetails item={item} isEditMode={isEditMode} />\n </Column>\n <Column sm={4} md={4} lg={3} xl={3}>\n <AdditionalResourcesList\n item={item}\n isEditMode={isEditMode}\n title=\"Instruments\"\n isResourceList={false}\n openDrawerButtonText=\"Add Instruments\"\n />\n </Column>\n <Column sm={4} md={4} lg={3} xl={3}>\n <AdditionalResourcesList\n item={item}\n isEditMode={isEditMode}\n title=\"Resources\"\n isResourceList={true}\n openDrawerButtonText=\"Add Resources\"\n />\n </Column>\n </Row>\n <Row justify=\"flex-end\" align=\"center\">\n <SessionsListItemActionButtons\n id={item?.id}\n isEditMode={isEditMode}\n setSessionBuilderModeCallback={setSessionBuilderMode}\n disabled={disabled}\n />\n </Row>\n </Row>\n </Accordion>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n row: {\n width: '100%',\n },\n icon: {\n display: 'flex',\n alignItems: 'center',\n marginRight: theme.spacing(2),\n },\n heading: {\n color: theme.palette.text.primary,\n fontWeight: 700,\n },\n emptyContainer: {\n height: 50,\n },\n test: {\n border: '1px solid grey',\n width: 400,\n },\n}));\n","import React, {FC, Fragment, useCallback} from 'react';\nimport {batch} from 'react-redux';\nimport {ModalDelete} from 'admin/components';\nimport {\n getAccessibleToStudentsTooltip,\n getLinkTooltip,\n useCreateLearningPathResources,\n} from 'admin/resources/learning-paths/views/create';\nimport {useModal} from 'hooks';\nimport {USAAndSuperAdminRoles, usePermissions} from 'permissions';\nimport {LearningPathListItem} from 'admin/resources/learning-paths/components';\nimport {IBaseResourceItem} from 'models/resources';\ninterface ISessionResourceListItemProps {\n itemId?: string;\n resourceItem: IBaseResourceItem;\n canDelete?: boolean;\n canHide?: boolean;\n isEditMode?: boolean;\n isResource?: boolean;\n}\n\nexport const SessionResourceListItem: FC<ISessionResourceListItemProps> = ({\n itemId,\n resourceItem,\n canDelete = false,\n isEditMode = true,\n isResource,\n}) => {\n const {contentItemId, title, isAccessibleToStudents, isDeleted, isExpired} = resourceItem;\n const {hasPermission} = usePermissions();\n const {hasUrl, redirectToEditResourcePage, deleteSessionBuilderResourceItem} = useCreateLearningPathResources({\n id: contentItemId,\n });\n const {isOpen: isDeleteSessionModalOpen, setIsOpen: setIsDeleteSessionModalOpen} = useModal();\n\n const toolTip = getAccessibleToStudentsTooltip(isAccessibleToStudents);\n const linkTooltip = getLinkTooltip(isDeleted, isExpired);\n const hasAdminPermission = hasPermission(USAAndSuperAdminRoles);\n const shouldDisableLink = !hasAdminPermission;\n\n const openModalClickHandler = useCallback(() => setIsDeleteSessionModalOpen(true), [setIsDeleteSessionModalOpen]);\n\n const deleteClickHandler = useCallback(\n () =>\n batch(() => {\n itemId && deleteSessionBuilderResourceItem(contentItemId, itemId);\n setIsDeleteSessionModalOpen(false);\n }),\n [itemId, contentItemId, deleteSessionBuilderResourceItem, setIsDeleteSessionModalOpen]\n );\n\n const linkClickHandler = useCallback(() => redirectToEditResourcePage(), [redirectToEditResourcePage]);\n\n return (\n <Fragment>\n <LearningPathListItem\n isEditMode={isEditMode}\n isResource={isResource}\n name={title}\n isDeletedOrExpired={isDeleted || isExpired}\n linkTooltip={linkTooltip}\n acessibleToStudentsTooltip={toolTip}\n disableLink={!hasUrl || shouldDisableLink}\n disableDelete={!canDelete || !isEditMode}\n isAvailableToStudents={isAccessibleToStudents}\n linkClickHandler={linkClickHandler}\n openModalClickHandler={openModalClickHandler}\n />\n <ModalDelete\n loading={false}\n title=\"Delete Resource\"\n text=\"Would you like to take the resource out of the session?\"\n cancelButtonText=\"No\"\n confirmButtonText=\"Yes\"\n isOpen={isDeleteSessionModalOpen}\n setIsOpen={setIsDeleteSessionModalOpen}\n confirmHandler={deleteClickHandler}\n />\n </Fragment>\n );\n};\n","import React from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Wrapper} from 'components-lib';\n\nexport const SessionDetailsDivider = () => {\n const classes = useStyles();\n\n return <Wrapper className={classes.divider} />;\n};\n\nexport const useStyles = makeStyles((theme) => ({\n divider: {\n borderBottom: `1px solid ${theme.palette.grey[200]}`,\n },\n}));\n","import * as Yup from 'yup';\nimport {FormNameEnum} from 'enums/form';\nimport {IBaseResourceItem, ILearningPathInstrumentItem} from 'models/resources';\n\nexport interface ILearningPathSessionsFormBaseValues {\n [FormNameEnum.sessionName]: string;\n [FormNameEnum.sessionDescription]: string;\n [FormNameEnum.resources]: IBaseResourceItem[];\n [FormNameEnum.instruments]: ILearningPathInstrumentItem[];\n}\n\nexport const learningPathSessionsFormBaseValidationSchema = Yup.object().shape({\n [FormNameEnum.sessionName]: Yup.string()\n .nullable()\n .required('You should include a session name to create the session'),\n [FormNameEnum.sessionDescription]: Yup.string(),\n [FormNameEnum.resources]: Yup.array().of(Yup.mixed()),\n [FormNameEnum.instruments]: Yup.array().of(Yup.mixed()),\n});\n","import React, {FC, useMemo} from 'react';\nimport {Form} from 'forms';\nimport {FormNameEnum} from 'enums/form';\nimport {IWithChildren} from 'models/common';\nimport {\n ILearningPathSessionsFormBaseValues,\n learningPathSessionsFormBaseValidationSchema,\n} from 'admin/resources/learning-paths/views/session-builder/utils';\nimport {ILearningPathSessionItem} from 'models/resources/learning-paths';\n\ninterface ILearningPathSessionsFormProps extends IWithChildren {\n item: ILearningPathSessionItem;\n}\n\nexport const LearningPathSessionsForm: FC<ILearningPathSessionsFormProps> = ({children, item}) => {\n const initialValues = useMemo(\n () => ({\n [FormNameEnum.sessionName]: item?.title ? item?.title : '',\n [FormNameEnum.sessionDescription]: item?.description ? item?.description : '',\n [FormNameEnum.resources]: item?.resources ?? [],\n [FormNameEnum.instruments]: item?.instruments ?? [],\n }),\n\n // Track only changes for title and description\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [item.title, item.description]\n );\n\n return (\n <Form.Form<ILearningPathSessionsFormBaseValues>\n initialValues={initialValues}\n validationSchema={learningPathSessionsFormBaseValidationSchema}\n submitHandler={() => null}\n validateOnMount={true}\n >\n {children}\n </Form.Form>\n );\n};\n","import React, {FC, Fragment, useCallback, useContext} from 'react';\nimport {batch} from 'react-redux';\nimport {useFormikContext} from 'formik';\nimport {FormContext} from 'forms/formik/FormContextProvider';\nimport {Button} from 'components-lib';\nimport {ModalDelete} from 'admin/components';\nimport {useModal} from 'hooks';\nimport {ILearningPathSessionsFormBaseValues} from 'admin/resources/learning-paths/views/session-builder/utils';\nimport {\n useLearningPathBuilderItemsEntities,\n useSessionBuilderStoreActions,\n} from 'admin/resources/learning-paths/views/session-builder';\nimport {SessionBuilderEditModeEnum} from 'enums/learning-paths';\n\ninterface ISessionsListItemActionButtonsProps {\n id: string;\n isEditMode?: boolean;\n disabled?: boolean;\n setSessionBuilderModeCallback: (mode: SessionBuilderEditModeEnum) => void;\n}\n\nexport const SessionsListItemActionButtons: FC<ISessionsListItemActionButtonsProps> = ({\n id,\n isEditMode,\n disabled,\n setSessionBuilderModeCallback,\n}) => {\n const {builderSessionItemsEntities} = useLearningPathBuilderItemsEntities();\n const {\n deleteSessionBuilderItem,\n updateSessionBuilderItem,\n checkIfEmptySessionExist,\n } = useSessionBuilderStoreActions();\n const {isOpen: isModalDeleteSession, setIsOpen: setIsDeleteSessionModal} = useModal();\n const {values, resetForm, isValid} = useFormikContext<ILearningPathSessionsFormBaseValues>();\n const {setIsDirty} = useContext(FormContext);\n\n const item = builderSessionItemsEntities[id];\n\n const hasSessionName = values.sessionName.length;\n const shouldDisableSaveButton = !hasSessionName;\n const shouldRenderEditButton = !disabled;\n\n const openDeleteSessionModal = useCallback(() => setIsDeleteSessionModal(true), [setIsDeleteSessionModal]);\n\n const deleteSessionItem = useCallback(\n () =>\n batch(() => {\n deleteSessionBuilderItem(item);\n checkIfEmptySessionExist();\n resetForm();\n setIsDirty(true);\n }),\n [item, deleteSessionBuilderItem, checkIfEmptySessionExist, resetForm, setIsDirty]\n );\n\n const deleteClickHandler = useCallback(() => openDeleteSessionModal(), [openDeleteSessionModal]);\n\n const saveClickHandler = useCallback(\n () =>\n batch(() => {\n updateSessionBuilderItem(item, values);\n checkIfEmptySessionExist();\n resetForm();\n setIsDirty(true);\n }),\n [updateSessionBuilderItem, checkIfEmptySessionExist, item, values, resetForm, setIsDirty]\n );\n\n const setEditModeClickHandler = useCallback(() => setSessionBuilderModeCallback(SessionBuilderEditModeEnum.Edit), [\n setSessionBuilderModeCallback,\n ]);\n\n return (\n <Fragment>\n {isEditMode && (\n <Button.Secondary size=\"small\" clickHandler={deleteClickHandler} disabled={!isEditMode}>\n Delete\n </Button.Secondary>\n )}\n {isEditMode && (\n <Button.Primary\n size=\"small\"\n clickHandler={saveClickHandler}\n disabled={!isEditMode || !isValid || shouldDisableSaveButton}\n >\n Save\n </Button.Primary>\n )}\n {!isEditMode && shouldRenderEditButton && (\n <Button.Primary size=\"small\" clickHandler={setEditModeClickHandler}>\n Edit\n </Button.Primary>\n )}\n <ModalDelete\n loading={false}\n title=\"Delete Session\"\n text=\"Are you sure you want to delete this session? The information will be lost.\"\n cancelButtonText=\"No\"\n confirmButtonText=\"Yes\"\n isOpen={isModalDeleteSession}\n setIsOpen={setIsDeleteSessionModal}\n confirmHandler={deleteSessionItem}\n />\n </Fragment>\n );\n};\n","import React, {FC, Fragment, useCallback} from 'react';\nimport {SessionResourceDragListItem} from '..';\nimport {ILearningPathSessionItem} from 'models/resources';\nimport {NoResources} from 'admin/resources/learning-paths/components';\nimport {useSessionBuilderStoreActions} from 'admin/resources/learning-paths/views/session-builder';\n\ninterface ISessionResourceListEditProps {\n item: ILearningPathSessionItem;\n isEditMode: boolean;\n isResource: boolean;\n}\n\nexport const SessionResourceListEdit: FC<ISessionResourceListEditProps> = ({item, isEditMode, isResource = false}) => {\n const {moveSessionResourceItem} = useSessionBuilderStoreActions();\n\n const moveResource = useCallback(\n (movedItemIdx: number, newPosition: number) => moveSessionResourceItem(movedItemIdx, newPosition, item.id),\n [moveSessionResourceItem, item.id]\n );\n\n return (\n <Fragment>\n {item?.resources?.length ? (\n item?.resources?.map((resourceItem, idx: number) => (\n <SessionResourceDragListItem\n key={idx}\n index={idx}\n itemId={item?.id}\n resourceItem={resourceItem}\n canDelete={isEditMode && true}\n isEditMode={isEditMode}\n isResource={isResource}\n moveResource={moveResource}\n />\n ))\n ) : (\n <NoResources />\n )}\n </Fragment>\n );\n};\n","import React, {Dispatch, FC, SetStateAction, useCallback, useContext, useMemo} from 'react';\nimport {Drawer} from 'components-lib';\nimport {AddResourcesActionButtons, AddSessionAdditionalContent, AddSessionResourcesForm} from '..';\nimport {FormContext} from 'forms/formik/FormContextProvider';\n\ninterface IAddSessionResourcesProps {\n id: string;\n isOpen: boolean;\n setIsOpen: Dispatch<SetStateAction<boolean>>;\n}\n\nexport const AddSessionResources: FC<IAddSessionResourcesProps> = ({id, isOpen, setIsOpen}) => {\n const {formikFormRef, setIsDirty, isDirty, submitFormikForm, resetIsDirty} = useContext(FormContext);\n\n const submitFormClickHandler = useCallback(() => formikFormRef?.current && submitFormikForm(), [\n formikFormRef,\n submitFormikForm,\n ]);\n\n const closeDrawerClickHandler = useCallback(() => setIsOpen(false), [setIsOpen]);\n\n const addResourcesActionButtons = useMemo(\n () => (\n <AddResourcesActionButtons\n closeClickHandler={closeDrawerClickHandler}\n submitClickHandler={submitFormClickHandler}\n disableSubmit={!isDirty}\n />\n ),\n [closeDrawerClickHandler, submitFormClickHandler, isDirty]\n );\n\n return (\n <Drawer\n title=\"Add Resources\"\n confirmButtonTitle=\"Add Resources\"\n isOpen={isOpen}\n setIsOpen={setIsOpen}\n actionButtons={addResourcesActionButtons}\n >\n <AddSessionResourcesForm\n id={id}\n formikFormRef={formikFormRef}\n resetIsDirty={resetIsDirty}\n closeDrawerClickHandler={closeDrawerClickHandler}\n >\n <AddSessionAdditionalContent isDirty={isDirty} setIsDirtyCallback={setIsDirty} />\n </AddSessionResourcesForm>\n </Drawer>\n );\n};\n","import React, {FC, useCallback} from 'react';\nimport {batch} from 'react-redux';\nimport {makeStyles} from '@material-ui/core';\nimport {Button, Row} from 'components-lib';\nimport {useFormikContext} from 'formik';\nimport {IAddSessionResourcesFormValues} from '../AddSessionResourcesForm/config';\nimport {IAddSessionInstrumentsFormValues} from '../AddSessionInstrumentsForm/config';\n\ninterface IAddResourcesActionButtonsProps {\n confirmButtonText?: string;\n closeClickHandler: () => void;\n submitClickHandler: () => void;\n isResource?: boolean;\n disableSubmit?: boolean;\n}\n\nexport const AddResourcesActionButtons: FC<IAddResourcesActionButtonsProps> = ({\n confirmButtonText = 'Add Resources',\n closeClickHandler,\n submitClickHandler,\n isResource = true,\n disableSubmit,\n}) => {\n const classes = useStyles();\n const addResourcesFormContext = useFormikContext<IAddSessionResourcesFormValues>();\n const addInstrumentsFormContext = useFormikContext<IAddSessionInstrumentsFormValues>();\n\n const closeDrawerClickHandler = useCallback(() => {\n batch(() => {\n if (isResource) {\n addResourcesFormContext.resetForm();\n } else {\n addInstrumentsFormContext.resetForm();\n }\n closeClickHandler();\n });\n }, [isResource, addResourcesFormContext, addInstrumentsFormContext, closeClickHandler]);\n\n return (\n <Row justify=\"flex-end\" classes={{root: classes.actionButtons}}>\n <Button.Secondary disabled={false} size=\"large\" clickHandler={closeDrawerClickHandler}>\n Cancel\n </Button.Secondary>\n <Button.Primary size=\"large\" clickHandler={submitClickHandler} disabled={disableSubmit}>\n {confirmButtonText}\n </Button.Primary>\n </Row>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n actionButtons: {\n position: 'absolute',\n bottom: 0,\n padding: theme.spacing(2, 3),\n borderTop: `1px solid ${theme.palette.grey[200]}`,\n },\n}));\n","import React, {Dispatch, FC, SetStateAction, useEffect} from 'react';\nimport {Container} from 'components-lib';\nimport {Subtitle} from 'admin/components';\nimport {makeStyles} from '@material-ui/core';\nimport {AddResourcesDrawerList, AddInstrumentsDrawerList, LinkExistingResources} from '..';\nimport {useFormikContext} from 'formik';\nimport {IAddSessionInstrumentsFormValues} from '../AddSessionInstrumentsForm/config';\n\ninterface IAddSessionAdditionalContentProps {\n isResource?: boolean;\n isDirty: boolean;\n setIsDirtyCallback: Dispatch<SetStateAction<boolean>>;\n}\n\nexport const AddSessionAdditionalContent: FC<IAddSessionAdditionalContentProps> = ({\n isDirty,\n isResource = true,\n setIsDirtyCallback,\n}) => {\n const classes = useStyles();\n const title = `Link existing ${isResource ? 'file' : 'instrument'}`;\n\n const {dirty, isValid} = useFormikContext<IAddSessionInstrumentsFormValues>();\n\n useEffect(() => {\n if (dirty && isValid && !isDirty) {\n setIsDirtyCallback(true);\n } else if (!isValid) {\n setIsDirtyCallback(false);\n }\n }, [dirty, isDirty, isValid, setIsDirtyCallback]);\n\n return (\n <Container disableGutters classes={{root: classes.content}}>\n <Subtitle withColor={false} as=\"h4\" color=\"primary\" title={title} />\n <LinkExistingResources isResource={isResource} />\n {isResource && <AddResourcesDrawerList />}\n {!isResource && <AddInstrumentsDrawerList />}\n </Container>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n content: {\n height: '78vh',\n flex: '1 1 auto',\n padding: theme.spacing(0, 3),\n overflow: 'auto',\n\n [theme.breakpoints.down('md')]: {\n height: '70vh',\n },\n\n [theme.breakpoints.down('sm')]: {\n height: '60vh',\n },\n },\n}));\n","import React, {FC, useMemo} from 'react';\nimport {SelectionEnum, SelectionListItems} from 'filters-selections';\nimport {Container} from 'components-lib';\nimport {makeStyles} from '@material-ui/core';\n\ninterface ILinkExistingResourcesProps {\n isResource?: boolean;\n}\n\nexport const LinkExistingResources: FC<ILinkExistingResourcesProps> = ({isResource = true}) => {\n const classes = useStyles();\n let list = useMemo(() => [SelectionEnum.Resources], []);\n\n if (!isResource) {\n list = [SelectionEnum.Instruments];\n }\n\n return (\n <Container disableGutters classes={{root: classes.selectionList}}>\n <SelectionListItems list={list} />\n </Container>\n );\n};\n\nconst useStyles = makeStyles(({spacing}) => ({\n selectionList: {\n paddingLeft: spacing(2),\n },\n}));\n","import React, {useEffect} from 'react';\nimport List from '@material-ui/core/List';\nimport {useFormikContext} from 'formik';\nimport {Column, Row} from 'components-lib';\nimport {AddResourcesDrawerListItem} from '..';\nimport {uniq} from 'utils';\nimport {FormNameEnum} from 'enums/form';\nimport {IAddSessionResourcesFormValues} from '../AddSessionResourcesForm/config';\nimport {getResourcesCollectionByIds} from 'admin/resources/learning-paths/views/create';\nimport {useLearningPathBuilderItemsEntities} from 'admin/resources/learning-paths/views/session-builder';\n\nexport const AddResourcesDrawerList = () => {\n const {\n values: {resources, selectedResources, selectedResourcesIds},\n\n setFieldValue,\n } = useFormikContext<IAddSessionResourcesFormValues>();\n const {resourcesConcatenatedBaseEntitiesCollection} = useLearningPathBuilderItemsEntities();\n\n useEffect(() => {\n if (resources.length > 0) {\n const uniqueCollectionIds = uniq([...resources, ...selectedResourcesIds]) as string[];\n\n setFieldValue(FormNameEnum.selectedResourcesIds, uniqueCollectionIds);\n setFieldValue(\n FormNameEnum.selectedResources,\n getResourcesCollectionByIds(uniqueCollectionIds, resourcesConcatenatedBaseEntitiesCollection)\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [resources, resourcesConcatenatedBaseEntitiesCollection]);\n\n return (\n <Row justify=\"center\">\n <Column>\n <List>\n {selectedResources?.length > 0 &&\n selectedResources.map((item) => (\n <AddResourcesDrawerListItem key={item?.contentItemId} id={item?.contentItemId} name={item?.title} />\n ))}\n </List>\n </Column>\n </Row>\n );\n};\n","import React, {FC, useCallback} from 'react';\nimport {filterResourceCollectionById} from 'admin/resources/learning-paths/views/create';\nimport {useFormikContext} from 'formik';\nimport {IAddSessionResourcesFormValues} from '../AddSessionResourcesForm/config';\nimport {FormNameEnum} from 'enums/form';\nimport {IBaseResourceItem} from 'models/resources';\nimport {AddBaseDrawerListItem} from '..';\ninterface IAddResourcesDrawerListItemProps {\n id: string;\n name: string;\n}\n\nexport const AddResourcesDrawerListItem: FC<IAddResourcesDrawerListItemProps> = ({id, name}) => {\n const {\n values: {selectedResources},\n setFieldValue,\n } = useFormikContext<IAddSessionResourcesFormValues>();\n\n const deleteDrawerItemClickHandler = useCallback(() => {\n const filteredResources = filterResourceCollectionById(selectedResources, id);\n const filteredResouceIds = filteredResources.map((resource: IBaseResourceItem) => resource.contentItemId);\n\n setFieldValue(FormNameEnum.selectedResources, filteredResources);\n setFieldValue(FormNameEnum.selectedResourcesIds, filteredResouceIds);\n }, [id, selectedResources, setFieldValue]);\n\n return <AddBaseDrawerListItem id={id} name={name} deleteDrawerItemClickHandler={deleteDrawerItemClickHandler} />;\n};\n","import React, {Dispatch, FC, SetStateAction, useCallback, useContext, useMemo} from 'react';\nimport {AddResourcesActionButtons, AddSessionAdditionalContent, AddSessionInstrumentsForm} from '..';\nimport {Drawer} from 'components-lib';\nimport {FormContext} from 'forms/formik/FormContextProvider';\n\ninterface IAddSessionInstrumentsProps {\n id: string;\n isOpen: boolean;\n setIsOpen: Dispatch<SetStateAction<boolean>>;\n}\n\nexport const AddSessionInstruments: FC<IAddSessionInstrumentsProps> = ({id, isOpen, setIsOpen}) => {\n const {formikFormRef, setIsDirty, isDirty, submitFormikForm, resetIsDirty} = useContext(FormContext);\n\n const submitFormClickHandler = useCallback(() => formikFormRef?.current && submitFormikForm(), [\n formikFormRef,\n submitFormikForm,\n ]);\n\n const closeDrawerClickHandler = useCallback(() => setIsOpen(false), [setIsOpen]);\n\n const addResourcesActionButtons = useMemo(\n () => (\n <AddResourcesActionButtons\n isResource={false}\n confirmButtonText=\"Add Instruments\"\n closeClickHandler={closeDrawerClickHandler}\n submitClickHandler={submitFormClickHandler}\n disableSubmit={!isDirty}\n />\n ),\n [closeDrawerClickHandler, submitFormClickHandler, isDirty]\n );\n\n return (\n <Drawer\n title=\"Add Instruments\"\n confirmButtonTitle=\"Add Instruments\"\n isOpen={isOpen}\n setIsOpen={setIsOpen}\n actionButtons={addResourcesActionButtons}\n >\n <AddSessionInstrumentsForm\n id={id}\n formikFormRef={formikFormRef}\n resetIsDirty={resetIsDirty}\n closeDrawerClickHandler={closeDrawerClickHandler}\n >\n <AddSessionAdditionalContent isResource={false} isDirty={isDirty} setIsDirtyCallback={setIsDirty} />\n </AddSessionInstrumentsForm>\n </Drawer>\n );\n};\n","import React, {useMemo} from 'react';\nimport {SelectionEnum, SelectionListItems} from 'filters-selections';\nimport {Container} from 'components-lib';\nimport {makeStyles} from '@material-ui/core';\n\nexport const LinkExistingInstruments = () => {\n const classes = useStyles();\n const list = useMemo(() => [SelectionEnum.Instruments], []);\n\n return (\n <Container disableGutters classes={{root: classes.selectionList}}>\n <SelectionListItems list={list} />\n </Container>\n );\n};\n\nconst useStyles = makeStyles(({spacing}) => ({\n selectionList: {\n paddingLeft: spacing(2),\n },\n}));\n","import * as Yup from 'yup';\nimport {FormNameEnum} from 'enums/form';\nimport {IBaseInstrumentItem} from 'models/resources';\n\nexport interface IAddSessionInstrumentsFormValues {\n [FormNameEnum.instruments]: string[];\n [FormNameEnum.selectedInstrumentsIds]: number[];\n [FormNameEnum.selectedInstruments]: IBaseInstrumentItem[];\n}\n\nexport const addSessionInstrumentsFormValidationSchema = Yup.object().shape({\n [FormNameEnum.instruments]: Yup.array().of(Yup.number()),\n [FormNameEnum.selectedInstrumentsIds]: Yup.array().of(Yup.number()),\n [FormNameEnum.selectedInstruments]: Yup.mixed(),\n});\n","import React, {FC, MutableRefObject, useCallback, useMemo} from 'react';\nimport {FormikHelpers, FormikProps, FormikValues} from 'formik';\nimport {batch} from 'react-redux';\nimport {IWithChildren} from 'models/common';\nimport {Form} from 'forms';\nimport {FormNameEnum} from 'enums/form';\nimport {IAddSessionInstrumentsFormValues, addSessionInstrumentsFormValidationSchema} from './config';\nimport {mapAddInstrumentItemsPayload} from 'admin/resources/learning-paths/views/create';\nimport {\n useLearningPathBuilderItemsEntities,\n useSessionBuilderStoreActions,\n} from 'admin/resources/learning-paths/views/session-builder';\n\ninterface IAddSessionInstrumentsFormProps extends IWithChildren {\n id: string;\n formikFormRef: MutableRefObject<FormikProps<FormikValues>>;\n closeDrawerClickHandler?: () => void;\n resetIsDirty: () => void;\n}\n\nexport const AddSessionInstrumentsForm: FC<IAddSessionInstrumentsFormProps> = ({\n id,\n formikFormRef,\n children,\n closeDrawerClickHandler,\n resetIsDirty,\n}) => {\n const {addSessionBuilderInstrumentItems} = useSessionBuilderStoreActions();\n const {instrumentsConcatenatedBaseEntitiesCollection} = useLearningPathBuilderItemsEntities();\n\n const submitHandler = useCallback(\n ({selectedInstrumentsIds}, {resetForm}: FormikHelpers<any>) => {\n const payload = mapAddInstrumentItemsPayload(\n id,\n selectedInstrumentsIds,\n instrumentsConcatenatedBaseEntitiesCollection\n );\n\n return batch(() => {\n addSessionBuilderInstrumentItems(payload);\n closeDrawerClickHandler();\n resetForm();\n resetIsDirty();\n });\n },\n [\n id,\n closeDrawerClickHandler,\n addSessionBuilderInstrumentItems,\n instrumentsConcatenatedBaseEntitiesCollection,\n resetIsDirty,\n ]\n );\n\n const initialValues = useMemo(\n () => ({\n [FormNameEnum.instruments]: [],\n [FormNameEnum.selectedInstrumentsIds]: [],\n [FormNameEnum.selectedInstruments]: [],\n }),\n []\n );\n\n return (\n <Form.Form<IAddSessionInstrumentsFormValues>\n formikRef={formikFormRef}\n initialValues={initialValues}\n validationSchema={addSessionInstrumentsFormValidationSchema}\n submitHandler={submitHandler}\n >\n {children}\n </Form.Form>\n );\n};\n","import React, {FC, Fragment} from 'react';\nimport {ILearningPathInstrumentItem, ILearningPathSessionItem} from 'models/resources';\nimport {NoResources} from 'admin/resources/learning-paths/components';\nimport {SessionInstrumentListItem} from '..';\ninterface ISessionInstrumentListEditProps {\n item: ILearningPathSessionItem;\n isEditMode: boolean;\n}\n\nexport const SessionInstrumentListEdit: FC<ISessionInstrumentListEditProps> = ({item, isEditMode}) => {\n return (\n <Fragment>\n {item?.instruments?.length ? (\n item?.instruments.map((instrumentItem: ILearningPathInstrumentItem, idx: number) => {\n return (\n <SessionInstrumentListItem\n key={idx}\n itemId={item?.id}\n instrumentItem={instrumentItem}\n canDelete={isEditMode ? true : false}\n isEditMode={isEditMode}\n />\n );\n })\n ) : (\n <NoResources text=\"No Instruments\" />\n )}\n </Fragment>\n );\n};\n","import React, {FC} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Container} from 'components-lib';\nimport {Subtitle} from 'admin/components';\nimport {SessionDetailsEdit, SessionDetailsPreview} from '..';\nimport {ILearningPathSessionItem} from 'models/resources';\n\ninterface ISessionResourcesDetailsProps {\n isEditMode: boolean;\n item: ILearningPathSessionItem;\n}\n\nexport const SessionDetails: FC<ISessionResourcesDetailsProps> = ({isEditMode, item}) => {\n const classes = useStyles();\n\n return (\n <Container>\n <Subtitle withColor={false} as=\"h3\" color=\"textPrimary\" title=\"Details\" />\n <Container disableGutters classes={{root: classes.root}}>\n {isEditMode ? <SessionDetailsEdit /> : <SessionDetailsPreview item={item} />}\n </Container>\n </Container>\n );\n};\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n paddingLeft: theme.spacing(2),\n },\n}));\n","import React, {Fragment} from 'react';\nimport {FormNameEnum} from 'enums/form';\nimport {ResourcesFormInput, ResourcesFormTextArea} from 'admin/resources';\n\nexport const SessionDetailsEdit = () => {\n return (\n <Fragment>\n <ResourcesFormInput name={FormNameEnum.sessionName} label=\"Name\" autoFocus />\n <ResourcesFormTextArea name={FormNameEnum.sessionDescription} label=\"Description\" />\n </Fragment>\n );\n};\n","import React, {FC, Fragment} from 'react';\nimport {ILearningPathSessionItem} from 'models/resources';\nimport {ResourceInput, ResourceTextArea} from 'admin/resources';\n\ninterface ISessionResourcesDetailsPreviewProps {\n item: ILearningPathSessionItem;\n}\n\nexport const SessionDetailsPreview: FC<ISessionResourcesDetailsPreviewProps> = ({item}) => {\n return (\n <Fragment>\n <ResourceInput label=\"Name\" value={item.title ?? ''} disabled />\n <ResourceTextArea label=\"Description\" value={item.description ?? ''} disabled rows={6} />\n </Fragment>\n );\n};\n","import React, {FC, useCallback} from 'react';\nimport {Container, Button, Row, Column} from 'components-lib';\nimport {Subtitle} from 'admin/components';\nimport {AddSessionInstruments, AddSessionResources, SessionInstrumentListEdit, SessionResourceListEdit} from '..';\nimport {ILearningPathSessionItem} from 'models/resources';\nimport {useDrawer} from 'hooks';\n\ninterface IAdditionalResourcesListProps {\n item: ILearningPathSessionItem;\n title: string;\n isEditMode: boolean;\n isResourceList: boolean;\n openDrawerButtonText: string;\n}\nexport const AdditionalResourcesList: FC<IAdditionalResourcesListProps> = ({\n item,\n title,\n openDrawerButtonText,\n isEditMode,\n isResourceList,\n}) => {\n const {isOpen: isAddResourcesDrawerOpen, setIsOpen: setIsAddResourcesDrawerOpen} = useDrawer();\n const {isOpen: isAddInstrumentsDrawerOpen, setIsOpen: setIsAddInstrumentsDrawerOpen} = useDrawer();\n\n const openDrawerResourcesClickHandler = useCallback(() => setIsAddResourcesDrawerOpen(true), [\n setIsAddResourcesDrawerOpen,\n ]);\n\n const openDrawerInstrumentsClickHandler = useCallback(() => setIsAddInstrumentsDrawerOpen(true), [\n setIsAddInstrumentsDrawerOpen,\n ]);\n\n return (\n <Container>\n <Subtitle withColor={false} as=\"h3\" color=\"textPrimary\" title={title} />\n <Row justify=\"flex-start\">\n <Column sm={12} md={12} lg={12}>\n {isResourceList ? (\n <SessionResourceListEdit item={item} isEditMode={isEditMode} isResource={isResourceList} />\n ) : (\n <SessionInstrumentListEdit item={item} isEditMode={isEditMode} />\n )}\n </Column>\n {isEditMode && (\n <Button.Secondary\n isFirst\n size=\"small\"\n clickHandler={isResourceList ? openDrawerResourcesClickHandler : openDrawerInstrumentsClickHandler}\n >\n {openDrawerButtonText}\n </Button.Secondary>\n )}\n {isResourceList ? (\n <AddSessionResources\n id={item?.id}\n isOpen={isAddResourcesDrawerOpen}\n setIsOpen={setIsAddResourcesDrawerOpen}\n />\n ) : (\n <AddSessionInstruments\n id={item?.id}\n isOpen={isAddInstrumentsDrawerOpen}\n setIsOpen={setIsAddInstrumentsDrawerOpen}\n />\n )}\n </Row>\n </Container>\n );\n};\n","import React, {useEffect} from 'react';\nimport {List} from '@material-ui/core';\nimport {useFormikContext} from 'formik';\nimport {Column, Row} from 'components-lib';\nimport {IAddSessionInstrumentsFormValues} from '../AddSessionInstrumentsForm/config';\nimport {FormNameEnum} from 'enums/form';\nimport {uniq} from 'utils/functions';\nimport {getInstrumentsCollectionByIds} from 'admin/resources/learning-paths/views/create';\nimport {useLearningPathBuilderItemsEntities} from 'admin/resources/learning-paths/views/session-builder';\nimport {AddInstrumentsDrawerListItem} from '..';\n\nexport const AddInstrumentsDrawerList = () => {\n const {\n values: {instruments, selectedInstruments, selectedInstrumentsIds},\n setFieldValue,\n } = useFormikContext<IAddSessionInstrumentsFormValues>();\n const {instrumentsConcatenatedBaseEntitiesCollection} = useLearningPathBuilderItemsEntities();\n\n useEffect(() => {\n if (instruments.length > 0) {\n const uniqueCollectionIds = uniq([...instruments, ...selectedInstrumentsIds]) as number[];\n\n const filteredInstruments = getInstrumentsCollectionByIds(\n uniqueCollectionIds,\n instrumentsConcatenatedBaseEntitiesCollection\n );\n\n setFieldValue(FormNameEnum.selectedInstrumentsIds, uniqueCollectionIds);\n setFieldValue(FormNameEnum.selectedInstruments, filteredInstruments);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [instruments, instrumentsConcatenatedBaseEntitiesCollection]);\n\n return (\n <Row justify=\"center\">\n <Column>\n <List>\n {selectedInstruments?.length > 0 &&\n selectedInstruments.map((item) => (\n <AddInstrumentsDrawerListItem key={item?.id} id={item?.id} name={item?.name} />\n ))}\n </List>\n </Column>\n </Row>\n );\n};\n","import React, {FC, useCallback} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Icon, LinkWithTooltip, Row} from 'components-lib';\nimport {useCreateLearningPathResources} from 'admin/resources/learning-paths/views/create';\n\ninterface IAddBaseDrawerListItemProps {\n id: number | string;\n name: string;\n isResource?: boolean;\n deleteDrawerItemClickHandler: () => void;\n}\n\nexport const AddBaseDrawerListItem: FC<IAddBaseDrawerListItemProps> = ({\n id,\n name,\n isResource = true,\n deleteDrawerItemClickHandler,\n}) => {\n const classes = useStyles();\n const {hasUrl, redirectToEditResourcePage, redirectToEditInstrumentPage} = useCreateLearningPathResources({id});\n\n const redirectLink = useCallback(() => (isResource ? redirectToEditResourcePage() : redirectToEditInstrumentPage()), [\n isResource,\n redirectToEditResourcePage,\n redirectToEditInstrumentPage,\n ]);\n\n return (\n <Row justify=\"space-between\" align=\"center\" classes={{root: classes.root}}>\n {name && (\n <LinkWithTooltip clickHandler={redirectLink} tooltipTitle={name} withNewTab disabled={!hasUrl}>\n {name}\n </LinkWithTooltip>\n )}\n <Icon.Button clickHandler={deleteDrawerItemClickHandler}>\n <Icon.DeleteIcon />\n </Icon.Button>\n </Row>\n );\n};\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n alignItems: 'center',\n\n height: 56,\n background: theme.palette.grey[50],\n\n margin: theme.spacing(2, 0),\n padding: theme.spacing(0, 3),\n },\n}));\n","import React, {FC, useCallback} from 'react';\nimport {filterInstrumentCollectionById} from 'admin/resources/learning-paths/views/create';\nimport {useFormikContext} from 'formik';\nimport {FormNameEnum} from 'enums/form';\nimport {IBaseInstrumentItem} from 'models/resources';\nimport {AddBaseDrawerListItem} from '..';\nimport {IAddSessionInstrumentsFormValues} from '../AddSessionInstrumentsForm/config';\n\ninterface IAddInstrumentsDrawerListItemProps {\n id: number;\n name: string;\n}\n\nexport const AddInstrumentsDrawerListItem: FC<IAddInstrumentsDrawerListItemProps> = ({id, name}) => {\n const {\n values: {selectedInstruments},\n setFieldValue,\n } = useFormikContext<IAddSessionInstrumentsFormValues>();\n\n const deleteDrawerItemClickHandler = useCallback(() => {\n const filteredInstruments = filterInstrumentCollectionById(selectedInstruments, id);\n const filteredInstrumentIds = filteredInstruments.map((resource: IBaseInstrumentItem) => resource.id);\n\n setFieldValue(FormNameEnum.selectedInstruments, filteredInstruments);\n setFieldValue(FormNameEnum.selectedInstrumentsIds, filteredInstrumentIds);\n }, [id, selectedInstruments, setFieldValue]);\n\n return (\n <AddBaseDrawerListItem\n id={id}\n name={name}\n deleteDrawerItemClickHandler={deleteDrawerItemClickHandler}\n isResource={false}\n />\n );\n};\n","import React, {FC, Fragment, useCallback} from 'react';\nimport {batch} from 'react-redux';\nimport {LearningPathListItem} from 'admin/resources/learning-paths/components';\nimport {\n getAccessibleToStudentsTooltip,\n getLinkTooltip,\n useCreateLearningPathResources,\n} from 'admin/resources/learning-paths/views/create';\nimport {ModalDelete} from 'admin/components';\nimport {useModal} from 'hooks';\n\ninterface ISessionInstrumentListItemProps {\n itemId?: string;\n instrumentItem: any;\n canDelete?: boolean;\n canHide?: boolean;\n isEditMode?: boolean;\n}\n\nexport const SessionInstrumentListItem: FC<ISessionInstrumentListItemProps> = ({\n itemId,\n instrumentItem: {name, id, isDeleted, accessibleToStudents},\n canDelete = false,\n isEditMode = true,\n}) => {\n const {redirectToEditInstrumentPage, deleteSessionBuilderInstrumentItem} = useCreateLearningPathResources({});\n const {isOpen: isDeleteModalOpen, setIsOpen: setIsDeleteModalOpen} = useModal();\n\n const openModalClickHandler = useCallback(() => setIsDeleteModalOpen(true), [setIsDeleteModalOpen]);\n\n const deleteClickHandler = useCallback(\n (instrumentId: number) =>\n batch(() => {\n itemId && deleteSessionBuilderInstrumentItem(instrumentId, itemId);\n setIsDeleteModalOpen(false);\n }),\n [itemId, setIsDeleteModalOpen, deleteSessionBuilderInstrumentItem]\n );\n\n const toolTip = getAccessibleToStudentsTooltip(accessibleToStudents);\n const linkTooltip = getLinkTooltip(isDeleted, false);\n const hasUrl = !!id;\n\n return (\n <Fragment>\n <LearningPathListItem\n name={name}\n isDeletedOrExpired={isDeleted}\n linkTooltip={linkTooltip}\n acessibleToStudentsTooltip={toolTip}\n disableLink={!hasUrl}\n disableDelete={!canDelete || !isEditMode}\n isAvailableToStudents={accessibleToStudents}\n linkClickHandler={() => redirectToEditInstrumentPage(id)}\n openModalClickHandler={openModalClickHandler}\n />\n <ModalDelete\n loading={false}\n title=\"Delete Instrument\"\n text=\"Would you like to take the instrument out of the session?\"\n cancelButtonText=\"No\"\n confirmButtonText=\"Yes\"\n isOpen={isDeleteModalOpen}\n setIsOpen={setIsDeleteModalOpen}\n confirmHandler={() => deleteClickHandler(id)}\n />\n </Fragment>\n );\n};\n","import React, {FC, useRef} from 'react';\nimport {LearningPathSessionsForm, LearningPathSessionsListItem} from '..';\nimport {ILearningPathSessionDragItem, ILearningPathSessionItem, IWithDisabled} from 'models';\nimport {SessionBuilderEditModeEnum} from 'enums';\nimport {BuilderItemDragTypeEnum} from 'admin/library/enums';\nimport {DragItem, useItemDrag, useItemDrop} from 'dragAndDrop';\nimport {USAAndSuperAdminRoles, usePermissions} from 'permissions';\n\ninterface ISessionListDragItemProps extends IWithDisabled {\n index: number;\n item: ILearningPathSessionItem;\n moveSession: (movedItemIdx: number, newPosition: number) => void;\n sessionMode: SessionBuilderEditModeEnum;\n shouldExpand: boolean;\n collapseSessionBuilderItem: (\n item: ILearningPathSessionItem\n ) => {\n payload: ILearningPathSessionItem;\n type: string;\n };\n setSessionBuilderMode: (item: ILearningPathSessionItem) => void;\n}\n\nexport const SessionListDragItem: FC<ISessionListDragItemProps> = ({\n index,\n item,\n moveSession,\n sessionMode,\n shouldExpand,\n disabled,\n collapseSessionBuilderItem,\n setSessionBuilderMode,\n}) => {\n const itemRef = useRef<HTMLDivElement>(null);\n const itemDrag = {\n ...item,\n index,\n type: BuilderItemDragTypeEnum.sessionItem,\n } as ILearningPathSessionDragItem;\n\n const {hasPermission} = usePermissions();\n const canDrag = hasPermission(USAAndSuperAdminRoles);\n const {drag} = useItemDrag(itemDrag, canDrag);\n const {drop, handlerId} = useItemDrop(moveSession, BuilderItemDragTypeEnum.sessionItem, itemRef, index);\n\n drag(drop(itemRef));\n\n return (\n <LearningPathSessionsForm item={item}>\n <DragItem drag={itemRef} handlerId={handlerId}>\n <LearningPathSessionsListItem\n sessionBuilderMode={sessionMode}\n setSessionBuilderMode={() => setSessionBuilderMode(item)}\n initialIsExpanded={shouldExpand}\n disabled={disabled}\n item={item}\n collapseAccordionCallback={() => collapseSessionBuilderItem(item)}\n />\n </DragItem>\n </LearningPathSessionsForm>\n );\n};\n","import React, {FC, useRef} from 'react';\nimport {SessionResourceListItem} from '..';\nimport {IBaseResourceItem} from 'models';\nimport {BuilderItemDragTypeEnum} from 'admin/library/enums';\nimport {DragItem, useItemDrag, useItemDrop} from 'dragAndDrop';\nimport {USAAndSuperAdminRoles, usePermissions} from 'permissions';\n\ninterface ISessionResourceDragListItemProps {\n index: number;\n itemId?: string;\n resourceItem: IBaseResourceItem;\n canDelete?: boolean;\n canHide?: boolean;\n isEditMode?: boolean;\n isResource?: boolean;\n moveResource: (dragIndex: number, hoverIndex: number) => void;\n}\n\nexport const SessionResourceDragListItem: FC<ISessionResourceDragListItemProps> = ({\n index,\n itemId,\n resourceItem,\n canDelete,\n isEditMode,\n isResource,\n moveResource,\n}) => {\n const itemRef = useRef<HTMLDivElement>(null);\n const itemDrag = {\n ...resourceItem,\n index,\n type: BuilderItemDragTypeEnum.sessionResourceItem,\n } as IBaseResourceItem;\n\n const {hasPermission} = usePermissions();\n const canDrag = isEditMode && hasPermission(USAAndSuperAdminRoles);\n const {drag} = useItemDrag(itemDrag, canDrag);\n const {drop, handlerId} = useItemDrop(moveResource, BuilderItemDragTypeEnum.sessionResourceItem, itemRef, index);\n\n drag(drop(itemRef));\n\n return (\n <DragItem drag={itemRef} handlerId={handlerId}>\n <SessionResourceListItem\n itemId={itemId}\n resourceItem={resourceItem}\n canDelete={canDelete}\n isEditMode={isEditMode}\n isResource={isResource}\n />\n </DragItem>\n );\n};\n","import React, {Fragment, useEffect} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Subtitle} from 'admin';\nimport {Column, Container, Link, Row} from 'components-lib';\nimport {AddSessionButton} from '../../views/create/components';\nimport {SessionList} from './components';\nimport {useLearningPathBuilderItemsEntities, useSessionBuilderStoreActions} from '../../views/session-builder';\nimport {DragAndDropProvider} from 'dragAndDrop';\n\nexport const LearningPathSessions = () => {\n const classes = useStyles();\n const {clearBuilder, collapseAllSessionBuilderItems} = useSessionBuilderStoreActions();\n const {hasSessions} = useLearningPathBuilderItemsEntities();\n\n useEffect(() => {\n return () => {\n clearBuilder();\n };\n }, [clearBuilder]);\n\n return (\n <Fragment>\n <Row justify=\"space-between\">\n <Subtitle withColor={false} as=\"h3\" color=\"textPrimary\" title=\"Sessions\" />\n {hasSessions && (\n <Link disabled={!hasSessions} clickHandler={collapseAllSessionBuilderItems}>\n Expand all sessions\n </Link>\n )}\n </Row>\n <Container disableGutters classes={{root: classes.sessionsContent}}>\n <Row>\n <Column sm={12} md={12} lg={12} xl={12}>\n <DragAndDropProvider>\n <Container disableGutters classes={{root: classes.sessionList}}>\n <SessionList />\n </Container>\n </DragAndDropProvider>\n </Column>\n </Row>\n <AddSessionButton />\n </Container>\n </Fragment>\n );\n};\n\nexport const useStyles = makeStyles((theme) => ({\n sessionsContent: {\n paddingLeft: theme.spacing(2),\n },\n sessionList: {\n paddingBottom: theme.spacing(3),\n },\n}));\n","import React, {FC} from 'react';\nimport {ResourceFooterButtons} from 'admin/resources';\ninterface ILearningPathFooterProps {\n loading: boolean;\n isSomeOfSessionsWithEmptyName?: boolean;\n withSubmitButton?: boolean;\n withPublishButton?: boolean;\n withDeleteButton?: boolean;\n withCancelButton?: boolean;\n withSaveButton?: boolean;\n disablePublish?: boolean;\n disableSubmit?: boolean;\n disableSave?: boolean;\n openModalClickHandler: () => void;\n publishClickHandler?: () => void;\n deleteClickHandler?: () => void;\n saveClickHandler?: () => void;\n}\n\nexport const LearningPathFooter: FC<ILearningPathFooterProps> = ({\n loading,\n withSubmitButton = true,\n withPublishButton = false,\n withDeleteButton = false,\n withCancelButton = true,\n withSaveButton = false,\n disablePublish = false,\n disableSubmit = false,\n disableSave = false,\n openModalClickHandler,\n publishClickHandler,\n deleteClickHandler,\n saveClickHandler,\n}) => (\n <ResourceFooterButtons\n loading={loading}\n withSubmitButton={withSubmitButton}\n withDeleteButton={withDeleteButton}\n withPublishButton={withPublishButton}\n withCancelButton={withCancelButton}\n withSaveButton={withSaveButton}\n disablePublish={disablePublish}\n disableSubmit={disableSubmit}\n disableSave={disableSave}\n cancelClickHandler={openModalClickHandler}\n publishClickHandler={publishClickHandler}\n deleteClickHandler={deleteClickHandler}\n saveClickHandler={saveClickHandler}\n />\n);\n","import React, {FC} from 'react';\nimport {IWithChildren} from 'models';\nimport {ResourceDetails} from 'admin/resources';\ninterface ILearningPathDetailsProps extends IWithChildren {\n withSubtitle?: boolean;\n}\n\nexport const LearningPathDetails: FC<ILearningPathDetailsProps> = ({children, withSubtitle = true}) => {\n return <ResourceDetails withSubtitle={withSubtitle}>{children}</ResourceDetails>;\n};\n","import React, {useMemo} from 'react';\nimport {SelectionEnum} from 'filters-selections';\nimport {ResourceListColumn} from 'admin/resources';\nimport {USAAndSuperAdminRoles, usePermissions} from 'permissions';\n\nexport const LearningPathDetailsFirstCol = () => {\n const {hasPermission} = usePermissions();\n const shouldDisableList = !hasPermission(USAAndSuperAdminRoles);\n\n const list = useMemo(\n () => [\n SelectionEnum.LearningPathName,\n SelectionEnum.FutureProgramYearSingle,\n SelectionEnum.PrimaryPillar,\n SelectionEnum.LanguagesSingle,\n SelectionEnum.KeyTermsInput,\n SelectionEnum.BriefDescriptionTextArea,\n ],\n []\n );\n\n return <ResourceListColumn sm={6} md={6} lg={6} xl={4} list={list} disableAll={shouldDisableList} />;\n};\n","import React, {useMemo} from 'react';\nimport {SelectionEnum} from 'filters-selections';\nimport {USAAndSuperAdminRoles, usePermissions} from 'permissions';\nimport {ResourceListColumn} from 'admin/resources';\n\nexport const LearningPathDetailsSecondCol = () => {\n const {hasPermission} = usePermissions();\n const shouldDisableList = !hasPermission(USAAndSuperAdminRoles);\n\n const list = useMemo(\n () => [\n SelectionEnum.ProgramsSingle,\n SelectionEnum.TagGradeLevels,\n SelectionEnum.SecondaryPillar,\n SelectionEnum.ExpirationDatePicker,\n SelectionEnum.LearningObjectiveInput,\n ],\n []\n );\n\n return <ResourceListColumn sm={6} md={6} lg={6} xl={4} list={list} disableAll={shouldDisableList} />;\n};\n","export enum SessionBuilderEditModeEnum {\n View,\n Edit,\n}\n","import React, {useCallback, useMemo, useState} from 'react';\nimport {useDispatch} from 'react-redux';\nimport {unwrapResult} from '@reduxjs/toolkit';\nimport {Button, Text} from 'components-lib';\nimport {Form} from 'forms';\nimport {useNavigate} from 'hooks';\nimport {IWithModal, IWithSetSubmitting} from 'models';\nimport {pages} from 'paths';\nimport {createNewInstrumentThunk} from '../../store';\nimport {mapInstrumentCreateModalMetadata} from '../../utils';\nimport {CreateInstrumentForm, ICreateInstrumentFormData} from '../CreateInstrumentForm';\nimport {CreateInstrumentFormFields} from '../CreateInstrumentForm/CreateInstrumentFormFields';\nimport {ModalCreateNewInstrument} from './ModalCreateNewInstrument';\n\nenum ActiveStepEnum {\n First,\n Second,\n}\n\ntype IModalCreateNewInstrumentWithFormProps = IWithModal;\n\nexport function ModalCreateNewInstrumentWithForm({isOpen, setIsOpen}: IModalCreateNewInstrumentWithFormProps) {\n const dispatch = useDispatch();\n const {push} = useNavigate();\n const [error, setError] = useState<string>('');\n\n const closeHandler = useCallback(() => {\n setIsOpen(false);\n }, [setIsOpen]);\n\n const [activeStep, setActiveStep] = useState<ActiveStepEnum>(ActiveStepEnum.First);\n\n const renderActiveStep = useMemo(() => {\n const steps = {\n [ActiveStepEnum.First]: (\n <>\n <Text.Heading as=\"h3\">Follow the steps below to create a new instrument.</Text.Heading>\n <Text.Paragraph>Create a new template and add metadata.</Text.Paragraph>\n <Text.Paragraph>Customize your template with an approved set of questions and answers.</Text.Paragraph>\n <Text.Paragraph>Publish your survey and share it with students and staff!</Text.Paragraph>\n </>\n ),\n [ActiveStepEnum.Second]: <CreateInstrumentFormFields />,\n };\n\n return steps[activeStep];\n }, [activeStep]);\n\n const submitHandler = (\n {instrumentName, audience, phase, pillars, programs, type, subType, isGeneralInstrument}: ICreateInstrumentFormData,\n actions: IWithSetSubmitting\n ) => {\n const metaData = mapInstrumentCreateModalMetadata({\n instrumentName,\n audience,\n phase,\n pillars,\n programs,\n type,\n subType,\n isGeneralInstrument,\n });\n\n setError('');\n\n dispatch(createNewInstrumentThunk({metaData, isGeneral: isGeneralInstrument}))\n .then(unwrapResult)\n .then((response: number) => {\n actions?.setSubmitting(false);\n setIsOpen(false);\n setActiveStep(ActiveStepEnum.First);\n push(`${pages.adminPortal.instruments.detailsRoot}/${response}`);\n })\n .catch((error: Error) => {\n actions?.setSubmitting(false);\n setError(error.message);\n });\n };\n\n const renderNextButton = useMemo(() => {\n const buttons = {\n [ActiveStepEnum.First]: (\n <Button.Primary size=\"small\" clickHandler={() => setActiveStep(ActiveStepEnum.Second)}>\n Next\n </Button.Primary>\n ),\n [ActiveStepEnum.Second]: <Form.ButtonSubmit text=\"Create\" size=\"small\" />,\n };\n\n return <>{buttons[activeStep]}</>;\n }, [activeStep]);\n\n return (\n <CreateInstrumentForm submitHandler={submitHandler}>\n <ModalCreateNewInstrument\n isOpen={isOpen}\n error={error}\n activeStep={renderActiveStep}\n nextButton={renderNextButton}\n closeHandler={closeHandler}\n />\n </CreateInstrumentForm>\n );\n}\n","import {Button} from 'components-lib';\nimport {withRole} from 'permissions';\nimport {AdminRolesInstruments, AdminRolesWithLocalAreaInstruments, AllRolesExceptStudent} from '../enums';\n\nexport const ButtonPrimaryWithAdminPermissions = withRole(AdminRolesInstruments, '')(Button.Primary);\nexport const ButtonSecondaryWithAdminPermissions = withRole(AdminRolesInstruments, '')(Button.Secondary);\n\nexport const ButtonPrimaryWithAdminAndLocalAreaPermissions = withRole(\n AdminRolesWithLocalAreaInstruments,\n ''\n)(Button.Primary);\nexport const ButtonSecondaryWithAdminAndLocalAreaPermissions = withRole(\n AdminRolesWithLocalAreaInstruments,\n ''\n)(Button.Secondary);\nexport const ButtonSecondaryWithAllRolesExceptStudentPermissions = withRole(\n AllRolesExceptStudent,\n ''\n)(Button.Secondary);\n","import React, {FC, ReactNode, useCallback} from 'react';\nimport {Button, Modal, Text} from 'components-lib';\nimport {useFormikContext} from 'formik';\nimport {useDebounce} from 'hooks';\ninterface IModalCreateNewInstrumentProps {\n isOpen: boolean;\n error: string;\n activeStep: ReactNode;\n nextButton: ReactNode;\n closeHandler: () => void;\n}\n\nexport const ModalCreateNewInstrument: FC<IModalCreateNewInstrumentProps> = ({\n isOpen,\n error,\n activeStep,\n nextButton,\n closeHandler,\n}) => {\n const {resetForm} = useFormikContext();\n const debouncedReset = useDebounce(() => resetForm());\n\n const handleClose = useCallback(() => {\n closeHandler();\n debouncedReset();\n }, [debouncedReset, closeHandler]);\n\n return (\n <Modal disableBackdropClick isOpen={isOpen} handleClose={handleClose} title=\"Create New Instrument\" size=\"medium\">\n <>\n {error && <Text.Error>{error}</Text.Error>}\n {activeStep}\n </>\n <>\n <Button.Secondary clickHandler={handleClose} size=\"small\">\n Cancel\n </Button.Secondary>\n {nextButton}\n </>\n </Modal>\n );\n};\n","import React, {FC} from 'react';\nimport {IconButton} from '@material-ui/core';\nimport {Icon, Tooltip} from 'components-lib';\n\ninterface ICardLinkInfoTooltipProps {\n clickHandler: () => void;\n}\n\nexport const CardLinkInfoTooltip: FC<ICardLinkInfoTooltipProps> = ({clickHandler}) => {\n return (\n <Tooltip title=\"Linked Item Info\">\n <IconButton aria-label=\"info\" onClick={clickHandler}>\n <Icon.InfoIcon />\n </IconButton>\n </Tooltip>\n );\n};\n","export * from './thunks';\nexport * from './IProgramDetailsState';\nexport * from './programDetails.selectors';\nexport * from './programDetails.slice';\nexport * from './programDetails.initialState';\n","export enum LearningPathLabelEnum {\n Name = 'Name',\n SessionName = 'Session Name',\n SessionDescription = 'Session Description',\n GradeLevel = 'Grade Level',\n Program = 'Program',\n PrimaryPillar = 'Primary Pillar',\n SecondaryPillar = 'Secondary Pillar',\n KnowledgeSkillsAndAbilities = 'KSAs',\n KeyTerms = 'Key Terms',\n BriefDescription = 'Brief Description',\n Competency = 'Competency',\n Competencies = 'Competencies',\n Language = 'Language',\n ExpirationDate = 'Expiration Date',\n LearningObjectives = 'Learning Objectives',\n}\n","import {useSelector} from 'react-redux';\nimport {unwrapResult} from '@reduxjs/toolkit';\nimport {useNavigate, useAppDispatch} from 'hooks';\nimport {pages} from 'paths';\nimport {useCallback, useMemo} from 'react';\nimport {\n cloningLearningPathsSelector,\n duplicateLearningPathThunk,\n selectedLearningPathIdSelector,\n exportingLearningPathsSelector,\n fetchExportLearningPathThunk,\n fetchLearningPathsPagedThunk,\n learningPathsAllFilterSelector,\n learningPathsAllIdsSelector,\n learningPathsAllListSelectorEntitiesSelector,\n learningPathsAllPageLoadingSelector,\n learningPathsAllPaginationSelector,\n learningPathsAllSortOrderSelector,\n} from 'admin/resources/learning-paths';\nimport {EntitiesPerPageEnum} from 'enums';\nimport {\n IDuplicateLearningPathThunkPayload,\n IFetchLearningPathsAllQueryFilters,\n ILearningPathsAllFilter,\n ILearningPathsAllSortOrder,\n} from 'models/resources';\nimport {mapFetchLearningPathsAllPayload} from '../utils';\nimport {filtersYearsEntitiesCollectionSelector, learningPathsAllFiltersEntitiesSelector} from 'filters-selections';\nimport {createLinkForDownload} from 'utils';\n\nexport const useLearningPaths = () => {\n const {push} = useNavigate();\n const dispatch = useAppDispatch();\n\n const loading = useSelector(learningPathsAllPageLoadingSelector) as boolean;\n const learningPathsAllIds = useSelector(learningPathsAllIdsSelector) as string[];\n const learningPathsAllEntities = useSelector(learningPathsAllListSelectorEntitiesSelector);\n const exporting = useSelector(exportingLearningPathsSelector);\n const selectedLearningPathId = useSelector(selectedLearningPathIdSelector);\n const cloning = useSelector(cloningLearningPathsSelector);\n\n const filter = useSelector(learningPathsAllFilterSelector) as ILearningPathsAllFilter;\n const sortOrder = useSelector(learningPathsAllSortOrderSelector) as ILearningPathsAllSortOrder;\n const filterEntities = useSelector(learningPathsAllFiltersEntitiesSelector);\n const programYearsCollection = useSelector(filtersYearsEntitiesCollectionSelector);\n\n const {\n currentPage,\n perPage,\n totalCount,\n }: {\n currentPage: number;\n perPage: EntitiesPerPageEnum;\n totalCount: number;\n } = useSelector(learningPathsAllPaginationSelector);\n\n const redirectToCreateLearningPath: () => void = useCallback(() => {\n push(`${pages.adminPortal.learningPaths.create}`);\n }, [push]);\n\n const redirectToEditLearningPath: (id: string) => void = useCallback(\n (id: string) => {\n push(`${pages.adminPortal.learningPaths.editLink}/${id}`);\n },\n [push]\n );\n\n const fetchLearningPaths: () => void = useMemo(\n () => () => {\n const queryFilters = {\n sortOrder,\n currentPage,\n perPage,\n filter,\n programYearsCollection,\n } as IFetchLearningPathsAllQueryFilters;\n\n const payload = mapFetchLearningPathsAllPayload(queryFilters);\n\n return dispatch(fetchLearningPathsPagedThunk(payload));\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [filter, currentPage, perPage, sortOrder]\n );\n\n const fetchExportLearningPath: (id: string) => void = useCallback((id) => {\n return dispatch(fetchExportLearningPathThunk(id))\n .then(unwrapResult)\n .then(({blob, fileName}) => {\n const objectUrl = window.URL.createObjectURL(blob);\n createLinkForDownload(objectUrl, fileName);\n // Freeing resources in memory\n window.URL.revokeObjectURL(objectUrl);\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const cloneLearningPath = useCallback(\n (payload: IDuplicateLearningPathThunkPayload) => {\n return dispatch(duplicateLearningPathThunk(payload));\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n\n return {\n loading,\n exporting,\n selectedLearningPathId,\n cloning,\n currentPage,\n perPage,\n totalCount,\n learningPathsAllIds,\n learningPathsAllEntities,\n filter,\n sortOrder,\n filterEntities,\n\n redirectToCreateLearningPath,\n redirectToEditLearningPath,\n fetchLearningPaths,\n fetchExportLearningPath,\n cloneLearningPath,\n };\n};\n","import {useCallback} from 'react';\nimport {useAppDispatch} from 'hooks';\nimport {learningPathsAllSitesActions as actions} from '../store';\nimport {ILearningPathsAllFilter} from 'models/resources';\n\nexport const useLearningPathsAllStoreActions = () => {\n const dispatch = useAppDispatch();\n\n const clearLearningPaths: () => void = useCallback(() => dispatch(actions.clear()), [dispatch]);\n\n const setFilterLearningPathsAll: (filter: ILearningPathsAllFilter) => void = useCallback(\n (filter: ILearningPathsAllFilter) => dispatch(actions.setFilterLearningPathsAll(filter)),\n [dispatch]\n );\n\n const resetFilterLearningPathsAll: () => void = useCallback(() => dispatch(actions.resetFilterLearningPathsAll()), [\n dispatch,\n ]);\n\n const setCurrentPage: (newPage: number) => void = useCallback(\n (newPage: number) => dispatch(actions.setCurrentPageLearningPaths(newPage)),\n [dispatch]\n );\n\n const setPerPage: (perPage: number) => void = useCallback(\n (perPage: number) => dispatch(actions.setPerPageLearningPaths(perPage)),\n [dispatch]\n );\n\n return {clearLearningPaths, setFilterLearningPathsAll, resetFilterLearningPathsAll, setCurrentPage, setPerPage};\n};\n","import React, {FC, Fragment, useCallback, useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {CircularProgress, Dropdown, Wrapper} from 'components-lib';\nimport {LearningPathDropdownEnum} from '../../enums';\nimport {useLearningPaths} from '../../hooks';\n\ninterface ILearningPathDropdown {\n id: string;\n openModalCloneClickHandler: () => void;\n}\n\nexport const LearningPathsDropdown: FC<ILearningPathDropdown> = ({id, openModalCloneClickHandler}) => {\n const classes = useStyles();\n const {fetchExportLearningPath, exporting, cloning, selectedLearningPathId} = useLearningPaths();\n\n const isSelectedId = selectedLearningPathId === id;\n const showProgress = (exporting || cloning) && isSelectedId;\n\n const exportClickHandler = useCallback(() => fetchExportLearningPath(id), [id, fetchExportLearningPath]);\n\n const dropdownOptions = useMemo(\n () => [\n {\n text: LearningPathDropdownEnum.Clone,\n clickHandler: () => openModalCloneClickHandler(),\n },\n {\n text: LearningPathDropdownEnum.Export,\n clickHandler: () => exportClickHandler(),\n disabled: exporting,\n },\n ],\n [exportClickHandler, openModalCloneClickHandler, exporting]\n );\n\n return (\n <Fragment>\n {showProgress ? (\n <Wrapper className={classes.progress}>\n <CircularProgress size={20} />\n </Wrapper>\n ) : (\n <Dropdown.ThreeDots items={dropdownOptions} disabled={false} />\n )}\n </Fragment>\n );\n};\n\nconst useStyles = makeStyles(() => ({\n progress: {\n padding: 12,\n },\n}));\n","import React, {FC} from 'react';\nimport {useLearningPaths} from '../../hooks';\nimport {IWithDisabled} from 'models';\nimport {Button, Row} from 'components-lib';\nimport {LearningPathsDropdown} from './LearningPathsDropdown';\n\ninterface ILearningPathsAllActionButtonProps extends IWithDisabled {\n id: string;\n openModalCloneClickHandler: () => void;\n}\n\nexport const LearningPathsActionButtons: FC<ILearningPathsAllActionButtonProps> = ({\n id,\n disabled = false,\n openModalCloneClickHandler,\n}) => {\n const {redirectToEditLearningPath} = useLearningPaths();\n const showDropdown = !disabled;\n\n return (\n <Row justify=\"flex-end\">\n <Button.Secondary size=\"small\" disabled={disabled} clickHandler={() => redirectToEditLearningPath(id)}>\n View\n </Button.Secondary>\n {showDropdown && <LearningPathsDropdown id={id} openModalCloneClickHandler={openModalCloneClickHandler} />}\n </Row>\n );\n};\n","import * as Yup from 'yup';\nimport {FormNameEnum} from 'enums/form';\nimport {getIsDateEarlierFromToday} from 'admin';\nimport {errorMessages} from 'utils';\n\nexport interface ICloneLearningPathFormBaseValues {\n [FormNameEnum.program]: number;\n [FormNameEnum.expirationDate]: string | Date;\n}\n\nexport const cloneLearningPathFormBaseValidationSchema = Yup.object().shape({\n [FormNameEnum.program]: Yup.number().nullable().required(errorMessages.requiredWithFieldName('a Program')),\n [FormNameEnum.expirationDate]: Yup.date()\n .nullable()\n .required(errorMessages.requiredWithFieldName('an Expiration Date'))\n .typeError('Expected date format: (mm/dd/yyyy)')\n .test('is-date-earlier-than-now', 'The selected date should be in the future.', function () {\n const {expirationDate} = this.parent;\n\n // If the datepicker is cleaned up, then validation is true\n return getIsDateEarlierFromToday(expirationDate);\n }),\n});\n","import React, {FC, useCallback, useContext, useMemo} from 'react';\nimport {batch} from 'react-redux';\nimport {IWithChildren} from 'models/common';\nimport {Form} from 'forms';\nimport {\n cloneLearningPathFormBaseValidationSchema,\n ICloneLearningPathFormBaseValues,\n} from './cloneLearningPathBaseConfig';\nimport {FormContext} from 'forms/formik/FormContextProvider';\nimport {FormNameEnum} from 'enums/form';\nimport {useToastNotifications} from 'toast-notifications';\nimport {learningPathsMessages, useLearningPaths} from 'admin/resources/learning-paths/views/all';\nimport {IDuplicateLearningPathThunkPayload} from 'models/resources/learning-paths';\nimport {unwrapResult} from '@reduxjs/toolkit';\n\ninterface IModalCloneFormProps extends IWithChildren {\n learningPathId: string;\n}\n\nconst mapCloneLearningPath = (\n learningPathId: string,\n values: ICloneLearningPathFormBaseValues\n): IDuplicateLearningPathThunkPayload => ({\n learningPathId,\n program: values.program,\n expirationDate: values.expirationDate,\n});\n\nexport const ModalCloneForm: FC<IModalCloneFormProps> = ({learningPathId, children}) => {\n const {formikFormRef} = useContext(FormContext);\n const {addToastNotification} = useToastNotifications();\n const {cloneLearningPath} = useLearningPaths();\n\n const initialValues = useMemo(\n () => ({\n [FormNameEnum.program]: null,\n [FormNameEnum.expirationDate]: null,\n }),\n []\n );\n\n const submitHandler = useCallback(\n (values: ICloneLearningPathFormBaseValues) => {\n const payload = mapCloneLearningPath(learningPathId, values);\n return batch(() => {\n cloneLearningPath(payload)\n .then(unwrapResult)\n .then(() => addToastNotification(learningPathsMessages.cloning));\n });\n },\n [addToastNotification, cloneLearningPath, learningPathId]\n );\n\n return (\n <Form.Form<ICloneLearningPathFormBaseValues>\n initialValues={initialValues}\n validationSchema={cloneLearningPathFormBaseValidationSchema}\n submitHandler={submitHandler}\n formikRef={formikFormRef}\n >\n {children}\n </Form.Form>\n );\n};\n","import React, {Fragment, useContext, useEffect, useMemo} from 'react';\nimport {Subtitle} from 'admin/components';\nimport {SelectionEnum, SelectionListItems} from 'filters-selections';\nimport {useFormikContext} from 'formik';\nimport {ICloneLearningPathFormBaseValues} from './cloneLearningPathBaseConfig';\nimport {FormContext} from 'forms/formik/FormContextProvider';\n\nexport const ModalCloneContent = () => {\n const {setIsDirty, isDirty} = useContext(FormContext);\n const {dirty, isValid} = useFormikContext<ICloneLearningPathFormBaseValues>();\n\n // TODO: Update context provider properly\n useEffect(() => {\n if (dirty && isValid && !isDirty) {\n setIsDirty(true);\n } else if (!isValid) {\n setIsDirty(false);\n }\n }, [dirty, isDirty, isValid, setIsDirty]);\n\n const selectionList = useMemo(() => [SelectionEnum.ProgramsSingle, SelectionEnum.ExpirationDatePicker], []);\n\n return (\n <Fragment>\n <Subtitle\n withColor={false}\n as=\"h4\"\n color=\"primary\"\n title=\"The chosen metadata will be saved for the cloned learning path and all its resources.\"\n />\n <SelectionListItems list={selectionList} disableAll={false} />\n </Fragment>\n );\n};\n","import React, {FC, useCallback, useContext, useEffect} from 'react';\nimport {useBeforeunload} from 'react-beforeunload';\nimport {batch} from 'react-redux';\nimport {IWithModal} from 'models/common';\nimport {Button, Column, Modal, Wrapper} from 'components-lib';\nimport {Form} from 'forms';\nimport {ModalCloneForm} from './ModalCloneForm';\nimport {ModalCloneContent} from './ModalCloneContent';\nimport {FormContext} from 'forms/formik/FormContextProvider';\nimport {learningPathsMessages} from 'admin/resources/learning-paths/views/all';\n\ninterface IModalCloneProps extends IWithModal {\n learningPathId: string;\n title?: string;\n withSubmitButton?: boolean;\n}\n\nexport const ModalClone: FC<IModalCloneProps> = ({\n isOpen,\n setIsOpen,\n title = 'Clone Learning Path',\n withSubmitButton = false,\n learningPathId,\n}) => {\n const loading = false;\n const {formikFormRef, setIsDirty, isDirty} = useContext(FormContext);\n\n useEffect(() => {\n return () => {\n setIsDirty(false);\n };\n }, [setIsDirty]);\n\n useBeforeunload(() => {\n if (loading) {\n return learningPathsMessages.warning;\n }\n });\n\n const closeHandler = useCallback(() => setIsOpen(false), [setIsOpen]);\n\n const submitFormClickHandler = useCallback(() => formikFormRef?.current?.submitForm(), [formikFormRef]);\n\n const confirmActionHandler = useCallback(\n () =>\n batch(() => {\n submitFormClickHandler();\n closeHandler();\n }),\n [submitFormClickHandler, closeHandler]\n );\n\n return (\n <Modal disableBackdropClick isOpen={isOpen} handleClose={closeHandler} title={title} size=\"medium\">\n <ModalCloneForm learningPathId={learningPathId}>\n <Column>\n <ModalCloneContent />\n </Column>\n </ModalCloneForm>\n <Wrapper>\n <Button.Secondary clickHandler={closeHandler}>Cancel</Button.Secondary>\n {withSubmitButton ? (\n <Form.ButtonSubmit text=\"Clone\" />\n ) : (\n <Button.Primary clickHandler={confirmActionHandler} disabled={!isDirty || loading}>\n Clone\n </Button.Primary>\n )}\n </Wrapper>\n </Modal>\n );\n};\n","import React, {useCallback, useMemo} from 'react';\nimport {Form} from 'forms';\nimport {\n filesAllLearningPathsFilterList,\n ILearningPathsFiltersFormValues,\n learningPathsAllValidationSchema,\n mapLearningPathsAllFilters,\n} from '../../utils';\nimport {Filters} from 'components-lib';\nimport {useLearningPaths, useLearningPathsAllStoreActions} from '../../hooks';\nimport {LearningPathsAllFilterNamesEnum} from '../../enums';\nimport {FiltersEnum, FiltersList} from 'filters-selections';\nimport {ILearningPathsAllFilter} from 'models/resources/learning-paths';\nimport {USAAndSuperAdminRoles, usePermissions} from 'permissions';\n\nexport const LearningPathsSidebar = () => {\n const {filter, loading} = useLearningPaths();\n const {setFilterLearningPathsAll, resetFilterLearningPathsAll} = useLearningPathsAllStoreActions();\n const {hasPermission} = usePermissions();\n\n const shouldRenderStatusFilter = hasPermission(USAAndSuperAdminRoles);\n\n const submitHandler = useCallback(\n (formValues: ILearningPathsFiltersFormValues) => {\n const filter: ILearningPathsAllFilter = mapLearningPathsAllFilters(formValues);\n setFilterLearningPathsAll(filter);\n },\n [setFilterLearningPathsAll]\n );\n\n const resetHandler = useCallback(() => resetFilterLearningPathsAll(), [resetFilterLearningPathsAll]);\n\n const initialValues: ILearningPathsFiltersFormValues = useMemo(\n () => ({\n [LearningPathsAllFilterNamesEnum.SEARCH_BY_QUERY]: filter[LearningPathsAllFilterNamesEnum.SEARCH_BY_QUERY],\n [LearningPathsAllFilterNamesEnum.PROGRAMS]: filter[LearningPathsAllFilterNamesEnum.PROGRAMS],\n [LearningPathsAllFilterNamesEnum.PROGRAM_YEARS]: filter[LearningPathsAllFilterNamesEnum.PROGRAM_YEARS],\n [LearningPathsAllFilterNamesEnum.GRADE_LEVELS]: filter[LearningPathsAllFilterNamesEnum.GRADE_LEVELS],\n [LearningPathsAllFilterNamesEnum.PILLARS]: filter[LearningPathsAllFilterNamesEnum.PILLARS],\n [LearningPathsAllFilterNamesEnum.LANGUAGES]: filter[LearningPathsAllFilterNamesEnum.LANGUAGES],\n [LearningPathsAllFilterNamesEnum.LEARNING_PATH_STATUSES]:\n filter[LearningPathsAllFilterNamesEnum.LEARNING_PATH_STATUSES],\n }),\n [filter]\n );\n\n const renderFiltersList = useMemo(() => {\n if (!shouldRenderStatusFilter) {\n const isNotExistIndex = -1;\n const onePosition = 1;\n const statusesFilterIndex = filesAllLearningPathsFilterList.indexOf(FiltersEnum.LearningPathStatusesCheckbox);\n\n if (statusesFilterIndex > isNotExistIndex) {\n filesAllLearningPathsFilterList.splice(statusesFilterIndex, onePosition);\n }\n }\n return <FiltersList disableAll={loading} filters={filesAllLearningPathsFilterList} />;\n }, [loading, shouldRenderStatusFilter]);\n\n return (\n <Form.Form<ILearningPathsFiltersFormValues>\n initialValues={initialValues}\n validationSchema={learningPathsAllValidationSchema}\n submitHandler={submitHandler}\n >\n <Filters.FiltersPanel\n disableAll={loading}\n clearButtonClickHandler={resetHandler}\n searchFieldName={LearningPathsAllFilterNamesEnum.SEARCH_BY_QUERY}\n filters={renderFiltersList}\n />\n </Form.Form>\n );\n};\n","import React from 'react';\nimport {PaginationLocal} from 'components-lib';\nimport {useLearningPaths, useLearningPathsAllStoreActions} from 'admin/resources/learning-paths/views/all/hooks';\n\nexport const LearningPathContentFooter = () => {\n const {loading, totalCount, perPage, currentPage} = useLearningPaths();\n const {setCurrentPage, setPerPage} = useLearningPathsAllStoreActions();\n\n return (\n <PaginationLocal\n onPageChange={setCurrentPage}\n onPerPageChange={setPerPage}\n totalCount={totalCount}\n perPage={perPage}\n currentPage={currentPage}\n disabled={loading}\n />\n );\n};\n","import React, {useCallback} from 'react';\nimport {SortingOrderEnum} from 'enums';\nimport {useAppDispatch} from 'hooks';\nimport {getLearningPathsAllMenuItemsList} from 'admin/resources/learning-paths/views/all/utils';\nimport {LearningPathsOrderingAllEnum} from 'admin/resources/learning-paths/views/all/enums';\nimport {useLearningPaths} from 'admin/resources/learning-paths/views/all/hooks';\nimport {ILearningPathsAllSortOrder} from 'models/resources/learning-paths';\nimport {learningPathsAllSitesActions as actions} from 'admin/resources/learning-paths';\nimport {SortByDropdown} from 'admin/components';\n\nconst learningPathsAllOrderingMap = {\n [LearningPathsOrderingAllEnum.Name]: {\n [SortingOrderEnum.ASC]: 'Name: A-Z',\n [SortingOrderEnum.DESC]: 'Name: Z-A',\n },\n [LearningPathsOrderingAllEnum.Created]: {\n [SortingOrderEnum.ASC]: 'Created: Oldest First',\n [SortingOrderEnum.DESC]: 'Created: Newest First',\n },\n [LearningPathsOrderingAllEnum.ProgramYear]: {\n [SortingOrderEnum.ASC]: 'Program Year: Oldest First',\n [SortingOrderEnum.DESC]: 'Program Year: Newest First',\n },\n};\n\nexport const LearningPathsHeaderSortBy = () => {\n const dispatch = useAppDispatch();\n const {sortOrder} = useLearningPaths();\n\n const handleItemClick = useCallback(\n (sortOrder: ILearningPathsAllSortOrder) => {\n dispatch(actions.setSortOrderFilesAll(sortOrder));\n },\n [dispatch]\n );\n\n return (\n <SortByDropdown\n label=\"Sort By: \"\n handleItemClick={handleItemClick}\n getMenuItemsList={getLearningPathsAllMenuItemsList}\n sortOrder={sortOrder}\n map={learningPathsAllOrderingMap}\n />\n );\n};\n","import React, {ReactNode, useMemo} from 'react';\nimport {PageViewHeader, Tag} from 'components-lib';\nimport {ButtonWithAdminPermissions} from 'admin/components';\nimport {LearningPathsHeaderSortBy} from '../LearningPathsHeaderSortBy/LearningPathsHeaderSortBy';\nimport {useLearningPaths, useLearningPathsAllStoreActions} from 'admin/resources/learning-paths/views/all/hooks';\nimport {LearningPathsAllFilterNamesEnum} from 'admin/resources/learning-paths/views/all/enums';\nimport {ILearningPathsAllFilter} from 'models/resources';\nimport {cloneDeep} from 'utils/functions';\nimport {filesAllLearningPathsFilterList, learningPathsAllFilterToFilterNameMap} from 'admin/resources/learning-paths';\n\nexport const LearningPathContentHeader = () => {\n const {filter, redirectToCreateLearningPath, filterEntities} = useLearningPaths();\n const {setFilterLearningPathsAll} = useLearningPathsAllStoreActions();\n\n const renderSortOrder = useMemo(() => <LearningPathsHeaderSortBy />, []);\n\n const appliedFilters = useMemo(() => {\n const chips: ReactNode[] = [];\n\n const deleteClickHandler = (name: LearningPathsAllFilterNamesEnum) => {\n let value = null as null | undefined | '';\n\n if (name === LearningPathsAllFilterNamesEnum.SEARCH_BY_QUERY) {\n value = '';\n }\n\n const updated: ILearningPathsAllFilter = {\n ...filter,\n [name]: value,\n };\n setFilterLearningPathsAll(updated);\n };\n\n const resetDropdownFilter = (propName: string, id: string | number) => {\n const updated: ILearningPathsAllFilter = cloneDeep(filter);\n updated[propName] = updated[propName].filter((pId: number) => pId !== id);\n setFilterLearningPathsAll(updated);\n };\n\n // string[] filters\n\n filesAllLearningPathsFilterList.forEach((learningPathsAllFilter) => {\n const mappedFilterName = learningPathsAllFilterToFilterNameMap[learningPathsAllFilter];\n const current = filter[mappedFilterName];\n\n if (current instanceof Array && current.length > 0) {\n current.forEach((id) => {\n const currentFilter = filterEntities[mappedFilterName][id];\n const label = currentFilter?.displayText ? currentFilter?.displayText : currentFilter?.name;\n\n !!currentFilter &&\n chips.push(\n <Tag\n withFilterChip\n key={`${mappedFilterName}-${id}`}\n label={label}\n deleteHandler={() => resetDropdownFilter(mappedFilterName, currentFilter.id)}\n />\n );\n });\n }\n });\n\n if (!!filter.query) {\n chips.push(\n <Tag\n withFilterChip\n key={filter.query}\n label={filter.query}\n deleteHandler={() => deleteClickHandler(LearningPathsAllFilterNamesEnum.SEARCH_BY_QUERY)}\n />\n );\n }\n\n return chips;\n }, [filter, setFilterLearningPathsAll, filterEntities]);\n\n const buttonWithAdminPermissions = useMemo(\n () => (\n <ButtonWithAdminPermissions\n withPrimary={false}\n withUSAAndSuperAdminRole\n clickHandler={() => redirectToCreateLearningPath()}\n >\n Create New\n </ButtonWithAdminPermissions>\n ),\n [redirectToCreateLearningPath]\n );\n\n return (\n <PageViewHeader\n heading=\"Learning Paths\"\n sort={renderSortOrder}\n filters={appliedFilters}\n action={buttonWithAdminPermissions}\n />\n );\n};\n","import React, {useCallback, useEffect, useMemo, useRef} from 'react';\nimport {useBeforeunload} from 'react-beforeunload';\nimport {Prompt} from 'react-router-dom';\nimport {Loading, Table} from 'components-lib';\nimport {PageLayoutWithFixedAreas} from 'layout/components';\nimport {LearningPathContentFooter, LearningPathContentHeader} from './components';\nimport {getFilteredLPColumns, learningPathsColumns, learningPathsMessages} from '../../utils';\nimport {LearningPathsActionButtons, ModalClone} from '..';\nimport {useLearningPaths, useLearningPathsAllStoreActions} from '../../hooks';\nimport {ILearningPathListItem} from 'models';\nimport {USAAndSuperAdminRoles, usePermissions} from 'permissions';\nimport {useModal} from 'hooks';\nimport {FormContextProvider} from 'forms/formik/FormContextProvider';\n\nexport const LearningPathsContent = () => {\n const {loading, learningPathsAllIds, learningPathsAllEntities, exporting, fetchLearningPaths} = useLearningPaths();\n const {clearLearningPaths} = useLearningPathsAllStoreActions();\n const {hasPermission} = usePermissions();\n const {isOpen: isCloneModalOpen, setIsOpen: setIsCloneModalOpen} = useModal();\n\n const shouldFilterColumns = !hasPermission(USAAndSuperAdminRoles);\n const hasSuperAndUSAAdminPermission = hasPermission(USAAndSuperAdminRoles);\n const cloneLearningPathIdRef = useRef<string>(null);\n\n useEffect(() => {\n fetchLearningPaths();\n\n return () => {\n clearLearningPaths();\n };\n }, [fetchLearningPaths, clearLearningPaths]);\n\n useBeforeunload(() => {\n if (exporting) {\n return learningPathsMessages.warningUnsavedChanges;\n }\n });\n\n const openModalCloneClickHandler = useCallback(\n (id: string) => {\n cloneLearningPathIdRef.current = id;\n setIsCloneModalOpen(true);\n },\n [setIsCloneModalOpen]\n );\n\n const columns = useMemo(\n () => (shouldFilterColumns ? getFilteredLPColumns(learningPathsColumns) : learningPathsColumns),\n [shouldFilterColumns]\n );\n\n const rows = useMemo(() => {\n if (!learningPathsAllIds.length) {\n return [];\n }\n\n return learningPathsAllIds.map((key: string) => {\n const learningPath = learningPathsAllEntities[key] as ILearningPathListItem;\n const {id, title, programYear, status, resourcesCount} = learningPath;\n\n return {\n name: title,\n programYear: programYear ?? '',\n status: status ?? '',\n resourcesCount: resourcesCount ?? '',\n actions: (\n <LearningPathsActionButtons\n id={id}\n disabled={!hasSuperAndUSAAdminPermission}\n openModalCloneClickHandler={() => openModalCloneClickHandler(id)}\n />\n ),\n };\n });\n }, [learningPathsAllEntities, learningPathsAllIds, hasSuperAndUSAAdminPermission, openModalCloneClickHandler]);\n\n const hasRows = !!rows.length;\n\n return (\n <PageLayoutWithFixedAreas header={<LearningPathContentHeader />} footer={<LearningPathContentFooter />}>\n {loading ? <Loading /> : <Table rows={rows} columns={columns} hasRows={hasRows} />}\n {isCloneModalOpen && (\n <FormContextProvider>\n <ModalClone\n learningPathId={cloneLearningPathIdRef.current}\n isOpen={isCloneModalOpen}\n setIsOpen={setIsCloneModalOpen}\n withSubmitButton={false}\n />\n </FormContextProvider>\n )}\n <Prompt when={exporting} message={learningPathsMessages.warningUnsavedChanges} />\n </PageLayoutWithFixedAreas>\n );\n};\n","import React, {FC} from 'react';\nimport {Redirect, Route, Switch} from 'react-router-dom';\nimport {pages, paths} from 'paths';\nimport {LearningPathsViewAll} from './views/all';\nimport {LearningPathViewCreate} from './views/create';\nimport {LearningPathViewEdit} from './views/edit';\nimport {AdminRoles, withRole} from 'permissions';\n\nconst LearningPathsViewAllEnhanced: () => JSX.Element = withRole(\n AdminRoles,\n `${paths.adminPortal.root}${paths.noPermission}`\n)(LearningPathsViewAll);\n\nconst LearningPathViewCreateEnhanced: () => JSX.Element = withRole(\n AdminRoles,\n `${paths.adminPortal.root}${paths.noPermission}`\n)(LearningPathViewCreate);\n\nconst LearningPathViewEditEnhanced: () => JSX.Element = withRole(\n AdminRoles,\n `${paths.adminPortal.root}${paths.noPermission}`\n)(LearningPathViewEdit);\n\nexport const LearningPaths: FC = () => {\n return (\n <Switch>\n <Route\n exact\n path={pages.adminPortal.learningPaths.root}\n render={() => <Redirect to={pages.adminPortal.learningPaths.all} />}\n />\n <Route path={pages.adminPortal.learningPaths.all} component={LearningPathsViewAllEnhanced} />\n <Route path={pages.adminPortal.learningPaths.create} component={LearningPathViewCreateEnhanced} />\n <Route path={pages.adminPortal.learningPaths.edit} component={LearningPathViewEditEnhanced} />\n </Switch>\n );\n};\n","import React from 'react';\nimport {PageLayoutTwoCol} from 'layout/components';\nimport {LearningPathsContent, LearningPathsSidebar} from './components';\n\nexport const LearningPathsViewAll = () => {\n return <PageLayoutTwoCol sidebar={<LearningPathsSidebar />} content={<LearningPathsContent />} />;\n};\n","import {useParams} from 'react-router-dom';\nimport {toNumber} from 'utils';\n\ninterface IInstrumentIdParams {\n id: string;\n}\n\nexport const useInstrumentIdParams = () => {\n const {id} = useParams<IInstrumentIdParams>();\n const instrumentId = toNumber(id);\n\n return {instrumentId};\n};\n","import {useCallback, useMemo} from 'react';\nimport {batch, useSelector} from 'react-redux';\nimport {useLocation} from 'react-router-dom';\nimport {unwrapResult} from '@reduxjs/toolkit';\nimport {downloadExport, IInstrumentDetailsFormBaseValues, mapAreaProgramClassExport, mapUpdateInstrument} from '..';\nimport {useInstruments} from '../../hooks';\nimport {ActiveModeEnum, useAppDispatch, useNavigate, useViewEditMode} from 'hooks';\nimport {IGetAreaProgramClassExportResponse, IGetGeneralInstrumentExportResponse} from 'models';\nimport {\n activeTemplateSelector,\n surveyForPreviewTemplateSelector,\n fetchAreaProgramClassExportThunk,\n fetchGeneralInstrumentExportThunk,\n fetchInstrumentForPreview,\n fetchInstrumentThunk,\n publishMasterInstrumentThunk,\n unPublishSessionInstrumentThunk,\n updateInstrumentThunk,\n fetchAreaProgramClassDetailedExportThunk,\n} from '../../store';\nimport {createLinkForDownload, toNumber} from 'utils';\nimport {pages} from 'paths';\nimport {useInstrumentIdParams} from './useInstrumentIdParams';\n\nconst pathNamePreviewWithAnswers = 'preview-answers';\n\nexport function useInstrument(templateId?: number) {\n const dispatch = useAppDispatch();\n const location = useLocation();\n const {instrumentId} = useInstrumentIdParams();\n const {pageLoading} = useInstruments();\n const {activeMode, setActiveMode} = useViewEditMode();\n const {goBackOptionally, push} = useNavigate();\n\n const templateEntities = useSelector(activeTemplateSelector);\n const surveyForPreviewTemplateEntitites = useSelector(surveyForPreviewTemplateSelector);\n\n const backButtonClickHandler = useCallback(() => {\n goBackOptionally(pages.adminPortal.instruments.all);\n }, [goBackOptionally]);\n\n const fetchInstrumentById: (templateId: number) => void = useMemo(\n () => (templateId: number) => dispatch(fetchInstrumentThunk(templateId)),\n [dispatch]\n );\n\n const fetchInstrumentForPreviewById: (templateId: number) => void = useMemo(\n () => (templateId: number) => dispatch(fetchInstrumentForPreview(templateId)),\n [dispatch]\n );\n\n const publishMasterTemplate: (templateId: number, onClose: () => void) => void = useMemo(\n () => (templateId: number, onClose: () => void) =>\n dispatch(publishMasterInstrumentThunk(templateId))\n .then(unwrapResult)\n .then(() => {\n onClose();\n fetchInstrumentById(templateId);\n })\n .catch(() => onClose),\n [dispatch, fetchInstrumentById]\n );\n\n const getGeneralInstrumentExport: (templateId: number) => void = useMemo(\n () => (templateId: number) =>\n dispatch(fetchGeneralInstrumentExportThunk(templateId))\n .then(unwrapResult)\n .then((parsedBody: IGetGeneralInstrumentExportResponse) => {\n const {mimeType, data, fileName} = parsedBody;\n createLinkForDownload(`data:${mimeType};base64,${data}`, fileName);\n }),\n [dispatch]\n );\n\n const getAreaProgramClassExport = useMemo(\n () => (programId: number, sessionId?: number, areaId?: number) =>\n dispatch(fetchAreaProgramClassExportThunk(mapAreaProgramClassExport(programId, sessionId, areaId)))\n .then(unwrapResult)\n .then((parsedBody: IGetAreaProgramClassExportResponse) => {\n const {mimeType, data, fileName} = parsedBody;\n downloadExport(mimeType, data, fileName);\n }),\n [dispatch]\n );\n\n const getAreaProgramClassDetailedExport = useMemo(\n () => (programId: number, sessionId?: number, areaId?: number) =>\n dispatch(fetchAreaProgramClassDetailedExportThunk(mapAreaProgramClassExport(programId, sessionId, areaId)))\n .then(unwrapResult)\n .then((parsedBody: IGetAreaProgramClassExportResponse) => {\n const {mimeType, data, fileName} = parsedBody;\n downloadExport(mimeType, data, fileName);\n }),\n [dispatch]\n );\n\n const isRoutePreviewWithAnswers = location?.pathname.includes(pathNamePreviewWithAnswers);\n\n const activeTemplate = useMemo(() => templateEntities[templateId], [templateEntities, templateId]);\n\n const surveyForPreviewTemplate = useMemo(() => surveyForPreviewTemplateEntitites[templateId], [\n surveyForPreviewTemplateEntitites,\n templateId,\n ]);\n\n const updateInstrumentAndSetViewMode = useCallback(\n (setSubmitting?: (isSubmitting: boolean) => void) =>\n batch(() => {\n setSubmitting(false);\n setActiveMode(ActiveModeEnum.view);\n }),\n [setActiveMode]\n );\n\n const updateInstrument: (\n formData: IInstrumentDetailsFormBaseValues,\n setSubmitting?: (isSubmitting: boolean) => void\n ) => void = useCallback(\n (formData, setSubmitting) => {\n const payload = mapUpdateInstrument(formData, activeTemplate);\n dispatch(updateInstrumentThunk(payload))\n .then(unwrapResult)\n /**\n * Update the instrument changes and go back to view mode\n */\n .then(() => updateInstrumentAndSetViewMode(setSubmitting))\n .catch(() => updateInstrumentAndSetViewMode(setSubmitting));\n },\n [dispatch, updateInstrumentAndSetViewMode, activeTemplate]\n );\n\n const setActiveModeHandler: () => void = useCallback(() => {\n setActiveMode(activeMode === ActiveModeEnum.view ? ActiveModeEnum.edit : ActiveModeEnum.view);\n }, [activeMode, setActiveMode]);\n\n const classRelatedInstrumentEditConfirmationHandler: () => void = useCallback(() => {\n dispatch(unPublishSessionInstrumentThunk(instrumentId))\n .then(unwrapResult)\n .then(() => {\n setActiveModeHandler();\n });\n }, [dispatch, instrumentId, setActiveModeHandler]);\n\n const editItemsClickHandler: () => void = useCallback(() => {\n push(`${pages.adminPortal.instruments.buildLink}/${instrumentId}`);\n }, [push, instrumentId]);\n\n const previewClickHandler: () => void = useCallback(() => {\n push(`${pages.adminPortal.instruments.previewLink}/${instrumentId}`);\n }, [instrumentId, push]);\n\n const previewWithAnswersClickHandler: () => void = useCallback(() => {\n push(`${pages.adminPortal.instruments.previewWithAnswersLink}/${instrumentId}`);\n }, [instrumentId, push]);\n\n const exportGeneralClickHandler: () => void = useCallback(() => getGeneralInstrumentExport(toNumber(instrumentId)), [\n instrumentId,\n getGeneralInstrumentExport,\n ]);\n\n return {\n pageLoading,\n activeTemplate,\n surveyForPreviewTemplate,\n isRoutePreviewWithAnswers,\n activeMode,\n\n fetchInstrumentById,\n fetchInstrumentForPreviewById,\n publishMasterTemplate,\n getGeneralInstrumentExport,\n getAreaProgramClassExport,\n getAreaProgramClassDetailedExport,\n setActiveMode,\n backButtonClickHandler,\n classRelatedInstrumentEditConfirmationHandler,\n setActiveModeHandler,\n editItemsClickHandler,\n previewClickHandler,\n previewWithAnswersClickHandler,\n exportGeneralClickHandler,\n updateInstrument,\n };\n}\n","import {useState} from 'react';\n\nexport const useInstrumentModals = () => {\n const [isDeleteModalOpen, setIsDeleteModalOpen] = useState<boolean>(false);\n const handleDeleteModalOpen = () => setIsDeleteModalOpen(true);\n const handleDeleteModalClose = () => setIsDeleteModalOpen(false);\n\n const [isPublishModalOpen, setIsPublishModalOpen] = useState<boolean>(false);\n const handlePublishModalOpen = () => setIsPublishModalOpen(true);\n const handlePublishModalClose = () => setIsPublishModalOpen(false);\n\n const [isCloneModalOpen, setIsCloneModalOpen] = useState<boolean>(false);\n const handleCloneModalOpen = () => setIsCloneModalOpen(true);\n\n return {\n isDeleteModalOpen,\n setIsDeleteModalOpen,\n handleDeleteModalOpen,\n handleDeleteModalClose,\n isPublishModalOpen,\n handlePublishModalOpen,\n handlePublishModalClose,\n isCloneModalOpen,\n handleCloneModalOpen,\n setIsCloneModalOpen,\n };\n};\n","export enum ProgramClassesPaperAssessmentsFilterNamesEnum {\n SEARCH = 'search',\n}\n","export enum ProgramClassPaperAssessmentsOrderingEnum {\n Name = 'Name',\n Created = 'Created',\n}\n","export enum PaperAssessmentsSortDropdownNameEnum {\n NAME_ASC = 'Name: A-Z',\n NAME_DESC = 'Name: Z-A',\n CREATED_NEWEST = 'Created: Newest First',\n CREATED_OLDEST = 'Created: Oldest First',\n}\n","import React, {useCallback} from 'react';\nimport {batch} from 'react-redux';\nimport {Button} from 'components-lib';\nimport {useNavigate} from 'hooks';\nimport {pages} from 'paths';\nimport {BuilderEditModeEnum} from '../../enums';\nimport {useBuilder, useBuilderState, usePoolItemsPagination} from '../../hooks';\nimport {IBuilderEditMode} from '../../hooks/useBuilderEditMode';\n\ninterface IActionsBuilderViewProps {\n isEditMatrixMode: boolean;\n isEditInstructionalText: boolean;\n setBuilderEditMode: (builderMode: IBuilderEditMode) => void;\n loading: boolean;\n}\n\nexport function ActionsBuilderView({\n isEditMatrixMode,\n isEditInstructionalText,\n setBuilderEditMode,\n loading,\n}: IActionsBuilderViewProps) {\n const {push} = useNavigate();\n const {instrumentId, save, pageSaving, addInstructionalText} = useBuilder();\n const {\n initialBuilderFilter,\n setSearch,\n getPoolItems,\n clearPoolItems,\n setBuilderFilterInstruments,\n setBuilderItems,\n } = useBuilderState();\n const {currentPage} = usePoolItemsPagination();\n const shouldDisableButtons = !!loading || pageSaving;\n const shouldRenderButtons = !isEditMatrixMode && !isEditInstructionalText;\n\n const clearBuilderItems = useCallback(() => {\n batch(() => {\n setSearch('');\n setBuilderFilterInstruments(initialBuilderFilter);\n clearPoolItems();\n getPoolItems(currentPage);\n });\n }, [setSearch, getPoolItems, clearPoolItems, currentPage, initialBuilderFilter, setBuilderFilterInstruments]);\n\n const discardClickHandler = useCallback(() => push(`${pages.adminPortal.instruments.detailsRoot}/${instrumentId}`), [\n instrumentId,\n push,\n ]);\n\n const dismissClickHandler = useCallback(() => {\n if (isEditMatrixMode) {\n clearBuilderItems();\n setBuilderItems();\n }\n\n if (isEditMatrixMode || isEditInstructionalText) {\n return setBuilderEditMode({\n questionAnswerStackId: null,\n position: null,\n defaultAnswerStackId: null,\n mode: BuilderEditModeEnum.allTypes,\n });\n }\n\n return discardClickHandler();\n }, [\n clearBuilderItems,\n discardClickHandler,\n isEditMatrixMode,\n isEditInstructionalText,\n setBuilderEditMode,\n setBuilderItems,\n ]);\n\n const instructionalTextClickHandler = useCallback(() => {\n addInstructionalText();\n }, [addInstructionalText]);\n\n const saveAndExitClickHandler = useCallback(() => save(discardClickHandler), [discardClickHandler, save]);\n\n return (\n <div>\n <Button.Secondary disabled={shouldDisableButtons} clickHandler={dismissClickHandler}>\n Dismiss\n </Button.Secondary>\n {shouldRenderButtons && (\n <>\n <Button.Secondary disabled={shouldDisableButtons} clickHandler={instructionalTextClickHandler}>\n Instructional Text\n </Button.Secondary>\n <Button.Secondary disabled={shouldDisableButtons} clickHandler={saveAndExitClickHandler}>\n Save and Exit\n </Button.Secondary>\n <Button.Primary disabled={shouldDisableButtons} clickHandler={save}>\n {pageSaving ? 'Loading' : 'Save'}\n </Button.Primary>\n </>\n )}\n </div>\n );\n}\n","import React, {Fragment, useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {CardBody} from './CardBody';\nimport {Card, Row, Text} from 'components-lib';\nimport {QuestionAnswersTypeEnum} from 'enums';\nimport {useEntityCard} from 'hooks';\nimport {useBuilderItemsEntities} from '../../hooks';\nimport {isInstructionalTextQuestion, isMatrixQuestion} from '../../utils';\nimport {getAnswersComponentMap} from 'admin/library/utils';\nimport {IAnswer, IAnswersMatrixBuilder, IComponentWithChildren, IInstrumentItem, IItemColumn} from 'models';\n\ninterface ICardItemProps extends IComponentWithChildren {\n questionId: number;\n answerStackId: number;\n columns?: IItemColumn[] | IAnswersMatrixBuilder[];\n rows?: IAnswer[];\n position?: number;\n totalItems?: number;\n type?: QuestionAnswersTypeEnum;\n text?: string;\n builderInstructionalText?: string;\n html?: string;\n editClickHandler?: () => void;\n deleteClickHandler?: () => void;\n moveHandler?: (movedItemIdx: number, newPosition: number) => void;\n linkClickHandler?: () => void;\n openInfoLinkClickHandler?: () => void;\n}\n\n// TODO merge with the other CardItem component once all the interfaces are unified\nexport function CardItem({\n children,\n questionId,\n answerStackId,\n columns,\n rows,\n position,\n totalItems,\n type,\n builderInstructionalText,\n html,\n editClickHandler,\n deleteClickHandler,\n moveHandler,\n linkClickHandler,\n openInfoLinkClickHandler,\n}: ICardItemProps) {\n let title: string;\n let linkedQuestionAnswerStackId: number;\n let answers: any[];\n\n const isMatrix = isMatrixQuestion(type);\n const isInstructionalText = isInstructionalTextQuestion(type);\n const classes = useStyles({isMatrix, isInstructionalText});\n const {builderItemsEntities} = useBuilderItemsEntities();\n const answersComponentMap = getAnswersComponentMap(true);\n const cardId = !isInstructionalText ? answerStackId : null;\n\n useEntityCard(answersComponentMap, type, questionId);\n\n const AnswersComponent: any = useMemo(() => answersComponentMap[type], [type, answersComponentMap]);\n\n const answersContent = useMemo(\n () => () => {\n if (!answersComponentMap[type]) {\n const error = `Unknown question answer stack: ${type}!`;\n return <Fragment>{error && <Text.Error>{error}</Text.Error>}</Fragment>;\n }\n\n return (\n <AnswersComponent\n answers={answers}\n columns={columns}\n rows={rows}\n questionId={questionId}\n html={html}\n type={type}\n builderInstructionalText={builderInstructionalText}\n />\n );\n },\n [AnswersComponent, answers, columns, rows, questionId, type, builderInstructionalText, html, answersComponentMap]\n );\n\n const itemBuilder: IInstrumentItem = builderItemsEntities[answerStackId];\n\n /*\n * The reason for the code block below is that not all items from the pool are loaded at once.\n */\n if (itemBuilder) {\n title = itemBuilder.text || itemBuilder.title;\n answers = itemBuilder.choices;\n linkedQuestionAnswerStackId = itemBuilder.linkedQuestionAnswerStackId;\n }\n\n return (\n <Card>\n <CardBody\n id={cardId}\n title={title}\n linkedQuestionAnswerStackId={linkedQuestionAnswerStackId}\n position={position}\n totalItems={totalItems}\n type={type}\n moveHandler={moveHandler}\n withDelete={!!deleteClickHandler}\n deleteClickHandler={deleteClickHandler}\n withEdit={!!editClickHandler}\n editClickHandler={editClickHandler}\n withLink={!!linkClickHandler && !isInstructionalText}\n linkClickHandler={linkClickHandler}\n withItemInfo={!!openInfoLinkClickHandler}\n openInfoLinkClickHandler={openInfoLinkClickHandler}\n />\n <Row justify=\"flex-start\" classes={{root: classes.answers}}>\n <Fragment>{answersContent()}</Fragment>\n </Row>\n {children}\n </Card>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n answers: ({isMatrix}: {isMatrix: boolean}) => ({\n marginLeft: isMatrix ? 0 : theme.spacing(4),\n }),\n}));\n","import React, {useCallback, useMemo} from 'react';\nimport {BuilderItemDragTypeEnum} from 'admin/library/enums';\nimport {IBuilderDragItem} from 'admin/library/models';\nimport {QuestionAnswersTypeEnum} from 'enums';\nimport {isMatrixQuestion} from '../../utils';\nimport {CardItem} from '../CardItem/CardItem';\ninterface IBuilderItemProps {\n builderItem: IBuilderDragItem;\n position: number;\n totalItems: number;\n canDelete?: boolean;\n deleteHandler: (questionAnswerStackId: number) => void;\n editClickHandler?: (questionAnswerStackId: number, defaultAnswerStackId: number, position: number) => void;\n editInstructionalTextClickHandler?: (\n questionAnswerStackId: number,\n defaultAnswerStackId: number,\n position: number\n ) => void;\n moveHandler: (movedItemIdx: number, newPosition: number) => void;\n linkBuilderItem?: (item: IBuilderDragItem) => void;\n openInfoLinkClickHandler?: (item: IBuilderDragItem) => void;\n}\n\nexport function BuilderItem({\n builderItem,\n position,\n totalItems,\n canDelete = true,\n editClickHandler,\n editInstructionalTextClickHandler,\n deleteHandler,\n moveHandler,\n linkBuilderItem,\n openInfoLinkClickHandler,\n}: IBuilderItemProps) {\n const item: IBuilderDragItem = useMemo(\n () => ({\n questionId: builderItem.questionId,\n defaultAnswerStackId: builderItem.defaultAnswerStackId,\n questionType: builderItem.questionType,\n questionIdOriginal: builderItem.questionIdOriginal,\n type: BuilderItemDragTypeEnum.builderItem,\n answerStackId: builderItem.answerStackId,\n originalAnswerStackId: builderItem.originalAnswerStackId,\n linkedQuestionAnswerStackId: builderItem.linkedQuestionAnswerStackId,\n builderInstructionalText: builderItem.builderInstructionalText,\n html: builderItem.html,\n position,\n }),\n [builderItem, position]\n );\n\n const isMatrix = isMatrixQuestion(builderItem.questionType);\n const isInstructionalText = builderItem.questionType === QuestionAnswersTypeEnum.html;\n\n const editClickHandlerChanger = useMemo(() => {\n if (editClickHandler && isMatrix) {\n return () => editClickHandler(item.answerStackId, item.defaultAnswerStackId, position);\n }\n\n if (editClickHandler && isInstructionalText) {\n return () => editInstructionalTextClickHandler(item.answerStackId, item.defaultAnswerStackId, position);\n }\n\n return null;\n }, [\n editClickHandler,\n editInstructionalTextClickHandler,\n isInstructionalText,\n isMatrix,\n item.answerStackId,\n item.defaultAnswerStackId,\n position,\n ]);\n\n const linkClickHandlerChanger = linkBuilderItem && !isMatrix ? () => linkBuilderItem(item) : null;\n const openInfoLinkClickChanger = openInfoLinkClickHandler && !isMatrix ? () => openInfoLinkClickHandler(item) : null;\n\n const deleteClickHandler = useCallback(() => deleteHandler(item.answerStackId), [deleteHandler, item.answerStackId]);\n\n return (\n <CardItem\n key={item.questionId}\n questionId={item.questionId}\n answerStackId={item.answerStackId}\n type={item.questionType}\n text={item.text}\n html={item.html}\n columns={builderItem.columns}\n rows={builderItem.rows}\n position={position}\n totalItems={totalItems}\n deleteClickHandler={canDelete && deleteClickHandler}\n editClickHandler={editClickHandlerChanger}\n moveHandler={moveHandler}\n linkClickHandler={linkClickHandlerChanger}\n openInfoLinkClickHandler={openInfoLinkClickChanger}\n />\n );\n}\n","import React, {useCallback, useRef} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {ModalDelete} from 'admin/components';\nimport {IBuilderDragItem} from 'admin/library/models';\nimport {Icon, Text} from 'components-lib';\nimport {DropContainer} from 'dragAndDrop';\nimport {useModal} from 'hooks';\nimport {useBuilderDrop} from '../../hooks';\nimport {BuilderItem} from '../BuilderItem/BuilderItem';\nimport {DroppableArea} from '../DroppableArea/DroppableArea';\nimport {isFunction} from 'utils/functions';\nimport {getCanLinkItem} from '../../utils';\nimport {IInstrumentDetails} from 'models';\n\ninterface IBuilderProps {\n pageLoading?: boolean;\n activeTemplate?: IInstrumentDetails;\n items: IBuilderDragItem[];\n deleteBuilderItemHandler?: (position: number) => void;\n editClickHandler?: (questionAnswerStackId: number, defaultAnswerStackId: number, position: number) => void;\n editInstructionalTextClickHandler?: (\n questionAnswerStackId: number,\n defaultAnswerStackId: number,\n position: number\n ) => void;\n moveBuilderItemHandler?: (movedItemIdx: number, newPosition: number) => void;\n linkBuilderItemHandler?: (item: IBuilderDragItem) => void;\n handleOpenModalLink?: () => void;\n handleOpenInfoLinkModal?: () => void;\n setCurrentBuilderItem?: (item: IBuilderDragItem) => void;\n}\n\nexport function Builder({\n pageLoading = false,\n items,\n editClickHandler,\n editInstructionalTextClickHandler,\n deleteBuilderItemHandler,\n moveBuilderItemHandler,\n handleOpenModalLink,\n handleOpenInfoLinkModal,\n setCurrentBuilderItem,\n activeTemplate,\n}: IBuilderProps) {\n const classes = useStyles();\n const {drop, isActive} = useBuilderDrop();\n const {isOpen: isDeleteBuilderItemModalOpen, setIsOpen: setIsDeleteBuilderItemModalOpen} = useModal();\n const deleteBuilderItemRef: any = useRef();\n\n const deleteBuilderItem = (questionAnswerStackId: number) => () => deleteBuilderItemHandler(questionAnswerStackId);\n\n const linkBuilderItemClickHandler = useCallback(\n (item) => {\n setCurrentBuilderItem(item);\n handleOpenModalLink();\n },\n [setCurrentBuilderItem, handleOpenModalLink]\n );\n\n const openInfoLinkClickHandler = useCallback(\n (item) => {\n setCurrentBuilderItem(item);\n handleOpenInfoLinkModal();\n },\n [setCurrentBuilderItem, handleOpenInfoLinkModal]\n );\n\n return (\n <>\n <DropContainer drop={drop}>\n {!items.length && !pageLoading ? (\n <DroppableArea isActive={isActive}>\n <>\n <Icon.FolderIcon disabled={false} />\n <Text.Caption>Drag and Drop items here from the left-hand sidebar.</Text.Caption>\n </>\n </DroppableArea>\n ) : (\n <>\n <div className={classes.droppableArea}>\n {isActive && <DroppableArea isActive={isActive} asOverlay />}\n {items.length &&\n items.map((item: IBuilderDragItem, idx: number) => {\n const canLinkBuilderItem = getCanLinkItem(item, activeTemplate?.type?.id);\n\n return (\n <BuilderItem\n key={idx}\n canDelete={isFunction(deleteBuilderItemHandler)}\n builderItem={item}\n position={idx}\n totalItems={items.length}\n deleteHandler={(questionAnswerStackId) => {\n deleteBuilderItemRef.current = deleteBuilderItem(questionAnswerStackId);\n setIsDeleteBuilderItemModalOpen(true);\n }}\n editClickHandler={editClickHandler}\n editInstructionalTextClickHandler={editInstructionalTextClickHandler}\n moveHandler={moveBuilderItemHandler}\n linkBuilderItem={canLinkBuilderItem && !!setCurrentBuilderItem && linkBuilderItemClickHandler}\n openInfoLinkClickHandler={(item) => {\n !!setCurrentBuilderItem && openInfoLinkClickHandler(item);\n }}\n />\n );\n })}\n </div>\n </>\n )}\n </DropContainer>\n <ModalDelete\n text=\"Are you sure you want to delete this item? Once the survey has been published you won't be able to add it\n again.\"\n isOpen={isDeleteBuilderItemModalOpen}\n setIsOpen={setIsDeleteBuilderItemModalOpen}\n confirmHandler={() => deleteBuilderItemRef.current()}\n />\n </>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n droppableArea: {\n position: 'relative',\n marginRight: theme.spacing(3),\n },\n}));\n","import {makeStyles} from '@material-ui/core';\nimport {Text} from 'components-lib';\nimport React from 'react';\n\ninterface IMatrixEditExtraHeaderProps {\n id: number;\n}\n\nexport function MatrixEditExtraHeader({id}: IMatrixEditExtraHeaderProps) {\n const classes = useStyles();\n return (\n <div className={classes.root}>\n <Text.Heading as=\"h4\">Editing matrix item with ID: {id} </Text.Heading>\n </div>\n );\n}\n\nconst useStyles = makeStyles({\n root: {\n position: 'relative',\n bottom: 20,\n },\n});\n","import React, {Fragment, useCallback, useMemo} from 'react';\nimport {IconButton, makeStyles} from '@material-ui/core';\n\nimport {Answers} from 'admin/library/components';\nimport {IBuilderDragItem} from 'admin/library/models';\nimport {Accordion, Row, Icon} from 'components-lib';\nimport {CardQuestionSimple} from '../CardQuestionSimple/CardQuestionSimple';\nimport {ModalStackRelatedFilters} from '..';\n\nimport {QuestionAnswersTypeEnum} from 'enums';\nimport {borderGeneral} from 'styles';\nimport {toNumber} from 'utils';\nimport {useModal} from 'hooks';\nimport {useBuilderPoolItemsEntities} from '../../hooks';\n\ninterface IPoolItemProps {\n itemId: number;\n dropHandler: (position: number) => (item: IBuilderDragItem) => void;\n type: QuestionAnswersTypeEnum;\n builderItems: IBuilderDragItem[];\n}\n\nexport function PoolItem({itemId, type, dropHandler, builderItems}: IPoolItemProps) {\n const classes = useStyles();\n const {builderPoolItemsEntities} = useBuilderPoolItemsEntities();\n const item = builderPoolItemsEntities[itemId];\n const disabled = shouldItemBeDisabled(toNumber(itemId), builderItems);\n\n const {isOpen: isStackRelatedFiltersModalOpen, setIsOpen: setIsStackRelatedFiltersModalOpen} = useModal();\n const handleOpenStackRelatedFiltersModal = useCallback(() => setIsStackRelatedFiltersModalOpen(true), [\n setIsStackRelatedFiltersModalOpen,\n ]);\n\n const headingActions = useMemo(\n () => (\n <IconButton onClick={handleOpenStackRelatedFiltersModal}>\n <Icon.FilterListIcon />\n </IconButton>\n ),\n [handleOpenStackRelatedFiltersModal]\n );\n\n if (!item) return null;\n\n return (\n <Accordion heading={<CardQuestionSimple type={type} text={item.text} />} className={classes.root}>\n <Row justify=\"flex-start\">\n {item.elements?.map(\n ({questionAnswerStackId, questionType, choices, details, hasMatchedMetadata, metaData}, idx: number) => (\n <Fragment key={idx}>\n <Answers\n answers={choices}\n type={questionType}\n draggable\n questionId={toNumber(itemId)}\n stackId={questionAnswerStackId}\n dropHandler={dropHandler(idx)}\n disabled={disabled}\n details={details}\n headingActions={headingActions}\n hasMatchedMetadata={hasMatchedMetadata}\n />\n {isStackRelatedFiltersModalOpen && (\n <ModalStackRelatedFilters\n metaData={metaData}\n area={details?.creatorArea}\n isOpen={isStackRelatedFiltersModalOpen}\n setIsOpen={setIsStackRelatedFiltersModalOpen}\n />\n )}\n </Fragment>\n )\n )}\n </Row>\n </Accordion>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n ...borderGeneral,\n padding: theme.spacing(2),\n },\n}));\n\nfunction shouldItemBeDisabled(itemId: number, builderItems: IBuilderDragItem[]) {\n return !!builderItems.find((item) => itemId === item.questionId);\n}\n","import {makeStyles} from '@material-ui/core';\nimport {BuilderItemDragTypeEnum} from 'admin/library/enums';\nimport {IBuilderDragItem} from 'admin/library/models';\nimport {DragItem} from 'dragAndDrop';\nimport {IAnswer, TBuilderItemBase} from 'models';\nimport React from 'react';\nimport {useBuilderItemDrag} from '../../hooks';\nimport {CardQuestionSimple} from '../CardQuestionSimple/CardQuestionSimple';\n\ninterface IPoolItemMatrixModeProps {\n item: TBuilderItemBase;\n itemRows: IAnswer[];\n dropHandler?: (item: IBuilderDragItem) => void;\n}\n\nexport function PoolItemMatrixMode({item, itemRows, dropHandler}: IPoolItemMatrixModeProps) {\n const itemDrag: IBuilderDragItem = {\n questionId: item.id,\n questionType: item.questionType,\n type: BuilderItemDragTypeEnum.item,\n answerStackId: item.questionAnswerStackId,\n };\n\n const {drag, isDragging} = useBuilderItemDrag(itemDrag, dropHandler);\n const disabled = shouldBeDisabled(item.id, itemRows);\n const classes = useStyles({isDragging, disabled});\n\n return (\n <DragItem drag={drag}>\n <div className={classes.root}>\n <CardQuestionSimple type={item.questionType} text={item.questionText} withBorder withExtraPadding />\n </div>\n </DragItem>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: ({isDragging, disabled}: {isDragging: boolean; disabled: boolean}) => ({\n width: '100%',\n marginBottom: theme.spacing(2),\n cursor: 'move',\n opacity: isDragging || disabled ? 0.5 : 1,\n }),\n}));\n\nfunction shouldBeDisabled(id: number, itemRows: IAnswer[]) {\n const item = itemRows.find((row) => {\n return row.questionId === id;\n });\n return !!item;\n}\n","import React from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {IBuilderDragItem} from 'admin/library/models';\nimport {ListInfinite, Loading, Row, Text} from 'components-lib';\nimport {TBuilderItemBase} from 'models';\nimport {PoolItem} from '../PoolItem/PoolItem';\n\ninterface IPoolItemsListProps {\n hasMorePages: boolean;\n loading: boolean;\n builderItemsBase: TBuilderItemBase[];\n builderItems: any[];\n loadMoreHandler: () => void;\n dropHandler: (position: number) => (item: IBuilderDragItem) => void;\n}\nexport function PoolItemsList({\n hasMorePages,\n loading = false,\n builderItemsBase,\n builderItems,\n loadMoreHandler,\n dropHandler,\n}: IPoolItemsListProps) {\n const classes = useStyles();\n\n const hasBuilderItems = builderItemsBase.length > 0;\n const loadingSize = hasBuilderItems ? 20 : 40;\n\n return (\n <ListInfinite hasMorePages={hasMorePages} loadMoreHandler={loadMoreHandler} loading={loading}>\n {!!builderItemsBase.length &&\n builderItemsBase.map(({id, questionType}, idx) => (\n <PoolItem key={idx} itemId={id} dropHandler={dropHandler} builderItems={builderItems} type={questionType} />\n ))}\n\n <Row justify=\"center\" align=\"flex-start\" classes={{root: classes.loadingContainer}}>\n {loading && <Loading halfHeight={!hasBuilderItems} size={loadingSize} />}\n {loading && hasBuilderItems && <Text.Caption>Loading more items...</Text.Caption>}\n </Row>\n </ListInfinite>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n loadingContainer: {\n marginBottom: theme.spacing(2),\n },\n}));\n","import React from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {IBuilderDragItem} from 'admin/library/models';\nimport {ListInfinite, Loading, Row, Text} from 'components-lib';\nimport {TBuilderItemBase} from 'models';\nimport {useBuilderItemsEntities} from '../../hooks';\nimport {PoolItemMatrixMode} from '../PoolItemMatrixMode/PoolItemMatrixMode';\n\ninterface IPoolItemsListProps {\n parentQuestionId: number;\n hasMorePages: boolean;\n loading: boolean;\n builderItemsBase: TBuilderItemBase[];\n loadMoreHandler: () => void;\n dropHandler: (item: IBuilderDragItem) => void;\n}\n\nexport function PoolItemsMatrixList({\n parentQuestionId,\n hasMorePages,\n loading,\n builderItemsBase,\n loadMoreHandler,\n dropHandler,\n}: IPoolItemsListProps) {\n const classes = useStyles();\n const {builderItemsEntities} = useBuilderItemsEntities();\n\n const itemRows = builderItemsEntities[parentQuestionId].rows ?? [];\n const hasBuilderItems = builderItemsBase.length > 0;\n const loadingSize = hasBuilderItems ? 20 : 40;\n\n return (\n <ListInfinite hasMorePages={hasMorePages} loadMoreHandler={loadMoreHandler} loading={loading}>\n {!!builderItemsBase.length &&\n builderItemsBase.map((item, idx) => (\n <PoolItemMatrixMode key={idx} item={item} itemRows={itemRows} dropHandler={dropHandler} />\n ))}\n\n <Row justify=\"center\" align=\"flex-start\" classes={{root: classes.loadingContainer}}>\n {loading && <Loading halfHeight={!hasBuilderItems} size={loadingSize} />}\n {loading && hasBuilderItems && <Text.Caption>Loading more items...</Text.Caption>}\n </Row>\n </ListInfinite>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n loadingContainer: {\n marginBottom: theme.spacing(2),\n },\n}));\n","import {InstrumentsFilterNamesEnum} from 'admin/library/instruments/enums';\nimport * as Yup from 'yup';\n\nexport interface ISidebarBuilderFilterForm {\n [InstrumentsFilterNamesEnum.PILLARS]: string[];\n [InstrumentsFilterNamesEnum.EVALUATION_TYPE]: number[];\n [InstrumentsFilterNamesEnum.DOMAIN]: number[];\n [InstrumentsFilterNamesEnum.PROGRAMS]: number[];\n [InstrumentsFilterNamesEnum.LEARNING_OBJECTIVE]: string;\n [InstrumentsFilterNamesEnum.CATEGORY]: string;\n [InstrumentsFilterNamesEnum.COMPETENCY]: number[];\n [InstrumentsFilterNamesEnum.CONCEPT]: number[];\n [InstrumentsFilterNamesEnum.ADMINISTRATION]: number[];\n [InstrumentsFilterNamesEnum.SCHOOL_LEVEL]: number[];\n [InstrumentsFilterNamesEnum.AREAS]: number[];\n [InstrumentsFilterNamesEnum.SEARCH]: string; // Change with TEXT instead SEARCH\n}\n\nexport const formValidationSchema: any = Yup.object().shape({\n [InstrumentsFilterNamesEnum.SEARCH]: Yup.string(),\n [InstrumentsFilterNamesEnum.EVALUATION_TYPE]: Yup.array().of(Yup.number()),\n [InstrumentsFilterNamesEnum.PILLARS]: Yup.array().of(Yup.string()),\n [InstrumentsFilterNamesEnum.DOMAIN]: Yup.array().of(Yup.number()),\n [InstrumentsFilterNamesEnum.PROGRAMS]: Yup.array().of(Yup.number()),\n [InstrumentsFilterNamesEnum.CATEGORY]: Yup.string().ensure(),\n [InstrumentsFilterNamesEnum.COMPETENCY]: Yup.array().of(Yup.number()),\n [InstrumentsFilterNamesEnum.CONCEPT]: Yup.array().of(Yup.number()),\n [InstrumentsFilterNamesEnum.ADMINISTRATION]: Yup.array().of(Yup.number()),\n [InstrumentsFilterNamesEnum.SCHOOL_LEVEL]: Yup.array().of(Yup.number()),\n [InstrumentsFilterNamesEnum.AREAS]: Yup.array().of(Yup.number()),\n [InstrumentsFilterNamesEnum.LEARNING_OBJECTIVE]: Yup.string().ensure(),\n});\n","import React, {useCallback, useMemo} from 'react';\nimport {FormikHelpers} from 'formik';\nimport {InstrumentsFilterNamesEnum} from 'admin/library/instruments/enums';\nimport {Filters} from 'components-lib';\nimport {FiltersEnum, FiltersList} from 'filters-selections';\nimport {Form} from 'forms';\nimport {ISidebarBuilderFilterForm, formValidationSchema} from './sidebarBuilderBaseConfig';\nimport {usePermissions} from 'permissions';\nimport {AdminRolesItemsWithoutArea} from 'admin/library/items/enums';\nimport {useBuilder, useBuilderState, usePoolItemsPagination} from '../../hooks';\n\nconst filterList = [\n FiltersEnum.PillarMulti,\n FiltersEnum.EvaluationType,\n FiltersEnum.Domain,\n FiltersEnum.ProgramMulti,\n FiltersEnum.LearningObjective,\n FiltersEnum.Category,\n FiltersEnum.Competency,\n FiltersEnum.Concept,\n FiltersEnum.Administration,\n FiltersEnum.SchoolLevel,\n FiltersEnum.Areas,\n];\ninterface ISidebarBuilderViewProps {\n submitHandler: (data: ISidebarBuilderFilterForm, actions?: FormikHelpers<any>) => void;\n disableAll?: boolean;\n}\n\nexport function SidebarBuilderView({submitHandler, disableAll}: ISidebarBuilderViewProps) {\n const {pageLoading} = useBuilder();\n const {resetBuilderFilter, setSearch, builderFilter, searchText, getPoolItems} = useBuilderState();\n const {initialPage} = usePoolItemsPagination();\n\n const {hasPermission} = usePermissions();\n\n const initialValues: ISidebarBuilderFilterForm = useMemo(\n () => ({\n [InstrumentsFilterNamesEnum.PILLARS]: builderFilter[InstrumentsFilterNamesEnum.PILLARS],\n [InstrumentsFilterNamesEnum.EVALUATION_TYPE]: builderFilter[InstrumentsFilterNamesEnum.EVALUATION_TYPE],\n [InstrumentsFilterNamesEnum.DOMAIN]: builderFilter[InstrumentsFilterNamesEnum.DOMAIN],\n [InstrumentsFilterNamesEnum.PROGRAMS]: builderFilter[InstrumentsFilterNamesEnum.PROGRAMS],\n [InstrumentsFilterNamesEnum.LEARNING_OBJECTIVE]: builderFilter[InstrumentsFilterNamesEnum.LEARNING_OBJECTIVE],\n [InstrumentsFilterNamesEnum.CATEGORY]: builderFilter[InstrumentsFilterNamesEnum.CATEGORY],\n [InstrumentsFilterNamesEnum.COMPETENCY]: builderFilter[InstrumentsFilterNamesEnum.COMPETENCY],\n [InstrumentsFilterNamesEnum.CONCEPT]: builderFilter[InstrumentsFilterNamesEnum.CONCEPT],\n [InstrumentsFilterNamesEnum.ADMINISTRATION]: builderFilter[InstrumentsFilterNamesEnum.ADMINISTRATION],\n [InstrumentsFilterNamesEnum.SCHOOL_LEVEL]: builderFilter[InstrumentsFilterNamesEnum.SCHOOL_LEVEL],\n [InstrumentsFilterNamesEnum.SEARCH]: searchText,\n [InstrumentsFilterNamesEnum.AREAS]: builderFilter[InstrumentsFilterNamesEnum.AREAS],\n }),\n [builderFilter, searchText]\n );\n\n const clearButtonClickHandler = useCallback(() => {\n resetBuilderFilter();\n setSearch('');\n getPoolItems(initialPage);\n }, [resetBuilderFilter, setSearch, getPoolItems, initialPage]);\n\n const renderFiltersList = useMemo(() => {\n /**\n * JA Area Filter is visible only for Super and National Admins.\n */\n\n const shouldRenderAreaFilter = hasPermission(AdminRolesItemsWithoutArea);\n /**\n * Constant index: please see a bug: (https://mentormate.atlassian.net/browse/JADF-619)\n */\n\n const lastFilterIndex = 10;\n\n if (!shouldRenderAreaFilter) {\n filterList.splice(lastFilterIndex, 1);\n }\n\n return <FiltersList disableAll={pageLoading || disableAll} filters={filterList} />;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pageLoading]);\n\n return (\n <Form.Form<ISidebarBuilderFilterForm>\n initialValues={initialValues}\n validationSchema={formValidationSchema}\n submitHandler={submitHandler}\n >\n <Filters.FiltersPanel\n clearButtonClickHandler={clearButtonClickHandler}\n filters={renderFiltersList}\n searchFieldName={InstrumentsFilterNamesEnum.SEARCH}\n />\n </Form.Form>\n );\n}\n","import React from 'react';\nimport {FormNameEnum} from 'filters-selections';\nimport {Form} from 'forms';\nimport {InstrumentEditContainer} from '..';\n\nexport const InstrumentEditName = () => (\n <InstrumentEditContainer>\n <Form.Input name={FormNameEnum.templateName} />\n </InstrumentEditContainer>\n);\n","import React, {Fragment, useCallback} from 'react';\nimport {IQuestionAnswerStack, IWithModal} from 'models';\nimport {Accordion, Button, Modal, Row} from 'components-lib';\nimport {useFormikContext} from 'formik';\nimport {borderGeneral} from 'styles';\n\nimport {Form} from 'forms';\nimport {CardQuestionSimple} from '..';\nimport {makeStyles} from '@material-ui/core';\nimport {AnswersView} from 'admin/library/components/Answers/AnswersView';\nimport {FormNameEnum} from '../../enums';\nimport {ZERO_NUMBER} from 'utils/constants';\nimport {usePretestItem} from 'admin/library/instruments/hooks';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface IModalLinkItemsProps extends IWithModal {\n unlinkHandler?: () => void;\n}\n\nexport const ModalLinkItems = ({isOpen, setIsOpen, unlinkHandler}: IModalLinkItemsProps) => {\n const {possiblePretestItems} = usePretestItem();\n const {values, resetForm} = useFormikContext();\n const classes = useStyles();\n\n const stackGroup = values[FormNameEnum.linkedQuestionAnswerStackId];\n const stackGroupLength = stackGroup?.length;\n const isStackGroupLengthNotEmpty = stackGroupLength > ZERO_NUMBER;\n const selectedStack = stackGroup[ZERO_NUMBER];\n\n const closeHandler = useCallback(() => {\n resetForm();\n setIsOpen(false);\n }, [resetForm, setIsOpen]);\n\n const handleSelectElement = useCallback((item, selectedStack) => {\n const selectedItem = item.questionStackChoices.find(\n (stack: IQuestionAnswerStack) => stack.questionAnswerStackId === selectedStack\n );\n const isChecked = selectedStack === selectedItem?.questionAnswerStackId;\n\n return {\n selectedItem,\n isChecked,\n };\n }, []);\n\n return (\n <Modal isOpen={isOpen} handleClose={closeHandler} title=\"Link Pre- and Post item\" size=\"large\">\n {possiblePretestItems?.length ? (\n possiblePretestItems.map((item) => {\n const {isChecked} = handleSelectElement(item, selectedStack);\n return (\n <Accordion\n key={item?.id}\n heading={<CardQuestionSimple type={item.questionType} text={item.questionText} />}\n className={classes.root}\n initialIsExpanded={isStackGroupLengthNotEmpty && isChecked}\n >\n <Row justify=\"flex-start\">\n {item.questionStackChoices.map((stack: IQuestionAnswerStack, idx: number) => (\n <div className={classes.answerStackContainer} key={`choice-${idx}-${stack.questionAnswerStackId}`}>\n <Form.Checkbox\n name={FormNameEnum.linkedQuestionAnswerStackId}\n disabled={isStackGroupLengthNotEmpty && !isChecked}\n value={stack?.questionAnswerStackId}\n />\n <div className={classes.answersContainer}>\n <AnswersView answers={stack.choices} />\n </div>\n </div>\n ))}\n </Row>\n </Accordion>\n );\n })\n ) : (\n <Fragment>No link items loaded.</Fragment>\n )}\n\n <Fragment>\n <Button.Secondary clickHandler={unlinkHandler} size=\"small\">\n Unlink\n </Button.Secondary>\n <Button.Secondary clickHandler={closeHandler} size=\"small\">\n Cancel\n </Button.Secondary>\n <Form.ButtonSubmit text=\"Apply\" size=\"small\" />\n </Fragment>\n </Modal>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n ...borderGeneral,\n padding: theme.spacing(2),\n },\n answerStackContainer: {\n width: '100%',\n margin: `${theme.spacing(0)}px ${theme.spacing(0)}px ${theme.spacing(3)}px ${theme.spacing(0)}px`,\n display: 'flex',\n justifyContent: 'space-between',\n },\n answersContainer: {\n width: '100%',\n padding: theme.spacing(3),\n margin: `${theme.spacing(0)}px ${theme.spacing(0)}px ${theme.spacing(0)}px ${theme.spacing(2)}px`,\n border: `1px solid ${theme.palette.grey[500]}`,\n borderRadius: 4,\n },\n}));\n","import React, {FC, useCallback, useMemo} from 'react';\nimport {FormikHelpers} from 'formik';\nimport {batch} from 'react-redux';\nimport * as Yup from 'yup';\n\nimport {Form} from 'forms';\nimport {IBuilderDragItem} from 'admin/library/models';\nimport {applyItemLinkChanges, getChildQuestion, isMatrixQuestion, mapInitialValues} from '../../utils';\nimport {cloneDeep, ZERO_NUMBER} from 'utils';\nimport {FormNameEnum} from '../../enums';\n\ninterface IModalLinkFormBaseValues {\n linkedQuestionAnswerStackId: number[];\n}\n\ninterface IModalLinkItemsFormProps {\n currentBuilderItem: IBuilderDragItem;\n handleClose: () => void;\n linkBuilderItemHandler: (item: any) => void;\n}\n\nexport const ModalLinkItemsForm: FC<IModalLinkItemsFormProps> = ({\n children,\n currentBuilderItem,\n handleClose,\n linkBuilderItemHandler,\n}) => {\n const builderItem = cloneDeep(currentBuilderItem);\n const isMatrix = isMatrixQuestion(builderItem?.type);\n const childItem = getChildQuestion(builderItem, isMatrix);\n\n const initialValues: IModalLinkFormBaseValues = useMemo(() => {\n const values = mapInitialValues(isMatrix, builderItem, childItem);\n return values;\n }, [builderItem, isMatrix, childItem]);\n\n const submitHandler = useCallback(\n (formValues, {resetForm}: FormikHelpers<any>) => {\n const updatedItem = applyItemLinkChanges(\n isMatrix,\n builderItem,\n childItem,\n formValues[FormNameEnum.linkedQuestionAnswerStackId][ZERO_NUMBER]\n );\n\n batch(() => {\n linkBuilderItemHandler(updatedItem);\n handleClose();\n resetForm();\n });\n },\n [handleClose, linkBuilderItemHandler, builderItem, childItem, isMatrix]\n );\n\n return (\n <Form.Form\n initialValues={initialValues}\n validationSchema={modalLinkFormValidationSchema}\n submitHandler={submitHandler}\n >\n {children}\n </Form.Form>\n );\n};\n\nconst modalLinkFormValidationSchema = Yup.object().shape({\n linkedQuestionAnswerStackId: Yup.array().of(Yup.number()),\n});\n","import React, {FC, Fragment, useCallback} from 'react';\nimport {makeStyles} from '@material-ui/core';\n\nimport {Accordion, Button, Modal, Row} from 'components-lib';\nimport {IWithModal} from 'models';\nimport {CardQuestionSimple} from '..';\nimport {AnswersView} from 'admin/library/components/Answers/AnswersView';\nimport {getLinkedItem} from '../../utils';\nimport {usePretestItem} from 'admin/library/instruments/hooks';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface IModalInfoLinkItemProps extends IWithModal {\n linkedQuestionAnswerStackId: number;\n}\n\nexport const ModalInfoLinkItem: FC<IModalInfoLinkItemProps> = ({isOpen, setIsOpen, linkedQuestionAnswerStackId}) => {\n const classes = useStyles();\n const closeHandler = useCallback(() => setIsOpen(false), [setIsOpen]);\n const {possiblePretestItems} = usePretestItem();\n const linkedItem = getLinkedItem(possiblePretestItems, linkedQuestionAnswerStackId);\n\n return (\n <Modal isOpen={isOpen} handleClose={closeHandler} title=\"Linked Item Info \" size=\"medium\">\n {linkedItem ? (\n <Accordion\n initialIsExpanded\n heading={<CardQuestionSimple type={linkedItem.questionType} text={linkedItem.questionText} />}\n >\n <Row align=\"center\">\n <div className={classes.answersContainer}>\n {linkedItem.questionStackChoices.map((stack: any, idx: number) => (\n <AnswersView answers={stack.choices} key={`choice-${idx}-${stack.questionAnswerStackId}`} />\n ))}\n </div>\n </Row>\n </Accordion>\n ) : (\n <Fragment>No linked items available.</Fragment>\n )}\n <div>\n <Button.Secondary clickHandler={closeHandler} size=\"small\">\n Close\n </Button.Secondary>\n </div>\n </Modal>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n answersContainer: {\n width: '100%',\n padding: theme.spacing(3),\n margin: `${theme.spacing(0)}px ${theme.spacing(0)}px ${theme.spacing(0)}px ${theme.spacing(2)}px`,\n border: `1px solid ${theme.palette.grey[500]}`,\n borderRadius: 4,\n },\n}));\n","import React, {Fragment, useCallback, useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Button, Modal} from 'components-lib';\nimport {IWithModal} from 'models';\nimport {StackFilter} from 'admin/components';\ninterface IModalStackRelatedFiltersProps extends IWithModal {\n metaData?: any;\n area: string;\n}\n\nexport const ModalStackRelatedFilters = ({\n metaData: {\n pillars,\n evaluationTypes,\n domain,\n programs,\n learningObjective,\n category,\n competencies,\n administration,\n schoolLevels,\n },\n area,\n isOpen,\n setIsOpen,\n}: IModalStackRelatedFiltersProps) => {\n const classes = useStyles();\n\n const closeHandler = useCallback(() => setIsOpen(false), [setIsOpen]);\n\n const StackList = useMemo(\n () => () => (\n <div className={classes.container}>\n <StackFilter label=\"Pillar\" list={pillars} withBottomMargin />\n <StackFilter label=\"Evaluation Type\" list={evaluationTypes} withBottomMargin />\n <StackFilter label=\"Domain\" text={domain?.name ?? '-'} isSelected={domain?.isSelected} withBottomMargin />\n <StackFilter label=\"Program\" list={programs} withBottomMargin />\n <StackFilter\n label=\"Learning Objective\"\n text={learningObjective ?? '-'}\n isSelected={learningObjective}\n withBottomMargin\n />\n <StackFilter label=\"Category\" text={category ?? '-'} withBottomMargin />\n <StackFilter label=\"Competency\" list={competencies} withBottomMargin />\n <StackFilter\n label=\"Administration\"\n text={administration?.name}\n isSelected={administration?.isSelected}\n withBottomMargin\n />\n <StackFilter label=\"School Level\" list={schoolLevels} withBottomMargin />\n <StackFilter label=\"JA Area\" text={area} withBottomMargin />\n </div>\n ),\n [\n classes,\n pillars,\n evaluationTypes,\n domain,\n programs,\n learningObjective,\n category,\n competencies,\n administration,\n schoolLevels,\n area,\n ]\n );\n\n return (\n <Modal isOpen={isOpen} handleClose={closeHandler} title=\"Select related filters\" size=\"medium\">\n <StackList />\n <Fragment>\n <Button.Primary clickHandler={closeHandler} size=\"small\">\n Ok\n </Button.Primary>\n </Fragment>\n </Modal>\n );\n};\n\nconst useStyles = makeStyles(() => ({\n container: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n },\n}));\n","import React from 'react';\nimport {Form} from 'forms';\nimport {FormNameEnum} from 'filters-selections';\nimport {DynamicCharacters, InstrumentEditContainer} from '..';\n\nexport const InstrumentEditInstructionalText = () => (\n <InstrumentEditContainer>\n <Form.TextArea name={FormNameEnum.instructionText} placeholder={'Add Instructional Text...'} />\n <DynamicCharacters />\n </InstrumentEditContainer>\n);\n","import React from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Form} from 'forms';\nimport {Column, Row} from 'components-lib';\nimport {InstrumentsFormNameEnum} from 'admin/library/instruments/enums';\nimport {useBuilder} from '../../hooks';\nimport {useInstrument} from 'admin/library/instruments/details/hooks';\n\nexport const InstrumentEditHeaderAndFooter = () => {\n const classes = useStyles();\n const {instrumentId} = useBuilder();\n const {activeTemplate} = useInstrument(instrumentId);\n\n const headerUrl = activeTemplate?.header?.url ?? '';\n const footerUrl = activeTemplate?.footer?.url ?? '';\n\n return (\n <Row justify=\"flex-start\" align=\"flex-start\" classes={{root: classes.row}}>\n <Column sm={6} md={6} lg={6} xl={6} className={classes.headerLogo}>\n <Form.ImageUpload\n name={InstrumentsFormNameEnum.headerLogo}\n text=\"Drag and Drop file here\"\n textSize=\"600 x 140px\"\n label=\"Header\"\n url={headerUrl}\n />\n </Column>\n\n <Column sm={6} md={6} lg={6} xl={6} className={classes.footerLogo}>\n <Form.ImageUpload\n name={InstrumentsFormNameEnum.footerLogo}\n text=\"Drag and Drop file here\"\n textSize=\"360 x 80px\"\n label=\"Footer\"\n url={footerUrl}\n />\n </Column>\n </Row>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n row: {\n marginRight: theme.spacing(3),\n },\n headerLogo: {\n paddingRight: theme.spacing(2),\n },\n footerLogo: {\n paddingLeft: theme.spacing(2),\n },\n}));\n","import * as Yup from 'yup';\nimport {FormNameEnum} from 'filters-selections';\n\nexport interface IEditInstructionalTextFormBaseValues {\n [FormNameEnum.builderInstructionalText]: string;\n [FormNameEnum.builderInstructionalTextHTML]: string;\n}\n\nexport const editTagsFormValidationSchema = Yup.object().shape({\n [FormNameEnum.builderInstructionalText]: Yup.string(),\n [FormNameEnum.builderInstructionalTextHTML]: Yup.string(),\n});\n","import React, {Fragment} from 'react';\nimport {useFormikContext} from 'formik';\nimport {Form} from 'forms';\nimport {Card, Row} from 'components-lib';\nimport {CardBody} from '../CardItem/CardBody';\nimport {FormNameEnum} from 'filters-selections';\n\nexport const BuilderInstructionalText = ({item, position}) => {\n const {values} = useFormikContext();\n const value = values[FormNameEnum.builderInstructionalTextHTML];\n\n return (\n <Fragment>\n {item && (\n <Card>\n <CardBody title={item.title} type={item.type ?? 'html'} position={position} withApply withSubmit />\n <Row justify=\"flex-start\">\n <Form.RichTextEditor\n readOnly={false}\n withEdit={true}\n value={value}\n name={FormNameEnum.builderInstructionalTextHTML}\n placeholder=\"Add Instructional Text...\"\n toolbarHidden={false}\n withInstructionalText\n />\n </Row>\n </Card>\n )}\n </Fragment>\n );\n};\n","import React, {useCallback, useMemo} from 'react';\nimport {FormikHelpers} from 'formik';\nimport {batch} from 'react-redux';\nimport {editTagsFormValidationSchema} from './builderInstructionalTextFormBaseConfig';\nimport {useBuilder, useBuilderItemsEntities} from '../../hooks';\nimport {FormNameEnum} from 'filters-selections';\nimport {IInstrumentItem} from 'models';\nimport {Form} from 'forms';\nimport {BuilderInstructionalText} from './BuilderInstructionalText';\n\nexport const BuilderInstructionalTextForm = ({id, position, applyClickHandler}) => {\n const {builderItemsEntities} = useBuilderItemsEntities();\n const {updateInstructionalText} = useBuilder();\n const item: IInstrumentItem = builderItemsEntities[id];\n\n const initialValues = useMemo(\n () => ({\n [FormNameEnum.builderInstructionalText]: '',\n [FormNameEnum.builderInstructionalTextHTML]: item?.html ?? '',\n }),\n [item.html]\n );\n\n const submitHandler = useCallback(\n ({builderInstructionalTextHTML}, {resetForm}: FormikHelpers<any>) =>\n batch(() => {\n updateInstructionalText(item, builderInstructionalTextHTML);\n applyClickHandler();\n resetForm();\n }),\n [updateInstructionalText, applyClickHandler, item]\n );\n\n return (\n <Form.Form\n initialValues={initialValues}\n validationSchema={editTagsFormValidationSchema}\n submitHandler={submitHandler}\n >\n <BuilderInstructionalText item={item} position={position} />\n </Form.Form>\n );\n};\n","import React, {FC} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Column, Row} from 'components-lib';\nimport {IWithChildren} from 'models';\n\ntype IInstrumentEditContainerProps = IWithChildren;\n\nexport const InstrumentEditContainer: FC<IInstrumentEditContainerProps> = ({children}) => {\n const classes = useStyles();\n\n return (\n <Row justify=\"flex-start\" classes={{root: classes.row}}>\n <Column sm={12} md={12} lg={12} xl={12} className={classes.col}>\n {children}\n </Column>\n </Row>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n row: {\n marginTop: theme.spacing(3),\n marginRight: theme.spacing(3),\n marginBottom: theme.spacing(3),\n },\n col: {\n marginRight: theme.spacing(3),\n },\n}));\n","import React from 'react';\nimport {useFormikContext} from 'formik';\nimport {Row} from 'components-lib';\n\nexport const DynamicCharacters = ({maxCharacters = 500}) => {\n const {\n values: {instructionText},\n } = useFormikContext();\n\n const instructionTextLen = instructionText ? instructionText?.length : 0;\n const text = `Characters: ${instructionTextLen} / ${maxCharacters}`;\n\n return <Row justify=\"flex-end\">{text}</Row>;\n};\n","import React, {SyntheticEvent, DragEvent, useCallback, FC, useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {heightUploadResources} from 'utils';\nimport {UploadSingleFile} from 'admin/components';\nimport {useFormikContext} from 'formik';\nimport {IWithDisabled} from 'models/common';\nimport {DraggableArea, Row} from 'components-lib';\n\ninterface ISingleFileUploadProps extends IWithDisabled {\n name: string;\n accept?: string;\n title?: string;\n position?: 'horizontal' | 'vertical';\n withOnlyBrowseButton?: boolean;\n disableDragAndDrop?: boolean;\n fullHeight?: boolean;\n fullWidth?: boolean;\n align?: 'flex-start' | 'center' | 'flex-end';\n justify?: 'flex-start' | 'center' | 'flex-end';\n deleteCallback?: () => void;\n}\n\nexport const SingleFileUpload: FC<ISingleFileUploadProps> = ({\n name,\n accept = '*',\n position = 'vertical',\n disabled = false,\n disableDragAndDrop = false,\n withOnlyBrowseButton = false,\n fullHeight = true,\n fullWidth = true,\n align = 'center',\n justify = 'center',\n title = 'Upload File',\n deleteCallback,\n}) => {\n const classes = useStyles({fullHeight, fullWidth});\n const {setFieldValue} = useFormikContext<any>();\n\n const handleFileDrop = useCallback(\n (event: DragEvent<HTMLDivElement>) => {\n event.stopPropagation();\n event.preventDefault();\n\n const newFile = event.dataTransfer.files[0];\n setFieldValue(name, newFile);\n },\n [setFieldValue, name]\n );\n\n const handleDragOver = useCallback((event: SyntheticEvent) => {\n event.stopPropagation();\n event.preventDefault();\n }, []);\n\n const singleFileUpload = useMemo(\n () => (\n <UploadSingleFile\n disabled={disabled}\n title={title}\n position={position}\n accept={accept}\n name=\"file\"\n loading={false}\n withOnlyBrowseButton={withOnlyBrowseButton}\n deleteCallback={deleteCallback}\n />\n ),\n [accept, disabled, position, title, withOnlyBrowseButton, deleteCallback]\n );\n\n return (\n <Row align={align} justify={justify} classes={{root: classes.content}}>\n {disableDragAndDrop && singleFileUpload}\n {!disableDragAndDrop && (\n <DraggableArea onDrop={handleFileDrop} onDragOver={handleDragOver} disabled={disabled}>\n {singleFileUpload}\n </DraggableArea>\n )}\n </Row>\n );\n};\n\nconst useStyles = makeStyles(() => ({\n content: ({fullHeight, fullWidth}: Pick<ISingleFileUploadProps, 'fullHeight' | 'fullWidth'>) => {\n return {\n width: fullWidth ? '100%' : '',\n height: fullHeight ? heightUploadResources : '',\n };\n },\n}));\n","import React, {useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Container, Row, Text} from 'components-lib';\nimport {FormNameEnum} from '../../../enums';\nimport {getAccessibleToStudentsOptions} from 'admin/resources/upload';\nimport {Form} from 'forms';\n\ninterface IAccessibleToStudentsOption {\n label: string;\n value: number | string | boolean;\n}\n\nexport const AccessibleToStudentsRadioGroup = () => {\n const classes = useStyles();\n\n const accessibleToStudentsOptions: IAccessibleToStudentsOption[] = useMemo(\n () => getAccessibleToStudentsOptions(),\n []\n );\n\n return (\n <Container disableGutters>\n <Text.Heading as=\"h4\" classes={{root: classes.label}}>\n Accessible to students?\n </Text.Heading>\n <Container disableGutters classes={{root: classes.radioGroup}}>\n <Form.RadioGroup name={FormNameEnum.isAccessibleToStudents}>\n <Row justify=\"flex-start\">\n {accessibleToStudentsOptions.map((option: IAccessibleToStudentsOption, idx: number) => (\n <Form.Radio key={idx} value={option.value} label={option.label} />\n ))}\n </Row>\n </Form.RadioGroup>\n </Container>\n </Container>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n label: {\n color: theme.palette.grey[700],\n },\n radioGroup: {\n marginTop: theme.spacing(3),\n marginBottom: theme.spacing(3),\n },\n}));\n","import React, {FC} from 'react';\nimport {Container, makeStyles} from '@material-ui/core';\nimport {Form} from 'forms';\nimport {IWithDisabled} from 'models/common';\nimport {ItemWithPlaceholder} from 'filters-selections';\n\ninterface IFileUploadFormInputProps extends IWithDisabled {\n name: string;\n label: string;\n type?: string;\n min?: string;\n max?: string;\n}\n\nexport const FileUploadFormInput: FC<IFileUploadFormInputProps> = ({\n label,\n name,\n disabled,\n type = 'text',\n min,\n max,\n}) => {\n const classes = useStyles();\n\n return (\n <Container disableGutters classes={{root: classes.input}}>\n <ItemWithPlaceholder label={label} hasItems>\n <Form.InputWithField name={name} type={type} disabled={disabled} value=\"\" min={min} max={max} />\n </ItemWithPlaceholder>\n </Container>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n input: {\n paddingRight: theme.spacing(3),\n },\n}));\n","import React, {FC} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Container} from 'components-lib';\nimport {ItemWithPlaceholder} from 'filters-selections';\nimport {Form} from 'forms';\nimport {IWithDisabled} from 'models/common';\n\ninterface IUploadResourceDatePickerProps extends IWithDisabled {\n label: string;\n name: string;\n value?: any;\n maxWidth?: boolean;\n disablePast?: boolean;\n disableFuture?: boolean;\n}\n\nexport const UploadResourceDatePicker: FC<IUploadResourceDatePickerProps> = ({\n label,\n name,\n value = null,\n disabled = false,\n maxWidth = true,\n disablePast = false,\n disableFuture = false,\n}) => {\n const classes = useStyles();\n\n return (\n <Container disableGutters classes={{root: classes.uploadResourceDatePicker}}>\n <ItemWithPlaceholder label={label} hasItems>\n <Form.DatePicker\n name={name}\n label=\"\"\n value={value}\n disabled={disabled}\n maxWidth={maxWidth}\n disablePast={disablePast}\n disableFuture={disableFuture}\n />\n </ItemWithPlaceholder>\n </Container>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n uploadResourceDatePicker: {\n paddingBottom: theme.spacing(3),\n paddingRight: theme.spacing(3),\n },\n}));\n","import React, {FC} from 'react';\nimport {Form} from 'forms';\nimport {ItemWithPlaceholder} from 'filters-selections';\nimport {Container, makeStyles} from '@material-ui/core';\nimport {IWithDisabled} from 'models/common';\n\ninterface IFileUploadFormTextAreaProps extends IWithDisabled {\n label: string;\n name: string;\n placeholder?: string;\n rows?: number;\n}\n\nexport const FileUploadFormTextArea: FC<IFileUploadFormTextAreaProps> = ({\n label,\n name,\n disabled,\n placeholder = '',\n rows = 6,\n}) => {\n const classes = useStyles();\n\n return (\n <Container disableGutters classes={{root: classes.root}}>\n <ItemWithPlaceholder label={label} hasItems>\n <Form.TextArea disabled={disabled} name={name} rows={rows} placeholder={placeholder} />\n </ItemWithPlaceholder>\n </Container>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n paddingRight: theme.spacing(3),\n paddingBottom: 8.5,\n },\n}));\n","import React, {FC} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Button, Container, Logo, Row, Wrapper} from 'components-lib';\nimport {Form} from 'forms';\nimport {uploadMessages} from 'admin/upload/utils';\nimport {Prompt} from 'react-router-dom';\n\ninterface IUploadFooterProps {\n showPrompt: boolean;\n disableSubmit: boolean;\n redirectCallback: () => void;\n}\n\nexport const UploadFooter: FC<IUploadFooterProps> = ({showPrompt, redirectCallback, disableSubmit}) => {\n const classes = useStyles();\n\n return (\n <Container disableGutters classes={{root: classes.root}}>\n <Prompt when={showPrompt} message={uploadMessages.warning} />\n <Row align=\"center\" justify=\"space-between\">\n <Logo.CititizensPoweredBy />\n <Wrapper>\n <Button.Secondary size=\"large\" clickHandler={redirectCallback}>\n Cancel\n </Button.Secondary>\n <Form.ButtonSubmit disabled={disableSubmit} size=\"large\" text=\"Upload\" />\n </Wrapper>\n </Row>\n </Container>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n paddingRight: theme.spacing(2),\n paddingLeft: theme.spacing(3),\n },\n}));\n","export const mockKSAsList = [\n {\n id: 1,\n name: 'At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis',\n displayText: 'At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis',\n },\n {\n id: 2,\n name: 'At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis',\n displayText: 'At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis',\n },\n {\n id: 3,\n name: 'At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis',\n displayText: 'At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis',\n },\n];\n","export const prefix = '[Edit / Learning Path]';\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {learningPathsApi} from 'api';\nimport {prefix} from './config';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {IGetLearningPathByIdApiResponse} from 'models/resources/learning-paths';\n\nexport const fetchLearningPathByIdThunk: any = createAsyncThunk<IGetLearningPathByIdApiResponse, string>(\n `${prefix} fetchLearningPathByIdThunk`,\n async (id: string, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await learningPathsApi.getLearningPathById(id);\n return parsedBody;\n } catch (err) {\n dispatch(toastNotificationManager.createErrorToastAction(err.parsedBody));\n return rejectWithValue({error: err});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {learningPathsApi} from 'api';\nimport {ICreateUpdateLearningPathApiResponse, IUpdateLearningPathPayload} from 'models/resources/learning-paths';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const updateLearningPathThunk: any = createAsyncThunk<\n ICreateUpdateLearningPathApiResponse,\n IUpdateLearningPathPayload\n>(`${prefix} updateLearningPathThunk`, async (payload: IUpdateLearningPathPayload, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await learningPathsApi.updateLearningPath(payload);\n dispatch(toastNotificationManager.createSuccessToastAction('Learning path was updated successfully!'));\n return parsedBody;\n } catch (error) {\n dispatch(toastNotificationManager.createErrorToastAction(error.messages));\n return rejectWithValue({error});\n }\n});\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {learningPathsApi} from 'api';\nimport {ILearningDetailsPathBaseApiResponse} from 'models/resources/learning-paths';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const deleteLearningPathThunk: any = createAsyncThunk<ILearningDetailsPathBaseApiResponse, string>(\n `${prefix} deleteLearningPath`,\n async (contentItemId, {dispatch, rejectWithValue}) => {\n try {\n const response = await learningPathsApi.deleteLearningPath(contentItemId);\n dispatch(toastNotificationManager.createSuccessToastAction('Learning path was deleted successfully!'));\n return response.data;\n } catch (error) {\n dispatch(toastNotificationManager.createErrorToastAction(error.messages));\n return rejectWithValue({error});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {learningPathsApi} from 'api';\nimport {ILearningDetailsPathBaseApiResponse} from 'models/resources/learning-paths';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const publishLearningPathThunk: any = createAsyncThunk<ILearningDetailsPathBaseApiResponse, string>(\n `${prefix} publishLearningPath`,\n async (contentItemId, {dispatch, rejectWithValue}) => {\n try {\n const response = await learningPathsApi.publishLearningPath(contentItemId);\n dispatch(toastNotificationManager.createSuccessToastAction('Learning path was published successfully!'));\n return response.data;\n } catch (error) {\n dispatch(toastNotificationManager.createErrorToastAction(error.messages));\n return rejectWithValue({error});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {learningPathsApi} from 'api';\nimport {prefix} from './config';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {IGetExportLearningPathApiResponse} from 'models';\nimport {getContentResponseHeaders} from 'admin/resources/files/views/edit/utils';\nimport {learningPathEditMessages} from '../../utils';\n\nexport const exportLearningPathThunk: any = createAsyncThunk<IGetExportLearningPathApiResponse, string>(\n `${prefix} exportLearningPath`,\n async (id: string, {dispatch, rejectWithValue}) => {\n dispatch(toastNotificationManager.createSuccessToastAction(learningPathEditMessages.exporting));\n\n try {\n const response = await learningPathsApi.getExportLearningPath(id);\n const {mimeType, fileName} = getContentResponseHeaders(response);\n\n return {\n blob: response.data,\n fileName,\n mimeType,\n };\n } catch (err) {\n dispatch(toastNotificationManager.createErrorToastAction(err.parsedBody));\n return rejectWithValue({error: err});\n }\n }\n);\n","import {ILearningPathDetails} from 'models/resources/learning-paths';\nimport {ILearningPathsEditStoreState} from './ILearningPathsEditStoreState';\n\nconst learningPathDefault = {\n id: null,\n title: null,\n description: null,\n createdUtc: null,\n sessions: [],\n} as ILearningPathDetails;\n\nexport const learningPathEditInitialState: ILearningPathsEditStoreState = {\n page: {\n loading: false,\n exporting: false,\n },\n learningPath: learningPathDefault,\n};\n","import {ILearningPathsEditStoreState} from './ILearningPathsEditStoreState';\nimport {learningPathEditInitialState} from './learningPathsEdit.initialState';\n\nexport const learningPathEditReducer = {\n clearLearningPath: (state: ILearningPathsEditStoreState) => {\n state.learningPath = {...learningPathEditInitialState.learningPath};\n },\n};\n","import {createSelector} from '@reduxjs/toolkit';\nimport {TStateStore} from 'store';\n\nconst getLearningPathsState = (state: TStateStore) => state.resources.learningPaths;\n\nexport const getLearningPathsEditState = createSelector(getLearningPathsState, (learningPaths) => learningPaths.edit);\n\nexport const loadingLearningPathSelector = createSelector(\n getLearningPathsEditState,\n (learningPathState) => learningPathState.page.loading\n);\n\nexport const learningPathExportingSelector = createSelector(\n getLearningPathsEditState,\n (learningPathState) => learningPathState.page.exporting\n);\n\nexport const learningPathDetailsSelector = createSelector(\n getLearningPathsEditState,\n (learningPathState) => learningPathState.learningPath\n);\n\nexport const learningPathSessionsSelector = createSelector(\n learningPathDetailsSelector,\n (learningPath) => learningPath.sessions\n);\n","import {ILearningPathsEditStoreState} from './ILearningPathsEditStoreState';\nimport {\n deleteLearningPathThunk,\n exportLearningPathThunk,\n fetchLearningPathByIdThunk,\n publishLearningPathThunk,\n updateLearningPathThunk,\n} from './thunks';\nimport {IActionFulfilled, IGetLearningPathByIdApiResponse} from 'models';\nimport {isObject} from 'utils/functions';\n\nexport const learningPathEditExtraReducer = {\n // fetchLearningPathByIdThunk\n [fetchLearningPathByIdThunk.fulfilled]: (\n state: ILearningPathsEditStoreState,\n action: IActionFulfilled<null, IGetLearningPathByIdApiResponse>\n ) => {\n state.page.loading = false;\n if (isObject(action.payload)) {\n const {data} = action.payload;\n state.learningPath = {...data};\n }\n },\n [fetchLearningPathByIdThunk.pending]: (state: ILearningPathsEditStoreState) => {\n state.page.loading = true;\n },\n [fetchLearningPathByIdThunk.rejected]: (state: ILearningPathsEditStoreState) => {\n state.page.loading = false;\n },\n\n // updateLearningPathThunk\n [updateLearningPathThunk.fulfilled]: (\n state: ILearningPathsEditStoreState,\n action: IActionFulfilled<null, IGetLearningPathByIdApiResponse>\n ) => {\n state.page.loading = false;\n if (isObject(action.payload)) {\n const {data} = action.payload;\n state.learningPath = {...data};\n }\n },\n [updateLearningPathThunk.pending]: (state: ILearningPathsEditStoreState) => {\n state.page.loading = true;\n },\n [updateLearningPathThunk.rejected]: (state: ILearningPathsEditStoreState) => {\n state.page.loading = false;\n },\n\n // deleteLearningPathThunk\n [deleteLearningPathThunk.fulfilled]: (state: ILearningPathsEditStoreState) => {\n state.page.loading = false;\n },\n [deleteLearningPathThunk.pending]: (state: ILearningPathsEditStoreState) => {\n state.page.loading = true;\n },\n [deleteLearningPathThunk.rejected]: (state: ILearningPathsEditStoreState) => {\n state.page.loading = false;\n },\n\n // publishLearningPathThunk\n [publishLearningPathThunk.fulfilled]: (state: ILearningPathsEditStoreState) => {\n state.page.loading = false;\n },\n [publishLearningPathThunk.pending]: (state: ILearningPathsEditStoreState) => {\n state.page.loading = true;\n },\n [publishLearningPathThunk.rejected]: (state: ILearningPathsEditStoreState) => {\n state.page.loading = false;\n },\n\n // exportLearningPathThunk\n [exportLearningPathThunk.fulfilled]: (state: ILearningPathsEditStoreState) => {\n state.page.exporting = false;\n },\n [exportLearningPathThunk.pending]: (state: ILearningPathsEditStoreState) => {\n state.page.exporting = true;\n },\n [exportLearningPathThunk.rejected]: (state: ILearningPathsEditStoreState) => {\n state.page.exporting = false;\n },\n};\n","import {createSlice} from '@reduxjs/toolkit';\nimport {learningPathEditInitialState} from './learningPathsEdit.initialState';\nimport {learningPathEditReducer} from './learningPathsEdit.reducer';\nimport {learningPathEditExtraReducer} from './learningPathsEditExtra.reducer';\n\nexport const learningPathEditSlice = createSlice({\n name: 'learningPathEdit',\n initialState: learningPathEditInitialState,\n reducers: learningPathEditReducer,\n extraReducers: learningPathEditExtraReducer,\n});\n\nexport const {actions: learningPathEditSliceSitesActions} = learningPathEditSlice;\n","import {createSelector} from '@reduxjs/toolkit';\nimport {TStateStore} from 'store';\n\nconst getItemsImportState = (state: TStateStore) => state.itemsImport;\n\nexport const itemsImportPageLoadingStatusSelector = createSelector(\n getItemsImportState,\n (itemsImport) => itemsImport.page\n);\n\nexport const savingSelector = createSelector(getItemsImportState, (items) => items.page.saving);\nexport const loadingSelector = createSelector(getItemsImportState, (items) => items.page.loading);\nexport const downloadingSelector = createSelector(getItemsImportState, (items) => items.page.downloading);\nexport const uploadingSelector = createSelector(getItemsImportState, (items) => items.page.uploading);\nexport const importingSelector = createSelector(getItemsImportState, (items) => items.page.importing);\n\nexport const templateInstructionalTextSelector = createSelector(\n getItemsImportState,\n (items) => items.templateInstructionalText\n);\n\nexport const itemsImportFieldListSelector = createSelector(\n getItemsImportState,\n (itemsImport) => itemsImport.mapping.fieldList\n);\n\nexport const hasRequiredFieldErrorsSelector = createSelector(\n getItemsImportState,\n (items) => items.mapping.hasRequiredFieldErrors\n);\n\nexport const itemsImportFileNameSelector = createSelector(\n getItemsImportState,\n (itemsImport) => itemsImport.mapping.fileName\n);\n\nexport const itemImportIdSelector = createSelector(\n getItemsImportState,\n (itemsImport) => itemsImport.mapping.itemImportId\n);\n\nexport const itemImportPreviewRowsSelector = createSelector(\n getItemsImportState,\n (itemsImport) => itemsImport.preview.previewRows\n);\n\nexport const itemImportCriticalIssueCountSelector = createSelector(\n getItemsImportState,\n (itemsImport) => itemsImport.preview.criticalIssueCount\n);\n\nexport const itemImportPreviewLoadingSelector = createSelector(\n getItemsImportState,\n (itemsImport) => itemsImport.preview.loading\n);\n\nexport const downloadingCriticalIssuesSelector = createSelector(\n getItemsImportState,\n (items) => items.preview.downloadingCriticalIssues\n);\n","export * from './IProgramsAllState';\nexport * from './programsAll.selectors';\nexport * from './programsAll.slice';\nexport * from './thunks';\n","export enum BuilderEditModeEnum {\n allTypes,\n matrix,\n instructionalText,\n}\n","export enum FormNameEnum {\n linkedQuestionAnswerStackId = 'linkedQuestionAnswerStackId',\n}\n","export enum ItemFilterNamesEnum {\n SEARCH_BY_NAME = 'searchByName',\n PILLARS = 'pillarsFilter',\n EVALUATION_TYPES = 'evaluationTypesFilter',\n DOMAINS = 'domainsFilter',\n PROGRAMS = 'programsFilter',\n COMPETENCIES = 'competenciesFilter',\n CONCEPTS = 'conceptsFilter',\n CATEGORY = 'categoryFilter',\n ADMINISTRATIONS = 'administrationsFilter',\n SCHOOL_LEVELS = 'schoolLevelsFilter',\n ITEM_TYPES = 'itemTypesFilter',\n ITEM_STATUSES = 'isPublished',\n SORT_BY = 'sortBy',\n ORDER_BY = 'orderBy',\n AREAS = 'areasFilter',\n LEARNING_OBJECTIVE = 'learningObjectiveFilter',\n}\n","import React, {SyntheticEvent, useCallback, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport Fade from '@material-ui/core/Fade';\nimport Menu from '@material-ui/core/Menu';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport {Avatar} from 'components-lib';\nimport {authenticationManager, userProfileSelector} from 'user';\n\nconst defaultInitials = 'JA';\n\nexport function ProfileMenu() {\n const [anchorEl, setAnchorEl] = React.useState(null);\n\n const open = !!anchorEl;\n const userProfile = useSelector(userProfileSelector);\n\n const userInitials = useMemo(() => {\n if (!userProfile) {\n return defaultInitials;\n }\n\n const {given_name: firstName, family_name: lastName} = userProfile;\n const first = firstName ? firstName.charAt(0) : 'J';\n const last = lastName ? lastName.charAt(0) : 'A';\n return `${first}${last}`;\n }, [userProfile]);\n\n const avatarClickHandler = useCallback((event: SyntheticEvent) => {\n setAnchorEl(event.currentTarget);\n }, []);\n\n const menuCloseHandler = useCallback(() => {\n setAnchorEl(null);\n }, []);\n\n const logoutClickHandler = useCallback(() => {\n authenticationManager.logout();\n }, []);\n\n return (\n <>\n <Avatar clickHandler={avatarClickHandler}>{userInitials}</Avatar>\n <Menu anchorEl={anchorEl} keepMounted open={open} onClose={menuCloseHandler} TransitionComponent={Fade}>\n <MenuItem onClick={logoutClickHandler}>Logout</MenuItem>\n </Menu>\n </>\n );\n}\n","import {AppBar, makeStyles, Toolbar} from '@material-ui/core';\nimport React, {ReactNode} from 'react';\nimport {Link} from 'react-router-dom';\nimport JAEELogo from 'resources/logos/Logo.svg';\nimport {ProfileMenu} from '../ProfileMenu/ProfileMenu';\n\ninterface IHeaderProps {\n navigation?: ReactNode;\n withActions?: boolean;\n}\n\nexport function Header({navigation, withActions = true}: IHeaderProps) {\n const classes = useStyles();\n return (\n <AppBar position=\"relative\" className={classes.root} elevation={0}>\n <Toolbar>\n <Link to=\"/\" className={classes.link}>\n <img alt=\"Logo\" src={JAEELogo} className={classes.logo} loading=\"lazy\" />\n </Link>\n <div className={classes.navigation}>{!!navigation && navigation}</div>\n {withActions && <ProfileMenu />}\n </Toolbar>\n </AppBar>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n backgroundColor: theme.palette.common.white,\n borderBottom: `1px solid ${theme.palette.grey[200]}`,\n },\n link: {\n pointer: 'cursor',\n },\n logo: {\n height: 40,\n },\n navigation: {\n flexGrow: 1,\n },\n}));\n","import {makeStyles} from '@material-ui/core';\nimport {Container} from 'components-lib';\nimport {IComponentWithChildren} from 'models';\nimport React, {ReactNode} from 'react';\nimport {Header} from '../Header/Header';\n\ninterface ILayoutProps extends IComponentWithChildren {\n navigation?: ReactNode;\n withActions?: boolean;\n}\n\nexport function Layout({children, navigation, withActions = true}: ILayoutProps) {\n const classes = useStyles();\n\n return (\n <Container disableGutters classes={{root: classes.root}}>\n <>\n <Header navigation={navigation} withActions={withActions} />\n {children}\n </>\n </Container>\n );\n}\n\nconst useStyles = makeStyles({\n root: {\n width: '100%',\n margin: 0,\n },\n});\n","import React, {ReactNode} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Container} from 'components-lib';\nimport {layoutConfig} from 'layout/config';\nimport {IComponentWithChildren} from 'models';\n\ninterface IPageLayoutWithFixedAreasProps extends IComponentWithChildren {\n headerSize?: 'small' | 'large';\n header?: ReactNode;\n footer?: ReactNode;\n withSecondaryNavigation?: boolean;\n withExtraHeight?: boolean;\n}\n\nexport function PageLayoutWithFixedAreas({\n children,\n headerSize = 'large',\n header,\n footer,\n withSecondaryNavigation = true,\n withExtraHeight = true,\n}: IPageLayoutWithFixedAreasProps) {\n const classes = useStyles({hasFooter: !!footer, headerSize, withSecondaryNavigation, withExtraHeight});\n return (\n <Container classes={{root: classes.root}}>\n <div className={classes.header}>{header}</div>\n <div className={classes.content}>{children}</div>\n {footer && <div className={classes.footer}>{footer}</div>}\n </Container>\n );\n}\n\nconst headerHeightSmall = 130;\nconst headerHeightLarge = 200;\nconst footerHeight = 60;\nconst additionalHeight = 20;\n\ntype TSize = Pick<IPageLayoutWithFixedAreasProps, 'headerSize'>;\n\nconst useStyles = makeStyles(\n (theme) => ({\n root: {\n position: 'relative',\n paddingLeft: theme.spacing(4),\n },\n header: ({headerSize}: TSize) => {\n return {\n height: headerSize === 'small' ? headerHeightSmall : headerHeightLarge,\n };\n },\n content: ({\n hasFooter,\n headerSize,\n withSecondaryNavigation,\n withExtraHeight,\n }: {\n hasFooter: boolean;\n headerSize: 'small' | 'large';\n withSecondaryNavigation: boolean;\n withExtraHeight: boolean;\n }) => {\n const headerHeight = headerSize === 'small' ? headerHeightSmall : headerHeightLarge;\n const footerPagginationHeight = withExtraHeight ? additionalHeight : 0;\n\n return {\n display: 'flex',\n flexDirection: 'column',\n height: `calc(100vh - ${\n withSecondaryNavigation\n ? layoutConfig.scrollableAreaSubtrahend\n : layoutConfig.scrollableAreaWithoutSecondaryNavigationSubtrahend\n }px - ${headerHeight + (hasFooter ? footerHeight : 0)}px - ${footerPagginationHeight}px)`,\n overflowY: 'auto',\n overflowX: 'hidden',\n };\n },\n footer: {\n height: footerHeight,\n overflow: 'hidden',\n },\n }),\n\n // Webpack production build causes CSS to be injected in different order\n // See: https://github.com/mui-org/material-ui/issues/18919\n // index - 0 by default - determines DOM rendering order, higher number = higher specificity (inserted after).\n {\n index: 1,\n }\n);\n","import * as Yup from 'yup';\nimport {checkIfTypeStartsWithPreOrPostSessionFirstDigit, FormNameEnum} from 'filters-selections';\nimport {\n allowedFooterLogoDimensions,\n allowedHeaderLogoDimensions,\n ALLOWED_INSTRUCTIONAL_TEXT_LENGTH,\n ALLOWED_LOGO_SIZE,\n audienceStudentId,\n errorMessages,\n MAX_ALLOWED_SIZE,\n SUPPORTED_LOGO_FORMATS,\n typeFeedbackId,\n} from 'utils';\n\nexport const instrumentDetailsFormBaseValidationSchema = Yup.object().shape({\n [FormNameEnum.templateName]: Yup.string().trim().required(errorMessages.instrumentNameRequired),\n [FormNameEnum.instructionText]: Yup.string()\n .trim()\n .test('has-allowed-chars', 'Some characters are not allowed: + - = * #', (value) => {\n const regex = /^[a-zA-Z0-9 .:;,'\"~`!?@$%^&_|<>(){}]+$/;\n if (value) return regex.test(value);\n return true;\n })\n .test('has-allowed-len', 'Instructional text length must be less than 500 characters!', (value) => {\n if (value) return value.length <= ALLOWED_INSTRUCTIONAL_TEXT_LENGTH;\n return true;\n }),\n [FormNameEnum.pillars]: Yup.number()\n .nullable()\n .when(FormNameEnum.isGeneralInstrument, {\n is: true,\n then: Yup.number().notRequired(),\n otherwise: Yup.number().nullable().required(errorMessages.pillarRequired),\n }),\n [FormNameEnum.programs]: Yup.array()\n .of(Yup.number())\n .when(FormNameEnum.isGeneralInstrument, {\n is: true,\n then: Yup.array().of(Yup.number()).notRequired(),\n otherwise: Yup.array().of(Yup.number()).required(errorMessages.programRequired),\n }),\n [FormNameEnum.phase]: Yup.number()\n .nullable()\n .when(FormNameEnum.isGeneralInstrument, {\n is: true,\n then: Yup.number().notRequired(),\n otherwise: Yup.number().nullable().required(errorMessages.phaseRequired),\n }),\n [FormNameEnum.instrumentType]: Yup.number()\n .nullable()\n .when(FormNameEnum.isGeneralInstrument, {\n is: true,\n then: Yup.number().notRequired(),\n otherwise: Yup.number().nullable().required(errorMessages.instrumentTypeRequired),\n })\n .test('instrument-type-test', errorMessages.onlyGeneralAllowed, function (type) {\n const audience = this.parent[FormNameEnum.audience];\n const isGeneral = this.parent[FormNameEnum.isGeneralInstrument];\n\n if (!audience || isGeneral) return true;\n\n return !(audience !== audienceStudentId && type !== typeFeedbackId);\n }),\n [FormNameEnum.instrumentSubType]: Yup.number()\n .nullable()\n .when(FormNameEnum.isGeneralInstrument, {\n is: true,\n then: Yup.number(),\n otherwise: Yup.number().nullable(),\n })\n .test('instrument-sub-type-test', errorMessages.subTypeRequired, function () {\n const type = this.parent[FormNameEnum.instrumentType];\n const subType = this.parent[FormNameEnum.instrumentSubType];\n const isGeneral = this.parent[FormNameEnum.isGeneralInstrument];\n\n if (!isGeneral) {\n const isPreOrPostSession = !!type && checkIfTypeStartsWithPreOrPostSessionFirstDigit(type?.toString());\n\n if (isPreOrPostSession) {\n return !!subType;\n }\n }\n\n this.parent[FormNameEnum.instrumentSubType] = null;\n return true;\n }),\n [FormNameEnum.audience]: Yup.number()\n .nullable()\n .when(FormNameEnum.isGeneralInstrument, {\n is: true,\n then: Yup.number().notRequired(),\n otherwise: Yup.number().nullable().required(errorMessages.audienceRequired),\n }),\n\n [FormNameEnum.headerLogo]: Yup.mixed()\n .nullable()\n .test('has-correct-format', 'Unsupported Format!', (value) =>\n value ? SUPPORTED_LOGO_FORMATS.includes(value.type) : true\n )\n .test('has-correct-size', 'File you want to upload is with incorrect size!', (value) =>\n value ? value.size / MAX_ALLOWED_SIZE <= ALLOWED_LOGO_SIZE : true\n )\n .test('has-proper-dimensions', 'File you want to upload is with incorrect dimensions!', (value) => {\n if (value?.dimensions) {\n return (\n allowedHeaderLogoDimensions.width === value.dimensions.width &&\n allowedHeaderLogoDimensions.height === value.dimensions.height\n );\n }\n return true;\n }),\n\n [FormNameEnum.footerLogo]: Yup.mixed()\n .nullable()\n .test('has-correct-format', 'Unsupported Format!', (value) =>\n value ? SUPPORTED_LOGO_FORMATS.includes(value.type) : true\n )\n .test('has-correct-size', 'File you want to upload is with incorrect size!', (value) =>\n value ? value.size / MAX_ALLOWED_SIZE <= ALLOWED_LOGO_SIZE : true\n )\n .test('has-proper-dimensions', 'File you want to upload is with incorrect dimensions!', (value) => {\n if (value?.dimensions) {\n return (\n allowedFooterLogoDimensions.width === value.dimensions.width &&\n allowedFooterLogoDimensions.height === value.dimensions.height\n );\n }\n return true;\n }),\n});\n\nexport interface IInstrumentDetailsFormBaseValues {\n [FormNameEnum.templateName]: string;\n [FormNameEnum.instructionText]: string;\n [FormNameEnum.headerLogo]: File;\n [FormNameEnum.footerLogo]: File;\n [FormNameEnum.pillars]: number;\n [FormNameEnum.programs]: number[];\n [FormNameEnum.phase]: number;\n [FormNameEnum.instrumentType]: number;\n [FormNameEnum.instrumentSubType]: number;\n [FormNameEnum.audience]: number;\n [FormNameEnum.isGeneralInstrument]: boolean;\n}\n","import {RolesEnum} from 'permissions';\n\nexport const checkIfAreaAdmin = (hasPermission) => {\n const isAreaAdmin =\n hasPermission([RolesEnum.AreaAdmin]) &&\n !hasPermission([RolesEnum.USAAdmin]) &&\n !hasPermission([RolesEnum.SuperAdmin]);\n return isAreaAdmin;\n};\n","import {base64toBlob} from './convertBase64ToBlob';\n\nexport const prepareFileFromBlob = (byteArray: string, contentType: string, fileName: string) => {\n const blob = base64toBlob(byteArray, contentType);\n return new File([blob], fileName, {type: contentType});\n};\n","export const base64toBlob = (b64Data: string, contentType = '', sliceSize = 512) => {\n const byteCharacters = atob(b64Data);\n const byteArrays = [];\n\n for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {\n const slice = byteCharacters.slice(offset, offset + sliceSize);\n\n const byteNumbers = new Array(slice.length);\n for (let i = 0; i < slice.length; i++) {\n byteNumbers[i] = slice.charCodeAt(i);\n }\n\n const byteArray = new Uint8Array(byteNumbers);\n byteArrays.push(byteArray);\n }\n\n const blob = new Blob(byteArrays, {type: contentType});\n return blob;\n};\n","import {ALL_AREAS_INDEX} from 'utils';\nimport {IFetchAreaProgramClassQueryParams} from '../../models';\n\nexport const mapAreaProgramClassExport = (\n programId: number,\n sessionId?: number,\n areaId?: number\n): IFetchAreaProgramClassQueryParams => {\n const hasAreaId = !!areaId;\n const isSingleArea = hasAreaId && areaId > ALL_AREAS_INDEX;\n\n if (sessionId) {\n return {programId, sessionId};\n }\n\n if (isSingleArea) {\n return {programId, areaId};\n }\n\n return {\n programId,\n };\n};\n","import {createLinkForDownload} from 'utils';\n\nexport const downloadExport = (mimeType: string, data: string, fileName: string) => {\n createLinkForDownload(`data:${mimeType};base64,${data}`, fileName);\n};\n","import {prepareContentTypeImage} from './prepareContentTypeImage';\nimport {prepareFileFromBlob} from './prepareFileFromBlob';\n\nexport const getInstrumentLogo = (data: any) => {\n const contentType = prepareContentTypeImage(data?.extention);\n return prepareFileFromBlob(data?.byteArray, contentType, data?.fileName);\n};\n","const firstCharIndex = 1;\n\nexport const prepareContentTypeImage = (field: string) => {\n const type = field.slice(firstCharIndex);\n return `image/${type}`;\n};\n","import {IInstrumentDetailsWithLogos} from 'models';\nimport {IInstrumentDetailsFormBaseValues} from '..';\n\nconst mapInstrumentMetadata = (formData: IInstrumentDetailsFormBaseValues) =>\n JSON.stringify({\n pillarId: formData.pillars,\n programIds: formData.programs,\n phase: formData.phase,\n type: formData.subType ? formData.subType : formData.type,\n audience: formData.audience,\n isGeneralInstrument: formData.isGeneralInstrument,\n instrumentName: formData.templateName,\n });\n\nexport const mapUpdateInstrument = (\n formData: IInstrumentDetailsFormBaseValues,\n activeTemplate: IInstrumentDetailsWithLogos\n) => {\n const data = new FormData();\n const metaData = mapInstrumentMetadata(formData);\n\n data.append('templateId', activeTemplate.templateId.toString());\n data.append('name', formData.templateName);\n data.append('instructionText', formData.instructionText);\n data.append('headerUrl', activeTemplate.header.url);\n data.append('footerUrl', activeTemplate.footer.url);\n data.append('metaData', metaData);\n data.append('headerImage', formData.headerLogo);\n data.append('footerImage', formData.footerLogo);\n\n return data;\n};\n","export enum ToastNotificationTypeEnum {\n info = 'info',\n success = 'success',\n error = 'error',\n warning = 'warning',\n}\n","export * from './IProgramClassInstrumentsState';\nexport * from './programClassInstruments.selectors';\nexport * from './programClassInstruments.slice';\nexport * from './thunks';\n","import {useSelector} from 'react-redux';\nimport {filtersAreasEntitiesSelector} from 'filters-selections';\nimport {useFormikContext} from 'formik';\nimport {IAddIntegrationFormBaseValues} from 'models/integrations';\nimport {\n getAreaStringValue,\n getIntegrationTypeStringValue,\n getSchoolDistrictStringValue,\n getSchoolNameStringValue,\n} from '../utils/helpers';\nimport {\n addIntegrationErrorMessageSelector,\n pageLoadingSelector,\n serviceSourceEmailSelector,\n} from './../../store/integrations.selectors';\n\nexport const useAddIntegration = () => {\n const {values} = useFormikContext<IAddIntegrationFormBaseValues>();\n const areas = useSelector(filtersAreasEntitiesSelector);\n const loading = useSelector(pageLoadingSelector);\n const serviceSourceEmail = useSelector(serviceSourceEmailSelector);\n const googleSitesSourceErrorMessage = useSelector(addIntegrationErrorMessageSelector);\n\n const {\n area,\n certificate,\n email,\n integrationName,\n integrationType,\n schoolDistrict,\n schoolName,\n clientId,\n clientSecret,\n authorityUrl,\n googleDriveSourceFolderLink,\n googleDriveDestinationFolderLink,\n masterClassroomEmailAccount,\n } = values ?? {\n area: null,\n certificate: null,\n clientId: null,\n clientSecret: null,\n email: null,\n integrationName: null,\n integrationType: null,\n schoolDistrict: null,\n schoolName: null,\n googleDriveSourceFolderLink: null,\n googleDriveDestinationFolderLink: null,\n masterClassroomEmailAccount: null,\n };\n\n const certificateName = certificate?.name ?? '';\n const areaName = getAreaStringValue(area, areas);\n const integrationTypeStringValue = getIntegrationTypeStringValue(integrationType);\n const schoolDistrictStringValue = getSchoolDistrictStringValue(schoolDistrict);\n const schoolNameStringValue = getSchoolNameStringValue(schoolName, values?.schoolNames);\n const hasServiceSourceEmail = !!serviceSourceEmail;\n const isGoogleSitesDestination = values?.isGoogleSitesDestination;\n const canShowGoogleSitesErrorBox =\n !hasServiceSourceEmail && googleSitesSourceErrorMessage && isGoogleSitesDestination;\n\n return {\n loading,\n email,\n integrationName,\n certificateName,\n areaName,\n integrationTypeStringValue,\n schoolDistrictStringValue,\n schoolNameStringValue,\n clientId,\n clientSecret,\n authorityUrl,\n googleDriveSourceFolderLink,\n googleDriveDestinationFolderLink,\n serviceSourceEmail,\n googleSitesSourceErrorMessage,\n hasServiceSourceEmail,\n isGoogleSitesDestination,\n canShowGoogleSitesErrorBox,\n masterClassroomEmailAccount,\n };\n};\n","import {NavigationProgressBarTextEnum} from 'admin/integrations/enums';\nimport {\n getIsGoogleClassRoom,\n getIsMicrosoftTeams,\n getIsGoogleSitesSource,\n getIsGoogleSitesDestination,\n} from 'admin/integrations';\n\nexport const useAddIntegrationType = (integrationType: number) => {\n const type = Number(integrationType);\n\n const isGoogleClassRoom = getIsGoogleClassRoom(type);\n const isMicrosoftTeams = getIsMicrosoftTeams(type);\n const isGoogleSitesSource = getIsGoogleSitesSource(type);\n const isGoogleSitesDestination = getIsGoogleSitesDestination(type);\n\n return {\n integrationTextType: NavigationProgressBarTextEnum.Step2Text,\n isGoogleClassRoom,\n isMicrosoftTeams,\n isGoogleSitesSource,\n isGoogleSitesDestination,\n };\n};\n","import {useCallback} from 'react';\nimport {unwrapResult} from '@reduxjs/toolkit';\nimport {useAppDispatch, useNavigate} from 'hooks';\n\nimport {\n createGoogleSitesDestinationThunk,\n createGoogleSitesSourceThunk,\n createGoogleVirtualClassThunk,\n createMicrosoftTeamsThunk,\n fetchPublishedSourceDetailsThunk,\n fetchServiceEmailThunk,\n testGoogleClassroomThunk,\n testGoogleSitesDestinationThunk,\n testGoogleSitesSourceThunk,\n testMicrosoftTeamsThunk,\n} from 'admin';\nimport {pages} from 'paths';\nimport {\n IAddIntegrationPayload,\n ICreatedIntegration,\n ICreateGoogleVirtualClassResponse,\n ICreateMicrosoftTeamsVirtualClassResponse,\n} from 'models';\nimport {IHttpResponse} from 'api/models';\n\nexport const useAddIntegrationStateActions = () => {\n const dispatch = useAppDispatch();\n const {push} = useNavigate();\n\n const redirectToViewListOfIntegrations = useCallback(() => {\n push(`${pages.adminPortal.integrations.all}`);\n }, [push]);\n\n const createGoogleClassroom = useCallback(\n (payload: IAddIntegrationPayload): void =>\n dispatch(createGoogleVirtualClassThunk(payload))\n .then(unwrapResult)\n .then((response: IHttpResponse<ICreateGoogleVirtualClassResponse>) => response.data)\n .then(({id}: ICreatedIntegration) =>\n dispatch(testGoogleClassroomThunk(id)).then(() => redirectToViewListOfIntegrations())\n )\n .catch(() => redirectToViewListOfIntegrations()),\n [dispatch, redirectToViewListOfIntegrations]\n );\n\n const createGoogleSitesSource = useCallback(\n (payload: IAddIntegrationPayload): void =>\n dispatch(createGoogleSitesSourceThunk(payload))\n .then(unwrapResult)\n .then((response: IHttpResponse<ICreateGoogleVirtualClassResponse>) => response.data)\n .then(({id}: ICreatedIntegration) =>\n dispatch(testGoogleSitesSourceThunk(id)).then(() => redirectToViewListOfIntegrations())\n )\n .catch(() => redirectToViewListOfIntegrations()),\n [dispatch, redirectToViewListOfIntegrations]\n );\n\n const createGoogleSitesDestination = useCallback(\n (payload: IAddIntegrationPayload): void =>\n dispatch(createGoogleSitesDestinationThunk(payload))\n .then(unwrapResult)\n .then((response: IHttpResponse<ICreateGoogleVirtualClassResponse>) => response.data)\n .then(({id}: ICreatedIntegration) =>\n dispatch(testGoogleSitesDestinationThunk(id)).then(() => redirectToViewListOfIntegrations())\n )\n .catch(() => redirectToViewListOfIntegrations()),\n [dispatch, redirectToViewListOfIntegrations]\n );\n\n const createMicrosoftTeams = useCallback(\n (payload: IAddIntegrationPayload): void =>\n dispatch(createMicrosoftTeamsThunk(payload))\n .then(unwrapResult)\n .then((response: IHttpResponse<ICreateMicrosoftTeamsVirtualClassResponse>) => response.data)\n .then(({id}: ICreatedIntegration) =>\n dispatch(testMicrosoftTeamsThunk(id)).then(() => redirectToViewListOfIntegrations())\n )\n .catch(() => redirectToViewListOfIntegrations()),\n [dispatch, redirectToViewListOfIntegrations]\n );\n\n const fetchServiceEmail = useCallback((): void => dispatch(fetchServiceEmailThunk()), [dispatch]);\n\n const fetchPublishedSourceDetails = useCallback((): void => dispatch(fetchPublishedSourceDetailsThunk()), [dispatch]);\n\n return {\n createGoogleClassroom,\n createGoogleSitesSource,\n createGoogleSitesDestination,\n createMicrosoftTeams,\n redirectToViewListOfIntegrations,\n fetchServiceEmail,\n fetchPublishedSourceDetails,\n };\n};\n","import {IProgramClassReportMenuListOption} from 'models';\nimport {DefaultProgramMenuItemOptionEnum} from '../enums';\nimport {IProgramDetailsState} from './IProgramDetailsState';\n\nexport const defaultProgramMenuOptionId = 1 as number;\n\nexport const defaultProgramMenuItemOption = {\n id: defaultProgramMenuOptionId,\n displayText: DefaultProgramMenuItemOptionEnum.ProgramLevel,\n} as IProgramClassReportMenuListOption;\n\nexport const defaultProgramClassMenuItemOption = {\n id: defaultProgramMenuOptionId,\n displayText: DefaultProgramMenuItemOptionEnum.ClassLevel,\n} as IProgramClassReportMenuListOption;\n\nconst levelOfReportsInitial = {\n loading: false,\n selectedId: defaultProgramMenuItemOption.id,\n menuItems: [],\n};\n\nexport const programDetailsInitialState: IProgramDetailsState = {\n loading: false,\n levelOfReports: levelOfReportsInitial,\n};\n","export enum IGoogleSitesAreasTableEnum {\n Area = 'area',\n Status = 'status',\n LastCopiedDate = 'lastCopiedDate',\n Copy = 'copy',\n Name = 'integrationName',\n}\n","export enum GoogleSitesDetailOrderingEnum {\n AreaName = 'areaName',\n LastCopiedDate = 'dateLastSent',\n}\n","export enum GoogleSiteDetailsNameEnum {\n AREA_NAME_ASC = 'Area Name: A-Z',\n AREA_NAME_DESC = 'Area Name: Z-A',\n LAST_COPIED_DATE_ASC = 'Last Copied Date: Asc',\n LAST_COPIED_DATE_DESC = 'Last Copied Date: Desc',\n}\n","export enum HistoryTableStatusEnum {\n Copied = 'Copied',\n NotCopied = 'Not Copied',\n}\n","export enum HistoryTableButtonTextEnum {\n Copy = 'Copy',\n Copied = 'Copied',\n}\n","export enum BoxSizeEnum {\n small = 'small',\n large = 'large',\n}\n","export enum UploadFileStatusEnum {\n Uploading = 'uploading',\n Uploaded = 'uploaded',\n Failed = 'failed',\n}\n","export * from './IProgramMasterInstrumentsState';\nexport * from './programMasterInstruments.selectors';\nexport * from './programMasterInstruments.slice';\nexport * from './thunks';\n","export enum FilterNamesEnum {\n SEARCH_BY_NAME = 'searchByName',\n AREAS = 'areasFilter',\n EDUCATORS = 'educatorsFilter',\n SCHOOL_NAMES = 'schoolNamesFilter',\n DISTRICTS = 'districtsFilter',\n START_DATE = 'startDate',\n END_DATE = 'endDate',\n ORDER_BY = 'orderBy',\n ORDER_ASC = 'orderAsc',\n YEARS = 'programYearsFilter',\n ONLY_VIRTUAL_CLASSES = 'onlyVirtualClasses',\n}\n","export enum OrderingNamesEnum {\n Name = 'Instrument Name',\n Created = 'Created On',\n Type = 'Type',\n Status = 'Status',\n Audience = 'Audience',\n}\n\nexport enum OrderingBackendEnum {\n Name = 't.Name',\n Created = 't.DateCreated',\n Type = 't.SurveyType',\n Status = 't.TemplateStatus',\n Audience = 't.SurveyAudience',\n}\n","export enum ProgramClassesDropdownNameEnum {\n Class_ASC = 'Class: A-Z',\n Class_DESC = 'Class: Z-A',\n BCRMClassNumber_ASC = 'BCRM Class Number: A-Z',\n BCRMClassNumber_DESC = 'BCRM Class Number: Z-A',\n SchoolName_ASC = 'School Name: A-Z',\n SchoolName_DESC = 'School Name: Z-A',\n NumberOfStudents_ASC = 'Number of Students: Asc',\n NumberOfStudents_DESC = 'Number of Students: Desc',\n}\n","export enum AuditLogsColumnsTableEnum {\n DateOfChange = 'dateOfChange',\n User = 'user',\n Activity = 'activity',\n Outcome = 'outcome',\n Remarks = 'remarks',\n}\n","export enum AuditLogsLabelEnum {\n DateOfChange = 'Date of Change (UTC)',\n User = 'User',\n Activity = 'Activity',\n Outcome = 'Outcome',\n Remarks = 'Remarks',\n}\n","export * from './hooks';\nexport * from './components';\nexport * from './models';\nexport {SurveyTakerGeneralInstrument} from './SurveyTakerGeneralInstrument';\nexport {SurveyTakerMasterInstrument} from './SurveyTakerMasterInstrument';\nexport {SurveyTakerPreview} from './SurveyTakerPreview';\n","export const learningPathMessages = {\n warning:\n 'Are you sure you want to leave this page? You have unsaved changes. If you leave the page, these changes will be lost!',\n exporting: 'The export is being downloaded.',\n};\n","export * from './IProgramClassesState';\nexport * from './programClasses.selectors';\nexport * from './programClasses.slice';\nexport * from './thunks';\n","export const prefix = '[Upload / Resource]';\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {ICreateFileApiResponse} from 'models/resources';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\nimport {CancelToken, uploadResourcesApi} from 'api';\nimport {createUniqueId} from 'utils/common';\nimport {IInputFile} from 'models/library/common';\nimport {FIVE_PERCENT, MAX_PERCENT, SEC_DURATION, ZERO_NUMBER} from 'utils/constants';\nimport {\n removeFileFromUploadManager,\n setUploadFileStatus,\n setUploadProgress,\n UploaderActionTypes,\n} from 'admin/upload/store';\nimport {debounce} from 'utils/functions';\nimport {getInitialFileToUploadPayload} from '../../utils/helpers/getInitialFileToUploadPayload';\nimport {calculateLoadedPercent} from '../../utils/helpers/calculateLoadedPercent';\nimport {UploadFileStatusEnum} from 'admin/upload/enums';\n\nexport const uploadFileThunk: any = createAsyncThunk<ICreateFileApiResponse, FormData>(\n `${prefix} uploadFile`,\n async (payload: FormData, {dispatch, rejectWithValue}) => {\n const source = CancelToken.source();\n const id = createUniqueId();\n const file = payload.get('file') as IInputFile;\n const fileToUploadInitial = getInitialFileToUploadPayload(id, file.name, file.size, source.cancel);\n\n const uploadProgress = (progressEvent: ProgressEvent) => {\n const {loaded, total} = progressEvent;\n const percentageProgress = calculateLoadedPercent(loaded, total);\n\n if (percentageProgress % FIVE_PERCENT === ZERO_NUMBER) {\n const uploadingFile = {\n ...fileToUploadInitial,\n size: file.size,\n percentage: percentageProgress,\n status: percentageProgress < MAX_PERCENT ? UploadFileStatusEnum.Uploading : UploadFileStatusEnum.Uploaded,\n };\n dispatch(setUploadProgress(uploadingFile));\n }\n };\n\n try {\n dispatch({type: UploaderActionTypes.POST_UPLOAD_FILE_REQUEST, payload: fileToUploadInitial});\n const response = await uploadResourcesApi.uploadFile(payload, uploadProgress, source.token);\n dispatch(setUploadFileStatus(file.name, UploadFileStatusEnum.Uploaded));\n debounce(dispatch(removeFileFromUploadManager(id)), SEC_DURATION);\n dispatch(toastNotificationManager.createSuccessToastAction('File was uploaded successfully'));\n return response.data;\n } catch (error) {\n const errMsg = error.response.data.messages[0];\n dispatch(toastNotificationManager.createErrorToastAction(errMsg));\n return rejectWithValue({error});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {uploadResourcesApi} from 'api';\nimport {IUploadScormApiResponse, IUploadScormPayload} from 'models/resources';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const uploadScormThunk: any = createAsyncThunk<IUploadScormApiResponse, IUploadScormPayload>(\n `${prefix} uploadScorm`,\n async (payload: IUploadScormPayload, {dispatch, rejectWithValue}) => {\n try {\n const response = await uploadResourcesApi.uploadScorm(payload);\n dispatch(toastNotificationManager.createSuccessToastAction('Scorm package was uploaded successfully'));\n return response.data;\n } catch (error) {\n dispatch(toastNotificationManager.createErrorToastAction(error.messages));\n return rejectWithValue({error});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {uploadResourcesApi} from 'api';\nimport {ICreateWebLinkApiResponse, ICreateWebLinkPayload} from 'models/resources';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const createWebLinkThunk: any = createAsyncThunk<ICreateWebLinkApiResponse, ICreateWebLinkPayload>(\n `${prefix} createWebLink`,\n async (payload: ICreateWebLinkPayload, {dispatch, rejectWithValue}) => {\n try {\n const response = await uploadResourcesApi.createWebLink(payload);\n dispatch(toastNotificationManager.createSuccessToastAction('Web link was created successfully'));\n return response.data;\n } catch (error) {\n dispatch(toastNotificationManager.createErrorToastAction(error.messages));\n return rejectWithValue({error});\n }\n }\n);\n","export const prefix = '[File / Details]';\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {pamApi} from 'api';\nimport {pages} from 'paths';\nimport {IGetFileByIdApiResponse, IGetFileByIdPayload} from 'models/resources';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {redirectWhenErrorStatusCode} from 'utils';\nimport {prefix} from './config';\nimport {ErrorStatusCodesEnum} from 'enums';\n\nexport const fetchFileByIdThunk: any = createAsyncThunk<IGetFileByIdApiResponse, IGetFileByIdPayload>(\n `${prefix} fetchFileById`,\n async ({id, push}, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await pamApi.getFileById(id);\n return parsedBody;\n } catch (error) {\n if (error.status === ErrorStatusCodesEnum.NotFound) {\n redirectWhenErrorStatusCode(error.status, pages.fileNotFound.root, push);\n } else {\n dispatch(toastNotificationManager.createErrorToastAction(error.parsedBody));\n }\n return rejectWithValue({error});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {pamApi} from 'api';\nimport {IResourceItemBase} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\nimport {fileDetailsMessages} from '../../utils';\n\nexport const deleteFileThunk: any = createAsyncThunk<IResourceItemBase, string>(\n `${prefix} deleteFileThunk`,\n async (id, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await pamApi.deleteFileById(id);\n dispatch(toastNotificationManager.createSuccessToastAction(fileDetailsMessages.deleteSuccess));\n return parsedBody;\n } catch (error) {\n dispatch(toastNotificationManager.createErrorToastAction(error.parsedBody));\n return rejectWithValue({error});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {pamApi} from 'api';\nimport {IUpdateFileResourceApiResponse, IUpdateFileResourcePayload} from 'models/resources';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const updateResourcesFileThunk: any = createAsyncThunk<\n IUpdateFileResourceApiResponse,\n IUpdateFileResourcePayload\n>(`${prefix} updateResourcesFileThunk`, async (payload: IUpdateFileResourcePayload, {dispatch, rejectWithValue}) => {\n try {\n const response = await pamApi.updateFileResource(payload);\n dispatch(toastNotificationManager.createSuccessToastAction('File was updated successfully!'));\n return response.data;\n } catch (error) {\n dispatch(toastNotificationManager.createErrorToastAction(error.response.data.messages.join('')));\n return rejectWithValue({error});\n }\n});\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {pamApi} from 'api';\nimport {IUpdateFileResourceApiResponse, IUpdateFileResourcePayload} from 'models/resources';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const updateScormResourceThunk: any = createAsyncThunk<\n IUpdateFileResourceApiResponse,\n IUpdateFileResourcePayload\n>(`${prefix} updateScormResource`, async (payload: IUpdateFileResourcePayload, {dispatch, rejectWithValue}) => {\n try {\n const response = await pamApi.updateScormResource(payload);\n dispatch(toastNotificationManager.createSuccessToastAction('Scorm package was updated successfully!'));\n return response.data;\n } catch (error) {\n dispatch(toastNotificationManager.createErrorToastAction(error.response.data.messages.join('')));\n return rejectWithValue({error});\n }\n});\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {pamApi} from 'api';\nimport {IUpdateWebLinkResourceApiResponse, IUpdateWebLinkResourcePayload} from 'models/resources';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const updateWebLinkResourceThunk: any = createAsyncThunk<\n IUpdateWebLinkResourceApiResponse,\n IUpdateWebLinkResourcePayload\n>(`${prefix} updateWebLinkResource`, async (payload: IUpdateWebLinkResourcePayload, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await pamApi.updateWebLinkResource(payload);\n dispatch(toastNotificationManager.createSuccessToastAction('Web link was updated successfully!'));\n return parsedBody;\n } catch (error) {\n dispatch(toastNotificationManager.createErrorToastAction(error.response.data.messages.join('')));\n return rejectWithValue({error});\n }\n});\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {pamApi} from 'api';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {getContentResponseHeaders} from '../../utils';\nimport {prefix} from './config';\n\nexport const downloadFileByIdThunk: any = createAsyncThunk<any, string>(\n `${prefix} downloadFileById`,\n async (id, {dispatch, rejectWithValue}) => {\n dispatch(toastNotificationManager.createSuccessToastAction('The resource is being downloaded.'));\n try {\n const response = await pamApi.downloadFileByResourceId(id);\n const {mimeType, fileName} = getContentResponseHeaders(response);\n\n return {\n blob: response.data,\n fileName,\n mimeType,\n };\n } catch (error) {\n dispatch(toastNotificationManager.createErrorToastAction(error.parsedBody));\n return rejectWithValue({error});\n }\n }\n);\n","import {IFileDetailsStoreState} from './IFileDetailsStoreState';\n\nexport const fileDetailsInitialState: IFileDetailsStoreState = {\n page: {\n loading: false,\n fileDownloading: false,\n },\n fileDetails: null,\n};\n","import {IFileDetailsStoreState} from './IFileDetailsStoreState';\nimport {fileDetailsInitialState} from './fileDetails.initialState';\n\nexport const fileDetailsReducer = {\n clear(state: IFileDetailsStoreState) {\n state.fileDetails = {...fileDetailsInitialState.fileDetails};\n },\n};\n","import {IActionFulfilled} from 'models/common';\nimport {\n IUpdateFileResourceApiResponse,\n IUpdateScormResourceApiResponse,\n IUpdateWebLinkResourceApiResponse,\n} from 'models/resources';\nimport {isObject} from 'utils/functions';\nimport {IFileDetailsStoreState} from './IFileDetailsStoreState';\nimport {\n deleteFileThunk,\n downloadFileByIdThunk,\n fetchFileByIdThunk,\n updateResourcesFileThunk,\n updateScormResourceThunk,\n updateWebLinkResourceThunk,\n} from './thunks';\n\nexport const fileDetailsExtraReducer = {\n // fetchFileByIdThunk\n [fetchFileByIdThunk.fulfilled]: (state: IFileDetailsStoreState, action: IActionFulfilled<null, any>) => {\n if (isObject(action.payload)) {\n const {data} = action.payload;\n state.fileDetails = data;\n }\n state.page.loading = false;\n },\n [fetchFileByIdThunk.pending]: (state: IFileDetailsStoreState) => {\n state.page.loading = true;\n },\n [fetchFileByIdThunk.rejected]: (state: IFileDetailsStoreState) => {\n state.page.loading = false;\n },\n\n // deleteFileThunk\n [deleteFileThunk.fulfilled]: (state: IFileDetailsStoreState) => {\n state.page.loading = false;\n },\n [deleteFileThunk.pending]: (state: IFileDetailsStoreState) => {\n state.page.loading = true;\n },\n [deleteFileThunk.rejected]: (state: IFileDetailsStoreState) => {\n state.page.loading = false;\n },\n\n // updateResourcesFileThunk\n [updateResourcesFileThunk.fulfilled]: (\n state: IFileDetailsStoreState,\n action: IActionFulfilled<null, IUpdateFileResourceApiResponse>\n ) => {\n if (isObject(action.payload)) {\n const {data} = action.payload;\n state.fileDetails = {...state.fileDetails, ...data, file: null};\n state.page.loading = false;\n }\n },\n [updateResourcesFileThunk.pending]: (state: IFileDetailsStoreState) => {\n state.page.loading = true;\n },\n [updateResourcesFileThunk.rejected]: (state: IFileDetailsStoreState) => {\n state.page.loading = false;\n },\n\n // updateScormResourceThunk\n [updateScormResourceThunk.fulfilled]: (\n state: IFileDetailsStoreState,\n action: IActionFulfilled<null, IUpdateScormResourceApiResponse>\n ) => {\n if (isObject(action.payload)) {\n const {data} = action.payload;\n state.fileDetails = {...state.fileDetails, ...data};\n state.page.loading = false;\n }\n },\n [updateScormResourceThunk.pending]: (state: IFileDetailsStoreState) => {\n state.page.loading = true;\n },\n [updateScormResourceThunk.rejected]: (state: IFileDetailsStoreState) => {\n state.page.loading = false;\n },\n\n // updateWebLinkResourceThunk\n [updateWebLinkResourceThunk.fulfilled]: (\n state: IFileDetailsStoreState,\n action: IActionFulfilled<null, IUpdateWebLinkResourceApiResponse>\n ) => {\n if (isObject(action.payload)) {\n const {data} = action.payload;\n state.fileDetails = {...state.fileDetails, ...data};\n state.page.loading = false;\n }\n },\n [updateWebLinkResourceThunk.pending]: (state: IFileDetailsStoreState) => {\n state.page.loading = true;\n },\n [updateWebLinkResourceThunk.rejected]: (state: IFileDetailsStoreState) => {\n state.page.loading = false;\n },\n\n // downloadFileByIdThunk\n [downloadFileByIdThunk.fulfilled]: (state: IFileDetailsStoreState) => {\n state.page.fileDownloading = false;\n },\n [downloadFileByIdThunk.pending]: (state: IFileDetailsStoreState) => {\n state.page.fileDownloading = true;\n },\n [downloadFileByIdThunk.rejected]: (state: IFileDetailsStoreState) => {\n state.page.fileDownloading = false;\n },\n};\n","import {createSelector} from '@reduxjs/toolkit';\nimport {TStateStore} from 'store';\n\nconst getFilesState = (state: TStateStore) => state.resources.files;\n\nexport const getFileDetailsState = createSelector(getFilesState, (files) => files.details);\n\nexport const pageLoadingSelector = createSelector(getFileDetailsState, (details) => details.page.loading);\n\nexport const fileDetailsSelector = createSelector(getFileDetailsState, (details) => details.fileDetails);\n\nexport const fileDownloadingSelector = createSelector(getFileDetailsState, (details) => details.page.fileDownloading);\n","import {createSlice} from '@reduxjs/toolkit';\nimport {fileDetailsReducer} from './fileDetails.reducer';\nimport {fileDetailsExtraReducer} from './fileDetailsExtra.reducer';\nimport {fileDetailsInitialState} from './fileDetails.initialState';\n\nexport const fileDetailsSlice = createSlice({\n name: 'fileDetails',\n initialState: fileDetailsInitialState,\n reducers: fileDetailsReducer,\n extraReducers: fileDetailsExtraReducer,\n});\n","import React, {FC, ReactNode, useMemo} from 'react';\nimport {IconButton, makeStyles} from '@material-ui/core';\nimport {FormNameEnum, InputTypeEnum} from 'enums/form';\nimport {Icon, Input, Label, Wrapper} from 'components-lib';\nimport {IWithDisabled} from 'models';\nimport {IntegrationFormInput} from '../../add-integration/components';\n\ninterface IIntegrationInputProps extends IWithDisabled {\n name?: FormNameEnum;\n label: string;\n type?: string;\n value?: string;\n withForm?: boolean;\n withMargin?: boolean;\n withIcon?: boolean;\n iconPosition?: 'start' | 'end';\n icon?: ReactNode;\n}\n\nexport const IntegrationInput: FC<IIntegrationInputProps> = ({\n name,\n label,\n type,\n value,\n withForm = true,\n disabled = false,\n withMargin = true,\n withIcon = false,\n iconPosition = 'end',\n icon,\n}) => {\n const classes = useStyles({withMargin});\n\n const iconButton = useMemo(\n () => (\n <IconButton disabled={disabled}>\n {type === InputTypeEnum.Password ? <Icon.VisibilityOnIcon /> : <Icon.VisibilityOffIcon />}\n </IconButton>\n ),\n [disabled, type]\n );\n\n return (\n <Wrapper className={classes.input}>\n <Label label={label} />\n {withForm ? (\n <IntegrationFormInput\n name={name}\n value=\"\"\n type={type}\n disabled={disabled}\n withIcon={withIcon}\n iconPosition={iconPosition}\n icon={icon}\n />\n ) : (\n <Input\n value={value}\n disabled={disabled}\n type={type}\n withIcon={withIcon}\n iconPosition={iconPosition}\n icon={iconButton}\n />\n )}\n </Wrapper>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n input: ({withMargin}: {withMargin: boolean}) => {\n const styles = withMargin && {\n marginTop: theme.spacing(3),\n marginRight: theme.spacing(3),\n marginBottom: theme.spacing(3),\n };\n return styles;\n },\n}));\n","import React, {FC} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Wrapper} from 'components-lib';\nimport {IntegrationInput} from 'admin/integrations/components';\nimport {IPreviewListOption} from 'models/integrations';\nimport {RemoveRedEye} from '@material-ui/icons';\ninterface IPreviewListProps {\n list: IPreviewListOption[];\n}\n\nexport const PreviewList: FC<IPreviewListProps> = ({list}) => {\n const classes = useStyles();\n\n return (\n <Wrapper className={classes.input}>\n {list.map(({label, name, value, options: {withForm, withIcon, withMargin, disabled}, type}, id) => (\n <IntegrationInput\n key={id}\n label={label}\n value={value}\n withForm={withForm}\n withMargin={withMargin}\n withIcon={withIcon}\n disabled={disabled}\n name={name}\n type={type}\n icon={withIcon && <RemoveRedEye />}\n />\n ))}\n </Wrapper>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n input: {\n marginRight: theme.spacing(3),\n marginBottom: theme.spacing(3),\n },\n}));\n","import React, {FC} from 'react';\nimport {FormNameEnum} from 'enums/form';\nimport {IWithDisabled} from 'models/common';\nimport {Form} from 'forms';\nimport {useFormikContext} from 'formik';\nimport {IAddIntegrationFormBaseValues} from 'models/integrations';\ninterface IIntegrationConfirmCheckboxProps extends IWithDisabled {\n text: string;\n name?: FormNameEnum;\n showError: boolean;\n value?: boolean;\n}\n\nexport const IntegrationConfirmCheckbox: FC<IIntegrationConfirmCheckboxProps> = ({\n text,\n disabled,\n name = FormNameEnum.canGiveEditorPermissions,\n showError,\n value,\n}) => {\n const {\n values: {canGiveEditorPermissions},\n } = useFormikContext<IAddIntegrationFormBaseValues>();\n\n return (\n <Form.Checkbox\n name={name}\n label={text}\n disabled={disabled}\n checked={value || canGiveEditorPermissions}\n color={!showError ? 'primary' : 'secondary'}\n />\n );\n};\n","import {integrationTypeMap} from '../constants';\n\nexport const getIntegrationTypeStringValue = (integrationType: number) => integrationTypeMap[integrationType];\n","export const getSchoolDistrictStringValue = (schoolDistrict: number) => {\n return schoolDistrict?.toString() ?? '';\n};\n","export const getSchoolNameStringValue = (schoolId: number, schoolNamesObj: any) =>\n schoolNamesObj ? schoolNamesObj[schoolId] : '';\n","import {IEntityBase} from 'models/common';\n\nexport const getAreaStringValue = (\n area: number,\n areas: {\n [id: string]: IEntityBase;\n }\n) => {\n return areas[area]?.name ?? '';\n};\n","import {\n IAddIntegrationFormBaseValues,\n IAddIntegrationPayload,\n ICreateMicrosoftTeamsVirtualClassPayload,\n} from 'models/integrations';\n\n// Optional multipart form data for Google\nconst prepareOptionalMultiPartFormDataForGoogle = (\n data: FormData,\n area: number,\n schoolId: number,\n schoolDistrictId: number\n) => {\n if (!!area) {\n data.append('areaId', area.toString()); // optional\n }\n\n if (!!schoolId) {\n data.append('schoolId', schoolId.toString()); // optional\n }\n\n if (!!schoolDistrictId) {\n data.append('districtId', schoolDistrictId.toString()); // optional\n }\n};\n\n// Google Classroom\nconst prepareMultiPartFormDataForGoogleClassRoom = ({\n certificate,\n integrationName,\n area,\n schoolName,\n schoolDistrict,\n email,\n masterClassroomEmailAccount,\n}): FormData => {\n const data = new FormData();\n\n prepareOptionalMultiPartFormDataForGoogle(data, area, schoolName, schoolDistrict);\n\n data.append('certificate', certificate);\n data.append('name', integrationName);\n data.append('serviceEmailAccount', email);\n data.append('masterClassroomEmailAccount', masterClassroomEmailAccount);\n\n return data;\n};\n\nconst getGoogleClassRoomPayloadDetails = (formValues) => {\n const payload = prepareMultiPartFormDataForGoogleClassRoom(formValues);\n return payload;\n};\n\n// Google Sites Source\nconst prepareMultiPartFormDataForGoogleSitesSource = ({\n certificate,\n integrationName,\n area,\n schoolName,\n schoolDistrict,\n email,\n googleDriveSourceFolderLink,\n}): FormData => {\n const data = new FormData();\n\n prepareOptionalMultiPartFormDataForGoogle(data, area, schoolName, schoolDistrict);\n\n data.append('certificate', certificate);\n data.append('name', integrationName);\n data.append('serviceEmailAccount', email);\n data.append('defaultFolderLink', googleDriveSourceFolderLink);\n\n return data;\n};\n\nconst getGoogleSitesSourcePayloadDetails = (formValues) => {\n const payload = prepareMultiPartFormDataForGoogleSitesSource(formValues);\n return payload;\n};\n\n// Google Sites Destination\nconst prepareMultiPartFormDataForGoogleSitesDestination = ({\n integrationName,\n area,\n schoolName,\n schoolDistrict,\n email,\n googleDriveDestinationFolderLink,\n}): FormData => {\n const data = new FormData();\n\n prepareOptionalMultiPartFormDataForGoogle(data, area, schoolName, schoolDistrict);\n\n data.append('name', integrationName);\n data.append('serviceEmailAccount', email);\n data.append('defaultFolderLink', googleDriveDestinationFolderLink);\n\n return data;\n};\n\n// Microsoft Teams\nconst prepareJsonDataForMicrosoftTeams = ({\n integrationName,\n area,\n schoolName,\n schoolDistrict,\n clientId,\n clientSecret,\n authorityUrl,\n}) => {\n let microsoftTeamsPayload = {\n name: integrationName,\n clientId,\n clientSecret,\n authorityUrl,\n } as ICreateMicrosoftTeamsVirtualClassPayload;\n\n if (!!area) {\n microsoftTeamsPayload = {...microsoftTeamsPayload, areaId: area};\n }\n\n if (!!schoolName) {\n microsoftTeamsPayload = {...microsoftTeamsPayload, schoolId: schoolName};\n }\n\n if (!!schoolDistrict) {\n microsoftTeamsPayload = {...microsoftTeamsPayload, districtId: schoolDistrict};\n }\n\n return microsoftTeamsPayload;\n};\n\nconst getGoogleSitesDestinationPayloadDetails = (formValues) => {\n const payload = prepareMultiPartFormDataForGoogleSitesDestination(formValues);\n return payload;\n};\n\n// Microsoft Teams\nconst getMicrosoftTeamsPayloadDetails = (formValues): ICreateMicrosoftTeamsVirtualClassPayload => {\n const payload = prepareJsonDataForMicrosoftTeams(formValues);\n return payload;\n};\n\n// Add Integration Payload\nconst getAddIntegrationPayload = (\n formValues: IAddIntegrationFormBaseValues,\n isGoogleClassRoom: boolean,\n isMicrosoftTeams: boolean,\n isGoogleSitesSource: boolean,\n isGoogleSitesDestination: boolean\n): IAddIntegrationPayload => {\n if (isGoogleClassRoom) {\n return getGoogleClassRoomPayloadDetails(formValues);\n }\n\n if (isGoogleSitesSource) {\n return getGoogleSitesSourcePayloadDetails(formValues);\n }\n\n if (isGoogleSitesDestination) {\n return getGoogleSitesDestinationPayloadDetails(formValues);\n }\n\n if (isMicrosoftTeams) {\n return getMicrosoftTeamsPayloadDetails(formValues);\n }\n};\n\nexport const mapAddIntegrationDataForPayload = (\n formValues: IAddIntegrationFormBaseValues,\n isGoogleClassRoom: boolean,\n isMicrosoftTeams: boolean,\n isGoogleSitesSource: boolean,\n isGoogleSitesDestination: boolean\n) => {\n const payload = getAddIntegrationPayload(\n formValues,\n isGoogleClassRoom,\n isMicrosoftTeams,\n isGoogleSitesSource,\n isGoogleSitesDestination\n );\n return payload;\n};\n","import {AddIntegrationLabelEnum} from './../../enums';\nimport {\n getDefaultPreviewFirstColumnList,\n getIsMicrosoftTeams,\n getIsGoogleSitesSource,\n getIsGoogleSitesDestination,\n} from 'admin/integrations/utils/helpers';\nimport {getIsGoogleClassRoom} from 'admin/integrations';\n\nexport const getPreviewFirstColumnList = (\n type: number,\n {integrationTypeStringValue, areaName, schoolNameStringValue, certificateName, clientId}\n) => {\n const isGoogleClassroom = getIsGoogleClassRoom(type);\n const isGoogleSitesSource = getIsGoogleSitesSource(type);\n const isGoogleSitesDestination = getIsGoogleSitesDestination(type);\n const isMicrosoftTeams = getIsMicrosoftTeams(type);\n const defaultList = getDefaultPreviewFirstColumnList({\n integrationTypeStringValue,\n areaName,\n schoolNameStringValue,\n certificateName,\n });\n let list = [];\n\n if (isGoogleClassroom || isGoogleSitesSource) {\n list = [...defaultList];\n }\n\n if (isGoogleSitesDestination) {\n const googleSitesDestinationList = defaultList.slice(0, defaultList.length - 1);\n list = [...googleSitesDestinationList];\n }\n\n if (isMicrosoftTeams) {\n const microsoftTeamsList = defaultList.slice(0, defaultList.length - 1);\n list = [\n ...microsoftTeamsList,\n {\n label: AddIntegrationLabelEnum.ClientID,\n value: clientId ?? '',\n options: {\n withForm: false,\n disabled: true,\n },\n },\n ];\n }\n\n return list;\n};\n","import {getIsGoogleClassRoom} from 'admin/integrations';\nimport {\n getDefaultPreviewSecondColumnList,\n getIsMicrosoftTeams,\n getIsGoogleSitesSource,\n getIsGoogleSitesDestination,\n} from 'admin/integrations/utils/helpers';\nimport {InputTypeEnum} from 'enums/form';\nimport {AddIntegrationLabelEnum} from '../../enums';\n\nexport const getPreviewSecondColumnList = (\n type: number,\n {\n integrationName,\n schoolDistrictStringValue,\n email,\n googleDriveSourceFolderLink,\n clientSecret,\n authorityUrl,\n masterClassroomEmailAccount,\n }\n) => {\n const isGoogleClassroom = getIsGoogleClassRoom(type);\n const isGoogleSitesSource = getIsGoogleSitesSource(type);\n const isGoogleSitesDestination = getIsGoogleSitesDestination(type);\n const isMicrosoftTeams = getIsMicrosoftTeams(type);\n const defaultList = getDefaultPreviewSecondColumnList({\n integrationName,\n schoolDistrictStringValue,\n email,\n googleDriveSourceFolderLink,\n });\n\n let list = [];\n\n if (isGoogleClassroom) {\n const googleClassRoomList = defaultList.slice(0, defaultList.length - 1);\n list = [\n ...googleClassRoomList,\n {\n label: AddIntegrationLabelEnum.UserToImpersonate,\n value: masterClassroomEmailAccount ?? '',\n options: {\n withForm: false,\n disabled: true,\n },\n },\n ];\n }\n\n if (isGoogleSitesSource) {\n list = [...defaultList];\n }\n\n if (isGoogleSitesDestination) {\n list = [\n {\n label: AddIntegrationLabelEnum.IntegrationName,\n value: integrationName ?? '',\n options: {\n withForm: false,\n disabled: true,\n },\n },\n {\n label: AddIntegrationLabelEnum.SchoolDistrict,\n value: schoolDistrictStringValue ?? '',\n options: {\n withForm: false,\n disabled: true,\n },\n },\n ];\n }\n\n if (isMicrosoftTeams) {\n const microsoftTeamsList = defaultList.slice(0, defaultList.length - 2);\n list = [\n ...microsoftTeamsList,\n {\n label: AddIntegrationLabelEnum.ClientSecret,\n value: clientSecret ?? '',\n options: {\n withIcon: true,\n withForm: false,\n disabled: true,\n },\n type: InputTypeEnum.Password,\n },\n {\n label: AddIntegrationLabelEnum.AuthorityUrl,\n value: authorityUrl ?? '',\n options: {\n withForm: false,\n disabled: true,\n },\n },\n ];\n }\n\n return list;\n};\n","import {getIsGoogleSitesDestination, getIsGoogleSitesSource} from 'admin/integrations/utils';\nimport {FormNameEnum} from 'enums/form';\nimport {AddIntegrationLabelEnum} from '../../enums';\n\nexport const getAddIntegrationGoogleSitesList = (type: number) => {\n const isGoogleSitesSource = getIsGoogleSitesSource(type);\n const isGoogleSitesDestination = getIsGoogleSitesDestination(type);\n const defaultList = getDefaultGoogleSitesList();\n let list = [];\n\n if (isGoogleSitesSource) {\n list = [...defaultList];\n }\n\n if (isGoogleSitesDestination) {\n list = [\n {\n label: AddIntegrationLabelEnum.GoogleDriveDestinationFolderLink,\n name: FormNameEnum.googleDriveDestinationFolderLink,\n options: {\n withMargin: false,\n },\n },\n ];\n }\n\n return list;\n};\n\nfunction getDefaultGoogleSitesList() {\n return [\n {\n label: AddIntegrationLabelEnum.ServiceEmailAdress,\n name: FormNameEnum.email,\n options: {\n withMargin: false,\n },\n },\n {\n label: AddIntegrationLabelEnum.GoogleDriveSourceFolderLink,\n name: FormNameEnum.googleDriveSourceFolderLink,\n options: {\n withMargin: false,\n },\n },\n ];\n}\n","import {FormNameEnum, InputTypeEnum} from 'enums/form';\nimport {AddIntegrationLabelEnum} from '../../enums';\n\nexport const getAddIntegrationMicrosoftTeamsList = () => [\n {\n label: AddIntegrationLabelEnum.ClientID,\n name: FormNameEnum.clientId,\n options: {\n withMargin: false,\n withIcon: false,\n },\n },\n {\n label: AddIntegrationLabelEnum.ClientSecret,\n name: FormNameEnum.clientSecret,\n options: {\n withMargin: false,\n withIcon: false,\n },\n type: InputTypeEnum.Password,\n },\n {\n label: AddIntegrationLabelEnum.AuthorityUrl,\n name: FormNameEnum.authorityUrl,\n options: {\n withMargin: false,\n withIcon: false,\n },\n },\n];\n","import {FormNameEnum} from 'filters-selections';\nimport {useFormikContext} from 'formik';\nimport {useCallback} from 'react';\nimport {createEmptyCustomAnswerStack} from '../utils';\n\nexport function useCustomAnswerStack() {\n const {values} = useFormikContext();\n\n const addCustomStack = useCallback(() => {\n return createEmptyCustomAnswerStack();\n }, []);\n\n const customStacksValue = values[FormNameEnum.customStacks];\n\n return {customStacksValue, addCustomStack};\n}\n","import {BUTTON_NUM_LIST} from 'utils/constants';\nimport {FormNameEnum} from 'filters-selections';\nimport {useFormikContext} from 'formik';\n\nexport const useRangeAnswerStack = () => {\n const {values} = useFormikContext();\n const list = BUTTON_NUM_LIST;\n\n const rangeFrom = values[FormNameEnum.rangeFrom];\n const rangeTo = values[FormNameEnum.rangeTo];\n\n const rangeFromIdx = list.indexOf(Number(rangeFrom));\n const rangeToIdx = list.indexOf(Number(rangeTo));\n const rangeList = list.slice(rangeFromIdx, rangeToIdx + 1);\n\n return {\n list: rangeList,\n };\n};\n","import {QuestionAnswersTypeEnum} from 'enums';\nimport {IAnswerStack} from '../../../../../models/library/common/IAnswerStack';\n\nexport const useEditAnswerStack = (answerStack: IAnswerStack) => {\n const isTypeRating = answerStack?.questionTypeId === QuestionAnswersTypeEnum.ratingAnswerEnum;\n const isTypeDropdown = answerStack?.questionTypeId === QuestionAnswersTypeEnum.dropdownAnswerEnum;\n const isTypeOpenEnded = answerStack?.questionTypeId === QuestionAnswersTypeEnum.openEndedAnswerEnum;\n const isTypeMultiSelect = answerStack?.questionType === QuestionAnswersTypeEnum.checkbox;\n const isOtherType = !isTypeRating && !isTypeOpenEnded;\n\n return {isTypeRating, isTypeDropdown, isTypeOpenEnded, isOtherType, isTypeMultiSelect};\n};\n","import {useEffect} from 'react';\nimport {FormNameEnum} from 'filters-selections';\nimport {IItemEditFormValues} from '../views/edit/itemBuilderEditForm';\nimport {createEmptyFourAnswers, getIsDomainKnowledge} from '../utils';\nimport {MAX_EMPTY_ANSWERS} from 'utils/items';\nimport {IModalCreateAnswerStackFormValues} from '../components/ModalCreateAnswerStack';\n\nexport const useMapChoicesBasedOnDomainKnowledge = (\n values: IItemEditFormValues | IModalCreateAnswerStackFormValues,\n setFieldValue: (field: string, value: any, shouldValidate?: boolean) => void\n) => {\n const choices = values[FormNameEnum.choices];\n\n const isDomainKnowledge = getIsDomainKnowledge(values?.domain);\n\n useEffect(() => {\n if (isDomainKnowledge && choices) {\n if (choices?.length > MAX_EMPTY_ANSWERS) {\n setFieldValue(FormNameEnum.choices, choices.slice(0, MAX_EMPTY_ANSWERS));\n }\n\n if (choices?.length < MAX_EMPTY_ANSWERS) {\n const restLength = MAX_EMPTY_ANSWERS - choices?.length ?? 0;\n setFieldValue(FormNameEnum.choices, [...choices, ...createEmptyFourAnswers(restLength)]);\n }\n }\n }, [isDomainKnowledge, setFieldValue, choices]);\n\n return {isDomainKnowledge};\n};\n","import {SortingOrderEnum, EntitiesPerPageEnum} from 'enums';\nimport {EntityStatusEnum, QuestionAnswersTypeEnum} from 'enums/instruments';\nimport {ItemFilterNamesEnum, ItemsOrderingEnum} from '../enums';\nimport {IItemsStoreState} from './IItemsStoreState';\n\nconst itemDefault = {\n id: null,\n questionId: null,\n text: '',\n questionTextHtml: '',\n isApproved: false,\n status: EntityStatusEnum.draft,\n canEditQuestionText: false,\n questionOptionsTypeId: QuestionAnswersTypeEnum.questionAnswerEnum,\n questionOptionsType: {\n id: -1,\n displayText: '',\n name: '',\n },\n elements: [],\n answerStacks: [],\n defaultAnswerStacks: [],\n customStacks: [],\n isDeleted: false,\n createdOn: '',\n createdBy: '',\n creatorArea: '',\n metaData: {\n administration: null,\n competencies: [],\n concepts: [],\n domain: null,\n evaluationTypes: [],\n instruments: [],\n pillars: [],\n schoolLevels: [],\n programs: [],\n category: '',\n },\n};\n\nconst filterDefault = {\n [ItemFilterNamesEnum.SEARCH_BY_NAME]: '',\n [ItemFilterNamesEnum.ADMINISTRATIONS]: [],\n [ItemFilterNamesEnum.PILLARS]: [],\n [ItemFilterNamesEnum.CONCEPTS]: [],\n [ItemFilterNamesEnum.DOMAINS]: [],\n [ItemFilterNamesEnum.COMPETENCIES]: [],\n [ItemFilterNamesEnum.CATEGORY]: '',\n [ItemFilterNamesEnum.LEARNING_OBJECTIVE]: '',\n [ItemFilterNamesEnum.EVALUATION_TYPES]: [],\n [ItemFilterNamesEnum.ITEM_TYPES]: [],\n [ItemFilterNamesEnum.PROGRAMS]: [],\n [ItemFilterNamesEnum.SCHOOL_LEVELS]: [],\n [ItemFilterNamesEnum.AREAS]: [],\n [ItemFilterNamesEnum.ITEM_STATUSES]: null,\n [ItemFilterNamesEnum.SORT_BY]: null,\n [ItemFilterNamesEnum.ORDER_BY]: null,\n};\n\nconst pageDefault = {\n loading: false,\n publishingStack: false,\n saving: false,\n loadingPageSection: false,\n deleting: false,\n promotingStack: false,\n};\n\nexport const itemsInitialState: IItemsStoreState = {\n item: itemDefault,\n itemList: {\n result: [],\n entities: {\n items: {},\n },\n },\n itemQuestions: {\n result: [],\n entities: {\n questions: {},\n },\n },\n page: pageDefault,\n sortOrder: {\n order: ItemsOrderingEnum.Name,\n sort: SortingOrderEnum.ASC,\n },\n filter: filterDefault,\n pagination: {\n currentPage: 1,\n totalCount: 0,\n perPage: EntitiesPerPageEnum.FIFTY,\n },\n};\n","import {IActionFulfilled, IItemsAllSortOrder, IItemsFilter} from 'models';\nimport {cloneDeep} from 'utils';\nimport {IItemsStoreState} from './IItemsStoreState';\nimport {itemsInitialState} from './items.initialState';\n\nexport const itemReducer = {\n clear(state: IItemsStoreState) {\n state.item = {...itemsInitialState.item};\n },\n\n setFilterItems: (state: IItemsStoreState, action: IActionFulfilled<null, IItemsFilter>) => {\n state.filter = action.payload;\n resetPagination(state);\n },\n\n resetFilterItems: (state: IItemsStoreState) => {\n state.filter = cloneDeep(itemsInitialState.filter);\n resetPagination(state);\n },\n\n setCurrentPage: (state: IItemsStoreState, action: IActionFulfilled<null, number>) => {\n state.pagination.currentPage = action.payload;\n },\n\n setPerPage: (state: IItemsStoreState, action: IActionFulfilled<null, number>) => {\n state.pagination.perPage = action.payload;\n resetPagination(state);\n },\n\n setSortOrderItemsAll: (state: IItemsStoreState, action: IActionFulfilled<null, IItemsAllSortOrder>) => {\n state.sortOrder = action.payload;\n resetPagination(state);\n },\n};\n\nconst resetPagination = (state: IItemsStoreState) => {\n state.pagination.currentPage = itemsInitialState.pagination.currentPage;\n state.pagination.totalCount = itemsInitialState.pagination.totalCount;\n};\n","import {schema as Schema} from 'normalizr';\n\nexport const itemListEntity = new Schema.Entity('items', {}, {idAttribute: 'questionId'});\nexport const itemListSchema = new Schema.Array(itemListEntity);\n\nexport const questionEntity = new Schema.Entity('questions', {}, {idAttribute: 'id'});\nexport const itemQuestionsSchema = new Schema.Array(questionEntity);\n","import {\n IActionFulfilled,\n IAnswerStack,\n IBindBaseEntity,\n IBindItemsPage,\n IItemDetails,\n IQuestionBase,\n IUpdateItemPayload,\n TGetQuestionsApiResponse,\n} from 'models';\nimport {normalize} from 'normalizr';\nimport {isObject, values} from 'utils';\nimport {IItemsStoreState} from './IItemsStoreState';\nimport {itemListSchema, itemQuestionsSchema} from './normalizationSchemas';\nimport {\n createItemThunk,\n createQuestionThunk,\n deleteItemThunk,\n fetchItemThunk,\n fetchListItemsPagedThunk,\n fetchNewItemThunk,\n fetchQuestionsThunk,\n fetchSortByColumnsThunk,\n fetchSortOrderTypesThunk,\n IFetchItemPayload,\n publishAllAnswerStacksForQuestionThunk,\n publishItemAnswerStackThunk,\n unPublishItemAnswerStackThunk,\n createUpdateItemThunk,\n addDefaultAnswerStackThunk,\n fetchPossibleDefaultAnswerStacksThunk,\n updateItemThunk,\n updateAnswerStackThunk,\n addCustomAnswerStackThunk,\n} from './thunks';\nimport {promoteItemAnswerStackThunk} from './thunks/promoteItemAnswerStack.thunk';\n\nexport const itemsExtraReducer = {\n //fetchListItemsPagedThunk\n [fetchListItemsPagedThunk.fulfilled]: (state: IItemsStoreState, action: IActionFulfilled<null, IBindItemsPage>) => {\n if (isObject(action.payload)) {\n state.itemList = normalize(action.payload.items, itemListSchema);\n state.pagination.totalCount = action.payload.totalCount;\n }\n\n state.page.loading = false;\n },\n [fetchListItemsPagedThunk.pending]: (state: IItemsStoreState) => {\n state.page.loading = true;\n },\n [fetchListItemsPagedThunk.rejected]: (state: IItemsStoreState) => {\n state.page.loading = false;\n },\n\n // fetchNewItemThunk\n [fetchNewItemThunk.fulfilled]: (state: IItemsStoreState, action: IActionFulfilled<number, IAnswerStack[]>) => {\n if (!action.payload) {\n return;\n }\n\n state.item.answerStacks = [...updateAnswerStackQuestionId(action.payload)];\n state.page.loading = false;\n },\n [fetchNewItemThunk.pending]: (state: IItemsStoreState) => {\n state.page.loading = true;\n },\n [fetchNewItemThunk.rejected]: (state: IItemsStoreState) => {\n state.page.loading = false;\n },\n\n // fetchItemThunk\n [fetchItemThunk.fulfilled]: (state: IItemsStoreState, action: IActionFulfilled<IFetchItemPayload, IItemDetails>) => {\n state.item = {\n ...state.item,\n id: action.payload.questionId,\n questionId: action.payload.questionId,\n createdBy: action.payload.details.createdBy,\n createdOn: action.payload.details.createdOn,\n creatorArea: action.payload.details.creatorArea,\n questionOptionsTypeId: action.payload.details.questionOptionsTypeId\n ? action.payload.details.questionOptionsTypeId\n : action.payload.questionTypeId,\n questionOptionsType: action.payload.details.questionOptionsType\n ? action.payload.details.questionOptionsType\n : action.payload.questionType,\n questionTextHtml: action.payload.questionTextHtml,\n text: action.payload.text,\n canEditQuestionText: action.payload.canEditQuestionText,\n elements: action.payload.elements,\n };\n\n state.page.loading = false;\n state.page.loadingPageSection = false;\n },\n [fetchItemThunk.pending]: (state: IItemsStoreState, action: IActionFulfilled<IFetchItemPayload, IItemDetails>) => {\n const {\n meta: {\n arg: {fullPageLoad},\n },\n } = action;\n\n if (fullPageLoad) {\n state.page.loading = true;\n } else {\n state.page.loadingPageSection = true;\n }\n },\n [fetchItemThunk.rejected]: (state: IItemsStoreState) => {\n state.page.loading = false;\n state.page.loadingPageSection = false;\n },\n\n // fetchQuestionsThunk\n [fetchQuestionsThunk.fulfilled]: (\n state: IItemsStoreState,\n action: IActionFulfilled<boolean, TGetQuestionsApiResponse>\n ) => {\n if (!isObject(action.payload)) {\n return;\n }\n\n state.itemQuestions = normalize(action.payload, itemQuestionsSchema);\n },\n [fetchQuestionsThunk.rejected]: (state: IItemsStoreState) => {\n state.page.loading = false;\n },\n\n // fetchPossibleDefaultAnswerStacksThunk\n [fetchPossibleDefaultAnswerStacksThunk.fulfilled]: (\n state: IItemsStoreState,\n action: IActionFulfilled<boolean, any>\n ) => {\n state.page.loading = false;\n state.item.answerStacks = [...action.payload];\n state.item.defaultAnswerStacks = [...action.payload];\n },\n [fetchPossibleDefaultAnswerStacksThunk.rejected]: (state: IItemsStoreState) => {\n state.page.loading = true;\n },\n [fetchPossibleDefaultAnswerStacksThunk.rejected]: (state: IItemsStoreState) => {\n state.page.loading = false;\n },\n\n // createQuestionThunk\n [createQuestionThunk.fulfilled]: (state: IItemsStoreState, action: IActionFulfilled<boolean, IQuestionBase>) => {\n if (isObject(action.payload)) {\n const questionsValues = [...values(state.itemQuestions.entities.questions), action.payload];\n state.itemQuestions = normalize(questionsValues, itemQuestionsSchema);\n }\n },\n [createQuestionThunk.rejected]: (state: IItemsStoreState) => {\n state.page.loading = false;\n },\n\n // fetchSortByColumnsThunk\n [fetchSortByColumnsThunk.fulfilled]: (state: IItemsStoreState, action: IActionFulfilled<null, IBindBaseEntity[]>) => {\n if (action.payload) {\n state.sortByColumns = action.payload;\n }\n },\n\n [fetchSortOrderTypesThunk.fulfilled]: (\n state: IItemsStoreState,\n action: IActionFulfilled<null, IBindBaseEntity[]>\n ) => {\n if (action.payload) {\n state.sortOrderTypes = action.payload;\n }\n },\n\n // publishItemAnswerStackThunk\n [publishItemAnswerStackThunk.fulfilled]: (state: IItemsStoreState) => {\n state.page.publishingStack = false;\n },\n [publishItemAnswerStackThunk.pending]: (state: IItemsStoreState) => {\n state.page.publishingStack = true;\n },\n [publishItemAnswerStackThunk.rejected]: (state: IItemsStoreState) => {\n state.page.publishingStack = false;\n },\n\n // unPublishItemAnswerStackThunk\n [unPublishItemAnswerStackThunk.fulfilled]: (state: IItemsStoreState) => {\n state.page.publishingStack = false;\n },\n [unPublishItemAnswerStackThunk.pending]: (state: IItemsStoreState) => {\n state.page.publishingStack = true;\n },\n [unPublishItemAnswerStackThunk.rejected]: (state: IItemsStoreState) => {\n state.page.publishingStack = false;\n },\n\n // promoteItemAnswerStackThunk\n [promoteItemAnswerStackThunk.fulfilled]: (state: IItemsStoreState) => {\n state.page.promotingStack = false;\n },\n [promoteItemAnswerStackThunk.pending]: (state: IItemsStoreState) => {\n state.page.promotingStack = true;\n },\n [promoteItemAnswerStackThunk.rejected]: (state: IItemsStoreState) => {\n state.page.promotingStack = false;\n },\n\n // publishAllAnswerStacksForQuestionThunk\n [publishAllAnswerStacksForQuestionThunk.fulfilled]: (state: IItemsStoreState) => {\n state.item = {\n ...state.item,\n isApproved: true,\n answerStacks: [\n ...state.item.answerStacks.map((stack) => {\n if (stack.questionId > -1) {\n return {...stack, isApproved: true};\n }\n return stack;\n }),\n ],\n };\n state.page.publishingStack = false;\n },\n [publishAllAnswerStacksForQuestionThunk.pending]: (state: IItemsStoreState) => {\n state.page.publishingStack = true;\n },\n [publishAllAnswerStacksForQuestionThunk.pending]: (state: IItemsStoreState) => {\n state.page.publishingStack = false;\n },\n\n // createItemThunk\n [createItemThunk.fulfilled]: (state: IItemsStoreState) => {\n state.page.saving = false;\n },\n [createItemThunk.pending]: (state: IItemsStoreState) => {\n state.page.saving = true;\n },\n [createItemThunk.rejected]: (state: IItemsStoreState) => {\n state.page.saving = false;\n },\n\n // updateItemThunk\n [updateItemThunk.fulfilled]: (\n state: IItemsStoreState,\n action: IActionFulfilled<IUpdateItemPayload, IItemDetails>\n ) => {\n state.item = {...state.item, ...action.payload};\n state.page.saving = false;\n },\n [updateItemThunk.pending]: (state: IItemsStoreState) => {\n state.page.saving = true;\n },\n\n [updateItemThunk.rejected]: (state: IItemsStoreState) => {\n state.page.saving = false;\n },\n\n // updateAnswerStackThunk\n [updateAnswerStackThunk.fulfilled]: (state: IItemsStoreState) => {\n state.page.saving = false;\n },\n [updateAnswerStackThunk.pending]: (state: IItemsStoreState) => {\n state.page.saving = true;\n },\n [updateAnswerStackThunk.rejected]: (state: IItemsStoreState) => {\n state.page.saving = false;\n },\n\n // createUpdateItemThunk\n [createUpdateItemThunk.fulfilled]: (\n state: IItemsStoreState,\n action: IActionFulfilled<IUpdateItemPayload, IItemDetails>\n ) => {\n state.item = {...action.payload};\n state.item.answerStacks = [...updateAnswerStackQuestionId(action.payload.answerStacks)];\n state.page.saving = false;\n },\n [createUpdateItemThunk.pending]: (state: IItemsStoreState) => {\n state.page.saving = true;\n },\n [createUpdateItemThunk.rejected]: (state: IItemsStoreState) => {\n state.page.saving = false;\n },\n\n // deleteItemThunk\n [deleteItemThunk.fulfilled]: (state: IItemsStoreState) => {\n state.page.deleting = false;\n },\n [deleteItemThunk.pending]: (state: IItemsStoreState) => {\n state.page.deleting = true;\n },\n [deleteItemThunk.rejected]: (state: IItemsStoreState) => {\n state.page.deleting = false;\n },\n\n // addDefaultAnswerStackThunk\n [addDefaultAnswerStackThunk.fulfilled]: (state: IItemsStoreState, action: IActionFulfilled<number, IItemDetails>) => {\n state.item = {\n ...state.item,\n id: action.payload.questionId,\n ...action.payload,\n };\n state.page.saving = false;\n },\n [addDefaultAnswerStackThunk.pending]: (state: IItemsStoreState) => {\n state.page.saving = true;\n },\n [addDefaultAnswerStackThunk.rejected]: (state: IItemsStoreState) => {\n state.page.saving = false;\n },\n\n // addCustomAnswerStackThunk\n [addCustomAnswerStackThunk.fulfilled]: (state: IItemsStoreState, action: IActionFulfilled<number, IItemDetails>) => {\n state.item = {\n ...state.item,\n id: action.payload.questionId,\n ...action.payload,\n };\n state.page.saving = false;\n },\n [addCustomAnswerStackThunk.pending]: (state: IItemsStoreState) => {\n state.page.saving = true;\n },\n [addCustomAnswerStackThunk.rejected]: (state: IItemsStoreState) => {\n state.page.saving = false;\n },\n};\n\n////\nfunction updateAnswerStackQuestionId(answerStacks: IAnswerStack[]) {\n return answerStacks.map((answerStack, idx) => ({\n ...answerStack,\n questionIdOriginal: answerStack.questionId,\n questionId: idx + 1,\n questionAnswerStackIdOriginal: answerStack.questionAnswerStackId,\n questionAnswerStackId: idx + 1,\n choices: answerStack.choices.map((choice) => ({\n ...choice,\n answerQuestionAnswerStackIdOriginal: choice.answerQuestionAnswerStackId,\n answerQuestionAnswerStackId: idx + 1,\n })),\n }));\n}\n","import {createSlice} from '@reduxjs/toolkit';\nimport {itemReducer} from './item.reducer';\nimport {itemsInitialState} from './items.initialState';\nimport {itemsExtraReducer} from './itemsExtra.reducer';\n\nexport const itemsSlice = createSlice({\n name: 'items',\n initialState: itemsInitialState,\n reducers: itemReducer,\n extraReducers: itemsExtraReducer,\n});\n\nexport const {actions: itemsActions} = itemsSlice;\n","import {createSelector} from '@reduxjs/toolkit';\nimport {TStateStore} from 'store';\nimport {values} from 'utils/functions';\n\nconst getPaperAssessmentsState = (state: TStateStore) => state.programs.paperAssessments;\n\nexport const pageSelector = createSelector(getPaperAssessmentsState, (paperAssessments) => paperAssessments.page);\nexport const pageLoadingSelector = createSelector(\n getPaperAssessmentsState,\n (paperAssessments) => paperAssessments.page.loading\n);\n\nexport const paginationSelector = createSelector(\n getPaperAssessmentsState,\n (paperAssessments) => paperAssessments.pagination\n);\n\nexport const paperAssessmentsSelector = createSelector(\n getPaperAssessmentsState,\n (paperAssessments) => paperAssessments.paperAssessmentList\n);\n\nexport const paperAssessmentsIdsSelector = createSelector(\n paperAssessmentsSelector,\n (paperAssessmentList) => paperAssessmentList.result\n);\nexport const paperAssessmentsEntitiesSelector = createSelector(\n paperAssessmentsSelector,\n (paperAssessmentList) => paperAssessmentList.entities.items\n);\nexport const paperAssessmentsEntitiesCollectionSelector = createSelector(\n paperAssessmentsSelector,\n (paperAssessmentList) => (paperAssessmentList.entities.items ? values(paperAssessmentList.entities?.items) : [])\n);\n\nexport const filterPaperAssessmentsSelector = createSelector(\n getPaperAssessmentsState,\n (paperAssessments) => paperAssessments.filter\n);\n\nexport const paperAssessmentsSortOrderSelector = createSelector(\n getPaperAssessmentsState,\n (paperAssessments) => paperAssessments.sortOrder\n);\n\nexport const uploadLoadingSelector = createSelector(\n getPaperAssessmentsState,\n (paperAssessments) => paperAssessments.upload.loading\n);\n","export const MAX_EMPTY_ANSWERS = 4 as number;\nexport const SINGLE_ANSWER = 1 as number;\nexport const INITIAL_ANSWER_POSITION = 0 as number;\nexport const ONE_ANSWER_POSITION = 1 as number;\n","export const INITIAL_QUESTION_ID = -1 as number;\nexport const INITIAL_QUESTION_ANSWERSTACK_ID = -1 as number;\nexport const INITIAL_ORIGINAL_QUESTION_ANSWERSTACK_ID = -1 as number;\n","import {IEntityBase} from 'models';\n\nconst domainKnowledgeQuery = 'knowledge';\n\nexport function isDomainKnowledge(domain: IEntityBase) {\n return !!domain && domain.name.toLowerCase().indexOf(domainKnowledgeQuery) > -1;\n}\n","export enum ModalTypes {\n small = 'small',\n medium = 'medium',\n large = 'large',\n}\n\nexport enum ModalWidth {\n small = '350px',\n medium = '500px',\n large = '650px',\n}\n\nexport enum TagIndicator {\n drmExpirationDate = 'drmExpirationDate',\n keyTerms = 'keyTerms',\n concepts = 'concepts',\n learningObjective = 'learningObjective',\n}\n","export const mapStringListToStringWithSemicolon: (list: string[]) => string = (list: string[]) => list?.join('; ');\n","import {FormNameEnum} from 'enums/form';\nimport {IBindBaseEnumEntity} from 'models';\nimport {ILearningPathDetails, ILearningPathSessionItem} from 'models/resources/learning-paths';\nimport {mapStringListToStringWithSemicolon} from 'admin/resources/utils';\n\nconst getFutureProgramYearsId = (\n learningPathDetails: ILearningPathDetails,\n futureProgramYears: IBindBaseEnumEntity[]\n) => {\n const futureProgramYear = futureProgramYears.find(\n (el) => el.name === learningPathDetails?.metadata?.futureProgramYears\n );\n\n return futureProgramYear?.id;\n};\n\nconst mapEditLearningPathPillars = (pillars: number[]) => ({\n primaryPillar: pillars && pillars[0],\n secondaryPillar: pillars && pillars[1],\n});\n\nexport const mapEditLearningPathPayload = (\n learningPathDetails: ILearningPathDetails,\n futureProgramYearsCollection: IBindBaseEnumEntity[],\n sessions: ILearningPathSessionItem[]\n) => {\n const futureProgramYearId = getFutureProgramYearsId(learningPathDetails, futureProgramYearsCollection);\n\n const keyTermsStr = mapStringListToStringWithSemicolon(learningPathDetails?.metadata?.keyTerms);\n const learningObjectiveStr = mapStringListToStringWithSemicolon(learningPathDetails?.metadata?.learningObjectives);\n const {primaryPillar, secondaryPillar} = mapEditLearningPathPillars(learningPathDetails?.metadata?.pillars);\n\n return {\n [FormNameEnum.id]: learningPathDetails?.id,\n [FormNameEnum.learningPathName]: learningPathDetails?.title,\n [FormNameEnum.futureProgramYear]: futureProgramYearId,\n [FormNameEnum.primaryPillar]: primaryPillar,\n [FormNameEnum.secondaryPillar]: secondaryPillar,\n [FormNameEnum.language]: learningPathDetails?.metadata?.language,\n [FormNameEnum.keyTerms]: keyTermsStr,\n [FormNameEnum.program]: learningPathDetails?.metadata?.program,\n [FormNameEnum.gradeLevels]: learningPathDetails?.metadata?.gradeLevels,\n [FormNameEnum.expirationDate]: learningPathDetails?.metadata?.expirationDate,\n [FormNameEnum.learningObjectives]: learningObjectiveStr,\n [FormNameEnum.briefDescription]: learningPathDetails?.description ?? '',\n [FormNameEnum.sessions]: sessions,\n };\n};\n","import {IResourceStatusAndUserDetails} from 'models';\nimport {getDatetimeAMPMinUTC, getFirstTwoCharsFromFullName} from 'utils/common';\n\nexport const getUserDetails = (details: IResourceStatusAndUserDetails) => {\n const createdBy = details?.createdBy ?? '';\n const updatedBy = details?.updatedBy ?? '';\n const createdUtc = details?.createdUtc ? getDatetimeAMPMinUTC(details?.createdUtc) : '';\n const modifiedUtc = details?.modifiedUtc ? getDatetimeAMPMinUTC(details?.modifiedUtc) : '';\n const emailCreator = details?.emailCreator ?? '';\n const emailUpdater = details?.emailUpdater ?? '';\n\n const createdByInitials = createdBy ? getFirstTwoCharsFromFullName(createdBy) : '';\n const updatedByInitials = updatedBy ? getFirstTwoCharsFromFullName(updatedBy) : '';\n\n return {\n createdBy,\n updatedBy,\n createdUtc,\n modifiedUtc,\n createdByInitials,\n updatedByInitials,\n emailCreator,\n emailUpdater,\n };\n};\n","export const learningPathEditMessages = {\n exporting: 'The export is being downloaded.',\n clickToExport: 'Click here to download an .xls export with the data of the learning path.',\n};\n","export class TimeSpentTracker {\n #startDate: Date;\n\n public start() {\n this.#startDate = new Date();\n }\n\n // returns ms\n public end(): number {\n const delta = new Date().getTime() - this.#startDate.getTime();\n this.#startDate = null;\n return delta;\n }\n}\n","import React, {useCallback} from 'react';\nimport {ISurvey, ReactSurveyModel, Survey} from 'survey-react';\nimport {useSurvey} from 'survey-taker';\nimport {cloneDeep} from 'utils';\nimport {isFunction} from 'utils';\nimport {TimeSpentTracker} from '../../utils';\nimport './survey.css';\n\nconst customCss = {\n question: {\n title: 'question-title',\n number: 'question-number',\n },\n page: {\n title: 'page-title',\n root: 'page-root',\n },\n checkbox: {\n label: 'checkbox-label',\n item: 'checkbox-item',\n controlLabel: 'checkbox-control-label',\n },\n radiogroup: {\n label: 'radio-label',\n item: 'radio-item',\n\n controlLabel: 'radio-control-label',\n },\n navigationButton: 'navigation-button',\n matrix: {\n root: 'table',\n },\n text: 'input-field',\n};\n\nconst timeSpentTracker = new TimeSpentTracker();\n\ninterface ISurveyTakerProps {\n survey: ISurvey;\n isPreview?: boolean;\n isPreviewWithAnswers?: boolean;\n saveResultsClickHandler?: (results: {[id: number]: string}, timeSpent: number) => void;\n}\n\nexport function SurveyTaker({\n survey,\n saveResultsClickHandler,\n isPreview = false,\n isPreviewWithAnswers = false,\n}: ISurveyTakerProps) {\n !isPreview && timeSpentTracker.start();\n\n const {\n setDefaultAnswersForPreview,\n checkIfSurveyHasSinglePage,\n getSurveyPagesLength,\n appendMaxCharsToTextField,\n } = useSurvey();\n\n const clonedSurvey: ISurvey = cloneDeep(survey);\n const surveyLen = getSurveyPagesLength(clonedSurvey);\n const isSinglePage = checkIfSurveyHasSinglePage(surveyLen);\n\n isPreviewWithAnswers && setDefaultAnswersForPreview(clonedSurvey, isSinglePage);\n\n const completeHandler = useCallback(\n (results: ReactSurveyModel) => {\n isFunction(saveResultsClickHandler) &&\n saveResultsClickHandler(results.valuesHash, !isPreview && timeSpentTracker.end());\n },\n [isPreview, saveResultsClickHandler]\n );\n\n const onAfterRenderQuestion = useCallback(\n (survey, options) => {\n appendMaxCharsToTextField(options, clonedSurvey);\n },\n [appendMaxCharsToTextField, clonedSurvey]\n );\n\n return (\n <Survey\n onAfterRenderQuestion={onAfterRenderQuestion}\n json={clonedSurvey}\n onComplete={completeHandler}\n css={customCss}\n />\n );\n}\n","import React, {useRef} from 'react';\nimport {ISurvey} from 'survey-react';\nimport {useReactToPrint} from 'react-to-print';\nimport {makeStyles} from '@material-ui/core';\nimport {Button, Column, Container, Loading, Row, Text} from 'components-lib';\nimport {layoutConfig} from 'layout';\nimport {FooterLogo, PrintSurveyTaker, SurveyTaker, ViewError, ViewSuccess} from '..';\n\nconst defaultErrorMessage = 'Something Went Wrong.';\n\ninterface ISurveyTakerContentProps {\n loading: boolean;\n error: any;\n surveyTaken: boolean;\n survey: ISurvey;\n isPreview?: boolean;\n isPreviewWithAnswers?: boolean;\n saveResultsHandler?: (results: {[id: number]: string}, timeSpent: number) => void;\n}\n\nexport function SurveyTakerContent({\n loading,\n error,\n surveyTaken,\n survey,\n isPreview = false,\n isPreviewWithAnswers = false,\n saveResultsHandler,\n}: ISurveyTakerContentProps) {\n const classes = useStyles();\n const printRef = useRef(null);\n const isPreviewMode = isPreview || isPreviewWithAnswers;\n\n const reactToPrintContent = React.useCallback(() => {\n return printRef.current;\n }, [printRef]);\n\n const handlePrint = useReactToPrint({\n content: reactToPrintContent,\n });\n\n if (loading) {\n return <Loading fullHeight />;\n }\n\n if (error) {\n return <ViewError text={error ?? defaultErrorMessage} />;\n }\n\n if (surveyTaken) {\n return <ViewSuccess />;\n }\n\n return (\n <Container classes={{root: classes.root}}>\n <Row align=\"center\">\n <Column sm={12} md={12} lg={9} xl={9}>\n {survey ? (\n <>\n <div className={classes.heading}>\n {isPreview && (\n <Text.Heading as=\"h2\" color=\"primary\">\n Instrument Preview\n </Text.Heading>\n )}\n {isPreviewWithAnswers && (\n <Text.Heading as=\"h2\" color=\"primary\">\n Instrument Preview with Answers\n </Text.Heading>\n )}\n {isPreviewMode && (\n <Button.Primary size=\"large\" clickHandler={handlePrint}>\n Print\n </Button.Primary>\n )}\n </div>\n\n <PrintSurveyTaker printRef={printRef}>\n <SurveyTaker\n survey={survey}\n saveResultsClickHandler={saveResultsHandler}\n isPreviewWithAnswers={isPreviewWithAnswers}\n />\n <FooterLogo survey={survey} isPreview={isPreviewMode} />\n </PrintSurveyTaker>\n </>\n ) : (\n <Row align=\"center\" justify=\"center\" classes={{root: classes.loading}}>\n <Text.Paragraph>We are loading your survey...</Text.Paragraph>\n </Row>\n )}\n </Column>\n </Row>\n </Container>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n overflowY: 'auto',\n overflowX: 'hidden',\n height: `calc(100vh - ${layoutConfig.scrollableAreaWithoutSecondaryNavigationSubtrahend}px)`,\n },\n loading: {\n marginTop: 200,\n },\n heading: {\n padding: `${theme.spacing(3)}px`,\n display: 'flex',\n justifyContent: 'space-between',\n },\n}));\n","import React from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Icon, Row, Text} from 'components-lib';\ninterface IViewErrorProps {\n text: string;\n}\n\nexport function ViewError({text}: IViewErrorProps) {\n const classes = useStyles();\n return (\n <div className={classes.root}>\n <Row justify=\"center\">\n <div className={classes.icon}>\n <Icon.ErrorIcon />\n </div>\n <Text.Heading as=\"h3\" classes={{root: classes.text}}>\n {text}\n </Text.Heading>\n </Row>\n </div>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n width: '100%',\n height: '100vh',\n },\n icon: {\n marginRight: theme.spacing(2),\n paddingTop: 4,\n },\n text: {\n maxWidth: '80%',\n },\n}));\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1370\",\n \"data-name\": \"Path 1370\",\n d: \"M725.515,898.255h-7.289a2.47,2.47,0,0,1,0-4.939h7.289a2.47,2.47,0,1,1,0,4.939Z\",\n transform: \"translate(-465.581 -833.637)\",\n fill: \"#f36a10\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1372\",\n \"data-name\": \"Path 1372\",\n d: \"M649.574,1034.538a17.886,17.886,0,0,1-9.038-15.556h-20.26v-98.92H607.93v111.266h20.26a17.886,17.886,0,0,0,9.037,15.556H740.258a17.765,17.765,0,0,0,6.543-6.434,17.569,17.569,0,0,0,2.2-5.912Z\",\n transform: \"translate(-465.581 -840.637)\",\n fill: \"#f2f6f9\"\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle_2228\",\n \"data-name\": \"Rectangle 2228\",\n width: 22.582,\n height: 12.346,\n transform: \"translate(119.767 178.343)\",\n fill: \"#f2f6f9\"\n});\n\nvar _ref5 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1373\",\n \"data-name\": \"Path 1373\",\n d: \"M498.01,1038.87h87.338v-12.346H498.01Z\",\n transform: \"translate(-465.581 -840.637)\",\n fill: \"#f2f6f9\"\n});\n\nvar _ref6 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1374\",\n \"data-name\": \"Path 1374\",\n d: \"M757.219,925.495a3.066,3.066,0,0,1-1.528-.407,14.809,14.809,0,0,0-7.334-1.94H665.883a3.087,3.087,0,0,1,0-6.173h82.474a20.986,20.986,0,0,1,10.394,2.752,3.087,3.087,0,0,1-1.532,5.768Z\",\n transform: \"translate(-465.581 -840.637)\",\n fill: \"#cbd2d9\"\n});\n\nvar _ref7 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1375\",\n \"data-name\": \"Path 1375\",\n d: \"M757.223,956.62a3.088,3.088,0,0,1-1.532-5.769,14.818,14.818,0,0,0,0-25.763,3.087,3.087,0,0,1,3.06-5.362,20.991,20.991,0,0,1,0,36.487A3.068,3.068,0,0,1,757.223,956.62Z\",\n transform: \"translate(-465.581 -840.637)\",\n fill: \"#cbd2d9\"\n});\n\nvar _ref8 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1376\",\n \"data-name\": \"Path 1376\",\n d: \"M751.57,987.732a3.087,3.087,0,0,1-1.532-5.767,15.024,15.024,0,0,0,5.435-5.335,14.853,14.853,0,0,0-5.441-20.42,3.087,3.087,0,0,1,3.072-5.355,21,21,0,0,1,7.674,28.931,21.209,21.209,0,0,1-7.68,7.54A3.064,3.064,0,0,1,751.57,987.732Z\",\n transform: \"translate(-465.581 -840.637)\",\n fill: \"#cbd2d9\"\n});\n\nvar _ref9 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1377\",\n \"data-name\": \"Path 1377\",\n d: \"M745.915,1018.857a3.087,3.087,0,0,1-1.532-5.767,14.841,14.841,0,0,0,5.415-5.333,14.843,14.843,0,0,0-5.42-20.434,3.086,3.086,0,1,1,3.07-5.355,21,21,0,0,1-.005,36.483A3.064,3.064,0,0,1,745.915,1018.857Z\",\n transform: \"translate(-465.581 -840.637)\",\n fill: \"#cbd2d9\"\n});\n\nvar _ref10 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1378\",\n \"data-name\": \"Path 1378\",\n d: \"M740.258,1049.97H637.227a3.093,3.093,0,0,1-1.528-.405,21.036,21.036,0,0,1-10.367-15.15h-17.4a3.087,3.087,0,0,1,0-6.174h20.26a3.086,3.086,0,0,1,3.086,3.087,14.853,14.853,0,0,0,6.811,12.47H739.4a14.834,14.834,0,0,0,1.679-23.691,14.535,14.535,0,0,0-2.333-1.645,3.086,3.086,0,0,1,3.021-5.383,20.7,20.7,0,0,1,3.341,2.351,20.993,20.993,0,0,1-3.33,34.139A3.088,3.088,0,0,1,740.258,1049.97Z\",\n transform: \"translate(-465.581 -840.637)\",\n fill: \"#cbd2d9\"\n});\n\nvar _ref11 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1379\",\n \"data-name\": \"Path 1379\",\n d: \"M672.957,923.148a3.086,3.086,0,0,1-3.086-3.086V861.626a14.822,14.822,0,0,0-29.644-.073c.084,1.672,1.05,21.752-.035,28.815-1.218,8.027-9.235,29.837-9.575,30.76a3.086,3.086,0,0,1-2.9,2.02H607.93a3.087,3.087,0,1,1,0-6.173h17.628c2.026-5.627,7.609-21.458,8.531-27.539,1.016-6.606-.02-27.445-.031-27.654,0-.052,0-.1,0-.156a20.995,20.995,0,0,1,41.99,0v58.436A3.087,3.087,0,0,1,672.957,923.148Z\",\n transform: \"translate(-465.581 -840.637)\",\n fill: \"#cbd2d9\"\n});\n\nvar _ref12 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1380\",\n \"data-name\": \"Path 1380\",\n d: \"M607.93,1034.415H585.348a3.087,3.087,0,1,1,0-6.174h19.495V923.148H585.348a3.087,3.087,0,1,1,0-6.173H607.93a3.086,3.086,0,0,1,3.086,3.087v111.266A3.086,3.086,0,0,1,607.93,1034.415Z\",\n transform: \"translate(-465.581 -840.637)\",\n fill: \"#cbd2d9\"\n});\n\nvar _ref13 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1381\",\n \"data-name\": \"Path 1381\",\n d: \"M585.348,1041.957H498.01v-6.173h84.251V915.6H498.01v-6.173h87.338a3.086,3.086,0,0,1,3.087,3.086V1038.87A3.087,3.087,0,0,1,585.348,1041.957Z\",\n transform: \"translate(-465.581 -840.637)\",\n fill: \"#cbd2d9\"\n});\n\nvar _ref14 = /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle_2229\",\n \"data-name\": \"Rectangle 2229\",\n width: 87.338,\n height: 6.173,\n transform: \"translate(32.429 152.675)\",\n fill: \"#cbd2d9\"\n});\n\nvar _ref15 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1382\",\n \"data-name\": \"Path 1382\",\n d: \"M556.828,1029.364a11.729,11.729,0,1,1,11.729-11.729A11.743,11.743,0,0,1,556.828,1029.364Zm0-17.285a5.556,5.556,0,1,0,5.556,5.556A5.562,5.562,0,0,0,556.828,1012.079Z\",\n transform: \"translate(-465.581 -840.637)\",\n fill: \"#cbd2d9\"\n});\n\nvar _ref16 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1383\",\n \"data-name\": \"Path 1383\",\n d: \"M762.2,898.255H736.049a2.47,2.47,0,1,1,0-4.939H762.2a2.47,2.47,0,0,1,0,4.939Z\",\n transform: \"translate(-465.581 -833.637)\",\n fill: \"#f36a10\"\n});\n\nvar _ref17 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1384\",\n \"data-name\": \"Path 1384\",\n d: \"M698.173,1069.006H672.02a2.469,2.469,0,1,1,0-4.938h26.153a2.469,2.469,0,1,1,0,4.938Z\",\n transform: \"translate(-487.581 -840.637)\",\n fill: \"#f36a10\"\n});\n\nvar _ref18 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1385\",\n \"data-name\": \"Path 1385\",\n d: \"M510.938,965.211H483.992a2.469,2.469,0,0,1,0-4.938h26.946a2.469,2.469,0,0,1,0,4.938Z\",\n transform: \"translate(-465.581 -840.637)\",\n fill: \"#f36a10\"\n});\n\nvar _ref19 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1386\",\n \"data-name\": \"Path 1386\",\n d: \"M495,952.94H468.051a2.469,2.469,0,1,1,0-4.938H495a2.469,2.469,0,0,1,0,4.938Z\",\n transform: \"translate(-465.581 -840.637)\",\n fill: \"#f36a10\"\n});\n\nvar _ref20 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1387\",\n \"data-name\": \"Path 1387\",\n d: \"M513.306,952.94h-7.891a2.469,2.469,0,0,1,0-4.938h7.891a2.469,2.469,0,0,1,0,4.938Z\",\n transform: \"translate(-465.581 -840.637)\",\n fill: \"#f36a10\"\n});\n\nvar _ref21 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1388\",\n \"data-name\": \"Path 1388\",\n d: \"M607.7,887.066h-6.174a2.469,2.469,0,0,1,0-4.939H607.7a2.469,2.469,0,0,1,0,4.939Z\",\n transform: \"translate(-465.581 -840.637)\",\n fill: \"#f36a10\"\n});\n\nvar _ref22 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1389\",\n \"data-name\": \"Path 1389\",\n d: \"M592.886,887.066H577.737a2.469,2.469,0,1,1,0-4.939h15.149a2.469,2.469,0,0,1,0,4.939Z\",\n transform: \"translate(-465.581 -840.637)\",\n fill: \"#f36a10\"\n});\n\nvar SvgThankYou = function SvgThankYou(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Illustration_-_Thanks\",\n \"data-name\": \"Illustration - Thanks\",\n width: 303.777,\n height: 228.369,\n viewBox: \"0 0 303.777 228.369\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9, _ref10, _ref11, _ref12, _ref13, _ref14, _ref15, _ref16, _ref17, _ref18, _ref19, _ref20, _ref21, _ref22);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgThankYou, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/thankYou.98027dba.svg\";\nexport { ForwardRef as ReactComponent };","import {makeStyles} from '@material-ui/core';\r\nimport {Container, Row, Text} from 'components-lib';\r\nimport React, {memo} from 'react';\r\nimport {ReactComponent as ThankYouImage} from 'resources/images/successPage/thankYou.svg';\r\n\r\nexport function ViewSuccess() {\r\n const classes = useStyles();\r\n return (\r\n <Container classes={{root: classes.container}}>\r\n <Container>\r\n <Row>\r\n <ThankYouImage />\r\n </Row>\r\n\r\n <Row>\r\n <Text.Heading as=\"h1\" classes={{root: classes.h1}}>\r\n Thank you for taking this survey!\r\n </Text.Heading>\r\n </Row>\r\n </Container>\r\n </Container>\r\n );\r\n}\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n container: {\r\n height: '100vh',\r\n textAlign: 'center',\r\n display: 'flex',\r\n alignItems: 'center',\r\n alignContent: 'center',\r\n },\r\n h1: {\r\n color: theme.palette.grey[700],\r\n marginTop: theme.spacing(4),\r\n marginBottom: theme.spacing(2),\r\n },\r\n h3: {\r\n color: theme.palette.grey[700],\r\n },\r\n}));\r\n\r\nexport default memo(ViewSuccess);\r\n","import React, {FC, ReactNode, RefObject} from 'react';\n\ninterface IPrintSurveyTakerProps {\n children: ReactNode;\n printRef: RefObject<HTMLDivElement>;\n}\n\nexport const PrintSurveyTaker: FC<IPrintSurveyTakerProps> = ({printRef, children}) => (\n <div ref={printRef}>{children}</div>\n);\n","import React, {FC} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {useSurvey} from 'survey-taker';\nimport {ISurvey} from 'survey-react';\n\ninterface IFooterLogoProps {\n survey: ISurvey;\n isPreview: boolean;\n}\n\nexport const FooterLogo: FC<IFooterLogoProps> = ({survey, isPreview}) => {\n const classes = useStyles({isPreview});\n const {checkIfSurveyHasSinglePage, getSurveyPagesLength, getFooterLogo} = useSurvey();\n\n const surveyLen = getSurveyPagesLength(survey);\n const isSinglePage = checkIfSurveyHasSinglePage(surveyLen);\n const footerLogo = getFooterLogo(survey, isSinglePage);\n\n return (\n <div className={classes.footerLogo}>{footerLogo && <img src={footerLogo} alt=\"Footer logo\" loading=\"lazy\" />}</div>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n footerLogo: ({isPreview}: {isPreview: boolean}) => {\n const marginBottom = isPreview ? `${theme.spacing(5)}px` : `${theme.spacing(3)}px`;\n return {\n marginBottom,\n display: 'flex',\n justifyContent: 'center',\n };\n },\n}));\n","export enum GoogleSitesOrderingEnum {\n Name = 'name',\n LastModifiedDate = 'lastModifiedTime',\n}\n","export const learningPathsMock = [\n {\n id: 1,\n name: 'Learning Path 1',\n programYear: '2020 - 2021',\n },\n {\n id: 2,\n name: 'Learning Path 2',\n programYear: '2020 - 2021',\n },\n {\n id: 3,\n name: 'Learning Path 3',\n programYear: '2020 - 2021',\n },\n];\n","export const prefix = '[All / Learning Paths]';\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {learningPathsApi} from 'api';\nimport {prefix} from './config';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {IGetAllLearningPathsApiResponse, IGetLearningPathsPayload} from 'models/resources/learning-paths';\n\nexport const fetchLearningPathsPagedThunk: any = createAsyncThunk<IGetAllLearningPathsApiResponse, null>(\n `${prefix} fetchLearningPathsPaged`,\n async (payload: IGetLearningPathsPayload, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await learningPathsApi.getAllLearningPaths(payload);\n return parsedBody;\n } catch (err) {\n dispatch(toastNotificationManager.createErrorToastAction(err.parsedBody));\n return rejectWithValue({error: err});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {IHttpResponse, learningPathsApi} from 'api';\nimport {prefix} from './config';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {IGetExportLearningPathApiResponse} from 'models';\nimport {getContentResponseHeaders} from 'admin/resources/files/views/edit/utils';\nimport {learningPathsMessages} from '../../utils';\n\nexport const fetchExportLearningPathThunk: any = createAsyncThunk<IGetExportLearningPathApiResponse, string>(\n `${prefix} fetchExportLearningPath`,\n async (id: string, {dispatch, rejectWithValue}) => {\n dispatch(toastNotificationManager.createSuccessToastAction(learningPathsMessages.exporting));\n\n try {\n const response = await learningPathsApi.getExportLearningPath(id);\n const {mimeType, fileName} = getContentResponseHeaders(response);\n\n return {\n blob: response.data,\n fileName,\n mimeType,\n };\n } catch (error) {\n if (error.response) {\n // In case of blob response type, the response is a Promise\n // Please review the documentation: https://developer.mozilla.org/en-US/docs/Web/API/Blob#extracting_data_from_a_blob\n const responsePromise: IHttpResponse<IGetExportLearningPathApiResponse> = await error.response.data.text();\n const errorMessage = responsePromise.messages;\n\n dispatch(toastNotificationManager.createErrorToastAction(errorMessage));\n return rejectWithValue({error: errorMessage});\n }\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {learningPathsApi} from 'api';\nimport {\n IDuplicateLearningPathApiResponse,\n IDuplicateLearningPathPayload,\n IDuplicateLearningPathThunkPayload,\n} from 'models/resources/learning-paths';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {learningPathsMessages} from '../../utils';\nimport {prefix} from './config';\n\nexport const duplicateLearningPathThunk: any = createAsyncThunk<\n IDuplicateLearningPathApiResponse,\n IDuplicateLearningPathThunkPayload\n>(\n `${prefix} duplicateLearningPath`,\n async (\n {learningPathId, program, expirationDate}: IDuplicateLearningPathThunkPayload,\n {dispatch, rejectWithValue}\n ) => {\n try {\n const payload = mapPayloadForDuplicate(program, expirationDate);\n const {parsedBody} = await learningPathsApi.postDuplicateLearningPath(learningPathId, payload);\n return parsedBody;\n } catch (err) {\n dispatch(toastNotificationManager.createErrorToastAction(learningPathsMessages.errorDuplicating));\n return rejectWithValue(err);\n }\n }\n);\n\nfunction mapPayloadForDuplicate(program: number, expirationDate: string | Date): IDuplicateLearningPathPayload {\n return {\n programId: program,\n expirationDate,\n };\n}\n","import {IActionFulfilled} from 'models/common';\nimport {cloneDeep} from 'utils';\nimport {learningPathsAllInitialState} from '.';\nimport {ILearningPathsAllFilter, ILearningPathsAllSortOrder} from 'models/resources/learning-paths';\nimport {ILearningPathsAllStoreState} from './ILearningPathsAllStoreState';\n\nexport const learningPathsAllReducer = {\n clear(state: ILearningPathsAllStoreState) {\n state.list = {...learningPathsAllInitialState.list};\n },\n\n setCurrentPageLearningPaths: (state: ILearningPathsAllStoreState, action: IActionFulfilled<null, number>) => {\n state.pagination.currentPage = action.payload;\n },\n\n setPerPageLearningPaths: (state: ILearningPathsAllStoreState, action: IActionFulfilled<null, number>) => {\n state.pagination.perPage = action.payload;\n\n resetPagination(state);\n },\n\n setTotalCountLearningPaths: (state: ILearningPathsAllStoreState, action: IActionFulfilled<null, number>) => {\n state.pagination.totalCount = action.payload;\n },\n\n setSortOrderFilesAll: (\n state: ILearningPathsAllStoreState,\n action: IActionFulfilled<null, ILearningPathsAllSortOrder>\n ) => {\n state.sortOrder = action.payload;\n },\n\n setFilterLearningPathsAll: (\n state: ILearningPathsAllStoreState,\n action: IActionFulfilled<null, ILearningPathsAllFilter>\n ) => {\n state.filter = action.payload;\n resetPagination(state);\n },\n\n resetFilterLearningPathsAll: (state: ILearningPathsAllStoreState) => {\n state.filter = cloneDeep(learningPathsAllInitialState.filter);\n resetPagination(state);\n },\n};\n\nconst resetPagination = (state: ILearningPathsAllStoreState) => {\n state.pagination.currentPage = learningPathsAllInitialState.pagination.currentPage;\n};\n","import {createSelector} from '@reduxjs/toolkit';\nimport {TStateStore} from 'store';\nimport {values} from 'utils/functions';\n\nconst getLearningPathsState = (state: TStateStore) => state.resources.learningPaths;\n\nconst getLearningPathsAllState = createSelector(getLearningPathsState, (learningPaths) => learningPaths.all);\nconst getLearningPathState = createSelector(getLearningPathsAllState, (learningPaths) => learningPaths.learningPath);\n\nexport const learningPathsAllPageLoadingSelector = createSelector(\n getLearningPathsAllState,\n (learningPathsAll) => learningPathsAll.page.loading\n);\n\nexport const learningPathsAllPaginationSelector = createSelector(\n getLearningPathsAllState,\n (learniningPaths) => learniningPaths.pagination\n);\n\nexport const learningPathsAllSortOrderSelector = createSelector(\n getLearningPathsAllState,\n (learniningPaths) => learniningPaths.sortOrder\n);\n\nexport const learningPathsAllListSelector = createSelector(\n getLearningPathsAllState,\n (learningPathsAll) => learningPathsAll.list\n);\n\nexport const learningPathsAllIdsSelector = createSelector(learningPathsAllListSelector, (list) => list.result);\n\nexport const learningPathsAllListSelectorEntitiesSelector = createSelector(\n learningPathsAllListSelector,\n (list) => list.entities.items\n);\n\nexport const learningPathsAllListSelectorEntitiesCollectionSelector = createSelector(\n learningPathsAllListSelector,\n (list) => (list.entities.items ? values(list.entities?.items) : [])\n);\n\nexport const learningPathsAllFilterSelector = createSelector(\n getLearningPathsAllState,\n (learningPaths) => learningPaths.filter\n);\n\nexport const exportingLearningPathsSelector = createSelector(\n getLearningPathState,\n (learningPath) => learningPath.exporting\n);\n\nexport const cloningLearningPathsSelector = createSelector(\n getLearningPathState,\n (learningPath) => learningPath.cloning\n);\n\nexport const selectedLearningPathIdSelector = createSelector(getLearningPathState, (learningPath) => learningPath.id);\n","import {ILearningPathsAllStoreState} from './ILearningPathsAllStoreState';\nimport {ILearningPathPage, ILearningPathsAllFilter, ILearningPathsPagination} from 'models/resources/learning-paths';\nimport {EntitiesPerPageEnum, SortingOrderEnum} from 'enums';\nimport {LearningPathsAllFilterNamesEnum, LearningPathsOrderingAllEnum} from '../enums';\n\nconst LearningPathsPageDefault = {\n loading: false,\n} as ILearningPathPage;\n\nconst learningPathsAllpaginationDefault = {\n currentPage: 1,\n totalCount: 0,\n perPage: EntitiesPerPageEnum.FIFTY,\n} as ILearningPathsPagination;\n\nconst learningPathsAllListItemsDefault = {};\n\nconst learningPathsListDefault = {\n result: [],\n entities: {\n items: learningPathsAllListItemsDefault,\n },\n};\n\nconst filterDefault: ILearningPathsAllFilter = {\n [LearningPathsAllFilterNamesEnum.SEARCH_BY_QUERY]: '',\n [LearningPathsAllFilterNamesEnum.PROGRAMS]: [],\n [LearningPathsAllFilterNamesEnum.PROGRAM_YEARS]: [],\n [LearningPathsAllFilterNamesEnum.GRADE_LEVELS]: [],\n [LearningPathsAllFilterNamesEnum.PILLARS]: [],\n [LearningPathsAllFilterNamesEnum.LANGUAGES]: [],\n [LearningPathsAllFilterNamesEnum.LEARNING_PATH_STATUSES]: [],\n};\n\nconst learningPathDefault = {\n id: null,\n exporting: false,\n cloning: false,\n};\n\nexport const learningPathsAllInitialState: ILearningPathsAllStoreState = {\n pagination: learningPathsAllpaginationDefault,\n page: LearningPathsPageDefault,\n list: learningPathsListDefault,\n learningPath: learningPathDefault,\n filter: filterDefault,\n sortOrder: {\n order: LearningPathsOrderingAllEnum.Created,\n sort: SortingOrderEnum.DESC,\n },\n};\n","import {schema as Schema} from 'normalizr';\n\nexport const learningPathsAllSchemaEntity = new Schema.Entity('items', {}, {idAttribute: 'id'});\nexport const learningPathsAllSchema = new Schema.Array(learningPathsAllSchemaEntity);\n","import {IActionFulfilled} from 'models/common';\nimport {\n duplicateLearningPathThunk,\n fetchExportLearningPathThunk,\n fetchLearningPathsPagedThunk,\n} from 'admin/resources/learning-paths';\nimport {ILearningPathsAllStoreState} from './ILearningPathsAllStoreState';\nimport {\n IDuplicateLearningPathApiResponse,\n IDuplicateLearningPathThunkPayload,\n IGetAllLearningPathsApiResponse,\n} from 'models/resources';\nimport {isObject} from 'utils';\nimport {learningPathsAllSchema} from './normalizationSchemas';\nimport {normalize} from 'normalizr';\n\nexport const learningPathsAllExtraReducer = {\n // fetchLearningPathsPagedThunk\n [fetchLearningPathsPagedThunk.fulfilled]: (\n state: ILearningPathsAllStoreState,\n action: IActionFulfilled<null, IGetAllLearningPathsApiResponse>\n ) => {\n if (isObject(action.payload)) {\n const {\n data,\n metadata: {totalCount, pageNumber, pageSize},\n } = action.payload;\n\n state.list = normalize(data, learningPathsAllSchema);\n state.pagination.totalCount = totalCount;\n state.pagination.currentPage = pageNumber;\n state.pagination.perPage = pageSize;\n }\n\n state.page.loading = false;\n },\n [fetchLearningPathsPagedThunk.pending]: (state: ILearningPathsAllStoreState) => {\n state.page.loading = true;\n },\n [fetchLearningPathsPagedThunk.rejected]: (state: ILearningPathsAllStoreState) => {\n state.page.loading = false;\n },\n\n // fetchExportLearningPathThunk\n [fetchExportLearningPathThunk.fulfilled]: (state: ILearningPathsAllStoreState) => {\n state.learningPath.id = null;\n state.learningPath.exporting = false;\n },\n [fetchExportLearningPathThunk.pending]: (\n state: ILearningPathsAllStoreState,\n action: IActionFulfilled<null, string>\n ) => {\n state.learningPath.id = action.meta.arg;\n state.learningPath.exporting = true;\n },\n [fetchExportLearningPathThunk.rejected]: (state: ILearningPathsAllStoreState) => {\n state.learningPath.id = null;\n state.learningPath.exporting = false;\n },\n\n // duplicateLearningPathThunk\n [duplicateLearningPathThunk.fulfilled]: (state: ILearningPathsAllStoreState) => {\n state.learningPath.id = null;\n state.learningPath.cloning = false;\n },\n [duplicateLearningPathThunk.pending]: (\n state: ILearningPathsAllStoreState,\n action: IActionFulfilled<IDuplicateLearningPathThunkPayload, IDuplicateLearningPathApiResponse>\n ) => {\n if (isObject(action.meta.arg)) {\n state.learningPath.id = action.meta.arg.learningPathId;\n }\n\n state.learningPath.cloning = true;\n },\n [duplicateLearningPathThunk.rejected]: (state: ILearningPathsAllStoreState) => {\n state.learningPath.id = null;\n state.learningPath.cloning = false;\n },\n};\n","import {createSlice} from '@reduxjs/toolkit';\nimport {learningPathsAllInitialState} from './learningPathsAll.initialState';\nimport {learningPathsAllReducer} from './learningPathsAll.reducer';\nimport {learningPathsAllExtraReducer} from './learningPathsAllExtra.reducer';\n\nexport const learningPathsAllSlice = createSlice({\n name: 'learningPathsAll',\n initialState: learningPathsAllInitialState,\n reducers: learningPathsAllReducer,\n extraReducers: learningPathsAllExtraReducer,\n});\n\nexport const {actions: learningPathsAllSitesActions} = learningPathsAllSlice;\n","export * from './schema';\nexport * from './helpers';\nexport * from './constants';\n","export * from './models';\nexport * from './enums';\nexport * from './utils';\n\nexport {GoogleSitesViewDetails} from './GoogleSitesViewDetails';\n","import {FormControlLabel, makeStyles, Radio, RadioGroup} from '@material-ui/core';\nimport {Column, Text} from 'components-lib';\nimport {ProgramsSectionNavigatorEnum} from 'enums';\nimport {useNavigate} from 'hooks';\nimport {IWithDisabled} from 'models';\nimport {pages} from 'paths';\nimport {RolesEnum, usePermissions} from 'permissions';\nimport React, {useCallback} from 'react';\nimport {useParams, useRouteMatch} from 'react-router-dom';\nimport {toNumber} from 'utils';\n\nconst adminOptions = [\n {label: 'Show Classes', value: ProgramsSectionNavigatorEnum.CLASSES},\n {label: 'Show Master Instruments', value: ProgramsSectionNavigatorEnum.MASTER_INSTRUMENTS},\n {label: 'Show Exports & Reports', value: ProgramsSectionNavigatorEnum.REPORTS},\n];\n\nconst otherOptions = [\n {label: 'Show Classes', value: ProgramsSectionNavigatorEnum.CLASSES},\n {label: 'Show Master Instruments', value: ProgramsSectionNavigatorEnum.MASTER_INSTRUMENTS},\n];\n\nconst pathToViewMap = {\n [pages.adminPortal.programs.details]: ProgramsSectionNavigatorEnum.CLASSES,\n [pages.adminPortal.programs.masterInstruments]: ProgramsSectionNavigatorEnum.MASTER_INSTRUMENTS,\n [pages.adminPortal.programs.reports]: ProgramsSectionNavigatorEnum.REPORTS,\n};\n\nconst viewToLinkMap = {\n [ProgramsSectionNavigatorEnum.CLASSES]: pages.adminPortal.programs.detailsLink,\n [ProgramsSectionNavigatorEnum.MASTER_INSTRUMENTS]: pages.adminPortal.programs.masterInstrumentsLink,\n [ProgramsSectionNavigatorEnum.REPORTS]: pages.adminPortal.programs.reportsLink,\n};\n\nexport function ViewExpansionPanel({disabled}: IWithDisabled) {\n const {programId} = useParams<{programId: string}>();\n const {push} = useNavigate();\n const {path} = useRouteMatch();\n const classes = useStyles();\n const {hasPermission} = usePermissions();\n const hasAdminPermission = hasPermission([RolesEnum.SuperAdmin, RolesEnum.USAAdmin, RolesEnum.AreaAdmin]);\n const viewButtonOptions = hasAdminPermission ? adminOptions : otherOptions;\n\n const onChange = useCallback((_event: any, value: any) => push(`${viewToLinkMap[toNumber(value)]}/${programId}`), [\n programId,\n push,\n ]);\n\n return (\n <Column className={classes.root}>\n <Text.Heading as=\"h4\">View</Text.Heading>\n <RadioGroup aria-label=\"choose_view\" name=\"choose_view\" value={pathToViewMap[path]} onChange={onChange}>\n {viewButtonOptions.map((option: any, i: number) => (\n <FormControlLabel\n value={option.value}\n control={<Radio color=\"primary\" />}\n label={option.label}\n key={i}\n disabled={disabled}\n />\n ))}\n </RadioGroup>\n </Column>\n );\n}\n\nconst useStyles = makeStyles({\n root: {\n paddingLeft: 10,\n },\n});\n","interface ILevelReportingMenuConfig {\n style: {\n height: number;\n width: number;\n };\n}\n\nconst DEFAULT_HEIGHT = 333 as number;\nconst DEFAULT_WIDTH = 404 as number;\n\nexport const menuConfig: ILevelReportingMenuConfig = {\n style: {\n height: DEFAULT_HEIGHT,\n width: DEFAULT_WIDTH,\n },\n};\n","import React, {Fragment, useCallback, MouseEvent, FC} from 'react';\nimport {makeStyles, Menu} from '@material-ui/core';\nimport {Button, Divider, Icon, Loading, Row, Tooltip, Wrapper} from 'components-lib';\nimport {useMenu} from 'hooks';\nimport {menuConfig} from './config';\nimport {LevelReportingMenuForm, LevelReportingMenuItemList} from '..';\nimport {FormNameEnum} from 'enums/form';\nimport {Form} from 'forms';\nimport {useProgramReportsStoreActions} from '../../hooks';\nimport {ProgramDetailsViewTypeEnum} from '../..';\ninterface ILevelReportingMenuProps {\n programViewType?: ProgramDetailsViewTypeEnum;\n}\n\nexport const LevelReportingMenu: FC<ILevelReportingMenuProps> = ({\n programViewType = ProgramDetailsViewTypeEnum.Program,\n}) => {\n const classes = useStyles();\n const {anchorEl, setAnchorEl} = useMenu();\n const {selectedItem, loading} = useProgramReportsStoreActions();\n const isOpen = Boolean(anchorEl);\n\n const openMenuClickHandler = useCallback((e: MouseEvent<HTMLButtonElement>) => setAnchorEl(e.currentTarget), [\n setAnchorEl,\n ]);\n\n const closeMenuClickHandler = useCallback(() => setAnchorEl(null), [setAnchorEl]);\n\n return (\n <Fragment>\n <Button.Secondary\n size=\"small\"\n aria-controls=\"level-reporting\"\n endIcon={<Icon.ExpandIcon color=\"primary\" />}\n clickHandler={openMenuClickHandler}\n className={classes.button}\n >\n <Tooltip title={selectedItem?.displayText}>\n <Wrapper className={classes.buttonText}>{selectedItem?.displayText}</Wrapper>\n </Tooltip>\n </Button.Secondary>\n <Menu\n id=\"level-reporting\"\n anchorEl={anchorEl}\n keepMounted\n open={isOpen}\n onClose={closeMenuClickHandler}\n PaperProps={menuConfig}\n >\n <LevelReportingMenuForm programViewType={programViewType}>\n <Form.Search name={FormNameEnum.searchTerm} disabled={loading} withIcon submitDisabled />\n <Divider.Horizontal />\n {loading ? (\n <Row>\n <Loading />\n </Row>\n ) : (\n <LevelReportingMenuItemList closeMenuClickHandler={closeMenuClickHandler} />\n )}\n </LevelReportingMenuForm>\n </Menu>\n </Fragment>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n button: {\n marginRight: theme.spacing(2) + theme.spacing(3),\n },\n buttonText: {\n maxWidth: 106,\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n color: theme.palette.primary.main,\n '&:hover': {\n color: theme.palette.primary.dark,\n },\n },\n}));\n","import React, {Fragment, FC, useEffect, useMemo} from 'react';\nimport {Wrapper} from 'components-lib';\nimport {LevelReportingMenuItem, NoDataMenuItem} from '..';\nimport {useFormikContext} from 'formik';\nimport {ILevelReportingFormBaseValues} from '../LevelReportingMenuForm/config';\nimport {FormNameEnum} from 'enums/form';\n\ninterface ILevelReportingMenuItemListProps {\n closeMenuClickHandler: () => void;\n}\n\nexport const LevelReportingMenuItemList: FC<ILevelReportingMenuItemListProps> = ({closeMenuClickHandler}) => {\n const {\n values: {filteredMenuItems, menuItems, searchTerm, selectedId},\n setFieldValue,\n } = useFormikContext<ILevelReportingFormBaseValues>();\n const clonedList = useMemo(() => [...menuItems], [menuItems]);\n const hasItems = filteredMenuItems?.length;\n\n useEffect(() => {\n if (searchTerm.trim()) {\n const filteredList = clonedList.filter((item) =>\n item.displayText.toLowerCase().includes(searchTerm.toLowerCase())\n );\n setFieldValue(FormNameEnum.filteredMenuItems, filteredList);\n } else {\n if (filteredMenuItems?.length !== menuItems?.length) {\n setFieldValue(FormNameEnum.filteredMenuItems, menuItems);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [searchTerm, menuItems, clonedList]);\n\n return (\n <Fragment>\n {hasItems ? (\n <Wrapper>\n {filteredMenuItems?.map((option, idx: number) => {\n const selected = option.id === selectedId;\n\n return (\n <LevelReportingMenuItem\n key={idx}\n selected={selected}\n closeMenuClickHandler={closeMenuClickHandler}\n item={option}\n />\n );\n })}\n </Wrapper>\n ) : (\n <NoDataMenuItem />\n )}\n </Fragment>\n );\n};\n","import React, {forwardRef, useCallback} from 'react';\nimport {batch} from 'react-redux';\nimport {makeStyles, MenuItem} from '@material-ui/core';\nimport {IProgramClassReportMenuListOption} from 'models';\nimport {useFormikContext} from 'formik';\nimport {ILevelReportingFormBaseValues} from '../LevelReportingMenuForm/config';\nimport {FormNameEnum} from 'enums/form';\nimport {useDebounce} from 'hooks';\nimport {formResetDelay} from '../../utils';\ninterface ILevelReportingMenuItemProps {\n item: IProgramClassReportMenuListOption;\n selected?: boolean;\n closeMenuClickHandler: () => void;\n}\n\nexport const LevelReportingMenuItem = forwardRef(\n ({item, selected, closeMenuClickHandler}: ILevelReportingMenuItemProps, ref: any) => {\n const classes = useStyles();\n const {submitForm, setFieldValue, resetForm} = useFormikContext<ILevelReportingFormBaseValues>();\n\n const debouncedReset = useDebounce(() => resetForm(), formResetDelay);\n\n const clickHandler = useCallback(() => {\n batch(() => {\n setFieldValue(FormNameEnum.selectedId, item.id);\n submitForm()\n .then(() => closeMenuClickHandler())\n .then(() => debouncedReset());\n });\n }, [closeMenuClickHandler, submitForm, item, setFieldValue, debouncedReset]);\n\n return (\n <MenuItem ref={ref} onClick={clickHandler}>\n <span className={selected ? classes.selected : ''}>{item.displayText}</span>\n </MenuItem>\n );\n }\n);\n\nLevelReportingMenuItem.displayName = 'LevelReportingMenuItem';\n\nconst useStyles = makeStyles((theme) => ({\n selected: {\n color: theme.palette.primary.main,\n },\n}));\n","import React from 'react';\n\nexport const NoDataMenuItem = () => {\n return <div></div>;\n};\n","import * as Yup from 'yup';\nimport {FormNameEnum} from 'enums/form';\nimport {IProgramClassReportMenuListOption} from 'models';\n\nexport const levelReportingValidationSchema = Yup.object().shape({\n [FormNameEnum.selectedId]: Yup.number().nullable(),\n [FormNameEnum.searchTerm]: Yup.string(),\n [FormNameEnum.menuItems]: Yup.array().of(Yup.mixed()),\n [FormNameEnum.filteredMenuItems]: Yup.array().of(Yup.mixed()),\n});\n\nexport interface ILevelReportingFormBaseValues {\n [FormNameEnum.selectedId]: number | null;\n [FormNameEnum.searchTerm]: string;\n [FormNameEnum.menuItems]: IProgramClassReportMenuListOption[];\n [FormNameEnum.filteredMenuItems]: IProgramClassReportMenuListOption[];\n}\n","import React, {FC, useCallback, useEffect, useMemo} from 'react';\nimport {useParams} from 'react-router-dom';\nimport {Box} from '@material-ui/core';\nimport {IProgramClassExportParams, IWithChildren} from 'models';\nimport {Form} from 'forms';\nimport {ILevelReportingFormBaseValues, levelReportingValidationSchema} from './config';\nimport {FormNameEnum} from 'enums/form';\nimport {useProgramReports, useProgramReportsStoreActions} from '../../hooks';\nimport {ProgramDetailsViewTypeEnum} from '../..';\n\ninterface ILevelReportingMenuFormProps extends IWithChildren {\n programViewType?: ProgramDetailsViewTypeEnum;\n}\n\nexport const LevelReportingMenuForm: FC<ILevelReportingMenuFormProps> = ({children, programViewType}) => {\n const {setSelectedId, menuList, selectedItem} = useProgramReportsStoreActions();\n const {fetchProgramLevelsOfReporting, fetchProgramClassLevelsOfReporting} = useProgramReports();\n const {programId, classId} = useParams<IProgramClassExportParams>();\n\n const shouldFetchProgramLevelsOfReporting = !!programId;\n const shouldFetchProgramClassLevelsOfReporting = !!programId && !!classId;\n const isProgramViewType = programViewType === ProgramDetailsViewTypeEnum.Program;\n\n useEffect(() => {\n if (isProgramViewType) {\n shouldFetchProgramLevelsOfReporting && fetchProgramLevelsOfReporting();\n } else {\n shouldFetchProgramClassLevelsOfReporting && fetchProgramClassLevelsOfReporting();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isProgramViewType, programId, shouldFetchProgramLevelsOfReporting, shouldFetchProgramClassLevelsOfReporting]);\n\n const initialValues = useMemo(\n () => ({\n [FormNameEnum.selectedId]: selectedItem?.id,\n [FormNameEnum.searchTerm]: '',\n [FormNameEnum.menuItems]: menuList,\n [FormNameEnum.filteredMenuItems]: menuList,\n }),\n [menuList, selectedItem]\n );\n\n const submitHandler = useCallback(({selectedId}: ILevelReportingFormBaseValues) => setSelectedId(selectedId), [\n setSelectedId,\n ]);\n\n return (\n <Form.Form<ILevelReportingFormBaseValues>\n initialValues={initialValues}\n validationSchema={levelReportingValidationSchema}\n submitHandler={submitHandler}\n >\n <Box p={3} m={2}>\n {children}\n </Box>\n </Form.Form>\n );\n};\n","import {createSelector} from '@reduxjs/toolkit';\nimport {TStateStore} from 'store';\nimport {values} from 'utils';\nimport {IToastNotification} from '../models';\nimport {INotifications} from './IToastNotificationsStoreState';\n\nexport interface INotificationsSelectorValue {\n notifications: IToastNotification[];\n ids: string[];\n}\n\nconst getToastNotifications = (state: TStateStore) => state.toastNotifications.notifications;\nexport const notificationsSelector = createSelector(getToastNotifications, (state: INotifications) => {\n const {entities, result} = state;\n const {notifications} = entities;\n\n return {\n notifications: notifications ? values(notifications) : [],\n ids: result,\n };\n});\n","import {IActionFulfilled} from 'models';\nimport {normalize, schema as Schema} from 'normalizr';\nimport {values} from 'utils';\nimport {IAddToastNotificationActionPayload, IRemoveToastNotificationActionPayload, IToastNotification} from '../models';\nimport {IToastNotificationsStoreState} from './IToastNotificationsStoreState';\n\nconst notificationEntity = new Schema.Entity('notifications', {}, {idAttribute: 'id'});\nconst notificationsSchema = new Schema.Array(notificationEntity);\n\nexport const toastNotificationsReducer = {\n add(state: IToastNotificationsStoreState, action: IActionFulfilled<null, IAddToastNotificationActionPayload>) {\n const {payload} = action;\n const notificationsValues = [...values(state.notifications.entities.notifications || {}), payload];\n state.notifications = normalize(notificationsValues, notificationsSchema);\n },\n\n remove(state: IToastNotificationsStoreState, action: IActionFulfilled<null, IRemoveToastNotificationActionPayload>) {\n const {\n payload: {id},\n } = action;\n\n let notificationsValues: IToastNotification[] = [];\n\n if (state.notifications.entities.notifications) {\n notificationsValues = values(state.notifications.entities.notifications).filter(\n (notification: IToastNotification) => notification.id !== id\n );\n }\n state.notifications = normalize(notificationsValues, notificationsSchema);\n },\n};\n","import {createSlice} from '@reduxjs/toolkit';\nimport {toastNotificationsInitialState} from './toastNotifications.initialState';\nimport {toastNotificationsReducer as reducers} from './toastNotifications.reducer';\n\nexport const toastNotificationsSlice = createSlice({\n name: 'toastNotifications',\n initialState: toastNotificationsInitialState,\n reducers,\n});\n\nexport const {actions: toastNotificationsActions, reducer: toastNotificationsReducer} = toastNotificationsSlice;\n","import {IToastNotificationsStoreState} from './IToastNotificationsStoreState';\n\nexport const toastNotificationsInitialState: IToastNotificationsStoreState = {\n notifications: {\n entities: {\n notifications: {},\n },\n result: [],\n },\n};\n","import {SortingOrderEnum, EntitiesPerPageEnum} from 'enums';\nimport {IInstrumentsAllFilter} from 'models';\nimport {InstrumentsFilterNamesEnum, InstrumentsOrderingEnum} from '../enums';\nimport {IInstrumentsStoreState} from './IInstrumentsStoreState';\n\nconst filterDefault: IInstrumentsAllFilter = {\n [InstrumentsFilterNamesEnum.SEARCH_BY_NAME]: '',\n [InstrumentsFilterNamesEnum.PROGRAMS]: [],\n [InstrumentsFilterNamesEnum.PILLARS]: [],\n [InstrumentsFilterNamesEnum.PHASES]: [],\n [InstrumentsFilterNamesEnum.AUDIENCES]: [],\n [InstrumentsFilterNamesEnum.TYPES]: [],\n [InstrumentsFilterNamesEnum.STATUSES]: [],\n [InstrumentsFilterNamesEnum.ADMINISTRATION]: [],\n [InstrumentsFilterNamesEnum.CONCEPT]: [],\n [InstrumentsFilterNamesEnum.DOMAIN]: [],\n [InstrumentsFilterNamesEnum.COMPETENCY]: [],\n [InstrumentsFilterNamesEnum.CATEGORY]: '',\n [InstrumentsFilterNamesEnum.LEARNING_OBJECTIVE]: '',\n [InstrumentsFilterNamesEnum.EVALUATION_TYPE]: [],\n [InstrumentsFilterNamesEnum.SCHOOL_LEVEL]: [],\n [InstrumentsFilterNamesEnum.AREAS]: [],\n [InstrumentsFilterNamesEnum.INSTRUMENT_VIEW_TYPE]: null,\n [InstrumentsFilterNamesEnum.SORT_BY]: null,\n [InstrumentsFilterNamesEnum.ORDER_BY]: null,\n};\n\nexport const instrumentsInitialState: IInstrumentsStoreState = {\n sortOrder: {\n order: InstrumentsOrderingEnum.Name,\n sort: SortingOrderEnum.ASC,\n },\n filter: filterDefault,\n page: {\n loading: true,\n saving: false,\n deleting: false,\n },\n pagination: {\n currentPage: 1,\n totalCount: 0,\n perPage: EntitiesPerPageEnum.FIFTY,\n },\n\n templates: {\n result: [],\n entities: {\n items: {},\n },\n },\n\n survey: {\n previewTemplate: {\n result: [],\n entities: {\n items: {},\n },\n },\n },\n\n builder: {\n poolItems: {\n result: [],\n entities: {\n items: {},\n },\n },\n builderItems: {\n result: [],\n entities: {\n items: {},\n },\n loading: false,\n },\n temporaryBuilderItems: {\n result: [],\n entities: {\n items: {},\n },\n },\n pretestItems: {\n result: [],\n entities: {\n items: {},\n },\n },\n pagesTotal: {\n poolItems: 0,\n },\n searchText: '',\n filter: filterDefault,\n },\n};\n","import update from 'immutability-helper';\nimport {\n IAction,\n IActionFulfilled,\n IAnswer,\n IInstrumentItem,\n IInstrumentsAllFilter,\n IInstrumentsAllSortOrder,\n} from 'models';\nimport {cloneDeep, toNumber} from 'utils';\nimport {isMatrixQuestion} from '../builder/utils';\nimport {IMoveBuilderItemActionPayload} from '../models';\nimport {IInstrumentsStoreState} from './IInstrumentsStoreState';\nimport {instrumentsInitialState} from './instruments.initialState';\nimport {QuestionPropertiesType} from 'enums';\n\nexport const instrumentsReducer = {\n clear(state: IInstrumentsStoreState) {\n state.builder = {...instrumentsInitialState.builder};\n },\n\n clearPoolItems(state: IInstrumentsStoreState) {\n state.builder.poolItems = {...instrumentsInitialState.builder.poolItems};\n },\n\n setSearch(state: IInstrumentsStoreState, action: IAction) {\n state.builder.searchText = action.payload;\n },\n\n setBuilderFilterInstruments: (\n state: IInstrumentsStoreState,\n action: IActionFulfilled<null, IInstrumentsAllFilter>\n ) => {\n state.builder.filter = action.payload;\n resetPagination(state);\n },\n\n resetBuilderFilterInstruments: (state: IInstrumentsStoreState) => {\n state.builder.filter = cloneDeep(instrumentsInitialState.builder.filter);\n resetPagination(state);\n },\n\n setFilterInstruments: (state: IInstrumentsStoreState, action: IActionFulfilled<null, IInstrumentsAllFilter>) => {\n state.filter = action.payload;\n resetPagination(state);\n },\n\n resetFilterInstruments: (state: IInstrumentsStoreState) => {\n state.filter = cloneDeep(instrumentsInitialState.filter);\n resetPagination(state);\n },\n\n setCurrentPage: (state: IInstrumentsStoreState, action: IActionFulfilled<null, number>) => {\n state.pagination.currentPage = action.payload;\n },\n\n setPerPage: (state: IInstrumentsStoreState, action: IActionFulfilled<null, number>) => {\n state.pagination.perPage = action.payload;\n resetPagination(state);\n },\n\n setSortOrderInstrumentsAll: (\n state: IInstrumentsStoreState,\n action: IActionFulfilled<null, IInstrumentsAllSortOrder>\n ) => {\n state.sortOrder = action.payload;\n },\n\n addBuilderItem: (state: IInstrumentsStoreState, action: IActionFulfilled<null, IInstrumentItem>) => {\n const {questionAnswerStackId} = action.payload;\n state.builder.builderItems.entities.items[questionAnswerStackId] = action.payload;\n state.builder.builderItems.result = [...state.builder.builderItems.result, questionAnswerStackId];\n },\n\n addInstructionalText: (state: IInstrumentsStoreState, action: IActionFulfilled<null, any>) => {\n const {questionAnswerStackId} = action.payload;\n state.builder.builderItems.entities.items[questionAnswerStackId] = action.payload;\n state.builder.builderItems.result = [...state.builder.builderItems.result, questionAnswerStackId];\n },\n\n updateInstructionalText: (state: IInstrumentsStoreState, action: IActionFulfilled<null, IInstrumentItem>) => {\n const {questionAnswerStackId} = action.payload;\n state.builder.builderItems.entities.items[questionAnswerStackId] = action.payload;\n },\n\n linkBuilderItem: (state: IInstrumentsStoreState, action: IActionFulfilled<null, IInstrumentItem>) => {\n const {questionAnswerStackId, answerStackId, linkedQuestionAnswerStackId, type} = action.payload;\n const isMatrix = isMatrixQuestion(type);\n\n if (isMatrix) {\n state.builder.builderItems.entities.items[questionAnswerStackId] = action.payload;\n } else {\n state.builder.builderItems.entities.items[answerStackId][\n QuestionPropertiesType.linkedQuestionAnswerStackId\n ] = linkedQuestionAnswerStackId;\n }\n },\n\n moveBuilderItem: (state: IInstrumentsStoreState, action: IActionFulfilled<null, IMoveBuilderItemActionPayload>) => {\n const {id, from, to} = action.payload;\n state.builder.builderItems.result = update(state.builder.builderItems.result, {\n $splice: [\n [from, 1],\n [to, 0, id],\n ],\n });\n },\n\n removeBuilderItem: (state: IInstrumentsStoreState, action: IActionFulfilled<null, number>) => {\n delete state.builder.builderItems.entities.items[action.payload];\n state.builder.builderItems.result = state.builder.builderItems.result.filter(\n (id) => toNumber(id) !== action.payload\n );\n },\n\n addMatrixRow: (\n state: IInstrumentsStoreState,\n action: IActionFulfilled<null, {questionAnswerStackId: number; row: IAnswer}>\n ) => {\n const {questionAnswerStackId, row} = action.payload;\n const itemRaw = state.builder.builderItems.entities.items[questionAnswerStackId];\n const rowsUpdated = [...itemRaw.rows, {...row, position: itemRaw.rows.length + 1}];\n state.builder.builderItems.entities.items[questionAnswerStackId] = {\n ...itemRaw,\n rows: rowsUpdated,\n };\n },\n\n removeMatrixRow: (state: IInstrumentsStoreState, action: IActionFulfilled<null, {id: number; rowIdx: number}>) => {\n const {id, rowIdx} = action.payload;\n const item = state.builder.builderItems.entities.items[id];\n state.builder.builderItems.entities.items[id] = {\n ...item,\n rows: [...item.rows.filter((_, idx) => idx !== rowIdx)],\n };\n },\n\n moveMatrixRow: (state: IInstrumentsStoreState, action: IActionFulfilled<null, IMoveBuilderItemActionPayload>) => {\n const {id, from, to} = action.payload;\n const item = state.builder.builderItems.entities.items[id];\n const fromRow = item.rows[from];\n state.builder.builderItems.entities.items[id] = {\n ...item,\n rows: [\n ...update(item.rows, {\n $splice: [\n [from, 1],\n [to, 0, fromRow],\n ],\n }),\n ],\n };\n },\n\n setTemporaryBuilderItems: (state: IInstrumentsStoreState) => {\n state.builder.temporaryBuilderItems = {\n entities: {...state.builder.builderItems.entities},\n result: [...state.builder.builderItems.result],\n };\n },\n\n resetTemporaryBuilderItems: (state: IInstrumentsStoreState) => {\n state.builder.temporaryBuilderItems = {...instrumentsInitialState.builder.temporaryBuilderItems};\n },\n\n setBuilderItems: (state: IInstrumentsStoreState) => {\n state.builder.builderItems = {...state.builder.temporaryBuilderItems, loading: false};\n },\n};\n\nconst resetPagination = (state: IInstrumentsStoreState) => {\n state.pagination.currentPage = instrumentsInitialState.pagination.currentPage;\n state.pagination.totalCount = instrumentsInitialState.pagination.totalCount;\n};\n","import {schema as Schema} from 'normalizr';\n\nexport const itemPoolEntity = new Schema.Entity('items', {}, {idAttribute: 'questionId'});\nexport const poolItemsSchema = new Schema.Array(itemPoolEntity);\n\nexport const itemBuilderEntity = new Schema.Entity('items', {}, {idAttribute: 'questionAnswerStackId'});\nexport const builderItemsSchema = new Schema.Array(itemBuilderEntity);\n\nexport const pretestItemEntity = new Schema.Entity('items', {}, {idAttribute: 'questionId'});\nexport const pretestItemsSchema = new Schema.Array(pretestItemEntity);\n\nexport const instrumentsListEntity = new Schema.Entity('items', {}, {idAttribute: 'templateId'});\nexport const instrumentsListSchema = new Schema.Array(instrumentsListEntity);\n","import {EntityStatusEnum, QuestionAnswersTypeEnum} from 'enums';\nimport {\n IActionFulfilled,\n IBindInstrumentsAllPage,\n IFetchPoolItemsPayload,\n IGetItemsApiResponse,\n IInstrumentDetails,\n IInstrumentItem,\n IUpdateInstrumentApiResponse,\n IUpdateInstrumentPayload,\n} from 'models';\nimport {normalize} from 'normalizr';\nimport {isObject, values} from 'utils';\nimport {IInstrumentsStoreState} from './IInstrumentsStoreState';\nimport {instrumentsInitialState} from './instruments.initialState';\nimport {builderItemsSchema, instrumentsListSchema, poolItemsSchema, pretestItemsSchema} from './normalizationSchemas';\nimport {\n deleteInstrumentThunk,\n fetchGeneralInstrumentExportThunk,\n fetchInstrumentForPreview,\n fetchInstrumentsAllPagedThunk,\n fetchInstrumentThunk,\n fetchMatrixRelatedPoolItemsThunk,\n fetchPoolItemsThunk,\n fetchPossiblePretestItemsThunk,\n publishMasterInstrumentThunk,\n unPublishSessionInstrumentThunk,\n updateDraftInstrumentThunk,\n updateInstrumentThunk,\n uploadInstrumentFooterLogoThunk,\n uploadInstrumentHeaderLogoThunk,\n} from './thunks';\n\nexport const instrumentsExtraReducer = {\n //fetchInstrumentThunk\n [fetchInstrumentThunk.fulfilled]: (\n state: IInstrumentsStoreState,\n action: IActionFulfilled<{templateId: number}, IInstrumentDetails>\n ) => {\n state.page.loading = false;\n if (action.payload?.templateId) {\n const updated = {...action.payload, elements: mapMatrixElementAnswerStackId(action.payload.elements)};\n\n state.templates.entities[action.payload.templateId] = {...updated};\n\n if (updated.elements.length) {\n state.builder.builderItems = normalize(updated.elements, builderItemsSchema);\n\n return;\n }\n\n state.builder.builderItems = {...instrumentsInitialState.builder.builderItems};\n }\n },\n [fetchInstrumentThunk.pending]: (state: IInstrumentsStoreState) => {\n state.page.loading = true;\n },\n [fetchInstrumentThunk.rejected]: (state: IInstrumentsStoreState) => {\n state.page.loading = false;\n },\n\n //fetchGeneralInstrumentExportThunk\n [fetchGeneralInstrumentExportThunk.fulfilled]: (state: IInstrumentsStoreState) => {\n state.page.loading = false;\n },\n [fetchGeneralInstrumentExportThunk.pending]: (state: IInstrumentsStoreState) => {\n state.page.loading = true;\n },\n [fetchGeneralInstrumentExportThunk.rejected]: (state: IInstrumentsStoreState) => {\n state.page.loading = false;\n },\n\n //unPublishSessionInstrumentThunk\n [unPublishSessionInstrumentThunk.fulfilled]: (\n state: IInstrumentsStoreState,\n action: IActionFulfilled<number, null>\n ) => {\n const {arg: templateId} = action.meta;\n state.templates.entities[templateId] = {\n ...state.templates.entities[templateId],\n status: EntityStatusEnum.draft,\n };\n state.page.saving = false;\n },\n [unPublishSessionInstrumentThunk.pending]: (state: IInstrumentsStoreState) => {\n state.page.saving = true;\n },\n [unPublishSessionInstrumentThunk.rejected]: (state: IInstrumentsStoreState) => {\n state.page.saving = false;\n },\n\n //fetchPoolItemsThunk\n [fetchPoolItemsThunk.fulfilled]: (\n state: IInstrumentsStoreState,\n action: IActionFulfilled<null, IGetItemsApiResponse>\n ) => {\n if (!action.payload.items) {\n state.page.loading = false;\n return;\n }\n\n const isSearch = state.builder.searchText.length > 0;\n\n /* \n The following block covers two special cases:\n 1. When there is nothing in the search field.\n 2. When the search was reset after a search that resulted in 0 items\n */\n let current = [];\n if (!isSearch && state.builder.poolItems.entities.items) {\n current = values(state.builder.poolItems.entities.items);\n }\n\n const newEntities = [...current, ...action.payload.items];\n state.builder.poolItems = normalize(newEntities, poolItemsSchema);\n state.builder.pagesTotal.poolItems = action.payload.pageCount;\n state.builder.builderItems.loading = false;\n },\n [fetchPoolItemsThunk.pending]: (state: IInstrumentsStoreState) => {\n state.builder.builderItems.loading = true;\n },\n [fetchPoolItemsThunk.rejected]: (state: IInstrumentsStoreState) => {\n state.builder.builderItems.loading = false;\n },\n\n //fetchPossiblePretestItemsThunk\n [fetchPossiblePretestItemsThunk.fulfilled]: (state: IInstrumentsStoreState, action: IActionFulfilled<null, any>) => {\n const newEntities = [...action.payload.items];\n\n state.builder.pretestItems = normalize(newEntities, pretestItemsSchema);\n },\n\n //fetchMatrixRelatedPoolItemsThunks\n [fetchMatrixRelatedPoolItemsThunk.fulfilled]: (\n state: IInstrumentsStoreState,\n action: IActionFulfilled<IFetchPoolItemsPayload, IGetItemsApiResponse>\n ) => {\n const newEntities = [...action.payload.items];\n state.builder.poolItems = normalize(newEntities, poolItemsSchema);\n state.builder.pagesTotal.poolItems = action.payload.pageCount;\n state.builder.builderItems.loading = false;\n },\n [fetchMatrixRelatedPoolItemsThunk.pending]: (state: IInstrumentsStoreState) => {\n state.builder.builderItems.loading = true;\n },\n [fetchMatrixRelatedPoolItemsThunk.rejected]: (state: IInstrumentsStoreState) => {\n state.builder.builderItems.loading = false;\n },\n\n //updateDraftInstrumentThunk\n [updateDraftInstrumentThunk.fulfilled]: (\n state: IInstrumentsStoreState,\n action: IActionFulfilled<IUpdateInstrumentPayload, IInstrumentDetails>\n ) => {\n if (action.payload.templateId) {\n const templateId = action.payload.templateId;\n const updated = {\n ...action.payload,\n elements: mapMatrixElementAnswerStackId(action.payload.elements),\n };\n\n state.templates.entities[templateId] = {...updated};\n\n if (updated.elements.length) {\n state.builder.builderItems = normalize(updated.elements, builderItemsSchema);\n }\n }\n state.page.loading = false;\n state.page.saving = false;\n },\n [updateDraftInstrumentThunk.pending]: (state: IInstrumentsStoreState) => {\n state.page.loading = true;\n state.page.saving = true;\n },\n [updateDraftInstrumentThunk.rejected]: (state: IInstrumentsStoreState) => {\n state.page.loading = false;\n state.page.saving = false;\n },\n\n //updateInstrumentInfoThunk\n [updateInstrumentThunk.fulfilled]: (\n state: IInstrumentsStoreState,\n action: IActionFulfilled<IUpdateInstrumentPayload, IUpdateInstrumentApiResponse>\n ) => {\n if (action.payload.data) {\n const {data} = action.payload;\n const {templateId} = data;\n\n state.templates.entities[templateId] = {\n ...state.templates.entities[templateId],\n ...data,\n };\n }\n\n state.page.loading = false;\n },\n [updateInstrumentThunk.pending]: (state: IInstrumentsStoreState) => {\n state.page.loading = true;\n },\n [updateInstrumentThunk.rejected]: (state: IInstrumentsStoreState) => {\n state.page.loading = false;\n },\n\n //fetchInstrumentsAllPagedThunk\n [fetchInstrumentsAllPagedThunk.fulfilled]: (\n state: IInstrumentsStoreState,\n action: IActionFulfilled<null, IBindInstrumentsAllPage>\n ) => {\n if (isObject(action.payload)) {\n state.templates = normalize(action.payload.templates, instrumentsListSchema);\n state.pagination.totalCount = action.payload.totalCount;\n }\n\n state.page.loading = false;\n },\n [fetchInstrumentsAllPagedThunk.pending]: (state: IInstrumentsStoreState) => {\n state.page.loading = true;\n },\n [fetchInstrumentsAllPagedThunk.rejected]: (state: IInstrumentsStoreState) => {\n state.page.loading = false;\n },\n\n //uploadInstrumentFooterLogoThunk\n [uploadInstrumentFooterLogoThunk.fulfilled]: (state: IInstrumentsStoreState) => {\n state.page.saving = false;\n },\n [uploadInstrumentFooterLogoThunk.pending]: (state: IInstrumentsStoreState) => {\n state.page.saving = true;\n },\n [uploadInstrumentFooterLogoThunk.rejected]: (state: IInstrumentsStoreState) => {\n state.page.saving = false;\n },\n\n //uploadInstrumentHeaderLogoThunk\n [uploadInstrumentHeaderLogoThunk.fulfilled]: (state: IInstrumentsStoreState) => {\n state.page.saving = false;\n },\n [uploadInstrumentHeaderLogoThunk.pending]: (state: IInstrumentsStoreState) => {\n state.page.saving = true;\n },\n [uploadInstrumentHeaderLogoThunk.rejected]: (state: IInstrumentsStoreState) => {\n state.page.saving = false;\n },\n\n //publishMasterInstrumentThunk\n [publishMasterInstrumentThunk.fulfilled]: (state: IInstrumentsStoreState) => {\n state.page.saving = false;\n },\n [publishMasterInstrumentThunk.pending]: (state: IInstrumentsStoreState) => {\n state.page.saving = true;\n },\n [publishMasterInstrumentThunk.rejected]: (state: IInstrumentsStoreState) => {\n state.page.saving = false;\n },\n\n //fetchInstrumentForPreview\n [fetchInstrumentForPreview.fulfilled]: (\n state: IInstrumentsStoreState,\n action: IActionFulfilled<{templateId: number}, IInstrumentDetails>\n ) => {\n if (action.payload) {\n const surveyTemplate = {...action.payload};\n state.survey.previewTemplate.entities[action.payload.templateId] = {...surveyTemplate};\n }\n\n state.page.loading = false;\n },\n [fetchInstrumentForPreview.pending]: (state: IInstrumentsStoreState) => {\n state.page.loading = true;\n },\n [fetchInstrumentForPreview.rejected]: (state: IInstrumentsStoreState) => {\n state.page.loading = false;\n },\n\n //deleteInstrumentThunk\n [deleteInstrumentThunk.fulfilled]: (state: IInstrumentsStoreState) => {\n state.page.deleting = false;\n },\n [deleteInstrumentThunk.pending]: (state: IInstrumentsStoreState) => {\n state.page.deleting = true;\n },\n [deleteInstrumentThunk.rejected]: (state: IInstrumentsStoreState) => {\n state.page.deleting = false;\n },\n};\n\nfunction mapMatrixElementAnswerStackId(elements: IInstrumentItem[]): IInstrumentItem[] {\n return elements.map((element) => {\n const {type} = element;\n const isMatrix = type === QuestionAnswersTypeEnum.matrix || type === QuestionAnswersTypeEnum.matrixEnum;\n\n if (isMatrix) {\n return {\n ...element,\n originalAnswerStackId: element.questionAnswerStackId,\n questionAnswerStackId: element.questionId,\n };\n }\n\n return element;\n });\n}\n","import {createSlice} from '@reduxjs/toolkit';\nimport {instrumentsInitialState} from './instruments.initialState';\nimport {instrumentsReducer} from './instruments.reducer';\nimport {instrumentsExtraReducer} from './instrumentsExtra.reducer';\n\nexport const instrumentsSlice = createSlice({\n name: 'instruments',\n initialState: instrumentsInitialState,\n reducers: instrumentsReducer,\n extraReducers: instrumentsExtraReducer,\n});\n\nexport const {actions: instrumentsActions} = instrumentsSlice;\n","import {schema as Schema} from 'normalizr';\n\nexport const integrationsListEntity = new Schema.Entity('items', {}, {idAttribute: 'id'});\nexport const integrationsListSchema = new Schema.Array(integrationsListEntity);\n\nexport const integrationStatusesEntity = new Schema.Entity('items', {}, {idAttribute: 'id'});\nexport const integrationStatusesSchema = new Schema.Array(integrationStatusesEntity);\n","import {IActionFulfilled} from 'models';\nimport {normalize} from 'normalizr';\nimport {isObject} from 'utils';\nimport {IIntegrationStoreState} from './IIntegrationsStoreState';\nimport {integrationsListSchema} from './normalizationSchemas';\nimport {\n createGoogleSitesDestinationThunk,\n createGoogleSitesSourceThunk,\n createGoogleVirtualClassThunk,\n createMicrosoftTeamsThunk,\n deleteIntegrationThunk,\n fetchAuditLogThunk,\n fetchIntegrationDetailsThunk,\n fetchIntegrationsPagedThunk,\n fetchPublishedSourceDetailsThunk,\n fetchServiceEmailThunk,\n publishIntegrationThunk,\n testGoogleClassroomThunk,\n testGoogleSitesDestinationThunk,\n testGoogleSitesSourceThunk,\n testMicrosoftTeamsThunk,\n updateGoogleClassroomIntegrationThunk,\n updateGoogleSitesDestinationIntegrationThunk,\n updateGoogleSitesSourceIntegrationThunk,\n updateMicrosoftTeamsIntegrationThunk,\n} from './thunks';\nimport {\n IGetIntegrationDetailApiResponse,\n IGetServiceEmailResponse,\n IBindIntegrationsAllPage,\n IGetAuditLogResponse,\n ITestMicrosoftTeamsIntegrationApiResponse,\n ITestGoogleClassroomIntegrationApiResponse,\n IUpdateGoogleSitesSourceApiResponse,\n IUpdateGoogleSitesDestinationApiResponse,\n IUpdateGoogleClassroomApiResponse,\n ITestBaseIntegrationApiResponse,\n IGetPublishedApiSourceDetails,\n} from 'models/integrations';\nimport {IntegrationStatusNum} from 'enums/integrations';\nimport {DEFAULT_CLIENT_SECRET} from 'admin';\n\nexport const integrationsExtraReducer = {\n // fetchIntegrationsPagedThunk\n [fetchIntegrationsPagedThunk.fulfilled]: (\n state: IIntegrationStoreState,\n action: IActionFulfilled<null, IBindIntegrationsAllPage>\n ) => {\n if (isObject(action.payload)) {\n const {\n data,\n metadata: {totalCount, pageNumber, pageSize},\n } = action.payload;\n\n state.integrationList = normalize(data, integrationsListSchema);\n state.pagination.totalCount = totalCount;\n state.pagination.currentPage = pageNumber;\n state.pagination.perPage = pageSize;\n }\n\n state.page.loading = false;\n },\n [fetchIntegrationsPagedThunk.pending]: (state: IIntegrationStoreState) => {\n state.page.loading = true;\n },\n [fetchIntegrationsPagedThunk.rejected]: (state: IIntegrationStoreState) => {\n state.page.loading = false;\n },\n\n // fetchIntegrationDetailsThunk\n [fetchIntegrationDetailsThunk.fulfilled]: (\n state: IIntegrationStoreState,\n action: IActionFulfilled<null, IGetIntegrationDetailApiResponse>\n ) => {\n if (isObject(action.payload)) {\n const {data} = action.payload;\n state.integration = {...data};\n }\n\n state.page.loading = false;\n },\n [fetchIntegrationDetailsThunk.pending]: (state: IIntegrationStoreState) => {\n state.page.loading = true;\n },\n [fetchIntegrationDetailsThunk.rejected]: (state: IIntegrationStoreState) => {\n state.page.loading = false;\n },\n\n // createGoogleSitesDestinationThunk\n [createGoogleSitesDestinationThunk.fulfilled]: (state: IIntegrationStoreState) => {\n state.page.loading = false;\n },\n [createGoogleSitesDestinationThunk.pending]: (state: IIntegrationStoreState) => {\n state.page.loading = true;\n },\n [createGoogleSitesDestinationThunk.rejected]: (state: IIntegrationStoreState) => {\n state.page.loading = false;\n },\n\n // createGoogleSitesSourceThunk\n [createGoogleSitesSourceThunk.fulfilled]: (state: IIntegrationStoreState) => {\n state.page.loading = false;\n },\n [createGoogleSitesSourceThunk.pending]: (state: IIntegrationStoreState) => {\n state.page.loading = true;\n },\n [createGoogleSitesSourceThunk.rejected]: (state: IIntegrationStoreState) => {\n state.page.loading = false;\n },\n\n // createGoogleSitesDestinationThunk\n [createGoogleVirtualClassThunk.fulfilled]: (state: IIntegrationStoreState) => {\n state.page.loading = false;\n },\n [createGoogleVirtualClassThunk.pending]: (state: IIntegrationStoreState) => {\n state.page.loading = true;\n },\n [createGoogleVirtualClassThunk.rejected]: (state: IIntegrationStoreState) => {\n state.page.loading = false;\n },\n\n // createMicrosoftTeamsThunk\n [createMicrosoftTeamsThunk.fulfilled]: (state: IIntegrationStoreState) => {\n state.page.loading = false;\n },\n [createMicrosoftTeamsThunk.pending]: (state: IIntegrationStoreState) => {\n state.page.loading = true;\n },\n [createMicrosoftTeamsThunk.rejected]: (state: IIntegrationStoreState) => {\n state.page.loading = false;\n },\n\n // fetchServiceEmailThunk\n [fetchServiceEmailThunk.fulfilled]: (\n state: IIntegrationStoreState,\n action: IActionFulfilled<null, IGetServiceEmailResponse>\n ) => {\n if (isObject(action.payload)) {\n const {data} = action.payload;\n\n state.addIntegration.metadata.serviceSourceEmail = data;\n }\n },\n [fetchServiceEmailThunk.rejected]: (\n state: IIntegrationStoreState,\n action: IActionFulfilled<null, IGetServiceEmailResponse>\n ) => {\n state.page.loading = false;\n\n if (isObject(action.payload)) {\n const {messages} = action.payload.error;\n\n state.addIntegration.metadata.errorMessage = messages;\n }\n },\n\n // fetchPublishedSourceDetailsThunk\n [fetchPublishedSourceDetailsThunk.fulfilled]: (\n state: IIntegrationStoreState,\n action: IActionFulfilled<null, IGetPublishedApiSourceDetails>\n ) => {\n if (isObject(action.payload)) {\n const {data} = action.payload;\n\n state.addIntegration.metadata = {\n id: data.id,\n name: data.name,\n serviceSourceEmail: data.serviceEmailAccount,\n errorMessage: null,\n };\n }\n },\n [fetchPublishedSourceDetailsThunk.rejected]: (\n state: IIntegrationStoreState,\n action: IActionFulfilled<null, IGetPublishedApiSourceDetails>\n ) => {\n state.page.loading = false;\n\n if (isObject(action.payload)) {\n const {messages} = action.payload.error;\n\n state.addIntegration.metadata.errorMessage = messages;\n }\n },\n\n // fetchAuditLogThunk\n [fetchAuditLogThunk.fulfilled]: (\n state: IIntegrationStoreState,\n action: IActionFulfilled<null, IGetAuditLogResponse>\n ) => {\n if (isObject(action.payload)) {\n const {data} = action.payload;\n state.details.auditLogs.entities = data;\n state.details.auditLogs.loading = false;\n }\n },\n [fetchAuditLogThunk.pending]: (state: IIntegrationStoreState) => {\n state.details.auditLogs.loading = true;\n },\n [fetchAuditLogThunk.rejected]: (state: IIntegrationStoreState) => {\n state.details.auditLogs.loading = false;\n },\n\n // deleteIntegrationThunk\n [deleteIntegrationThunk.fulfilled]: (state: IIntegrationStoreState) => {\n state.page.loading = false;\n },\n [deleteIntegrationThunk.pending]: (state: IIntegrationStoreState) => {\n state.page.loading = true;\n },\n [deleteIntegrationThunk.rejected]: (state: IIntegrationStoreState) => {\n state.page.loading = false;\n },\n\n // updateMicrosoftTeamsIntegrationThunk\n [updateMicrosoftTeamsIntegrationThunk.fulfilled]: (\n state: IIntegrationStoreState,\n action: IActionFulfilled<null, any>\n ) => {\n state.page.loading = false;\n\n if (isObject(action.payload)) {\n const {data} = action.payload;\n\n state.integration = {\n ...state.integration,\n name: data.details.name,\n\n configuration: {\n ...data.details.configuration,\n authorityUrl: data.details.configuration.authorityUrl,\n clientId: data.details.configuration.clientId,\n clientSecret: DEFAULT_CLIENT_SECRET,\n },\n };\n }\n },\n [updateMicrosoftTeamsIntegrationThunk.pending]: (state: IIntegrationStoreState) => {\n state.page.loading = true;\n },\n [updateMicrosoftTeamsIntegrationThunk.rejected]: (state: IIntegrationStoreState) => {\n state.page.loading = false;\n },\n\n // updateGoogleSitesSourceIntegrationThunk\n [updateGoogleSitesSourceIntegrationThunk.fulfilled]: (\n state: IIntegrationStoreState,\n action: IActionFulfilled<null, IUpdateGoogleSitesSourceApiResponse>\n ) => {\n if (isObject(action.payload)) {\n const {data} = action.payload;\n\n state.integration = {\n ...state.integration,\n name: data.details.name,\n\n configuration: {\n ...data.details.configuration,\n defaultFolderId: data.details.configuration.defaultFolderId,\n serviceEmailAccount: data.details.configuration.serviceEmailAccount,\n },\n };\n }\n\n state.page.loading = false;\n },\n [updateGoogleSitesSourceIntegrationThunk.pending]: (state: IIntegrationStoreState) => {\n state.page.loading = true;\n },\n [updateGoogleSitesSourceIntegrationThunk.rejected]: (state: IIntegrationStoreState) => {\n state.page.loading = false;\n },\n\n // updateGoogleSitesDestinationIntegrationThunk\n [updateGoogleSitesDestinationIntegrationThunk.fulfilled]: (\n state: IIntegrationStoreState,\n action: IActionFulfilled<null, IUpdateGoogleSitesDestinationApiResponse>\n ) => {\n if (isObject(action.payload)) {\n const {data} = action.payload;\n\n state.integration = {\n ...state.integration,\n name: data.details.name,\n configuration: {\n ...data.details.configuration,\n defaultFolderId: data.details.configuration.defaultFolderId,\n },\n };\n }\n\n state.page.loading = false;\n },\n [updateGoogleSitesDestinationIntegrationThunk.pending]: (state: IIntegrationStoreState) => {\n state.page.loading = true;\n },\n [updateGoogleSitesDestinationIntegrationThunk.rejected]: (state: IIntegrationStoreState) => {\n state.page.loading = false;\n },\n\n // updateGoogleClassroomIntegrationThunk\n [updateGoogleClassroomIntegrationThunk.fulfilled]: (\n state: IIntegrationStoreState,\n action: IActionFulfilled<null, IUpdateGoogleClassroomApiResponse>\n ) => {\n if (isObject(action.payload)) {\n const {data} = action.payload;\n\n state.integration = {\n ...state.integration,\n name: data.details.name,\n\n configuration: {\n ...data.details.configuration,\n serviceEmailAccount: data.details.configuration.serviceEmailAccount,\n },\n };\n }\n\n state.page.loading = false;\n },\n [updateGoogleClassroomIntegrationThunk.pending]: (state: IIntegrationStoreState) => {\n state.page.loading = true;\n },\n [updateGoogleClassroomIntegrationThunk.rejected]: (state: IIntegrationStoreState) => {\n state.page.loading = false;\n },\n\n // testMicrosoftTeamsThunk\n [testMicrosoftTeamsThunk.fulfilled]: (\n state: IIntegrationStoreState,\n action: IActionFulfilled<null, ITestMicrosoftTeamsIntegrationApiResponse>\n ) => {\n if (isObject(action.payload)) {\n const {data} = action.payload;\n state.integration = {\n ...state.integration,\n status: data ? IntegrationStatusNum.TEST_IN_PROGRESS : IntegrationStatusNum.TEST_FAILED,\n };\n }\n state.page.loading = false;\n },\n [testMicrosoftTeamsThunk.pending]: (state: IIntegrationStoreState) => {\n state.page.loading = true;\n },\n [testMicrosoftTeamsThunk.rejected]: (state: IIntegrationStoreState) => {\n state.page.loading = false;\n },\n\n // testGoogleClassroomThunk\n [testGoogleClassroomThunk.fulfilled]: (\n state: IIntegrationStoreState,\n action: IActionFulfilled<null, ITestGoogleClassroomIntegrationApiResponse>\n ) => {\n if (isObject(action.payload)) {\n const {data} = action.payload;\n state.integration = {\n ...state.integration,\n status: data ? IntegrationStatusNum.TEST_IN_PROGRESS : IntegrationStatusNum.TEST_FAILED,\n };\n }\n state.page.loading = false;\n },\n [testGoogleClassroomThunk.pending]: (state: IIntegrationStoreState) => {\n state.page.loading = true;\n },\n [testGoogleClassroomThunk.rejected]: (state: IIntegrationStoreState) => {\n state.page.loading = false;\n },\n\n // testGoogleSitesSourceThunk\n [testGoogleSitesSourceThunk.fulfilled]: (\n state: IIntegrationStoreState,\n action: IActionFulfilled<null, ITestBaseIntegrationApiResponse>\n ) => {\n if (isObject(action.payload)) {\n const {data} = action.payload;\n state.integration = {\n ...state.integration,\n status: data ? IntegrationStatusNum.TEST_SUCCESS : IntegrationStatusNum.TEST_FAILED,\n };\n }\n state.page.loading = false;\n },\n [testGoogleSitesSourceThunk.pending]: (state: IIntegrationStoreState) => {\n state.page.loading = true;\n },\n [testGoogleSitesSourceThunk.rejected]: (state: IIntegrationStoreState) => {\n state.page.loading = false;\n },\n\n // testGoogleSitesDestinationThunk\n [testGoogleSitesDestinationThunk.fulfilled]: (\n state: IIntegrationStoreState,\n action: IActionFulfilled<null, ITestBaseIntegrationApiResponse>\n ) => {\n if (isObject(action.payload)) {\n const {data} = action.payload;\n state.integration = {\n ...state.integration,\n status: data ? IntegrationStatusNum.TEST_SUCCESS : IntegrationStatusNum.TEST_FAILED,\n };\n }\n state.page.loading = false;\n },\n [testGoogleSitesDestinationThunk.pending]: (state: IIntegrationStoreState) => {\n state.page.loading = true;\n },\n [testGoogleSitesDestinationThunk.rejected]: (state: IIntegrationStoreState) => {\n state.page.loading = false;\n },\n\n // publishIntegrationThunk\n [publishIntegrationThunk.fulfilled]: (state: IIntegrationStoreState) => {\n state.page.loading = false;\n },\n [publishIntegrationThunk.pending]: (state: IIntegrationStoreState) => {\n state.page.loading = true;\n },\n [publishIntegrationThunk.rejected]: (state: IIntegrationStoreState) => {\n state.page.loading = false;\n },\n};\n","import {createSlice} from '@reduxjs/toolkit';\nimport {integrationsInitialState} from './integrations.initialState';\nimport {integrationsReducer} from './integrations.reducer';\nimport {integrationsExtraReducer} from './integrationsExtra.reducer';\n\nexport const integrationsSlice = createSlice({\n name: 'integrations',\n initialState: integrationsInitialState,\n reducers: integrationsReducer,\n extraReducers: integrationsExtraReducer,\n});\n\nexport const {actions: integrationsActions} = integrationsSlice;\n","export enum IIntegrationsPagedFilterEnum {\n SEARCH_BY_NAME = 'query',\n INTEGRATION_TYPE = 'integrationType',\n INTEGRATION_STATUSES = 'statuses',\n AREA_IDS = 'areaIds',\n SCHOOL_IDS = 'schoolIds',\n DISTRICT_IDS = 'districtIds',\n}\n","import {EntitiesPerPageEnum, SortingOrderEnum} from 'enums';\nimport {\n ProgramClassesPaperAssessmentsFilterNamesEnum,\n ProgramClassPaperAssessmentsOrderingEnum,\n} from 'enums/paper-assessments';\nimport {IPagination} from 'models';\nimport {IProgramClassesPaperAssessmentsFilter} from 'models/programs';\nimport {IProgramClassesPaperAssessmentsState} from './IProgramClassesPaperAssessmentsState';\n\nconst filterDefault: IProgramClassesPaperAssessmentsFilter = {\n [ProgramClassesPaperAssessmentsFilterNamesEnum.SEARCH]: '',\n};\n\nconst paginationDefault: IPagination = {\n currentPage: 1,\n totalCount: 0,\n perPage: EntitiesPerPageEnum.FIFTY,\n};\n\nexport const programClassesPaperAssessmentsInitialState: IProgramClassesPaperAssessmentsState = {\n page: {\n loading: false,\n },\n upload: {\n loading: false,\n },\n paperAssessmentList: {\n result: [],\n entities: {\n items: {},\n },\n },\n sortOrder: {\n order: ProgramClassPaperAssessmentsOrderingEnum.Created,\n sort: SortingOrderEnum.DESC,\n },\n filter: filterDefault,\n pagination: paginationDefault,\n};\n","import {\n IActionFulfilled,\n IProgramClassesPaperAssessmentsFilter,\n IProgramClassesPaperAssessmentsSortOrder,\n} from 'models';\nimport {cloneDeep} from 'utils';\nimport {IProgramClassesPaperAssessmentsState} from './IProgramClassesPaperAssessmentsState';\nimport {programClassesPaperAssessmentsInitialState} from './programClassesPaperAssessments.initialState';\n\nexport const programClassesPaperAssessmentsReducer = {\n clear(state: IProgramClassesPaperAssessmentsState) {\n state.paperAssessmentList = {...programClassesPaperAssessmentsInitialState.paperAssessmentList};\n },\n setCurrentPage: (state: IProgramClassesPaperAssessmentsState, action: IActionFulfilled<null, number>) => {\n state.pagination.currentPage = action.payload;\n },\n\n setPerPage: (state: IProgramClassesPaperAssessmentsState, action: IActionFulfilled<null, number>) => {\n state.pagination.perPage = action.payload;\n resetPagination(state);\n },\n\n setFilter: (\n state: IProgramClassesPaperAssessmentsState,\n action: IActionFulfilled<null, IProgramClassesPaperAssessmentsFilter>\n ) => {\n state.filter = action.payload;\n },\n\n resetFilter: (state: IProgramClassesPaperAssessmentsState) => {\n state.filter = cloneDeep(programClassesPaperAssessmentsInitialState.filter);\n },\n\n setSortOrderPaperAssessments: (\n state: IProgramClassesPaperAssessmentsState,\n action: IActionFulfilled<null, IProgramClassesPaperAssessmentsSortOrder>\n ) => {\n state.sortOrder = action.payload;\n },\n};\n\nconst resetPagination = (state: IProgramClassesPaperAssessmentsState) => {\n state.pagination.currentPage = programClassesPaperAssessmentsInitialState.pagination.currentPage;\n state.pagination.totalCount = programClassesPaperAssessmentsInitialState.pagination.totalCount;\n};\n","import {schema as Schema} from 'normalizr';\n\nexport const paperAssessmentListEntity = new Schema.Entity('items', {}, {idAttribute: 'contentItemId'});\nexport const paperAssessmentListSchema = new Schema.Array(paperAssessmentListEntity);\n","import {fetchClassPaperAssessmentsPagedThunk, uploadPaperAssessmentsThunk} from './thunks';\nimport {IProgramClassesPaperAssessmentsState} from './IProgramClassesPaperAssessmentsState';\nimport {IActionFulfilled, IGetPageOfPaperAssessmentsResponse} from 'models';\nimport {isObject} from 'utils/functions';\nimport {normalize} from 'normalizr';\nimport {paperAssessmentListSchema} from './normalizationSchemas';\nimport {EntitiesPerPageEnum} from 'enums';\n\nexport const programClassesPaperAssessmentsExtraReducer = {\n //uploadPaperAssessmentsThunk\n [uploadPaperAssessmentsThunk.fulfilled]: (state: IProgramClassesPaperAssessmentsState) => {\n state.upload.loading = false;\n },\n [uploadPaperAssessmentsThunk.pending]: (state: IProgramClassesPaperAssessmentsState) => {\n state.upload.loading = true;\n },\n [uploadPaperAssessmentsThunk.rejected]: (state: IProgramClassesPaperAssessmentsState) => {\n state.upload.loading = false;\n },\n\n //fetchClassPaperAssessmentsPagedThunk\n [fetchClassPaperAssessmentsPagedThunk.fulfilled]: (\n state: IProgramClassesPaperAssessmentsState,\n action: IActionFulfilled<null, IGetPageOfPaperAssessmentsResponse>\n ) => {\n if (isObject(action.payload)) {\n const {\n data,\n metadata: {totalCount, pageNumber, pageSize},\n } = action.payload;\n\n state.paperAssessmentList = normalize(data, paperAssessmentListSchema);\n state.pagination.totalCount = totalCount;\n state.pagination.currentPage = pageNumber;\n state.pagination.perPage =\n pageSize < EntitiesPerPageEnum.TWENTY_FIVE ? EntitiesPerPageEnum.TWENTY_FIVE : pageSize;\n }\n\n state.page.loading = false;\n },\n [fetchClassPaperAssessmentsPagedThunk.pending]: (state: IProgramClassesPaperAssessmentsState) => {\n state.page.loading = true;\n },\n [fetchClassPaperAssessmentsPagedThunk.rejected]: (state: IProgramClassesPaperAssessmentsState) => {\n state.page.loading = false;\n },\n};\n","import {createSlice} from '@reduxjs/toolkit';\nimport {programClassesPaperAssessmentsInitialState} from './programClassesPaperAssessments.initialState';\nimport {programClassesPaperAssessmentsReducer} from './programClassesPaperAssessments.reducer';\nimport {programClassesPaperAssessmentsExtraReducer} from './programClassesPaperAssessmentsExtra.reducer';\n\nexport const programClassesPaperAssessmentsSlice = createSlice({\n name: 'programClassesPaperAssessments',\n initialState: programClassesPaperAssessmentsInitialState,\n reducers: programClassesPaperAssessmentsReducer,\n extraReducers: programClassesPaperAssessmentsExtraReducer,\n});\n\nexport const {actions: programClassesPaperAssessmentsActions} = programClassesPaperAssessmentsSlice;\n","export const prefix = '[Programs][Details]';\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {programsApi} from 'api';\nimport {IProgramBase, IWithNavigationPush} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\nimport {pages} from 'paths';\n\ninterface IFetchProgramPayload extends IWithNavigationPush {\n programId: number;\n}\n\nexport const fetchProgramThunk: any = createAsyncThunk<IProgramBase, IFetchProgramPayload>(\n `${prefix} fetchProgram`,\n async ({programId, push}, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await programsApi.getActiveProgramsByIds([programId]);\n\n if (!parsedBody.length) {\n push(pages.error);\n } else {\n return parsedBody[0];\n }\n } catch (err) {\n dispatch(\n toastNotificationManager.createErrorToastAction(err.parsedBody || err.statusText || 'Unknown error occurred.')\n );\n\n push(pages.error);\n\n return rejectWithValue({error: err});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {programsApi} from 'api';\nimport {IGetLevelsOfReportingApiResponse, IGetLevelsOfReportingPayload, IGetLevelsOfReportingQueryParams} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const fetchLevelsOfReportingListThunk: any = createAsyncThunk<\n IGetLevelsOfReportingApiResponse,\n IGetLevelsOfReportingPayload\n>(`${prefix} fetchLevelsOfReportingList`, async ({programId, classId}, {rejectWithValue, dispatch}) => {\n try {\n let queryParams = {} as IGetLevelsOfReportingQueryParams;\n\n if (programId) {\n queryParams = {...queryParams, programId};\n }\n\n if (classId) {\n queryParams = {...queryParams, sessionId: classId};\n }\n\n const {parsedBody} = await programsApi.getLevelsOfReportingListByProgramId(queryParams);\n\n return parsedBody;\n } catch (err) {\n dispatch(\n toastNotificationManager.createErrorToastAction(err.parsedBody || err.statusText || 'Unknown error occurred.')\n );\n\n return rejectWithValue({error: err});\n }\n});\n","export const prefix = '[Program Class Paper Assessments]';\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {uploadResourcesApi} from 'api';\nimport {IUploadPaperAssessmentsApiResponse, IUploadPaperAssessmentsPayload} from 'models/programs';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const uploadPaperAssessmentsThunk: any = createAsyncThunk<\n IUploadPaperAssessmentsApiResponse,\n IUploadPaperAssessmentsPayload\n>(`${prefix} uploadPaperAssessments`, async (payload: IUploadPaperAssessmentsPayload, {dispatch, rejectWithValue}) => {\n try {\n const response = await uploadResourcesApi.uploadPaperAssessment(payload);\n dispatch(toastNotificationManager.createSuccessToastAction('Paper Assessments were uploaded successfully'));\n return response.data;\n } catch (error) {\n const errMsg = error.response.data.messages[0];\n dispatch(toastNotificationManager.createErrorToastAction(errMsg));\n return rejectWithValue({error});\n }\n});\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {programsApi} from 'api';\nimport {prefix} from './config';\nimport {IGetPageOfPaperAssessmentsPayload, IGetPageOfPaperAssessmentsResponse} from 'models';\n\nexport const fetchClassPaperAssessmentsPagedThunk: any = createAsyncThunk<\n IGetPageOfPaperAssessmentsResponse,\n IGetPageOfPaperAssessmentsPayload\n>(\n `${prefix} fetchClassPaperAssessmentsPaged`,\n async (payload: IGetPageOfPaperAssessmentsPayload, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await programsApi.getClassPaperAssessmentsPaged(payload);\n return parsedBody;\n } catch (error) {\n dispatch(toastNotificationManager.createErrorToastAction(error.parsedBody));\n return rejectWithValue({error});\n }\n }\n);\n","export const PRE_SESSION_FIRST_DIGIT = 3;\nexport const POST_SESSION_FIRST_DIGIT = 4;\nexport const PRE_TEST_NUM = 100;\nexport const POST_TEST_NUM = 200;\nexport const PRE_SESSION_NUM = 300;\nexport const POST_SESSION_NUM = 400;\nexport const FEEDBACK_NUM = 500;\n","export const feedbackTypeName = 'Feedback';\nexport const generalAudienceName = 'General';\n\nexport const audienceStudentId = 10;\nexport const audienceTeacherId = 30;\nexport const audienceGeneralId = 50;\nexport const typeFeedbackId = 500;\n","export enum ModalResources {\n RESOURCES = 'Digital Resources',\n ASSESSMENTS = 'Paper Assessments Responses',\n}\n","export enum IResourceContentTypeEnum {\n ScormResource,\n FileResource,\n WebLinkResource,\n}\n","export enum IResourceContentTypeNameEnum {\n ScormResource = 'SCORM Package',\n FileResource = 'File',\n WebLinkResource = 'Web Link',\n Image = 'Image',\n Video = 'Video',\n Audio = 'Audio',\n Document = 'Document',\n Pdf = 'Pdf',\n FillablePdf = 'Fillable Pdf',\n}\n","import React from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Column, Container, Row} from 'components-lib';\nimport {layoutConfig} from 'layout';\nimport {IComponentWithChildren} from 'models';\n\ninterface ISidebarBase extends IComponentWithChildren {\n withHeader?: boolean;\n}\n\nexport function SidebarBase({children, withHeader = true}: ISidebarBase) {\n const classes = useStyles(withHeader);\n\n return (\n <Container classes={{root: classes.root}}>\n <Column>\n <Row justify=\"flex-start\" align=\"flex-start\" classes={{root: classes.scrollableContainer}}>\n <div>{children}</div>\n </Row>\n </Column>\n </Container>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n overflow: 'hidden',\n padding: `${theme.spacing(3)}px 0 ${theme.spacing(3)}px ${theme.spacing(3)}px `,\n },\n scrollableContainer: (withHeader: boolean) => ({\n height: `calc(100vh - ${layoutConfig.scrollableAreaSubtrahend - (withHeader ? 95 : 0)}px)`,\n overflowX: 'hidden',\n overflowY: 'auto',\n paddingBottom: theme.spacing(5),\n '& > div': {\n width: '100%',\n },\n }),\n}));\n","import React, {FC, ReactNode} from 'react';\nimport {Text} from 'components-lib';\n\ninterface IActiveHeaderProps {\n isActive: boolean;\n children: ReactNode;\n}\n\nexport const ActiveHeader: FC<IActiveHeaderProps> = ({isActive, children}) => {\n return (\n <Text.Heading as=\"h4\" color={isActive ? 'primary' : 'inherit'}>\n {children}\n </Text.Heading>\n );\n};\n","import React, {ReactNode} from 'react';\nimport {makeStyles} from '@material-ui/core';\n\nimport {Column, Row, Text} from 'components-lib';\nimport {QuestionAnswersTypeEnum} from 'enums';\nimport {cardTypeMap} from 'admin/library/enums';\nimport {borderGeneral} from 'styles';\n\ninterface ICardQuestionSimpleProps {\n type: QuestionAnswersTypeEnum;\n text: string;\n actions?: ReactNode;\n withBorder?: boolean;\n withExtraPadding?: boolean;\n}\n\nexport function CardQuestionSimple({\n type,\n text,\n actions,\n withBorder = false,\n withExtraPadding = false,\n}: ICardQuestionSimpleProps) {\n const classes = useStyles({withBorder, withExtraPadding});\n\n return (\n <Column className={classes.root}>\n <Row>\n <Column sm={10} md={10} lg={10} xl={10}>\n <Text.Paragraph variant=\"body2\">{cardTypeMap.get(type)}</Text.Paragraph>\n <Text.Heading as=\"h4\">{text}</Text.Heading>\n </Column>\n {actions && (\n <div className={classes.actions}>\n <Row>{actions}</Row>\n </div>\n )}\n </Row>\n </Column>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: ({withBorder, withExtraPadding}: Pick<ICardQuestionSimpleProps, 'withBorder' | 'withExtraPadding'>) => {\n let styles = {\n padding: withExtraPadding ? `${theme.spacing(3)}px ${theme.spacing(2) + theme.spacing(3)}px` : 0,\n };\n\n if (withBorder) {\n styles = {...styles, ...borderGeneral};\n }\n\n return styles;\n },\n actions: {\n marginLeft: 'auto',\n },\n}));\n","export const importItemsMessages = {\n importStarting: 'Starting Item Bank Import...',\n importSuccess: 'Items were imported successfully.',\n mappingSuccess: 'File was uploaded successfully',\n downloadSuccess: 'Template was downloaded successfully',\n downloadIssuesSuccess: 'Issues were downloaded successfully',\n warning:\n 'Are you sure you want to leave this page? You have unsaved changes. If you leave the page, these changes will be lost!',\n itemsImportWarning: 'Are you sure you want to cancel the data import? This action cannot be undone!',\n};\n","import {createSelector} from '@reduxjs/toolkit';\nimport {TStateStore} from 'store';\n\nexport const getUploadState = (state: TStateStore) => state.resources.upload;\n\nconst getUploadFileState = createSelector(getUploadState, (upload) => upload.file);\nexport const uploadFilePageLoadingSelector = createSelector(getUploadFileState, (file) => file.page.loading);\n\nconst getUploadScormState = createSelector(getUploadState, (upload) => upload.scormPackage);\nexport const uploadScormPageLoadingSelector = createSelector(getUploadScormState, (scorm) => scorm.page.loading);\n\nconst getAddWebLinkState = createSelector(getUploadState, (upload) => upload.webLink);\nexport const createWebLinkPageLoadingSelector = createSelector(getAddWebLinkState, (webLink) => webLink.page.loading);\n","export const getAccessibleToStudentsOptions = () => [\n {label: 'Yes', value: 'true'},\n {label: 'No', value: 'false'},\n];\n","import {getLastDot} from '.';\n\nexport const getFileName = (name: string) => {\n const lastDot = getLastDot(name);\n return name.substring(0, lastDot);\n};\n","export const getLastDot = (name: string) => name.lastIndexOf('.');\n","export const recognizeTypeByFileMimeType = (type: string) => {\n switch (type) {\n // Video\n case 'video/x-msvideo':\n case 'video/mp4':\n case 'video/mpeg':\n case 'video/ogg':\n case 'video/mp2t':\n case 'video/3gpp':\n case 'video/3gpp2':\n case 'video/webm':\n return 'Video';\n\n // Audio\n case 'audio/aac':\n case 'audio/midi':\n case 'audio/x-midi':\n case 'audio/mpeg':\n case 'audio/ogg':\n case 'audio/opus':\n case 'audio/wav':\n case 'audio/webm':\n case 'audio/3gpp':\n case 'audio/3gpp2':\n return 'Audio';\n\n // Image\n case 'image/png':\n case 'image/jpeg':\n case 'image/gif':\n case 'image/bmp':\n case 'image/svg+xml':\n case 'image/webp':\n case 'image/vnd.microsoft.icon':\n return 'Image';\n\n // PDF\n case 'application/pdf':\n return 'PDF';\n\n // Document\n case 'application/msword':\n case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':\n case 'application/vnd.ms-powerpoint':\n case 'application/vnd.openxmlformats-officedocument.presentationml.presentation':\n case 'application/rtf':\n case 'application/vnd.oasis.opendocument.text':\n case 'text/plain':\n case 'text/csv':\n case 'application/vnd.oasis.opendocument.presentation':\n case 'application/vnd.oasis.opendocument.spreadsheet':\n case 'application/vnd.visio':\n return 'Document';\n\n // Excel\n case 'application/vnd.ms-excel':\n case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\n return 'Excel';\n\n // Zip\n case 'application/zip':\n case 'application/octet-stream':\n case 'application/x-zip-compressed':\n case 'multipart/x-zip':\n return 'Archive';\n\n default:\n return null;\n }\n};\n","import {IUploadFileFormBaseValues, mapUploadResourceMetadata} from 'admin/resources';\n\nexport const mapUploadResourceFile = (values: IUploadFileFormBaseValues) => {\n const data = new FormData();\n const metadata = mapUploadResourceMetadata(values);\n\n data.append('file', values.file);\n data.append('displayName', values.displayName);\n data.append('briefDescription', values.briefDescription);\n data.append('fileTypeId', values.fileType.toString());\n data.append('metadata', JSON.stringify(metadata));\n\n return data;\n};\n","import {SelectionEnum} from 'filters-selections';\nimport {UploadTypeEnum} from '../../enums';\n\nconst list = [\n SelectionEnum.FileTypeSelectBasedOnAttachedFile,\n SelectionEnum.TagGradeLevels,\n SelectionEnum.PillarMultiSelect,\n SelectionEnum.CompetenciesByPillarWithInfo,\n SelectionEnum.LanguagesMulti,\n];\n\nconst getOriginalList = (isEdit: boolean) => {\n if (isEdit) {\n return [\n SelectionEnum.FileTypeSelectBasedOnAttachedFile,\n SelectionEnum.TagGradeLevels,\n SelectionEnum.PillarMultiSelect,\n SelectionEnum.CompetenciesByPillar,\n SelectionEnum.LanguagesMulti,\n ];\n }\n\n return list;\n};\n\nexport const getUploadFirstColList = (uploadType: UploadTypeEnum, isEdit = false) => {\n const originalList = getOriginalList(isEdit);\n\n if (uploadType === UploadTypeEnum.File) {\n return originalList;\n }\n\n if (uploadType === UploadTypeEnum.WebLink) {\n return originalList.slice(1);\n }\n\n if (uploadType === UploadTypeEnum.Scorm) {\n return originalList.slice(1);\n }\n};\n","import {IAddWebLinkFormBaseValues, IUploadFileFormBaseValues, IUploadScormFormBaseValues} from 'admin/resources';\n\nconst mapBaseResourceMetadata = (\n values: IUploadFileFormBaseValues | IUploadScormFormBaseValues | IAddWebLinkFormBaseValues\n) => ({\n isAccessibleToStudents: values.isAccessibleToStudents,\n keyTerms: values.keyTerms,\n learningObjectives: values.learningObjectives,\n languages: values.languages,\n accessExpirationDate: values.expirationDate,\n competencies: values.competencies,\n pillars: values.pillars,\n programs: values.programs,\n gradeLevels: values.gradeLevels,\n ksAs: values.knowledgeSkillsAndAbilities,\n});\n\nexport const mapUploadResourceMetadata = (\n values: IUploadFileFormBaseValues | IUploadScormFormBaseValues | IAddWebLinkFormBaseValues\n) => {\n const baseMetadata = mapBaseResourceMetadata(values);\n\n return baseMetadata;\n};\n","import {IUploadScormFormBaseValues, mapUploadResourceMetadata} from 'admin/resources';\n\nexport const mapUploadResourceScorm = (values: IUploadScormFormBaseValues) => {\n const data = new FormData();\n\n const metadata = {\n ...mapUploadResourceMetadata(values),\n lengthInMinutes: values.time,\n };\n\n data.append('file', values.file);\n data.append('displayName', values.displayName);\n data.append('briefDescription', values.briefDescription);\n data.append('metadata', JSON.stringify(metadata));\n\n return data;\n};\n","import {IAddWebLinkFormBaseValues, mapUploadResourceMetadata} from 'admin/resources';\nimport {ICreateWebLinkPayload} from 'models/resources';\n\nexport const mapCreateResourceWebLink = (values: IAddWebLinkFormBaseValues): ICreateWebLinkPayload => {\n const metadata = mapUploadResourceMetadata(values);\n\n return {\n displayName: values.displayName,\n briefDescription: values.briefDescription,\n url: values.webLink,\n metadata: {\n ...metadata,\n },\n };\n};\n","import {IInputFile} from 'models/library/common';\n\nexport const isValidFormValue = (value: string | number | boolean | IInputFile) => (value ? true : false);\n","export const recognizeFillablePdf = (fileName: string, searchTerm = '-form') => fileName.endsWith(searchTerm);\n","import {getIsBeforeDate} from 'utils/common';\n\nexport const getIsDateEarlierFromToday = (expirationDate: Date) => {\n // If the datepicker is cleaned up, then validation is true\n if (expirationDate === null) {\n return true;\n }\n\n function isBefore(expirationDate: Date): boolean {\n const dateIsBeforeToday = getIsBeforeDate(expirationDate);\n\n if (dateIsBeforeToday) {\n return false;\n }\n return true;\n }\n\n if (expirationDate instanceof Date) {\n return isBefore(expirationDate);\n }\n};\n","import * as Yup from 'yup';\nimport {FormNameEnum, UploadFormLabelEnum} from '../../enums';\nimport {errorMessages} from 'utils/constants';\nimport {IInputFile} from 'models/library/common';\nimport {getIsDateEarlierFromToday, isValidFormValue} from '../helpers';\nimport {ALLOWED_MIMETYPE_FORMATS} from 'admin/resources';\n\nexport interface IUploadFileFormBaseValues {\n [FormNameEnum.file]: IInputFile | any;\n [FormNameEnum.isAccessibleToStudents]: boolean;\n [FormNameEnum.hasUploadPermissions]: boolean;\n [FormNameEnum.displayName]: string;\n [FormNameEnum.keyTerms]: string;\n [FormNameEnum.programs]: number[];\n [FormNameEnum.pillars]: number[];\n [FormNameEnum.competencies]: number[];\n [FormNameEnum.gradeLevels]: number[];\n [FormNameEnum.skillsAndBehaviors]: number[];\n [FormNameEnum.languages]: number[];\n [FormNameEnum.knowledgeSkillsAndAbilities]: number[];\n [FormNameEnum.briefDescription]: string;\n [FormNameEnum.learningObjectives]: string;\n [FormNameEnum.expirationDate]: string | Date;\n [FormNameEnum.shouldDisableFileType]: boolean;\n [FormNameEnum.fileType]: number;\n}\n\nexport const uploadFileFormBaseValidationSchema = Yup.object().shape({\n [FormNameEnum.file]: Yup.mixed()\n .nullable()\n .required(`You should attach a ${UploadFormLabelEnum.File}!`)\n .test('is-filetype-allowed', 'This file format is not allowed!', (value: IInputFile) =>\n value ? ALLOWED_MIMETYPE_FORMATS.includes(value.type) : true\n ),\n [FormNameEnum.fileType]: Yup.number()\n .nullable()\n .test('is-prepulated', errorMessages.requiredWithInputName(`a ${UploadFormLabelEnum.FileType}`), function () {\n return isValidFormValue(this.parent.file);\n }),\n [FormNameEnum.briefDescription]: Yup.string().max(500, 'Brief description should be less than 500 characters!'),\n [FormNameEnum.gradeLevels]: Yup.array().of(Yup.number()),\n [FormNameEnum.programs]: Yup.array().of(Yup.number()),\n [FormNameEnum.pillars]: Yup.array().of(Yup.number()),\n [FormNameEnum.competencies]: Yup.array().of(Yup.number()),\n [FormNameEnum.knowledgeSkillsAndAbilities]: Yup.array().of(Yup.number()),\n [FormNameEnum.languages]: Yup.array().of(Yup.number()).required('You should select at least one language!'),\n [FormNameEnum.expirationDate]: Yup.date()\n .nullable()\n .typeError('Expected date format: (mm/dd/yyyy)')\n .test('is-date-earlier-than-now', 'The selected date should be in the future.', function () {\n const {expirationDate} = this.parent;\n\n // If the datepicker is cleaned up, then validation is true\n return getIsDateEarlierFromToday(expirationDate);\n }),\n [FormNameEnum.keyTerms]: Yup.string().nullable().max(250, 'Key Terms should be less than 250 characters!'),\n [FormNameEnum.learningObjectives]: Yup.string()\n .nullable()\n .max(250, 'Learning objectives should be less than 250 characters!'),\n [FormNameEnum.isAccessibleToStudents]: Yup.boolean()\n .nullable()\n .required('You should choose if this file will be accessible to students!'),\n [FormNameEnum.hasUploadPermissions]: Yup.boolean().test(\n 'is-checked',\n 'You should accept upload file permissions!',\n function () {\n return isValidFormValue(this.parent.hasUploadPermissions);\n }\n ),\n [FormNameEnum.displayName]: Yup.string()\n .nullable()\n .required(errorMessages.requiredWithInputName(`a ${UploadFormLabelEnum.DisplayName}`)),\n});\n","import * as Yup from 'yup';\nimport {errorMessages} from 'utils/constants';\nimport {FormNameEnum, UploadFormLabelEnum} from '../../enums';\nimport {IUploadResourceFormBaseValues} from './../../models';\nimport {getIsDateEarlierFromToday, isValidFormValue} from '../helpers';\n\nexport interface IAddWebLinkFormBaseValues extends IUploadResourceFormBaseValues {\n [FormNameEnum.knowledgeSkillsAndAbilities]?: number[];\n [FormNameEnum.webLink]: string;\n}\n\nexport const addWebLinkFormBaseValidationSchema = Yup.object().shape({\n [FormNameEnum.webLink]: Yup.string()\n .nullable()\n .required(errorMessages.requiredWithInputName(`a ${UploadFormLabelEnum.WebLink}`))\n .url('Web link must be a valid url!'),\n [FormNameEnum.displayName]: Yup.string()\n .nullable()\n .required(errorMessages.requiredWithInputName(`a ${UploadFormLabelEnum.DisplayName}`)),\n [FormNameEnum.briefDescription]: Yup.string().max(500, 'Brief description should be less than 500 characters!'),\n [FormNameEnum.gradeLevels]: Yup.array().of(Yup.number()),\n [FormNameEnum.programs]: Yup.array().of(Yup.number()),\n [FormNameEnum.pillars]: Yup.array().of(Yup.number()),\n [FormNameEnum.knowledgeSkillsAndAbilities]: Yup.array().of(Yup.number()),\n [FormNameEnum.languages]: Yup.array().of(Yup.number()).required('You should select at least one language!'),\n [FormNameEnum.expirationDate]: Yup.date()\n .nullable()\n .typeError('Expected date format: (mm/dd/yyyy)')\n .test('is-date-earlier-than-now', 'The selected date should be in the future.', function () {\n const {expirationDate} = this.parent;\n\n // If the datepicker is cleaned up, then validation is true\n return getIsDateEarlierFromToday(expirationDate);\n }),\n [FormNameEnum.keyTerms]: Yup.string().nullable().max(250, 'Key Terms should be less than 250 characters!'),\n [FormNameEnum.learningObjectives]: Yup.string()\n .nullable()\n .max(250, 'Learning objectives should be less than 250 characters!'),\n [FormNameEnum.isAccessibleToStudents]: Yup.boolean()\n .nullable()\n .required('You should choose if this file will be accessible to students!'),\n [FormNameEnum.hasUploadPermissions]: Yup.boolean().test(\n 'is-checked',\n 'You should accept upload file permissions!',\n function () {\n return isValidFormValue(this.parent.hasUploadPermissions);\n }\n ),\n});\n","import * as Yup from 'yup';\nimport {FormNameEnum, UploadFormLabelEnum} from '../../enums';\nimport {errorMessages} from 'utils/constants';\nimport {IInputFile} from 'models/library/common';\nimport {IUploadResourceFormBaseValues} from '../../models';\nimport {getIsDateEarlierFromToday, isValidFormValue, zipMimeType} from 'admin/resources';\n\nexport interface IUploadScormFormBaseValues extends IUploadResourceFormBaseValues {\n [FormNameEnum.file]: IInputFile | any;\n [FormNameEnum.knowledgeSkillsAndAbilities]: number[];\n [FormNameEnum.time]: number;\n}\n\nexport const uploadScormFormBaseValidationSchema = Yup.object().shape({\n [FormNameEnum.file]: Yup.mixed()\n .nullable()\n .required(`You should attach a ${UploadFormLabelEnum.File}!`)\n .test('has-zip-extension', 'Only .zip file extension is allowed!', (file: IInputFile) => {\n const hasFile = !!file;\n if (!hasFile) return true;\n return zipMimeType.includes(file.type);\n }),\n\n [FormNameEnum.briefDescription]: Yup.string().max(500, 'Brief description should be less than 500 characters!'),\n [FormNameEnum.gradeLevels]: Yup.array().of(Yup.number()),\n [FormNameEnum.programs]: Yup.array().of(Yup.number()),\n [FormNameEnum.pillars]: Yup.array().of(Yup.number()),\n [FormNameEnum.competencies]: Yup.array().of(Yup.number()),\n [FormNameEnum.knowledgeSkillsAndAbilities]: Yup.array().of(Yup.number()),\n [FormNameEnum.languages]: Yup.array().of(Yup.number()).required('You should select at least one language!'),\n [FormNameEnum.expirationDate]: Yup.date()\n .nullable()\n .typeError('Expected date format: (mm/dd/yyyy)')\n .test('is-date-earlier-than-now', 'The selected date should be in the future.', function () {\n const {expirationDate} = this.parent;\n\n // If the datepicker is cleaned up, then validation is true\n return getIsDateEarlierFromToday(expirationDate);\n }),\n [FormNameEnum.keyTerms]: Yup.string().nullable().max(250, 'Key Terms should be less than 250 characters!'),\n [FormNameEnum.learningObjectives]: Yup.string()\n .nullable()\n .max(250, 'Learning objectives should be less than 250 characters!'),\n [FormNameEnum.isAccessibleToStudents]: Yup.boolean()\n .nullable()\n .required('You should choose if this file will be accessible to students!'),\n [FormNameEnum.hasUploadPermissions]: Yup.boolean().test(\n 'is-checked',\n 'You should accept upload file permissions!',\n function () {\n return isValidFormValue(this.parent.hasUploadPermissions);\n }\n ),\n [FormNameEnum.time]: Yup.number()\n .nullable()\n .min(1, 'Time should be a positive number higher than 0!')\n .max(1440, 'Time should be a positive number smaller than 1440!'),\n [FormNameEnum.displayName]: Yup.string()\n .nullable()\n .required(errorMessages.requiredWithInputName(`a ${UploadFormLabelEnum.DisplayName}`)),\n});\n","export const ALLOWED_MIMETYPE_FORMATS: string[] = [\n // Video\n 'video/x-msvideo',\n 'video/mp4',\n 'video/mpeg',\n 'video/ogg',\n 'video/mp2t',\n 'video/3gpp',\n 'video/3gpp2',\n 'video/webm',\n\n // Audio\n 'audio/aac',\n 'audio/midi',\n 'audio/x-midi',\n 'audio/mpeg',\n 'audio/ogg',\n 'audio/opus',\n 'audio/wav',\n 'audio/webm',\n 'audio/3gpp',\n 'audio/3gpp2',\n\n // Image\n 'image/png',\n 'image/jpeg',\n 'image/gif',\n 'image/bmp',\n 'image/svg+xml',\n 'image/webp',\n 'image/vnd.microsoft.icon',\n\n // PDF\n 'application/pdf',\n\n // Document\n 'application/msword',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'application/vnd.ms-powerpoint',\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n 'application/rtf',\n 'application/vnd.oasis.opendocument.text',\n 'application/vnd.ms-excel',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n 'text/plain',\n 'text/csv',\n 'application/vnd.oasis.opendocument.presentation',\n 'application/vnd.oasis.opendocument.spreadsheet',\n 'application/vnd.visio',\n\n // Zip - archive\n 'application/zip',\n 'application/octet-stream',\n 'application/x-zip-compressed',\n 'multipart/x-zip',\n];\n","export const uploadMessages = {\n uploadSuccess: 'was successfully uploaded',\n uploadError: 'uploading failed.',\n abortRequest: 'uploading was aborted.',\n warning:\n 'Are you sure you want to leave this page? You have unsaved changes. If you leave the page, these changes will be lost.“',\n};\n","export const zipMimeType = 'application/zip, application/octet-stream, application/x-zip-compressed, multipart/x-zip';\n","export const videoMimeType =\n 'video/x-msvideo, video/mp4, video/mpeg, video/ogg, video/mp2t, video/3gpp, video/3gpp2, video/webm';\n","export const audioMimeType =\n 'audio/aac, audio/midi, audio/x-midi, audio/mpeg, audio/ogg, audio/opus audio/wav, audio/webm, audio/3gpp, audio/3gpp2,';\n","export const excelMimeTypes =\n 'application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n","export const imageMimeTypes =\n 'image/png, image/jpeg, image/gif, image/bmp, image/svg+xml, image/webp, image/vnd.microsoft.icon,';\n","export const documentMimeTypes =\n 'application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document, application/vnd.ms-powerpoint, application/vnd.openxmlformats-officedocument.presentationml.presentation, application/rtf, application/vnd.oasis.opendocument.text, text/plain, text/csv, application/vnd.oasis.opendocument.presentation, application/vnd.oasis.opendocument.spreadsheet, application/vnd.visio,';\n","export const pdfMimeType = 'application/pdf';\n","import React from 'react';\nimport {PageViewHeader} from 'components-lib';\n\nexport const UploadFileHeader = () => {\n return (\n <PageViewHeader\n fullFlexWidth\n withColumnPadding={false}\n heading=\"Upload File\"\n headingColor=\"textPrimary\"\n withBackButton={false}\n />\n );\n};\n","import {useSelector} from 'react-redux';\nimport {filtersLanguagesEntitiesCollectionSelector} from 'filters-selections';\n\nexport const useLanguages = () => {\n const languages = useSelector(filtersLanguagesEntitiesCollectionSelector);\n const firstLanguage = languages && languages[0];\n const englishName = firstLanguage?.name as string;\n const englishId = firstLanguage?.id as number;\n\n return {englishName, englishId};\n};\n","import {useFormikContext} from 'formik';\nimport {useNavigate} from 'hooks';\nimport {pages} from 'paths';\nimport {useCallback} from 'react';\nimport {isEmpty} from 'utils';\nimport {IUploadResourceFormBaseValues} from '../models';\n\nexport const useUploadActionButtons = () => {\n const {push} = useNavigate();\n const {\n errors,\n isValid,\n values: {displayName, file, fileType, isAccessibleToStudents, hasUploadPermissions, webLink},\n } = useFormikContext<IUploadResourceFormBaseValues>();\n\n const redirectToViewListOfFiles = useCallback(() => {\n push(`${pages.adminPortal.files.root}`);\n }, [push]);\n\n const hasErrors = !isEmpty(errors);\n const hasFile = !!file;\n const hasFileType = !!fileType;\n const hasAccessibleToStudentsField = !!isAccessibleToStudents;\n const hasWebLinkField = !!webLink;\n const hasDisplayName = !!displayName;\n const hasUploadRequiredFields = hasFile && hasFileType && hasAccessibleToStudentsField && hasDisplayName;\n const hasOneOfUploadRequiredFields = hasFile || hasFileType || hasAccessibleToStudentsField || hasDisplayName;\n const hasOneOfUploadScormRequiredFields = hasFile || hasAccessibleToStudentsField || hasDisplayName;\n const hasOneOfAddWebLinkRequiredFields = hasWebLinkField || hasAccessibleToStudentsField || hasDisplayName;\n\n const shouldDisableFileUpload =\n hasErrors || !hasFile || !hasAccessibleToStudentsField || !hasDisplayName || !hasFileType || !hasUploadPermissions;\n\n const shouldDisableScormUpload =\n hasErrors || !hasFile || !hasAccessibleToStudentsField || !hasDisplayName || !hasUploadPermissions;\n\n const shouldDisableAddWebLink =\n hasErrors || !hasWebLinkField || !hasAccessibleToStudentsField || !hasDisplayName || !hasUploadPermissions;\n\n return {\n isFormValid: isValid,\n hasUploadRequiredFields,\n hasOneOfUploadRequiredFields,\n hasOneOfUploadScormRequiredFields,\n hasOneOfAddWebLinkRequiredFields,\n hasErrors,\n hasFile,\n hasFileType,\n hasAccessibleToStudentsField,\n hasDisplayName,\n hasUploadPermissions,\n shouldDisableFileUpload,\n shouldDisableScormUpload,\n shouldDisableAddWebLink,\n redirectToViewListOfFiles,\n };\n};\n","import React from 'react';\nimport {useBeforeunload} from 'react-beforeunload';\nimport {useUploadActionButtons} from 'admin/resources/upload/hooks';\nimport {uploadMessages} from 'admin/upload/utils';\nimport {UploadFooter} from 'admin/resources/upload/components';\n\nexport const UploadFileFooter = () => {\n const {hasOneOfUploadRequiredFields, shouldDisableFileUpload, redirectToViewListOfFiles} = useUploadActionButtons();\n\n useBeforeunload(() => {\n if (hasOneOfUploadRequiredFields) {\n return uploadMessages.warning;\n }\n });\n\n return (\n <UploadFooter\n showPrompt={hasOneOfUploadRequiredFields}\n redirectCallback={redirectToViewListOfFiles}\n disableSubmit={shouldDisableFileUpload}\n />\n );\n};\n","import React, {useCallback, useEffect, useMemo} from 'react';\nimport {Subtitle, UploadDraggableArea} from 'admin/components';\nimport {Container} from 'components-lib';\nimport {SingleFileUpload} from 'admin/resources/upload/components';\nimport {FormNameEnum} from '../../../enums';\nimport {useFormikContext} from 'formik';\nimport {IUploadFileFormBaseValues} from 'admin/resources/upload';\nimport {ALLOWED_MIMETYPE_FORMATS, getFileName, getFileType, mapFileTypeNumber} from 'admin/resources/upload/utils';\n\nexport const UploadFileContentStart = () => {\n const {\n values: {file, displayName},\n setFieldValue,\n setFieldTouched,\n } = useFormikContext<IUploadFileFormBaseValues>();\n\n const allowedFormats = useMemo(() => ALLOWED_MIMETYPE_FORMATS.join(', '), []);\n const fileName = useMemo(() => (file ? getFileName(file.name) : ''), [file]);\n\n const setFileType = useCallback(\n (fileTypeNum: number) => {\n setFieldValue(FormNameEnum.fileType, fileTypeNum ?? null);\n // (setFieldTouched) See: https://github.com/formium/formik/issues/456\n setFieldTouched(FormNameEnum.fileType, true, true);\n setFieldValue(FormNameEnum.shouldDisableFileType, true);\n },\n [setFieldValue, setFieldTouched]\n );\n\n const deleteFileType = useCallback(() => {\n setFieldValue(FormNameEnum.fileType, null);\n setFieldValue(FormNameEnum.displayName, null);\n setFieldValue(FormNameEnum.shouldDisableFileType, false);\n }, [setFieldValue]);\n\n useEffect(() => {\n if (!!file) {\n if (!displayName) {\n setFieldValue(FormNameEnum.displayName, fileName);\n setFieldTouched(FormNameEnum.displayName, true, true);\n }\n\n const fileType = file && getFileType(file.type, file.name);\n const fileTypeNum = mapFileTypeNumber(fileType);\n\n // Map File type number based on the string\n\n if (!!fileTypeNum) {\n setFileType(fileTypeNum);\n }\n }\n }, [file, setFieldValue, setFieldTouched, fileName, setFileType, displayName]);\n\n return (\n <UploadDraggableArea name={FormNameEnum.file}>\n <Container disableGutters>\n <Subtitle withColor={false} as=\"h3\" color=\"textPrimary\" title=\"Upload File\" />\n <SingleFileUpload name={FormNameEnum.file} accept={allowedFormats} deleteCallback={deleteFileType} />\n </Container>\n </UploadDraggableArea>\n );\n};\n","import {ResourceTypeNumEnum, ResourceTypeEnum} from 'admin/resources/enums';\n\nexport const mapFileTypeNumber = (type: string) => {\n switch (type) {\n case ResourceTypeEnum.Video:\n return ResourceTypeNumEnum.Video;\n case ResourceTypeEnum.Audio:\n return ResourceTypeNumEnum.Audio;\n case ResourceTypeEnum.Image:\n return ResourceTypeNumEnum.Image;\n case ResourceTypeEnum.Document:\n return ResourceTypeNumEnum.Document;\n case ResourceTypeEnum.PDF:\n return ResourceTypeNumEnum.PDF;\n case ResourceTypeEnum.FillablePDF:\n return ResourceTypeNumEnum.FillablePDF;\n case ResourceTypeEnum.Excel:\n return ResourceTypeNumEnum.Excel;\n case ResourceTypeEnum.Archive:\n return ResourceTypeNumEnum.Archive;\n }\n};\n","import {ResourceTypeEnum} from 'admin/resources/enums';\nimport {getFileName, recognizeFillablePdf, recognizeTypeByFileMimeType} from '.';\n\nexport const getFileType = (fileType: string, fileFullName: string) => {\n let mappedType = recognizeTypeByFileMimeType(fileType);\n const fileName = getFileName(fileFullName);\n const isFillablePdf = mappedType === ResourceTypeEnum.PDF && recognizeFillablePdf(fileName);\n\n if (isFillablePdf) {\n mappedType = ResourceTypeEnum.FillablePDF;\n }\n\n return mappedType;\n};\n","import React, {useMemo} from 'react';\nimport {Container, Row} from 'components-lib';\nimport {UploadTypeEnum} from 'admin/resources/upload/enums';\nimport {Subtitle} from 'admin/components';\nimport {getUploadFirstColList, ResourceListColumn} from 'admin/resources';\nimport {SelectionEnum} from 'filters-selections';\n\nexport const UploadFileContentMiddle = () => {\n const firstCollist = useMemo(\n () => [\n SelectionEnum.DisplayNameInput,\n ...getUploadFirstColList(UploadTypeEnum.File),\n SelectionEnum.KeyTermsWithInfo,\n SelectionEnum.AdminPermissionCheckbox,\n ],\n []\n );\n\n const secondColList = useMemo(\n () => [\n SelectionEnum.BriefDescriptionTextArea,\n SelectionEnum.ProgramMultiSelection,\n SelectionEnum.KnowledgeSkillsAndAbilitiesWithInfo,\n SelectionEnum.ExpirationWithInfoDatePicker,\n SelectionEnum.LearningObjectiveInputWithInfo,\n SelectionEnum.AccessibleToStudentsWithInfo,\n ],\n []\n );\n\n return (\n <Container disableGutters>\n <Subtitle withColor={false} as=\"h3\" color=\"textPrimary\" title=\"Metadata\" />\n <Row justify=\"flex-start\" align=\"flex-start\">\n <ResourceListColumn list={firstCollist} sm={6} md={6} lg={6} xl={5} />\n <ResourceListColumn list={secondColList} sm={6} md={6} lg={6} xl={5} />\n </Row>\n </Container>\n );\n};\n","import React, {useCallback, useMemo} from 'react';\nimport {batch} from 'react-redux';\nimport {FormikHelpers} from 'formik';\nimport {PageLayoutTwoVerticalCols} from 'layout';\nimport {Form} from 'forms';\nimport {UploadFileHeader, UploadFileFooter, UploadFileContentMiddle, UploadFileContentStart} from './components';\nimport {FormNameEnum} from '../enums';\nimport {IUploadFileFormBaseValues, mapUploadResourceFile, uploadFileFormBaseValidationSchema} from 'admin/resources';\nimport {useUploadFile} from './hooks';\nimport {usePermissions} from 'permissions';\nimport {SuperAndNationalAdminroles} from 'enums/admin-roles';\nimport {useLanguages} from '../hooks';\n\nexport const UploadResourceFile = () => {\n const {loading, uploadFile} = useUploadFile();\n const {hasPermission} = usePermissions();\n const {englishId} = useLanguages();\n const hasAdminPermission = hasPermission(SuperAndNationalAdminroles);\n\n const initialValues = useMemo(\n () => ({\n [FormNameEnum.file]: null,\n [FormNameEnum.isAccessibleToStudents]: null,\n [FormNameEnum.hasUploadPermissions]: hasAdminPermission ? true : false,\n [FormNameEnum.displayName]: null,\n [FormNameEnum.keyTerms]: null,\n [FormNameEnum.programs]: [],\n [FormNameEnum.sessions]: [],\n [FormNameEnum.pillars]: [],\n [FormNameEnum.competencies]: [],\n [FormNameEnum.gradeLevels]: [],\n [FormNameEnum.languages]: englishId ? [englishId] : [],\n [FormNameEnum.skillsAndBehaviors]: [],\n [FormNameEnum.briefDescription]: '',\n [FormNameEnum.learningObjectives]: null,\n [FormNameEnum.fileType]: null,\n [FormNameEnum.expirationDate]: null,\n [FormNameEnum.knowledgeSkillsAndAbilities]: [],\n [FormNameEnum.shouldDisableFileType]: false,\n }),\n [hasAdminPermission, englishId]\n );\n\n const submitHandler = useCallback(\n (formValues: IUploadFileFormBaseValues, {resetForm, setSubmitting}: FormikHelpers<any>) => {\n const payload = mapUploadResourceFile(formValues);\n\n return uploadFile(payload).then(() =>\n batch(() => {\n resetForm({\n values: initialValues,\n });\n setSubmitting(false);\n })\n );\n },\n [uploadFile, initialValues]\n );\n\n const contentMiddle = useMemo(() => <UploadFileContentMiddle />, []);\n const contentStart = useMemo(() => <UploadFileContentStart />, []);\n\n return (\n <Form.Form<IUploadFileFormBaseValues>\n initialValues={initialValues}\n validationSchema={uploadFileFormBaseValidationSchema}\n submitHandler={submitHandler}\n >\n <PageLayoutTwoVerticalCols\n header={<UploadFileHeader />}\n contentStart={contentStart}\n contentMiddle={contentMiddle}\n withDoubleFirst={false}\n withDoubleSecond\n withFooter\n footer={<UploadFileFooter />}\n withSecondaryNavigation\n loading={loading}\n />\n </Form.Form>\n );\n};\n","import {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport {useAppDispatch} from 'hooks';\nimport {uploadFilePageLoadingSelector, uploadFileThunk} from 'admin/resources';\n\nexport const useUploadFile = () => {\n const dispatch = useAppDispatch();\n const loading = useSelector(uploadFilePageLoadingSelector) as boolean;\n const uploadFile = useCallback((payload: FormData) => dispatch(uploadFileThunk(payload)), [dispatch]);\n\n return {loading, uploadFile};\n};\n","import React, {useCallback, useEffect, useMemo} from 'react';\nimport {useFormikContext} from 'formik';\nimport {Subtitle, UploadDraggableArea} from 'admin/components';\nimport {FormNameEnum} from '../../../enums';\nimport {Container} from 'components-lib/layout';\nimport {SingleFileUpload} from 'admin/resources/upload/components';\nimport {getFileName, IUploadScormFormBaseValues} from 'admin/resources';\n\nexport const ScormContentStart = () => {\n const {\n values: {file, displayName},\n setFieldValue,\n setFieldTouched,\n } = useFormikContext<IUploadScormFormBaseValues>();\n\n const fileName = useMemo(() => (file ? getFileName(file.name) : ''), [file]);\n\n useEffect(() => {\n if (!!file) {\n if (!displayName) {\n setFieldValue(FormNameEnum.displayName, fileName);\n setFieldTouched(FormNameEnum.displayName, true, true);\n }\n }\n }, [file, setFieldValue, fileName, displayName, setFieldTouched]);\n\n const deleteCallback = useCallback(() => {\n if (displayName) {\n setFieldValue(FormNameEnum.displayName, null);\n }\n }, [displayName, setFieldValue]);\n\n return (\n <UploadDraggableArea name={FormNameEnum.file}>\n <Container disableGutters>\n <Subtitle withColor={false} as=\"h3\" color=\"textPrimary\" title=\"Upload File\" />\n <SingleFileUpload name={FormNameEnum.file} accept=\"application/zip\" deleteCallback={deleteCallback} />\n </Container>\n </UploadDraggableArea>\n );\n};\n","import React, {useMemo} from 'react';\nimport {Container, Row} from 'components-lib';\nimport {UploadTypeEnum} from 'admin/resources/upload/enums';\nimport {Subtitle} from 'admin/components';\nimport {getUploadFirstColList, ResourceListColumn} from 'admin/resources';\nimport {SelectionEnum} from 'filters-selections';\n\nexport const ScormContentMiddle = () => {\n const firstCollist = useMemo(\n () => [\n SelectionEnum.DisplayNameInput,\n ...getUploadFirstColList(UploadTypeEnum.Scorm),\n SelectionEnum.KeyTermsWithInfo,\n SelectionEnum.TimeWithInfoInput,\n SelectionEnum.AdminPermissionCheckbox,\n ],\n []\n );\n\n const secondColList = useMemo(\n () => [\n SelectionEnum.BriefDescriptionTextArea,\n SelectionEnum.ProgramMultiSelection,\n SelectionEnum.KnowledgeSkillsAndAbilitiesWithInfo,\n SelectionEnum.ExpirationWithInfoDatePicker,\n SelectionEnum.LearningObjectiveInputWithInfo,\n SelectionEnum.AccessibleToStudentsWithInfo,\n ],\n []\n );\n\n return (\n <Container disableGutters>\n <Subtitle withColor={false} as=\"h3\" color=\"textPrimary\" title=\"Metadata\" />\n <Row justify=\"flex-start\" align=\"flex-start\">\n <ResourceListColumn list={firstCollist} sm={6} md={6} lg={6} xl={5} />\n <ResourceListColumn list={secondColList} sm={6} md={6} lg={6} xl={5} />\n </Row>\n </Container>\n );\n};\n","import React, {FC} from 'react';\nimport {PageViewHeader} from 'components-lib';\n\nexport const ScormContentHeader: FC = () => (\n <PageViewHeader\n fullFlexWidth\n withColumnPadding={false}\n heading=\"Upload SCORM Package\"\n headingColor=\"textPrimary\"\n withBackButton={false}\n />\n);\n","import React from 'react';\nimport {useBeforeunload} from 'react-beforeunload';\nimport {UploadFooter} from 'admin/resources/upload/components';\nimport {uploadMessages} from 'admin/resources';\nimport {useUploadActionButtons} from 'admin/resources/upload/hooks';\n\nexport const ScormContentFooter = () => {\n const {\n hasOneOfUploadScormRequiredFields,\n shouldDisableScormUpload,\n redirectToViewListOfFiles,\n } = useUploadActionButtons();\n\n useBeforeunload(() => {\n if (hasOneOfUploadScormRequiredFields) {\n return uploadMessages.warning;\n }\n });\n\n return (\n <UploadFooter\n showPrompt={hasOneOfUploadScormRequiredFields}\n redirectCallback={redirectToViewListOfFiles}\n disableSubmit={shouldDisableScormUpload}\n />\n );\n};\n","import React, {useCallback, useMemo} from 'react';\nimport {FormikHelpers} from 'formik';\nimport {batch} from 'react-redux';\nimport {Form} from 'forms';\nimport {PageLayoutTwoVerticalCols} from 'layout/components';\nimport {IUploadScormFormBaseValues, mapUploadResourceScorm, uploadScormFormBaseValidationSchema} from 'admin/resources';\nimport {ScormContentHeader, ScormContentFooter, ScormContentMiddle, ScormContentStart} from './components';\nimport {FormNameEnum} from '../enums';\nimport {useUploadScorm} from './';\nimport {usePermissions} from 'permissions';\nimport {SuperAndNationalAdminroles} from 'enums/admin-roles';\nimport {useLanguages} from '../hooks';\n\nexport const UploadResourceScorm = () => {\n const {loading, uploadScormPackage} = useUploadScorm();\n const {hasPermission} = usePermissions();\n const {englishId} = useLanguages();\n const hasAdminPermission = hasPermission(SuperAndNationalAdminroles);\n\n const initialValues = useMemo(\n () => ({\n [FormNameEnum.file]: null,\n [FormNameEnum.displayName]: null,\n [FormNameEnum.gradeLevels]: [],\n [FormNameEnum.programs]: [],\n [FormNameEnum.pillars]: [],\n [FormNameEnum.knowledgeSkillsAndAbilities]: [],\n [FormNameEnum.time]: null,\n [FormNameEnum.keyTerms]: null,\n [FormNameEnum.isAccessibleToStudents]: null,\n [FormNameEnum.briefDescription]: '',\n [FormNameEnum.competencies]: [],\n [FormNameEnum.languages]: englishId ? [englishId] : [],\n [FormNameEnum.expirationDate]: null,\n [FormNameEnum.learningObjectives]: null,\n [FormNameEnum.hasUploadPermissions]: hasAdminPermission ? true : false,\n }),\n [hasAdminPermission, englishId]\n );\n\n const submitHandler = useCallback(\n (formValues: IUploadScormFormBaseValues, {resetForm, setSubmitting}: FormikHelpers<any>) => {\n const payload = mapUploadResourceScorm(formValues);\n\n return uploadScormPackage(payload).then(() =>\n batch(() => {\n resetForm({\n values: initialValues,\n });\n setSubmitting(false);\n })\n );\n },\n [uploadScormPackage, initialValues]\n );\n\n return (\n <Form.Form<IUploadScormFormBaseValues>\n initialValues={initialValues}\n validationSchema={uploadScormFormBaseValidationSchema}\n submitHandler={submitHandler}\n >\n <PageLayoutTwoVerticalCols\n header={<ScormContentHeader />}\n contentStart={<ScormContentStart />}\n contentMiddle={<ScormContentMiddle />}\n footer={<ScormContentFooter />}\n withDoubleFirst={false}\n withDoubleSecond\n withFooter\n withSecondaryNavigation\n loading={loading}\n />\n </Form.Form>\n );\n};\n","import {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport {useAppDispatch} from 'hooks';\nimport {uploadScormPageLoadingSelector, uploadScormThunk} from 'admin';\n\nexport const useUploadScorm = () => {\n const dispatch = useAppDispatch();\n const loading = useSelector(uploadScormPageLoadingSelector) as boolean;\n const uploadScormPackage = useCallback((payload: FormData) => dispatch(uploadScormThunk(payload)), [dispatch]);\n\n return {loading, uploadScormPackage};\n};\n","import React, {useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Column, Container, Row} from 'components-lib';\nimport {Subtitle} from 'admin/components';\nimport {getUploadFirstColList, ResourceListColumn} from 'admin/resources';\nimport {SelectionEnum} from 'filters-selections';\nimport {UploadTypeEnum} from 'admin/resources/upload/enums';\n\nexport const ContentStart = () => {\n const classes = useStyles();\n\n const firstCollist = useMemo(\n () => [\n SelectionEnum.WebLinkInput,\n SelectionEnum.DisplayNameInput,\n ...getUploadFirstColList(UploadTypeEnum.Scorm),\n SelectionEnum.KeyTermsWithInfo,\n SelectionEnum.AdminPermissionCheckbox,\n ],\n []\n );\n\n const secondColList = useMemo(\n () => [\n SelectionEnum.BriefDescriptionTextArea,\n SelectionEnum.ProgramMultiSelection,\n SelectionEnum.KnowledgeSkillsAndAbilitiesWithInfo,\n SelectionEnum.ExpirationWithInfoDatePicker,\n SelectionEnum.LearningObjectiveInputWithInfo,\n SelectionEnum.AccessibleToStudentsWithInfo,\n ],\n []\n );\n\n return (\n <Container disableGutters>\n <Subtitle withColor={false} as=\"h3\" color=\"textPrimary\" title=\"Details\" />\n <Row justify=\"flex-start\" align=\"flex-start\">\n <Column sm={12} md={12} lg={12} xl={12}>\n <Row justify=\"flex-start\" align=\"flex-start\" classes={{root: classes.resourcesContent}}>\n <ResourceListColumn list={firstCollist} sm={6} md={4} lg={4} xl={3} />\n <ResourceListColumn list={secondColList} sm={6} md={4} lg={4} xl={3} />\n </Row>\n </Column>\n </Row>\n </Container>\n );\n};\n\nexport const useStyles = makeStyles((theme) => ({\n resourcesContent: {\n paddingRight: theme.spacing(4),\n },\n}));\n","import React from 'react';\nimport {PageViewHeader} from 'components-lib';\n\nexport const WebLinkHeader = () => {\n return (\n <PageViewHeader\n fullFlexWidth\n withColumnPadding={false}\n heading=\"Add Web Link\"\n headingColor=\"textPrimary\"\n withBackButton={false}\n />\n );\n};\n","import React from 'react';\nimport {useBeforeunload} from 'react-beforeunload';\nimport {useUploadActionButtons} from 'admin/resources/upload/hooks';\nimport {uploadMessages} from 'admin/upload/utils';\nimport {UploadFooter} from 'admin/resources/upload/components';\n\nexport const WebLinkFooter = () => {\n const {\n hasOneOfAddWebLinkRequiredFields,\n shouldDisableAddWebLink,\n redirectToViewListOfFiles,\n } = useUploadActionButtons();\n\n useBeforeunload(() => {\n if (hasOneOfAddWebLinkRequiredFields) {\n return uploadMessages.warning;\n }\n });\n\n return (\n <UploadFooter\n showPrompt={hasOneOfAddWebLinkRequiredFields}\n redirectCallback={redirectToViewListOfFiles}\n disableSubmit={shouldDisableAddWebLink}\n />\n );\n};\n","import React from 'react';\nimport {makeStyles} from '@material-ui/core';\n\nimport {Column, Container, Row} from 'components-lib';\nimport {FileUploadFormInput} from 'admin/resources/upload/components';\nimport {FormNameEnum} from '../../../enums';\n\nexport const WebLinkInput = () => {\n const classes = useStyles();\n\n return (\n <Container disableGutters classes={{root: classes.webLinkInput}}>\n <Row justify=\"flex-start\" align=\"flex-start\">\n <Column sm={12} md={12} lg={12}>\n <FileUploadFormInput label=\"Web Link\" name={FormNameEnum.webLink} />\n </Column>\n </Row>\n </Container>\n );\n};\n\nexport const useStyles = makeStyles((theme) => ({\n webLinkInput: {\n paddingBottom: theme.spacing(3),\n },\n}));\n","import React, {useCallback, useMemo} from 'react';\nimport {batch} from 'react-redux';\nimport {FormikHelpers} from 'formik';\nimport {ContentStart, WebLinkFooter, WebLinkHeader} from './components';\nimport {Form} from 'forms';\nimport {FormNameEnum} from '../enums';\nimport {useCreateWebLink} from './hooks';\nimport {addWebLinkFormBaseValidationSchema, IAddWebLinkFormBaseValues, mapCreateResourceWebLink} from 'admin/resources';\nimport {PageLayoutOneVerticalCol} from 'layout/components';\nimport {usePermissions} from 'permissions';\nimport {SuperAndNationalAdminroles} from 'enums/admin-roles';\nimport {useLanguages} from '../hooks';\n\nexport const UploadResourceWebLink = () => {\n const {loading, createWebLink} = useCreateWebLink();\n const {hasPermission} = usePermissions();\n const {englishId} = useLanguages();\n const hasAdminPermission = hasPermission(SuperAndNationalAdminroles);\n\n const initialValues = useMemo(\n () => ({\n [FormNameEnum.isAccessibleToStudents]: null,\n [FormNameEnum.hasUploadPermissions]: hasAdminPermission ? true : false,\n [FormNameEnum.displayName]: null,\n [FormNameEnum.keyTerms]: null,\n [FormNameEnum.programs]: [],\n [FormNameEnum.sessions]: [],\n [FormNameEnum.pillars]: [],\n [FormNameEnum.competencies]: [],\n [FormNameEnum.gradeLevels]: [],\n [FormNameEnum.languages]: englishId ? [englishId] : [],\n [FormNameEnum.skillsAndBehaviors]: [],\n [FormNameEnum.briefDescription]: '',\n [FormNameEnum.learningObjectives]: null,\n [FormNameEnum.expirationDate]: null,\n [FormNameEnum.knowledgeSkillsAndAbilities]: [],\n [FormNameEnum.webLink]: null,\n }),\n [hasAdminPermission, englishId]\n );\n\n const submitHandler = useCallback(\n (formValues: IAddWebLinkFormBaseValues, {resetForm, setSubmitting}: FormikHelpers<any>) => {\n const payload = mapCreateResourceWebLink(formValues);\n\n return createWebLink(payload).then(() =>\n batch(() => {\n resetForm({\n values: initialValues,\n });\n setSubmitting(false);\n })\n );\n },\n [createWebLink, initialValues]\n );\n\n return (\n <Form.Form<IAddWebLinkFormBaseValues>\n initialValues={initialValues}\n validationSchema={addWebLinkFormBaseValidationSchema}\n submitHandler={submitHandler}\n >\n <PageLayoutOneVerticalCol\n header={<WebLinkHeader />}\n contentStart={<ContentStart />}\n footer={<WebLinkFooter />}\n withSecondaryNavigation\n loading={loading}\n />\n </Form.Form>\n );\n};\n","import {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport {useAppDispatch} from 'hooks';\nimport {createWebLinkPageLoadingSelector, createWebLinkThunk} from 'admin';\nimport {ICreateWebLinkPayload} from 'models/resources';\n\nexport const useCreateWebLink = () => {\n const dispatch = useAppDispatch();\n const loading = useSelector(createWebLinkPageLoadingSelector) as boolean;\n const createWebLink = useCallback((payload: ICreateWebLinkPayload) => dispatch(createWebLinkThunk(payload)), [\n dispatch,\n ]);\n\n return {loading, createWebLink};\n};\n","import React from 'react';\nimport {Redirect, Route, Switch} from 'react-router-dom';\nimport {UploadResourceFile} from './file/UploadResourceFile';\nimport {UploadResourceScorm} from './scorm/UploadResourceScorm';\nimport {UploadResourceWebLink} from './web-link/UploadResourceWebLink';\nimport {pages} from 'paths';\n\nexport const UploadResources = () => {\n return (\n <Switch>\n <Route\n exact\n path={pages.adminPortal.upload.root}\n render={() => <Redirect to={pages.adminPortal.upload.file} />}\n />\n <Route path={pages.adminPortal.upload.file} component={UploadResourceFile} />\n <Route path={pages.adminPortal.upload.scorm} component={UploadResourceScorm} />\n <Route path={pages.adminPortal.upload.webLink} component={UploadResourceWebLink} />\n </Switch>\n );\n};\n","import * as Yup from 'yup';\nimport {ILearningPathDetailsFormBaseValues, ILearningPathValidationsShape} from 'admin/resources/learning-paths/utils';\n\nexport type ILearningPathViewCreateFormBaseValues = ILearningPathDetailsFormBaseValues;\n\nexport const learningPathViewCreateFormBaseValidationSchema = Yup.object().shape(ILearningPathValidationsShape);\n","import {createUniqueId} from 'utils/common';\nimport {ILearningPathSessionItem} from 'models/resources/learning-paths';\nimport {SessionBuilderEditModeEnum} from 'enums/learning-paths';\n\nexport const createEmptySession: () => ILearningPathSessionItem = () => ({\n id: createUniqueId(),\n title: '',\n description: '',\n resources: [],\n instruments: [],\n mode: SessionBuilderEditModeEnum.Edit,\n isAccordionExpanded: true,\n createdOn: new Date().toISOString(),\n});\n","import {IAddResourceItemsPayload, IBaseResourceItem} from 'models/resources';\nimport {getResourcesCollectionByIds} from '.';\n\nexport const mapAddResourceItemsPayload = (\n id: string,\n contentItemIds: string[],\n resourcesCollection: IBaseResourceItem[]\n): IAddResourceItemsPayload => {\n const filteredResourcesCollection = getResourcesCollectionByIds(contentItemIds, resourcesCollection);\n\n return {\n id,\n resources: filteredResourcesCollection,\n };\n};\n","import {IBaseResourceItem} from 'models/resources';\n\nexport const getResourcesCollectionByIds = (\n contentItemIds: string[],\n collection: IBaseResourceItem[]\n): IBaseResourceItem[] => collection.filter((item) => contentItemIds.indexOf(item.contentItemId) !== -1);\n","import {IBaseResourceItem} from 'models/resources';\n\nexport const filterResourceCollectionById = (collection: IBaseResourceItem[], id: string) =>\n collection.filter((resource: IBaseResourceItem) => resource.contentItemId !== id);\n","import {IBaseInstrumentItem} from 'models/resources';\n\nexport const getInstrumentsCollectionByIds = (\n instrumentItemIds: number[],\n collection: IBaseInstrumentItem[]\n): IBaseInstrumentItem[] => collection.filter((item) => instrumentItemIds.indexOf(item.id) !== -1);\n","import {IBaseInstrumentItem} from 'models/resources';\n\nexport const filterInstrumentCollectionById = (collection: IBaseInstrumentItem[], id: number) =>\n collection.filter((instrument: IBaseInstrumentItem) => instrument.id !== id);\n","import {IAddInstrumentItemsPayload, IBaseInstrumentItem} from 'models/resources';\nimport {getInstrumentsCollectionByIds} from '.';\n\nexport const mapAddInstrumentItemsPayload = (\n id: string,\n instrumentItemIds: number[],\n instrumentsCollection: IBaseInstrumentItem[]\n): IAddInstrumentItemsPayload => {\n const filteredInstrumentsCollection = getInstrumentsCollectionByIds(instrumentItemIds, instrumentsCollection);\n\n return {\n id,\n instruments: filteredInstrumentsCollection,\n };\n};\n","export const sessionResourceTooltipMessages = {\n expired: 'This resource has expired.',\n deleted: 'This resource is not available anymore.',\n accessibleToStudents: 'This resource is accessible to students. If you want to change this, click on the resource.',\n notAccessibleToStudents:\n 'This resource is not accessible to students. If you want to change this, click on the resource.',\n};\n","import {sessionResourceTooltipMessages} from '../constants';\n\nexport const getAccessibleToStudentsTooltip = (isAvailableToStudents: boolean): string =>\n isAvailableToStudents\n ? sessionResourceTooltipMessages.accessibleToStudents\n : sessionResourceTooltipMessages.notAccessibleToStudents;\n","import {sessionResourceTooltipMessages} from '../constants';\n\nexport const getLinkTooltip = (isDeleted: boolean, isExpired: boolean) => {\n if (isExpired) return sessionResourceTooltipMessages.expired;\n if (isDeleted) return sessionResourceTooltipMessages.deleted;\n\n return null;\n};\n","import {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport {unwrapResult} from '@reduxjs/toolkit';\n\nimport {useAppDispatch, useNavigate} from 'hooks';\nimport {\n IItemBankTableRow,\n IItemsImportFieldDetails,\n IUploadItemBankPayload,\n TGetImportTemplateApiResponse,\n} from 'models';\nimport {createLinkForDownload, prepareMultiPartFormData} from 'utils';\nimport {\n fetchImportCriticalIssuesThunk,\n fetchImportInstructionalTextThunk,\n fetchImportItemsTemplateThunk,\n fetchItemBankPreviewTableRowsThunk,\n importItemsThunk,\n uploadItemBankThunk,\n} from '../store/thunks';\nimport {\n downloadingSelector,\n loadingSelector,\n templateInstructionalTextSelector,\n uploadingSelector,\n importingSelector,\n itemsImportFieldListSelector,\n hasRequiredFieldErrorsSelector,\n itemsImportFileNameSelector,\n itemImportIdSelector,\n itemImportPreviewRowsSelector,\n itemImportCriticalIssueCountSelector,\n itemImportPreviewLoadingSelector,\n downloadingCriticalIssuesSelector,\n} from './../store/itemsImport.selectors';\nimport {itemsImportActions as actions} from '../store/itemsImport.slice';\nimport {pages} from 'paths';\n\nconst defaultCriticalIssuesCount = 0;\n\nexport const useItemsImport = () => {\n const dispatch = useAppDispatch();\n const {push} = useNavigate();\n const downloading = useSelector(downloadingSelector) as boolean;\n const downloadingCriticalIssues = useSelector(downloadingCriticalIssuesSelector) as boolean;\n const loading = useSelector(loadingSelector) as boolean;\n const uploading = useSelector(uploadingSelector) as boolean;\n const importing = useSelector(importingSelector) as boolean;\n const previewLoading = useSelector(itemImportPreviewLoadingSelector) as boolean;\n const templateInstructionalText = useSelector(templateInstructionalTextSelector) as string;\n const fieldList = useSelector(itemsImportFieldListSelector) as IItemsImportFieldDetails[];\n const hasRequiredFieldErrors = useSelector(hasRequiredFieldErrorsSelector) as boolean;\n const fileName = useSelector(itemsImportFileNameSelector) as string;\n const itemImportId = useSelector(itemImportIdSelector) as number;\n const itemImportPreviewRows = useSelector(itemImportPreviewRowsSelector) as IItemBankTableRow[];\n const itemImportCriticalIssueCount = useSelector(itemImportCriticalIssueCountSelector) as number;\n\n const shouldDisableImport = itemImportCriticalIssueCount > defaultCriticalIssuesCount;\n\n const redirectToViewListOfQuestions = useCallback(() => {\n push(`${pages.adminPortal.items.root}`);\n }, [push]);\n\n const downloadTemplate = useCallback(\n () =>\n dispatch(fetchImportItemsTemplateThunk())\n .then(unwrapResult)\n .then((parsedBody: TGetImportTemplateApiResponse) => {\n const {mimeType, data, fileName} = parsedBody;\n createLinkForDownload(`data:${mimeType};base64,${data}`, fileName);\n }),\n [dispatch]\n );\n\n const downloadIssues = useCallback(\n () =>\n dispatch(fetchImportCriticalIssuesThunk(itemImportId))\n .then(unwrapResult)\n .then(({mimeType, data, fileName}: TGetImportTemplateApiResponse) => {\n createLinkForDownload(`data:${mimeType};base64,${data}`, fileName);\n }),\n [dispatch, itemImportId]\n );\n\n const fetchImportInstructionalText = useCallback(() => dispatch(fetchImportInstructionalTextThunk()), [dispatch]);\n\n const uploadItemBank = useCallback(\n (payload: IUploadItemBankPayload) =>\n dispatch(uploadItemBankThunk(prepareMultiPartFormData(payload))).then(unwrapResult),\n [dispatch]\n );\n\n const resetMappingState = useCallback(() => dispatch(actions.resetMapping()), [dispatch]);\n\n const fetchItemBankPreviewTableRows = useCallback(() => dispatch(fetchItemBankPreviewTableRowsThunk(itemImportId)), [\n dispatch,\n itemImportId,\n ]);\n\n const startItemBankImport = useCallback(\n (resetFormCallback: () => void) =>\n dispatch(importItemsThunk(itemImportId))\n .then(() => redirectToViewListOfQuestions())\n .then(() => resetFormCallback()),\n [dispatch, itemImportId, redirectToViewListOfQuestions]\n );\n\n return {\n loading,\n downloading,\n uploading,\n importing,\n previewLoading,\n downloadingCriticalIssues,\n fieldList,\n fileName,\n hasRequiredFieldErrors,\n templateInstructionalText,\n itemImportPreviewRows,\n itemImportCriticalIssueCount,\n shouldDisableImport,\n\n downloadTemplate,\n downloadIssues,\n fetchImportInstructionalText,\n uploadItemBank,\n resetMappingState,\n fetchItemBankPreviewTableRows,\n startItemBankImport,\n };\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle_1394\",\n \"data-name\": \"Rectangle 1394\",\n width: 120,\n height: 120,\n fill: \"none\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_744\",\n \"data-name\": \"Group 744\",\n transform: \"translate(-419 -808)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1047-2\",\n \"data-name\": \"Path 1047-2\",\n d: \"M556.98,110.641a1.043,1.043,0,0,1-.253-.141,1.02,1.02,0,0,1-.193-1.429,29.362,29.362,0,0,1,7.764-7.081,1.02,1.02,0,0,1,1.407.321h0a1.02,1.02,0,0,1-.321,1.407h0a27.405,27.405,0,0,0-7.229,6.591A1.021,1.021,0,0,1,556.98,110.641ZM608,124.191a1.021,1.021,0,0,1-.646-.817,27.538,27.538,0,0,0-3-9.31,1.021,1.021,0,0,1,.42-1.38h0a1.02,1.02,0,0,1,1.38.42h0a29.6,29.6,0,0,1,3.23,10,1.02,1.02,0,0,1-.876,1.147h0a1,1,0,0,1-.5-.059Zm-34.12-24.182a1.02,1.02,0,0,1,.157-1.951,29.347,29.347,0,0,1,10.5-.276,1.02,1.02,0,0,1,.853,1.164h0a1.02,1.02,0,0,1-1.161.857h0a27.326,27.326,0,0,0-9.778.257A1.017,1.017,0,0,1,573.884,100.009Zm24.718,6.561a1.066,1.066,0,0,1-.31-.188,27.459,27.459,0,0,0-8.369-5.071,1.02,1.02,0,0,1,.731-1.9,29.485,29.485,0,0,1,8.991,5.442,1.02,1.02,0,0,1,.1,1.44l-.009.009a1.019,1.019,0,0,1-1.128.273Z\",\n transform: \"translate(-82.177 738.105)\",\n fill: \"#8cb42d\",\n stroke: \"#8cb42d\",\n strokeWidth: 0.4\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1178\",\n \"data-name\": \"Path 1178\",\n d: \"M570.795,121.227h-.289a.988.988,0,0,0-.977.974c-.01.106-.019.24-.027.407-.014.31-.023.719-.023,1.15l-1.431,40.887c0,.476.008.9.022,1.217.008.163.018.3.03.4a.985.985,0,0,0,.974.973h.289a.988.988,0,0,0,.977-.974c.01-.1.019-.236.026-.4.016-.318.024-.726.024-1.156l1.431-40.886c0-.477-.008-.9-.022-1.218-.008-.164-.017-.3-.029-.4A.987.987,0,0,0,570.795,121.227Z\",\n transform: \"translate(-80.526 741.455)\",\n fill: \"#ed6a08\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1182\",\n \"data-name\": \"Path 1182\",\n d: \"M363.12-16050.425l11.279,61.893-17.225,1.12-1.527-.222-.958-2.427-.789-16.572-2.352-42.295,1.456-1.5H363.12Z\",\n transform: \"translate(99 16904.088)\",\n fill: \"#fee3c7\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1183\",\n \"data-name\": \"Path 1183\",\n d: \"M558.324,121.227h-.287a.987.987,0,0,0-.977.974c-.01.106-.021.24-.029.407-.014.317-.023.737-.023,1.181v40.888c0,.444.009.865.023,1.185.008.163.018.3.03.4a.986.986,0,0,0,.975.973h.287a.988.988,0,0,0,.977-.974c.01-.106.021-.24.029-.406.014-.317.023-.738.023-1.182V123.789c0-.444-.009-.864-.023-1.185-.008-.164-.018-.3-.03-.4A.987.987,0,0,0,558.324,121.227Z\",\n transform: \"translate(-82.081 741.455)\",\n fill: \"#ed6a08\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1184\",\n \"data-name\": \"Path 1184\",\n d: \"M547.285,122.607c-.007-.169-.016-.3-.029-.407a.986.986,0,0,0-.975-.973h-.287a.987.987,0,0,0-.975.974c-.011.106-.021.24-.029.407-.015.317-.023.737-.023,1.181l1.431,40.891c0,.459.009.867.023,1.181.008.164.017.3.03.4a.986.986,0,0,0,.975.973h.287a.988.988,0,0,0,.977-.974c.011-.106.019-.24.027-.406.015-.317.023-.738.023-1.182v-.032l-1.431-40.869C547.309,123.328,547.3,122.92,547.285,122.607Z\",\n transform: \"translate(-83.776 741.455)\",\n fill: \"#ed6a08\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1185\",\n \"data-name\": \"Path 1185\",\n d: \"M583.758,112.7H538.791c-3.311,0-3.91,1.735-4,2.082l-.015.065a2.557,2.557,0,0,0-.065.573l3.465,59.273a2.819,2.819,0,0,0,2.86,2.706h40.426a2.809,2.809,0,0,0,2.86-2.674l3.462-59.25a2.567,2.567,0,0,0-.064-.63l-.025-.113C587.432,113.866,586.531,112.817,583.758,112.7Zm2.124,2.779-3.46,59.466-.187.217a1.01,1.01,0,0,1-.769.333H541.04a1.006,1.006,0,0,1-.769-.334l-.187-.216v-.284l-3.48-59.526.243-.243a1.031,1.031,0,0,1,.727-.289h47.358a1.031,1.031,0,0,1,.727.289l.244.243Z\",\n transform: \"translate(-85.22 740.254)\",\n fill: \"#ed6a08\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1187\",\n \"data-name\": \"Path 1187\",\n d: \"M518.169,118.013l2.1,2.717a2.624,2.624,0,0,0,2.1,1.015h.064l.306-.007a5.807,5.807,0,0,0,2.186-1.23l.282-.219,37.722-29.141a5.266,5.266,0,0,0,1.865-2.131,2.629,2.629,0,0,0-.436-2.347l-2.1-2.717a2.717,2.717,0,0,0-3.814-.427L544.319,94.438l-2.018-2.61a3.25,3.25,0,0,0-1.366-1.127,1.3,1.3,0,0,0-.437-.08,1.091,1.091,0,0,0-.68.241l-9.3,7.183c-.682.527-.566,1.516.308,2.648l2.016,2.61-14.127,10.912A2.718,2.718,0,0,0,518.169,118.013ZM532.1,99.227l8.459-6.535,2.091,2.707-8.459,6.533Zm-12.5,16.756.265-.248,39.962-30.872.72-.01,2.507,3.244-.135.608-.258.24-39.954,30.867-.722.025-2.506-3.244Z\",\n transform: \"translate(-87.626 736.063)\",\n fill: \"#ed6a08\"\n}));\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle_2025\",\n \"data-name\": \"Rectangle 2025\",\n width: 120,\n height: 120,\n fill: \"none\"\n});\n\nvar SvgIllustrationTrash = function SvgIllustrationTrash(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"illustration_-_trash\",\n \"data-name\": \"illustration - trash\",\n width: 120,\n height: 120,\n viewBox: \"0 0 120 120\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2, _ref3, _ref4);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIllustrationTrash, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/Illustration_trash.fa579e11.svg\";\nexport { ForwardRef as ReactComponent };","export * from './hooks';\nexport * from './components';\nexport * from './utils';\nexport * from './enums';\n\nexport {IntegrationsDetailView} from './IntegrationsDetailView';\n","import {makeStyles} from '@material-ui/core';\nimport {Bullet, Icon, Row, Text} from 'components-lib';\nimport {IAnswer} from 'models';\nimport React from 'react';\n\ninterface IAnswerProps {\n answer: IAnswer;\n}\n\nexport function Answer({answer: {isCorrect, text}}: IAnswerProps) {\n const classes = useStyles();\n return (\n <Row justify=\"space-between\">\n <div className={classes.answer}>\n <div className={classes.icon}>{isCorrect ? <Icon.CheckIcon /> : ''}</div>\n <Bullet />\n <Text.Caption>{text}</Text.Caption>\n </div>\n </Row>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n answer: {\n display: 'flex',\n flex: 2,\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'flex-start',\n },\n icon: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n minWidth: theme.spacing(4),\n minHeight: theme.spacing(4),\n marginRight: theme.spacing(3),\n },\n}));\n","import React, {FC, ReactNode} from 'react';\nimport {makeStyles} from '@material-ui/core';\n\nimport {AreaTitle} from '../AreaTitle/AreaTitle';\n\ninterface IAnswerHeaderProps {\n creatorArea: string;\n headingActions?: ReactNode;\n}\n\nexport const AnswerHeader: FC<IAnswerHeaderProps> = ({creatorArea, headingActions}) => {\n const classes = useStyles();\n\n return (\n <div className={classes.root}>\n {headingActions && <div className={classes.headingActions}>{headingActions}</div>}\n <AreaTitle creatorArea={creatorArea} />\n </div>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n alignItems: 'center',\n },\n headingActions: {\n marginRight: theme.spacing(1) + theme.spacing(2),\n },\n}));\n","import React from 'react';\nimport {makeStyles} from '@material-ui/core';\n\nexport const AnswerComponentWrapper = ({children}) => {\n const classes = useStyles();\n\n return <div className={classes.root}>{children}</div>;\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: () => ({\n marginLeft: theme.spacing(2),\n marginBottom: theme.spacing(2),\n }),\n}));\n","import React, {Fragment, useMemo, ReactNode} from 'react';\nimport {makeStyles} from '@material-ui/core';\n\nimport {QuestionAnswersTypeEnum} from 'enums';\nimport {IAnswer, IQuestionAnswerStackDetails} from 'models';\nimport {borderGeneral} from 'styles';\nimport {Column, Icon, Row, Text} from 'components-lib';\nimport {AnswerBuilderRating, AnswerOpenEnded} from '..';\nimport {Answer} from '../Answer/Answer';\nimport {AnswerHeader} from './AnswerHeader';\nimport {AnswerComponentWrapper} from './AnswerComponentWrapper';\ninterface IAnswersViewProps {\n answers: IAnswer[];\n draggable?: boolean;\n isDragging?: boolean;\n disabled?: boolean;\n questionType?: QuestionAnswersTypeEnum;\n details?: IQuestionAnswerStackDetails;\n headingActions?: ReactNode;\n hasMatchedMetadata?: boolean;\n}\n\nexport function AnswersView({\n answers = [],\n draggable = false,\n isDragging = false,\n disabled = false,\n questionType,\n details,\n headingActions,\n hasMatchedMetadata = false,\n}: IAnswersViewProps) {\n const classes = useStyles({draggable, disabled, isDragging, hasMatchedMetadata});\n const showRating = questionType === QuestionAnswersTypeEnum.rating;\n const showOtherTypes = questionType !== (QuestionAnswersTypeEnum.rating || QuestionAnswersTypeEnum.text);\n\n // Items without answers\n const showNoChoices = answers?.length < 1 && questionType !== QuestionAnswersTypeEnum.text && !!questionType;\n const showOpenEnded = questionType !== QuestionAnswersTypeEnum.text || !!questionType;\n\n const NoChoices = useMemo(\n () => () => {\n return (\n <div className={classes.noChoices}>\n <Text.Caption>No choices loaded.</Text.Caption>\n </div>\n );\n },\n [classes]\n );\n\n const AnswerComponent = useMemo(\n () => () => {\n return (\n <div>\n {showOtherTypes && answers.map((answer, idx) => <Answer key={idx} answer={answer} />)}\n {showRating && <AnswerBuilderRating answers={answers} withSmallButtons />}\n </div>\n );\n },\n [answers, showOtherTypes, showRating]\n );\n\n return (\n <Row justify=\"flex-start\" classes={{root: classes.row}}>\n <Column sm={draggable ? 11 : 12} md={draggable ? 11 : 12} lg={draggable ? 11 : 12} xl={draggable ? 11 : 12}>\n <AnswerHeader creatorArea={details?.creatorArea} headingActions={headingActions} />\n <AnswerComponentWrapper>\n {answers?.length ? (\n <AnswerComponent />\n ) : (\n <Fragment>\n {showNoChoices && <NoChoices />}\n {showOpenEnded && <AnswerOpenEnded />}\n </Fragment>\n )}\n </AnswerComponentWrapper>\n </Column>\n {draggable && (\n <Column sm={1} md={1} lg={1} xl={1}>\n <Icon.DragIndicatorIcon />\n </Column>\n )}\n </Row>\n );\n}\n\ntype TStyleProps = Pick<IAnswersViewProps, 'draggable' | 'disabled'> & {\n isDragging: boolean;\n hasMatchedMetadata: boolean;\n};\n\nconst useStyles = makeStyles((theme) => ({\n row: ({draggable, disabled, isDragging, hasMatchedMetadata}: TStyleProps) => {\n const base: any = {\n cursor: draggable ? 'grab' : 'pointer',\n marginBottom: draggable && !disabled ? 0 : theme.spacing(2),\n opacity: disabled || isDragging ? 0.5 : 1,\n pointerEvents: disabled ? 'none' : 'all',\n };\n\n if (disabled) {\n return {\n ...borderGeneral,\n ...base,\n };\n }\n\n if (draggable) {\n if (hasMatchedMetadata) {\n return {...borderGeneral, borderColor: theme.palette.secondary.main, ...base};\n }\n\n return {\n ...borderGeneral,\n ...base,\n borderStyle: isDragging ? 'dashed' : 'solid',\n };\n }\n\n return base;\n },\n noChoices: {\n padding: theme.spacing(3),\n },\n openEnded: {\n marginLeft: theme.spacing(1),\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n },\n ratingAnswer: {\n height: theme.spacing(5),\n marginLeft: theme.spacing(2),\n display: 'flex',\n alignItems: 'center',\n },\n}));\n","export {Instruments} from './Instruments';\nexport * from './store';\n","export enum IntegrationsFilterNamesEnum {\n SEARCH_BY_NAME = 'name',\n INTEGRATION_TYPE = 'integrationType',\n INTEGRATION_TYPES = 'integrationTypes',\n INTEGRATION_STATUSES = 'integrationStatuses',\n AREAS = 'areas',\n SCHOOL_NAMES = 'schoolNames',\n SCHOOL_DISTRICTS = 'schoolDistricts',\n SEARCH_BY_INTEGRATIONS_NAME = 'searchByIntegrationsName',\n SCHOOL_NAME_QUERY = 'schoolNameQuery',\n}\n","export * from './mocks';\nexport * from './thunks';\nexport * from './programClassesPaperAssessments.selectors';\nexport * from './programClassesPaperAssessments.slice';\nexport * from './IProgramClassesPaperAssessmentsState';\n","export const formResetDelay = 500;\nexport const programLevelAll = 1;\n","export const reportMessages = {\n progress: 'Report generation is still in progress. Are you sure you want to continue?',\n};\n","import {ExportTypesEnum} from '../../enums';\n\nexport const exportTypes = [\n {\n name: 'Data file',\n type: ExportTypesEnum.DataFile,\n },\n];\n","import {IProgramClassInstrumentsState} from './IProgramClassInstrumentsState';\nimport {FilterBackendNamesEnum, ProgramClassInstrumentsOrderingEnum} from '../enums';\nimport {IProgramClassInstrumentsFilter} from 'models/programs';\nimport {EntitiesPerPageEnum, SortingOrderEnum} from 'enums';\n\nconst filterDefault: IProgramClassInstrumentsFilter = {\n [FilterBackendNamesEnum.SEARCH_BY_NAME]: '',\n [FilterBackendNamesEnum.INSTRUMENT_STATUSES]: [],\n [FilterBackendNamesEnum.AUDIENCES]: [],\n [FilterBackendNamesEnum.TYPES]: [],\n [FilterBackendNamesEnum.PHASES]: [],\n [FilterBackendNamesEnum.PILLARS]: [],\n [FilterBackendNamesEnum.INSTRUMENT_VIEW_TYPE]: null,\n};\n\nexport const programClassInstrumentsInitialState: IProgramClassInstrumentsState = {\n pool: {\n result: [],\n entities: {byId: {}},\n },\n\n filter: filterDefault,\n page: {\n loading: false,\n },\n sortOrder: {\n order: ProgramClassInstrumentsOrderingEnum.Name,\n sort: SortingOrderEnum.ASC,\n },\n pagination: {\n currentPage: 0,\n totalCount: 0,\n perPage: EntitiesPerPageEnum.FIFTY,\n },\n};\n","import {IActionFulfilled, IProgramClassInstrumentsFilter, IProgramClassInstrumentsSortOrder} from 'models';\nimport {cloneDeep} from 'utils';\n\nimport {IProgramClassInstrumentsState} from './IProgramClassInstrumentsState';\nimport {programClassInstrumentsInitialState} from './programClassInstruments.initialState';\n\nexport const programClassInstrumentsReducer = {\n setFilter: (state: IProgramClassInstrumentsState, action: IActionFulfilled<null, IProgramClassInstrumentsFilter>) => {\n state.filter = action.payload;\n },\n\n resetFilter: (state: IProgramClassInstrumentsState) => {\n state.filter = cloneDeep(programClassInstrumentsInitialState.filter);\n },\n\n setSortOrder: (\n state: IProgramClassInstrumentsState,\n action: IActionFulfilled<null, IProgramClassInstrumentsSortOrder>\n ) => {\n state.sortOrder = action.payload;\n },\n\n setCurrentPage: (state: IProgramClassInstrumentsState, action: IActionFulfilled<null, number>) => {\n state.pagination.currentPage = action.payload;\n },\n\n setPerPage: (state: IProgramClassInstrumentsState, action: IActionFulfilled<null, number>) => {\n state.pagination.perPage = action.payload;\n resetPagination(state);\n },\n\n setSortOrderProgramClasseInstruments: (\n state: IProgramClassInstrumentsState,\n action: IActionFulfilled<null, IProgramClassInstrumentsSortOrder>\n ) => {\n state.sortOrder = action.payload;\n resetPagination(state);\n },\n};\n\nconst resetPagination = (state: IProgramClassInstrumentsState) => {\n state.pagination.currentPage = programClassInstrumentsInitialState.pagination.currentPage;\n state.pagination.totalCount = programClassInstrumentsInitialState.pagination.totalCount;\n};\n","import {schema as Schema} from 'normalizr';\n\nexport const poolListEntity = new Schema.Entity('byId', {}, {idAttribute: 'id'});\nexport const poolListSchema = new Schema.Array(poolListEntity);\n","import {IActionFulfilled, IGetPageOfProgramClassInstrumentsResponse} from 'models';\nimport {normalize} from 'normalizr';\nimport {isObject} from 'utils';\nimport {IProgramClassInstrumentsState} from './IProgramClassInstrumentsState';\nimport {poolListSchema} from './normalizationSchemas';\nimport {fetchProgramClassInstrumentsThunk} from './thunks';\nimport {fetchAreaProgramClassExportThunk} from 'admin/library/instruments';\n\nexport const programClassInstrumentsExtraReducer = {\n //fetchProgramClassInstrumentsThunk\n [fetchProgramClassInstrumentsThunk.fulfilled]: (\n state: IProgramClassInstrumentsState,\n action: IActionFulfilled<null, IGetPageOfProgramClassInstrumentsResponse>\n ) => {\n if (isObject(action.payload)) {\n state.pool = normalize(action.payload.programTemplates, poolListSchema);\n state.pagination.totalCount = action.payload.totalCount;\n }\n\n state.page.loading = false;\n },\n [fetchProgramClassInstrumentsThunk.pending]: (state: IProgramClassInstrumentsState) => {\n state.page.loading = true;\n },\n [fetchProgramClassInstrumentsThunk.rejected]: (state: IProgramClassInstrumentsState) => {\n // TODO handle errors\n state.page.loading = false;\n },\n\n //fetchAreaProgramClassExportThunk\n [fetchAreaProgramClassExportThunk.fulfilled]: (state: IProgramClassInstrumentsState) => {\n state.page.loading = false;\n },\n [fetchAreaProgramClassExportThunk.pending]: (state: IProgramClassInstrumentsState) => {\n state.page.loading = true;\n },\n [fetchAreaProgramClassExportThunk.rejected]: (state: IProgramClassInstrumentsState) => {\n state.page.loading = false;\n },\n};\n","import {createSlice} from '@reduxjs/toolkit';\nimport {programClassInstrumentsInitialState} from './programClassInstruments.initialState';\nimport {programClassInstrumentsReducer} from './programClassInstruments.reducer';\nimport {programClassInstrumentsExtraReducer} from './programClassInstrumentsExtra.reducer';\n\nexport const programClassInstrumentsSlice = createSlice({\n name: 'programClassInstruments',\n initialState: programClassInstrumentsInitialState,\n reducers: programClassInstrumentsReducer,\n extraReducers: programClassInstrumentsExtraReducer,\n});\n\nexport const {actions: programClassInstrumentsActions} = programClassInstrumentsSlice;\n","export * from './IProgramClassDetailsState';\nexport * from './programClassDetails.selectors';\nexport * from './programClassDetails.slice';\nexport * from './thunks';\n","import {SortingOrderEnum, EntitiesPerPageEnum} from 'enums';\nimport {IIntegrationDetails, IIntegrationPage, IIntegrationPagination} from 'models/integrations';\nimport {IIntegratiosAllFilter} from 'models/library';\nimport {IntegrationsFilterNamesEnum, IntegrationsOrderingEnum} from '../enums';\nimport {IIntegrationStoreState} from './IIntegrationsStoreState';\n\nexport const integrationConfigurationDefault = {\n serviceEmailAccount: null,\n clientId: null,\n clientSecret: null,\n authorityUrl: null,\n};\n\nconst integrationDefault = {\n id: null,\n integrationType: null,\n name: null,\n status: null,\n areaId: null,\n areaName: null,\n createdOn: null,\n schoolId: null,\n schoolName: null,\n schoolDistrict: null,\n configuration: integrationConfigurationDefault,\n expiryDateCertificate: null,\n} as IIntegrationDetails;\n\nconst filterDefault: IIntegratiosAllFilter = {\n [IntegrationsFilterNamesEnum.INTEGRATION_TYPE]: null,\n [IntegrationsFilterNamesEnum.INTEGRATION_STATUSES]: [],\n [IntegrationsFilterNamesEnum.AREAS]: [],\n [IntegrationsFilterNamesEnum.SCHOOL_NAMES]: [],\n [IntegrationsFilterNamesEnum.SCHOOL_DISTRICTS]: [],\n [IntegrationsFilterNamesEnum.SEARCH_BY_NAME]: '',\n};\n\nconst integrationListItemsDefault = {};\n\nconst integrationListDefault = {\n result: [],\n entities: {\n items: integrationListItemsDefault,\n },\n};\n\nconst pageDefault: IIntegrationPage = {\n loading: false,\n saving: false,\n deleting: false,\n loadingPageSection: false,\n};\n\nconst paginationDefault: IIntegrationPagination = {\n currentPage: 1,\n totalCount: 0,\n perPage: EntitiesPerPageEnum.FIFTY,\n};\n\nconst auditLogsDetault = [];\n\nconst addIntegrationMetadataDefault = {\n id: null,\n name: null,\n serviceSourceEmail: null,\n errorMessage: null,\n};\n\nexport const integrationsInitialState: IIntegrationStoreState = {\n integration: integrationDefault,\n integrationList: integrationListDefault,\n addIntegration: {\n metadata: addIntegrationMetadataDefault,\n },\n details: {\n integrationStatuses: {\n result: [],\n entities: {\n integrationStatuses: {},\n },\n },\n auditLogs: {\n entities: auditLogsDetault,\n loading: false,\n },\n },\n page: pageDefault,\n sortOrder: {\n order: IntegrationsOrderingEnum.Created,\n sort: SortingOrderEnum.DESC,\n },\n filter: filterDefault,\n pagination: paginationDefault,\n};\n","import {Box, makeStyles} from '@material-ui/core';\nimport {Button, Column, Modal, Row, Text} from 'components-lib';\nimport {IWithModal} from 'models';\nimport React, {useCallback} from 'react';\n\ninterface IModalEditClassRelatedInstrumentProps extends IWithModal {\n confirmHandler: () => void;\n}\n\nexport function ModalEditClassRelatedInstrument({\n isOpen,\n setIsOpen,\n confirmHandler,\n}: IModalEditClassRelatedInstrumentProps) {\n const classes = useStyles();\n const closeHandler = useCallback(() => setIsOpen(false), [setIsOpen]);\n const confirmActionHandler = useCallback(() => {\n confirmHandler();\n setIsOpen(false);\n }, [confirmHandler, setIsOpen]);\n\n return (\n <Modal isOpen={isOpen} handleClose={closeHandler} title=\"Edit Instrument\" size=\"medium\">\n <Column>\n <Row align=\"flex-start\" justify=\"flex-start\" classes={{root: classes.textRow}}>\n <Text.Paragraph variant=\"body1\">\n If you edit the instrument the status will automatically become draft and it won’t be available for users.\n </Text.Paragraph>\n <Box marginTop={2}>\n <Text.Paragraph>Are you sure that you want to customize this instrument?</Text.Paragraph>\n </Box>\n </Row>\n </Column>\n <div>\n <Button.Secondary clickHandler={closeHandler} size=\"small\">\n No\n </Button.Secondary>\n <Button.Primary size=\"small\" clickHandler={confirmActionHandler}>\n Yes\n </Button.Primary>\n </div>\n </Modal>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n textRow: {\n paddingTop: theme.spacing(4),\n paddingBottom: theme.spacing(4),\n },\n}));\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle_1393\",\n \"data-name\": \"Rectangle 1393\",\n width: 120,\n height: 120,\n fill: \"none\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1047\",\n \"data-name\": \"Path 1047\",\n d: \"M-63.563,799.888c-.694,0-1.391-.025-2.072-.074a1,1,0,0,1-.927-1.067,1,1,0,0,1,1.069-.927,27.392,27.392,0,0,0,9.535-1.018,1,1,0,0,1,1.241.678,1,1,0,0,1-.679,1.242A29.082,29.082,0,0,1-63.563,799.888Zm-11.64-2.527a1.006,1.006,0,0,1-.415-.09,28.956,28.956,0,0,1-8.456-5.881,1,1,0,0,1,0-1.414,1,1,0,0,1,1.414,0,26.947,26.947,0,0,0,7.874,5.476,1,1,0,0,1,.493,1.325A1,1,0,0,1-75.2,797.361Zm28.418-3.053a1,1,0,0,1-.8-.4,1,1,0,0,1,.2-1.4,27.071,27.071,0,0,0,6.538-7.02,1,1,0,0,1,1.383-.3,1,1,0,0,1,.3,1.383,29.058,29.058,0,0,1-7.02,7.535A1,1,0,0,1-46.785,794.308Zm-42.257-10.79a1,1,0,0,1-.91-.584,28.8,28.8,0,0,1-2.54-9.982,1,1,0,0,1,.928-1.067.989.989,0,0,1,1.067.927,26.771,26.771,0,0,0,2.365,9.29,1,1,0,0,1-.494,1.325A1.008,1.008,0,0,1-89.042,783.518Zm-1.393-19.524a1.02,1.02,0,0,1-.282-.04,1,1,0,0,1-.678-1.241,28.786,28.786,0,0,1,4.618-9.208,1,1,0,0,1,1.4-.2,1,1,0,0,1,.2,1.4,26.849,26.849,0,0,0-4.3,8.571A1,1,0,0,1-90.435,763.994Z\",\n transform: \"translate(4772.563 -2858.888)\",\n fill: \"#8fc440\",\n stroke: \"#8fc440\",\n strokeLinejoin: \"bevel\",\n strokeWidth: 0.4\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1047-2\",\n \"data-name\": \"Path 1047\",\n d: \"M-90.435,763.994a1.02,1.02,0,0,1-.282-.04,1,1,0,0,1-.678-1.241,28.786,28.786,0,0,1,4.618-9.208,1,1,0,0,1,1.4-.2,1,1,0,0,1,.2,1.4,26.849,26.849,0,0,0-4.3,8.571A1,1,0,0,1-90.435,763.994Zm51.454-5.524a1,1,0,0,1-.878-.521,27.009,27.009,0,0,0-6.021-7.465,1,1,0,0,1-.1-1.411,1,1,0,0,1,1.411-.1A29.019,29.019,0,0,1-38.1,756.99a1,1,0,0,1-.4,1.357A.987.987,0,0,1-38.981,758.47ZM-78.7,748.326a1,1,0,0,1-.842-.459,1,1,0,0,1,.3-1.382,28.8,28.8,0,0,1,9.517-3.943,1,1,0,0,1,1.189.766A1,1,0,0,1-69.3,744.5a26.785,26.785,0,0,0-8.857,3.67A1,1,0,0,1-78.7,748.326Zm24.925-2.68a1,1,0,0,1-.35-.063,26.926,26.926,0,0,0-9.44-1.7,1,1,0,0,1-1-1,1,1,0,0,1,1-1,28.908,28.908,0,0,1,10.139,1.822A1,1,0,0,1-52.836,745,1,1,0,0,1-53.773,745.646Z\",\n transform: \"translate(5097.603 -2760.907) rotate(21)\",\n fill: \"#8fc440\",\n stroke: \"#8fc440\",\n strokeWidth: 0.4\n});\n\nvar _ref5 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1050\",\n \"data-name\": \"Path 1050\",\n d: \"M42.252,669.376a2.558,2.558,0,0,0-1.386-.35h0a6.748,6.748,0,0,0-2.367.526L29.256,676.5-6.751,686.932c-.986.334,13.474,2.107,13.659,3.558.217,1.7,3.923,1.733,4.02,1.766l2.065,1.3h-.644l-.926-1.3,1.569,8.092h0l3.084,2.314,1.6,1.2,2.924,2.195,9.174,6.887a.662.662,0,0,0,.138.08,4.716,4.716,0,0,0,1.849.415,3.394,3.394,0,0,0,1.276-.243,3.866,3.866,0,0,0,1.981-1.959.64.64,0,0,0,.035-.115l6.213-30.672h0l.246-1.216.218-1.076h0l1.385-6.837a.709.709,0,0,0,.012-.126A2.008,2.008,0,0,0,42.252,669.376Z\",\n transform: \"translate(4691.205 -2812.388)\",\n fill: \"#fdb973\",\n opacity: 0.48\n});\n\nvar _ref6 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1051\",\n \"data-name\": \"Path 1051\",\n d: \"M39.6,669.391a2.244,2.244,0,0,0-1.311-.365h0a5.9,5.9,0,0,0-2.239.549l-16.539,7.01L-6.753,687.716c-.932.349-2.446,1.335-2.271,2.849a3.559,3.559,0,0,0,2.234,2.572l7.081,2.576.489.143h0l11.14,5.863h0l2.917,2.416,1.517,1.257,2.766,2.291,8.677,7.188a.614.614,0,0,0,.131.083,4.112,4.112,0,0,0,1.748.434,2.948,2.948,0,0,0,1.207-.254,3.907,3.907,0,0,0,1.874-2.045.719.719,0,0,0,.033-.12l5.877-32.015h0l.232-1.269.206-1.123h0l1.31-7.136a.815.815,0,0,0,.012-.131A2.164,2.164,0,0,0,39.6,669.391Z\",\n transform: \"translate(4691.909 -2819.388)\",\n fill: \"#fff\"\n});\n\nvar _ref7 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1045\",\n \"data-name\": \"Path 1045\",\n d: \"M232.6,870.372l-7.787,7.1a1.365,1.365,0,0,1-1.275.172l1.491-13.188\",\n transform: \"translate(-128.51 -199.3)\",\n fill: \"#fee3c7\"\n});\n\nvar _ref8 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_603\",\n \"data-name\": \"Group 603\",\n transform: \"translate(74.598 633.467)\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Path_1046\",\n \"data-name\": \"Path 1046\",\n transform: \"translate(-74.598 -633.467)\",\n fill: \"#fd8204\",\n strokeMiterlimit: 10\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M 117.9085464477539 681.5672607421875 C 117.2790222167969 681.5672607421875 116.6072387695312 681.4135131835938 115.9118499755859 681.1102905273438 C 115.8523101806641 681.0840454101562 115.7964096069336 681.0510864257812 115.7453918457031 681.0120849609375 L 104.1372909545898 672.1124267578125 L 96.84410858154297 678.7620239257812 C 96.82655334472656 678.778076171875 96.8079833984375 678.7933959960938 96.78910827636719 678.807861328125 C 96.51547241210938 679.015380859375 96.02985382080078 679.2367553710938 95.48647308349609 679.2367553710938 C 95.21771240234375 679.2367553710938 94.95745086669922 679.182861328125 94.71289825439453 679.0765380859375 C 94.70648193359375 679.0737915039062 94.69989013671875 679.0701904296875 94.69340515136719 679.06640625 C 94.0687255859375 678.8153686523438 93.49295043945312 677.8714599609375 92.98197174072266 676.2607421875 C 92.86099243164062 675.8790283203125 92.65570831298828 675.2205200195312 92.37181854248047 674.3035278320312 L 92.36972045898438 674.2966918945312 L 92.36875915527344 674.2914428710938 C 91.2783203125 670.7469482421875 89.23645782470703 664.1065063476562 88.72579956054688 662.4456787109375 L 77.08039855957031 658.5252685546875 C 76.98404693603516 658.4911499023438 74.75203704833984 657.6802978515625 74.51444244384766 655.7796630859375 C 74.31059265136719 654.1494750976562 76.05680084228516 653.0911254882812 77.12074279785156 652.7227783203125 L 106.4935607910156 641.2002563476562 L 124.9950408935547 633.9426879882812 C 125.2135162353516 633.8477172851562 126.3785705566406 633.3673095703125 127.5371627807617 633.3673095703125 C 128.1461334228516 633.3673095703125 128.6580352783203 633.5 129.0586853027344 633.7616577148438 C 129.5040435791016 634.0523681640625 130.0349731445312 634.64453125 130.0349731445312 635.8150024414062 C 130.0349731445312 635.8668212890625 130.0298156738281 635.9191284179688 130.0196228027344 635.9703979492188 L 128.5562133789062 643.3490600585938 L 128.5562133789062 643.3490600585938 L 128.5543060302734 643.3590087890625 L 128.3235626220703 644.5220947265625 L 128.064697265625 645.8272094726562 L 128.0628967285156 645.8364868164062 L 121.4887771606445 678.9824829101562 C 121.4796295166016 679.0294799804688 121.4655303955078 679.0770874023438 121.4469375610352 679.1237182617188 C 121.4214706420898 679.1870727539062 120.8079986572266 680.6765747070312 119.2953491210938 681.2972412109375 C 118.8585586547852 681.4764404296875 118.3919677734375 681.5672607421875 117.9085464477539 681.5672607421875 Z M 116.6370468139648 679.6828002929688 C 117.0928802490234 679.87158203125 117.5204620361328 679.9673461914062 117.9080200195312 679.9673461914062 C 118.1868591308594 679.9673461914062 118.449592590332 679.9175415039062 118.6889266967773 679.8193359375 C 119.4385223388672 679.5119018554688 119.8296432495117 678.8095092773438 119.9393692016602 678.5830078125 L 127.3449859619141 641.2449951171875 L 127.3467636108398 641.2359008789062 L 128.4364471435547 635.7423095703125 C 128.4202270507812 635.2528686523438 128.2441101074219 635.1376342773438 128.1859283447266 635.0995483398438 C 128.0445556640625 635.007080078125 127.8324508666992 634.9601440429688 127.5555114746094 634.9601440429688 C 126.8968505859375 634.9601440429688 126.0366592407227 635.2310180664062 125.6191864013672 635.4130249023438 C 125.6116409301758 635.4164428710938 125.601676940918 635.4205322265625 125.5926666259766 635.4241943359375 L 108.2946319580078 642.209716796875 L 77.68660736083984 654.2166137695312 C 77.67593383789062 654.2208862304688 77.66465759277344 654.2250366210938 77.65325927734375 654.2289428710938 C 77.32623291015625 654.342529296875 76.01949310302734 654.941162109375 76.09947967529297 655.581298828125 C 76.18855285644531 656.2935791015625 77.15043640136719 656.8551635742188 77.60231018066406 657.0155639648438 L 89.270751953125 660.9436645507812 L 95.79110717773438 656.79150390625 L 95.81568145751953 656.77587890625 L 95.81581878662109 656.77587890625 L 117.852783203125 642.7431030273438 C 118.2839965820312 642.4802856445312 118.9183883666992 642.168212890625 119.5012283325195 642.168212890625 C 119.7468566894531 642.168212890625 119.9648132324219 642.2243041992188 120.1490097045898 642.3348388671875 C 120.291389465332 642.4205322265625 120.6265640258789 642.6759033203125 120.6840209960938 643.2049560546875 C 120.7088088989258 643.2754516601562 120.7253952026367 643.3487548828125 120.7333908081055 643.4229125976562 C 120.7842407226562 643.8988647460938 120.5095291137695 644.3892822265625 119.8426513671875 645.012939453125 C 119.0584259033203 645.7468872070312 102.7425155639648 660.453125 97.60002136230469 665.0875854492188 L 116.6370468139648 679.6828002929688 Z M 97.14571380615234 666.7523803710938 L 95.93890380859375 677.4255981445312 L 102.8492889404297 671.1251220703125 L 97.14571380615234 666.7523803710938 Z M 90.31349182128906 662.1732788085938 L 91.17288208007812 664.9663696289062 L 94.21291351318359 674.8463134765625 C 94.33415222167969 675.2357788085938 94.43412017822266 675.554931640625 94.50473022460938 675.7778930664062 C 94.50792694091797 675.7879638671875 94.51112365722656 675.7979736328125 94.51432800292969 675.8079833984375 L 95.72870635986328 665.06689453125 C 95.73851013183594 664.98046875 95.76412963867188 664.8943481445312 95.804931640625 664.8106079101562 C 95.83066558837891 664.6221923828125 95.92034912109375 664.4507446289062 96.05874633789062 664.326171875 L 96.33486175537109 664.0773315429688 C 100.8416290283203 660.0156860351562 114.4683227539062 647.7333374023438 117.9575653076172 644.5697631835938 L 97.49609375 657.5995483398438 L 97.3739013671875 657.6774291992188 L 96.64907836914062 658.138916015625 L 96.64338684082031 658.1425170898438 L 96.64328002929688 658.142578125 L 90.31349182128906 662.1732788085938 Z\",\n stroke: \"none\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M 127.5371551513672 633.46728515625 C 126.3986968994141 633.46728515625 125.2515640258789 633.9402465820312 125.0315551757812 634.0357666015625 L 106.5300750732422 641.2933349609375 L 77.15345764160156 652.8172607421875 C 76.11053466796875 653.1783447265625 74.41763305664062 654.1995849609375 74.61367797851562 655.7672729492188 C 74.84346008300781 657.60546875 77.00954437255859 658.3941040039062 77.1123046875 658.4304809570312 L 88.80630493164062 662.3672485351562 C 89.29059600830078 663.9423217773438 91.36433410644531 670.6864624023438 92.46585083007812 674.2669067382812 C 92.46652984619141 674.2692260742188 92.46652984619141 674.2716064453125 92.46736145019531 674.27392578125 C 92.73680114746094 675.144287109375 92.95176696777344 675.83447265625 93.07730102539062 676.2305297851562 C 93.58131408691406 677.8193359375 94.13817596435547 678.7395629882812 94.73577117919922 678.9756469726562 C 94.74167633056641 678.9783935546875 94.74674987792969 678.9822387695312 94.75278472900391 678.9848022460938 C 95.00302124023438 679.0936279296875 95.25174713134766 679.1367797851562 95.48648071289062 679.1367797851562 C 96.02301788330078 679.1367797851562 96.48685455322266 678.9115600585938 96.72831726074219 678.7284545898438 C 96.74491119384766 678.7157592773438 96.76123809814453 678.7022705078125 96.77674102783203 678.6881103515625 L 104.1317367553711 671.982177734375 L 115.8061294555664 680.9326171875 C 115.8509902954102 680.9669189453125 115.8998260498047 680.9957275390625 115.9518203735352 681.0186157226562 C 116.637077331543 681.3174438476562 117.2910690307617 681.46728515625 117.9085540771484 681.46728515625 C 118.380485534668 681.46728515625 118.8310165405273 681.379638671875 119.2573852539062 681.2047119140625 C 120.7351989746094 680.5983276367188 121.3293685913086 679.1480712890625 121.3540573120117 679.086669921875 C 121.3699798583984 679.0467529296875 121.382453918457 679.0053100585938 121.3906860351562 678.9630126953125 L 127.9647979736328 645.8170166015625 L 127.9647979736328 645.8168334960938 L 128.2254638671875 644.5026245117188 L 128.4562072753906 643.3395385742188 L 128.4562072753906 643.3392333984375 L 129.9215393066406 635.950927734375 C 129.9304504394531 635.9060668945312 129.9349670410156 635.860595703125 129.9349670410156 635.8150024414062 C 129.9349670410156 634.6893310546875 129.4287567138672 634.1226196289062 129.0039978027344 633.8453979492188 C 128.5766296386719 633.5662841796875 128.0577239990234 633.4673461914062 127.5371551513672 633.46728515625 M 117.9080200195312 680.0673217773438 C 117.5029449462891 680.0673217773438 117.0611343383789 679.9681396484375 116.5866012573242 679.7701416015625 L 97.44375610351562 665.0938110351562 C 100.4492950439453 662.3851928710938 118.9406280517578 645.7201538085938 119.7743377685547 644.93994140625 C 120.4159545898438 644.33984375 120.6811447143555 643.875244140625 120.6339569091797 643.43359375 C 120.6262664794922 643.3621826171875 120.6098098754883 643.2928466796875 120.585807800293 643.227294921875 C 120.5372543334961 642.7395629882812 120.2376174926758 642.5048828125 120.0975341796875 642.4205932617188 C 119.9169845581055 642.3121948242188 119.7131652832031 642.2681884765625 119.5012359619141 642.2681884765625 C 118.930061340332 642.2681884765625 118.2998428344727 642.5877075195312 117.906494140625 642.8274536132812 L 95.84494781494141 656.8758544921875 L 95.84481811523438 656.8758544921875 L 89.28414916992188 661.0537109375 L 77.56885528564453 657.1098022460938 C 77.19446563720703 656.9769287109375 76.10272216796875 656.4132690429688 76.000244140625 655.5936889648438 C 75.91107177734375 654.8799438476562 77.25716400146484 654.2606811523438 77.62113952636719 654.1342163085938 C 77.63086700439453 654.1309204101562 77.64048004150391 654.1273803710938 77.65008544921875 654.12353515625 L 108.2581100463867 642.1166381835938 L 125.5541076660156 635.3319091796875 C 125.5621948242188 635.32861328125 125.5712585449219 635.324951171875 125.579216003418 635.3213500976562 C 126.0154724121094 635.131103515625 126.880012512207 634.8601684570312 127.5555038452148 634.8601684570312 C 127.8282852172852 634.8601684570312 128.0702056884766 634.9043579101562 128.2406921386719 635.015869140625 C 128.3114776611328 635.0621948242188 128.5213928222656 635.1996459960938 128.5367431640625 635.7506103515625 L 127.4448471069336 641.25537109375 L 127.4448471069336 641.2554931640625 L 120.0349960327148 678.6148681640625 C 119.9404678344727 678.8131103515625 119.5305480957031 679.5822143554688 118.7268905639648 679.911865234375 C 118.4741668701172 680.0155639648438 118.2006683349609 680.0673217773438 117.9080200195312 680.0673217773438 M 94.56332397460938 676.2647094726562 C 94.51353454589844 676.1254272460938 94.46221923828125 675.9742431640625 94.40940093994141 675.80810546875 C 94.3387451171875 675.5850219726562 94.23873138427734 675.2656860351562 94.11732482910156 674.875732421875 C 93.07537841796875 671.4896240234375 90.80968475341797 664.1259765625 90.19549560546875 662.1298828125 L 96.59523773193359 658.0546264648438 L 96.59536743164062 658.0545654296875 L 97.32014465332031 657.5931396484375 L 97.44237518310547 657.5151977539062 L 118.6449813842773 644.0134887695312 C 118.7027359008789 643.978515625 118.7652969360352 643.9436645507812 118.8295211791992 643.9103393554688 C 118.8262100219727 643.913330078125 118.8229141235352 643.9163818359375 118.8196411132812 643.9195556640625 C 117.9409255981445 644.7418212890625 96.34363555908203 664.2039184570312 96.12564086914062 664.4005126953125 C 95.99393463134766 664.51904296875 95.92067718505859 664.6766357421875 95.90203094482422 664.8400268554688 C 95.86470031738281 664.912841796875 95.83781433105469 664.9922485351562 95.82807922363281 665.078125 L 94.56332397460938 676.2647094726562 M 95.81215667724609 677.6564331054688 L 97.06620788574219 666.5654296875 L 103.0049896240234 671.1184692382812 L 95.86895751953125 677.6246948242188 C 95.85675048828125 677.6322021484375 95.83739471435547 677.6436767578125 95.81215667724609 677.6564331054688 M 127.536979675293 633.267333984375 L 127.536979675293 633.4673461914062 L 127.5370407104492 633.267333984375 L 127.5371704101562 633.267333984375 C 128.1659240722656 633.267333984375 128.6962280273438 633.405517578125 129.1133728027344 633.6779174804688 C 129.5793914794922 633.9821166992188 130.1349792480469 634.5997924804688 130.1349792480469 635.8150024414062 C 130.1349792480469 635.8733520507812 130.1291656494141 635.9321899414062 130.1177062988281 635.9898681640625 L 128.6562042236328 643.35888671875 L 128.6562042236328 643.35888671875 L 128.6523895263672 643.3784790039062 L 128.421630859375 644.5415649414062 L 128.1645812988281 645.8375244140625 L 128.1609802246094 645.85595703125 L 121.5868682861328 679.0018920898438 C 121.5766067504883 679.0546875 121.5607376098633 679.1083374023438 121.5398254394531 679.1607666015625 C 121.5135955810547 679.2260131835938 120.8845748901367 680.7532348632812 119.3333053588867 681.3897094726562 C 118.8844146728516 681.5739135742188 118.4050674438477 681.6672973632812 117.9085540771484 681.6672973632812 C 117.2652053833008 681.6672973632812 116.5799713134766 681.5107421875 115.8718795776367 681.2019653320312 C 115.8047485351562 681.17236328125 115.7419662475586 681.1353149414062 115.6846466064453 681.0914916992188 L 104.1428375244141 672.24267578125 L 96.91149139404297 678.8358764648438 C 96.89265441894531 678.8530883789062 96.87187957763672 678.8704223632812 96.84988403320312 678.8872680664062 C 96.56295013427734 679.1048583984375 96.05466461181641 679.3367919921875 95.48648071289062 679.3367919921875 C 95.20389556884766 679.3367919921875 94.93021392822266 679.280029296875 94.67301940917969 679.168212890625 C 94.66562652587891 679.1651000976562 94.65766143798828 679.1610717773438 94.64966583251953 679.1566162109375 C 93.98954010009766 678.8868408203125 93.41268920898438 677.9491577148438 92.88665771484375 676.291015625 C 92.76607513427734 675.9105224609375 92.5611572265625 675.253173828125 92.27760314941406 674.3372802734375 L 92.27276611328125 674.32373046875 L 92.2711181640625 674.3140258789062 C 91.19119262695312 670.8037719726562 89.1795654296875 664.26171875 88.64528656005859 662.5240478515625 L 77.04850006103516 658.6200561523438 C 76.94829559326172 658.5845947265625 74.66038513183594 657.7532958984375 74.41522216796875 655.7921142578125 C 74.20367431640625 654.1005249023438 75.99119567871094 653.0091552734375 77.08395385742188 652.6296997070312 L 106.4570388793945 641.107177734375 L 124.9553527832031 633.850830078125 C 125.1886901855469 633.749755859375 126.364616394043 633.267333984375 127.536979675293 633.267333984375 Z M 128.3360900878906 635.7342529296875 C 128.319580078125 635.3065185546875 128.1781616210938 635.2139892578125 128.1311645507812 635.1832275390625 C 128.0081176757812 635.1027221679688 127.8090591430664 635.0601806640625 127.5555114746094 635.0601806640625 C 126.9121246337891 635.0601806640625 126.0689392089844 635.3259887695312 125.6591567993164 635.5046997070312 C 125.6521377563477 635.5078735351562 125.6414566040039 635.5122680664062 125.6316299438477 635.5162963867188 L 108.3311462402344 642.3028564453125 L 77.72312927246094 654.3097534179688 C 77.71138000488281 654.314453125 77.69845581054688 654.3192138671875 77.68537902832031 654.3236083984375 C 77.15462493896484 654.508056640625 76.13778686523438 655.0813598632812 76.19871520996094 655.5689086914062 C 76.281982421875 656.2349243164062 77.20283508300781 656.7677001953125 77.63574981689453 656.9213256835938 L 89.25735473632812 660.8336791992188 L 95.73738861083984 656.7071533203125 L 95.78654479980469 656.6758422851562 L 95.78667449951172 656.6758422851562 L 117.7990646362305 642.6587524414062 C 118.2428970336914 642.3882446289062 118.8951797485352 642.0681762695312 119.5012359619141 642.0681762695312 C 119.765251159668 642.0681762695312 120.0005111694336 642.1290893554688 120.2004776000977 642.2491455078125 C 120.3547439575195 642.3419189453125 120.7163238525391 642.6170043945312 120.7821578979492 643.1827392578125 C 120.8073959350586 643.2571411132812 120.8244094848633 643.334228515625 120.8328094482422 643.4121704101562 C 120.887336730957 643.9225463867188 120.60302734375 644.438720703125 119.9109573364258 645.0859985351562 C 119.1324920654297 645.8145141601562 102.9960784912109 660.3591918945312 97.75627899169922 665.0814208984375 L 116.6874084472656 679.5953979492188 C 117.1265182495117 679.77587890625 117.5370559692383 679.8673095703125 117.9080200195312 679.8673095703125 C 118.1737747192383 679.8673095703125 118.4237365722656 679.820068359375 118.6509780883789 679.7268676757812 C 119.3671493530273 679.4330444335938 119.7512283325195 678.7376708984375 119.8438415527344 678.5506591796875 L 127.2451477050781 641.2343139648438 L 127.248664855957 641.2164306640625 L 128.3360900878906 635.7342529296875 Z M 95.70816040039062 664.78125 C 95.7398681640625 664.5756225585938 95.83973693847656 664.3887329101562 95.99184417724609 664.2518310546875 L 96.25132751464844 664.0180053710938 C 100.4457855224609 660.2378540039062 112.5351943969727 649.3411254882812 117.0145034790039 645.288818359375 L 97.5498046875 657.6838989257812 L 97.42768096923828 657.7617797851562 L 96.70277404785156 658.2232666015625 L 96.69140625 658.2305297851562 L 96.69129180908203 658.2305908203125 L 90.43147277832031 662.2167358398438 L 91.16633605957031 664.6050415039062 L 94.30847930908203 674.81689453125 C 94.36687469482422 675.0044555664062 94.42034149169922 675.17578125 94.46797943115234 675.327880859375 L 95.62934875488281 665.0556640625 C 95.63986968994141 664.9628295898438 95.66635131835938 664.8706665039062 95.70816040039062 664.78125 Z M 102.6935806274414 671.1317138671875 L 97.22520446777344 666.9393310546875 L 96.06815338134766 677.1724243164062 L 102.6935806274414 671.1317138671875 Z\",\n stroke: \"none\",\n fill: \"#fd8204\"\n})));\n\nvar SvgIllustrationPaperplane = function SvgIllustrationPaperplane(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Illustration\",\n width: 120.586,\n height: 120,\n viewBox: \"0 0 120.586 120\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_604\",\n \"data-name\": \"Group 604\",\n transform: \"translate(-4676 2165)\"\n }, _ref3, _ref4, _ref5, _ref6, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_596\",\n \"data-name\": \"Group 596\",\n transform: \"translate(4603.402 -2784.467)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1044\",\n \"data-name\": \"Path 1044\",\n d: \"M187.845,738.149s-.575-.054-1.291-2.321-4.355-14.2-4.355-14.2l28.933-18.374s1.67-1.014,1.611,0c0,0,.3.179-.6,1.014s-22.729,20.462-22.729,20.462\",\n transform: \"translate(-92.839 -59.825)\",\n fill: \"#fdb973\",\n opacity: 0.48,\n style: {\n isolation: \"isolate\"\n }\n }), _ref7, _ref8)));\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIllustrationPaperplane, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/Illustration_paperplane.4f468ebb.svg\";\nexport { ForwardRef as ReactComponent };","import React, {FC, Fragment, useCallback, useMemo} from 'react';\nimport {Form} from 'forms';\nimport {Button, Modal, Text} from 'components-lib';\nimport {useFormikContext} from 'formik';\nimport {CreateInstrumentFormFields} from '../CreateInstrumentForm';\nimport {useDebounce} from 'hooks';\ninterface IModalCloneInstrumentProps {\n isOpen: boolean;\n error: string;\n closeHandler: () => void;\n}\n\nexport const ModalCloneInstrument: FC<IModalCloneInstrumentProps> = ({isOpen, error, closeHandler}) => {\n const {resetForm} = useFormikContext();\n const debouncedReset = useDebounce(() => resetForm());\n\n const handleClose = useCallback(() => {\n closeHandler();\n debouncedReset();\n }, [debouncedReset, closeHandler]);\n\n const instrumentFields = useMemo(() => <CreateInstrumentFormFields />, []);\n\n return (\n <Modal disableBackdropClick isOpen={isOpen} handleClose={handleClose} title=\"Clone Instrument\" size=\"medium\">\n <Fragment>\n {error && <Text.Error>{error}</Text.Error>}\n {instrumentFields}\n </Fragment>\n <Fragment>\n <Button.Secondary clickHandler={handleClose} size=\"small\">\n Cancel\n </Button.Secondary>\n <Form.ButtonSubmit text=\"Clone\" size=\"small\" />\n </Fragment>\n </Modal>\n );\n};\n","import * as Yup from 'yup';\nimport {checkIfTypeStartsWithPreOrPostSessionFirstDigit, FormNameEnum} from 'filters-selections';\nimport {audienceStudentId, errorMessages, typeFeedbackId} from 'utils';\n\nexport const cloneInstrumentValidationSchema = Yup.object().shape({\n [FormNameEnum.instrumentName]: Yup.string().trim().required(errorMessages.instrumentNameRequired),\n [FormNameEnum.pillars]: Yup.number()\n .nullable()\n .when(FormNameEnum.isGeneralInstrument, {\n is: true,\n then: Yup.number().notRequired(),\n otherwise: Yup.number().nullable().required(errorMessages.pillarRequired),\n }),\n [FormNameEnum.instrumentType]: Yup.number()\n .nullable()\n .when(FormNameEnum.isGeneralInstrument, {\n is: true,\n then: Yup.number(),\n otherwise: Yup.number().nullable().required(errorMessages.instrumentTypeRequired),\n })\n .test('instrument-type-test', errorMessages.onlyGeneralAllowed, function (type) {\n const audience = this.parent[FormNameEnum.audience];\n const isGeneral = this.parent[FormNameEnum.isGeneralInstrument];\n\n if (!audience || isGeneral) return true;\n\n return !(audience !== audienceStudentId && type !== typeFeedbackId);\n }),\n [FormNameEnum.instrumentSubType]: Yup.number()\n .nullable()\n .when(FormNameEnum.isGeneralInstrument, {\n is: true,\n then: Yup.number(),\n otherwise: Yup.number().nullable(),\n })\n .test('instrument-sub-type-test', errorMessages.subTypeRequired, function () {\n const type = this.parent[FormNameEnum.instrumentType];\n const subType = this.parent[FormNameEnum.instrumentSubType];\n const isGeneral = this.parent[FormNameEnum.isGeneralInstrument];\n\n if (!isGeneral) {\n const isPreOrPostSession = !!type && checkIfTypeStartsWithPreOrPostSessionFirstDigit(type?.toString());\n\n if (isPreOrPostSession) {\n return !!subType;\n }\n }\n return true;\n }),\n [FormNameEnum.audience]: Yup.number()\n .nullable()\n .when(FormNameEnum.isGeneralInstrument, {\n is: true,\n then: Yup.number().notRequired(),\n otherwise: Yup.number().nullable().required(errorMessages.audienceRequired),\n }),\n [FormNameEnum.phase]: Yup.number()\n .nullable()\n .when(FormNameEnum.isGeneralInstrument, {\n is: true,\n then: Yup.number().notRequired(),\n otherwise: Yup.number().nullable().required(errorMessages.phaseRequired),\n }),\n [FormNameEnum.programs]: Yup.array()\n .of(Yup.number())\n .when(FormNameEnum.isGeneralInstrument, {\n is: true,\n then: Yup.array().of(Yup.number()).notRequired(),\n otherwise: Yup.array().of(Yup.number()).required(errorMessages.programRequired),\n }),\n [FormNameEnum.isGeneralInstrument]: Yup.boolean().notRequired(),\n});\n","import {FormNameEnum} from 'filters-selections';\nimport {Form} from 'forms';\nimport {IComponentWithChildren} from 'models';\nimport React from 'react';\nimport {cloneInstrumentValidationSchema} from './cloneInstrumentValidationSchema';\nimport {usePermissions} from 'permissions';\nimport {checkIfAreaAdmin} from '../../details/utils';\nimport {ICreateInstrumentFormData} from '../CreateInstrumentForm';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface ICloneInstrumentFormData extends ICreateInstrumentFormData {}\n\ninterface ICloneInstrumentFormProps extends IComponentWithChildren {\n submitHandler: (data: ICloneInstrumentFormData, actions: any) => void;\n}\n\nexport function CloneInstrumentForm({children, submitHandler}: ICloneInstrumentFormProps) {\n const {hasPermission} = usePermissions();\n const isAreaAdmin = checkIfAreaAdmin(hasPermission);\n\n const initialValues: ICloneInstrumentFormData = {\n [FormNameEnum.instrumentName]: '',\n [FormNameEnum.phase]: null,\n [FormNameEnum.instrumentType]: null,\n [FormNameEnum.instrumentSubType]: null,\n [FormNameEnum.audience]: null,\n [FormNameEnum.pillars]: null,\n [FormNameEnum.programs]: [],\n [FormNameEnum.isGeneralInstrument]: isAreaAdmin ? true : false,\n };\n\n return (\n <Form.Form<ICloneInstrumentFormData>\n initialValues={initialValues}\n validationSchema={cloneInstrumentValidationSchema}\n submitHandler={submitHandler}\n validateOnChange\n >\n {children}\n </Form.Form>\n );\n}\n","import React, {useCallback, useState} from 'react';\nimport {unwrapResult} from '@reduxjs/toolkit';\nimport {useDispatch} from 'react-redux';\nimport {useNavigate} from 'hooks';\nimport {IWithModal, IWithSetSubmitting} from 'models';\nimport {pages} from 'paths';\nimport {cloneInstrumentThunk} from '../../store';\nimport {mapInstrumentCreateModalMetadata} from '../../utils';\nimport {ICreateInstrumentFormData} from '../CreateInstrumentForm';\nimport {ModalCloneInstrument} from './ModalCloneInstrument';\nimport {CloneInstrumentForm} from '../CloneInstrumentForm';\n\ninterface IModalCloneInstrumentProps extends IWithModal {\n instrumentId: number;\n}\n\nexport function ModalCloneInstrumentWithForm({instrumentId, isOpen, setIsOpen}: IModalCloneInstrumentProps) {\n const dispatch = useDispatch();\n const {push, locationState} = useNavigate();\n const [error, setError] = useState<string>();\n\n const closeHandler = useCallback(() => setIsOpen(false), [setIsOpen]);\n\n const submitClickHandler = useCallback(\n (\n {\n instrumentName,\n audience,\n phase,\n pillars,\n programs,\n type,\n subType,\n isGeneralInstrument,\n }: ICreateInstrumentFormData,\n actions: IWithSetSubmitting\n ) => {\n const metaData = mapInstrumentCreateModalMetadata({\n instrumentName,\n audience,\n phase,\n pillars,\n programs,\n type,\n subType,\n isGeneralInstrument,\n });\n\n setError('');\n\n dispatch(cloneInstrumentThunk({instrumentId, metaData, isGeneral: isGeneralInstrument}))\n .then(unwrapResult)\n .then((response: number) => {\n setIsOpen(false);\n push(`${pages.adminPortal.instruments.detailsRoot}/${response}`, locationState);\n actions.setSubmitting(false);\n })\n .catch((error: Error) => {\n actions.setSubmitting(false);\n setError(error.message);\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [instrumentId, locationState, setIsOpen]\n );\n\n return (\n <CloneInstrumentForm submitHandler={submitClickHandler}>\n <ModalCloneInstrument isOpen={isOpen} error={error} closeHandler={closeHandler} />\n </CloneInstrumentForm>\n );\n}\n","import React, {useCallback} from 'react';\nimport {Button, Column, Modal, Row, Text} from 'components-lib';\nimport {ReactComponent as IllustrationPlane} from 'resources/images/instruments/Illustration_paperplane.svg';\nimport {ReactComponent as IllustrationTrash} from 'resources/images/instruments/Illustration_trash.svg';\nimport {IInstrumentDetails} from 'models';\nimport {pages} from 'paths';\nimport {ToastNotificationTypeEnum, useToastNotifications} from 'toast-notifications';\nimport {instrumentsMessages} from '../../../utils';\nimport {useAppDispatch, useNavigate} from 'hooks';\nimport {useInstruments} from 'admin/library/instruments/hooks';\nimport {deleteInstrumentThunk} from 'admin/library/instruments/store';\nimport {useInstrument} from '../../hooks';\nimport {ModalCloneInstrumentWithForm} from 'admin/library/instruments/components/ModalCloneInstrument/ModalCloneInstrumentWithForm';\n\ninterface IModalsInstrumentDetailsProps {\n template: IInstrumentDetails;\n isDeleteModalOpen: boolean;\n isPublishModalOpen: boolean;\n isCloneModalOpen: boolean;\n deleteModalOnClose: () => void;\n publishModalOnClose: () => void;\n setIsCloneModalOpen: (state: boolean) => void;\n fetchInstrumentById: (instrumentId: number) => void;\n}\n\nexport function ModalsInstrumentDetails({\n template,\n isDeleteModalOpen,\n deleteModalOnClose,\n isPublishModalOpen,\n publishModalOnClose,\n isCloneModalOpen,\n setIsCloneModalOpen,\n}: IModalsInstrumentDetailsProps) {\n const {goBackOptionally} = useNavigate();\n const dispatch = useAppDispatch();\n const {addToastNotification} = useToastNotifications();\n const {pageSaving, pageLoading, pageDeleting} = useInstruments();\n const {publishMasterTemplate} = useInstrument();\n\n const handleDeleteModalClose = useCallback(() => {\n deleteModalOnClose();\n }, [deleteModalOnClose]);\n\n const handleDeleteModalFinish = useCallback(() => {\n dispatch(deleteInstrumentThunk({instrumentId: template.templateId})).then(() => {\n deleteModalOnClose();\n goBackOptionally(pages.adminPortal.instruments.all);\n });\n }, [dispatch, deleteModalOnClose, goBackOptionally, template.templateId]);\n\n const handlePublishModalClose = useCallback(() => {\n publishModalOnClose();\n }, [publishModalOnClose]);\n\n const handlePublishModalFinish = async () => {\n if (template.isMetaDataValid) {\n const {templateId} = template;\n publishMasterTemplate(templateId, publishModalOnClose);\n } else {\n addToastNotification(instrumentsMessages.publishError, ToastNotificationTypeEnum.error);\n }\n };\n\n return (\n <>\n <Modal isOpen={isDeleteModalOpen} handleClose={handleDeleteModalClose} title=\"Delete Confirmation\" size=\"small\">\n <Column>\n <Row align=\"center\">\n <IllustrationTrash />\n <Text.Paragraph align=\"center\" withMargin>\n Are you sure you want to permanently delete instrument "{template?.templateName}"?\n </Text.Paragraph>\n <Text.Paragraph>This action cannot be undone!</Text.Paragraph>\n </Row>\n </Column>\n <>\n <Button.Secondary clickHandler={handleDeleteModalClose} size=\"small\">\n Cancel\n </Button.Secondary>\n <Button.Primary clickHandler={handleDeleteModalFinish} disabled={pageLoading || pageDeleting} size=\"small\">\n {pageDeleting ? 'Loading...' : 'Delete'}\n </Button.Primary>\n </>\n </Modal>\n\n <Modal\n isOpen={isPublishModalOpen}\n handleClose={handlePublishModalClose}\n title=\"Publish Confirmation\"\n size=\"small\"\n >\n <Column>\n <Row align=\"center\">\n <IllustrationPlane />\n <Text.Paragraph align=\"center\" withMargin>\n Are you sure you want to publish instrument "{template?.templateName}" with the current tags?\n </Text.Paragraph>\n </Row>\n </Column>\n <>\n <Button.Secondary clickHandler={handlePublishModalClose} size=\"small\">\n Cancel\n </Button.Secondary>\n <Button.Primary clickHandler={handlePublishModalFinish} size=\"small\" disabled={pageSaving}>\n {pageSaving ? 'Loading...' : 'Publish'}\n </Button.Primary>\n </>\n </Modal>\n\n <ModalCloneInstrumentWithForm\n instrumentId={template.templateId}\n isOpen={isCloneModalOpen}\n setIsOpen={setIsCloneModalOpen}\n />\n </>\n );\n}\n","import React from 'react';\nimport {\n ButtonPrimaryWithAdminAndLocalAreaPermissions,\n ButtonSecondaryWithAdminAndLocalAreaPermissions,\n} from 'admin/library/instruments/components';\nimport {useInstruments} from 'admin/library/instruments/hooks';\nimport {Button} from 'components-lib';\nimport {EntityStatusEnum} from 'enums';\nimport {Form} from 'forms';\nimport {ActiveModeEnum} from 'hooks';\nimport {PreviewDropdown} from '..';\n\ninterface IHeaderActionButtonsProps {\n instrumentId: number;\n status: EntityStatusEnum;\n editMode: ActiveModeEnum;\n isMasterInstrument: boolean;\n isGeneralTemplate: boolean;\n hasAssignmentResults: boolean;\n canEdit: boolean;\n canPublish?: boolean;\n parentId: number | null;\n valuesPristine?: boolean;\n previewClickHandler: () => void;\n previewWithAnswersClickHandler: () => void;\n updateModeClickHandler: () => void;\n cancelClickHandler: () => void;\n deleteModalOpenHandler: () => void;\n publishModalOpenHandler: () => void;\n cloneModalOpenHandler: () => void;\n exportGeneralClickHandler: () => void;\n}\n\nexport function HeaderActionButtons({\n status,\n editMode,\n isMasterInstrument,\n isGeneralTemplate,\n canEdit,\n canPublish,\n updateModeClickHandler,\n previewClickHandler,\n previewWithAnswersClickHandler,\n cancelClickHandler,\n deleteModalOpenHandler,\n publishModalOpenHandler,\n cloneModalOpenHandler,\n exportGeneralClickHandler,\n}: IHeaderActionButtonsProps) {\n const {pageSaving} = useInstruments();\n\n const isLive = status === EntityStatusEnum.live;\n const isEditMode = editMode === ActiveModeEnum.edit;\n\n const shouldDisablePublish = !canPublish || pageSaving || isLive;\n const showEditAndPublishButton = canEdit && !isLive;\n const showCloneButton = isLive && isMasterInstrument;\n\n if (isEditMode) {\n return (\n <div>\n <Button.Secondary clickHandler={cancelClickHandler}>Cancel</Button.Secondary>\n <Form.ButtonSubmit text=\"Save\" size=\"large\" disabled={pageSaving} />\n </div>\n );\n }\n\n /*\n * A published template could be un-published only if it doesn't have assignment results and\n * if it has an parentId\n */\n\n return (\n <div>\n {canEdit && (\n <ButtonSecondaryWithAdminAndLocalAreaPermissions clickHandler={deleteModalOpenHandler} disabled={pageSaving}>\n Delete\n </ButtonSecondaryWithAdminAndLocalAreaPermissions>\n )}\n {showEditAndPublishButton && (\n <ButtonSecondaryWithAdminAndLocalAreaPermissions clickHandler={updateModeClickHandler} disabled={pageSaving}>\n Edit\n </ButtonSecondaryWithAdminAndLocalAreaPermissions>\n )}\n\n <PreviewDropdown\n previewClickHandler={previewClickHandler}\n previewWithAnswersClickHandler={previewWithAnswersClickHandler}\n />\n\n {isGeneralTemplate && (\n <ButtonSecondaryWithAdminAndLocalAreaPermissions clickHandler={exportGeneralClickHandler}>\n Export Data\n </ButtonSecondaryWithAdminAndLocalAreaPermissions>\n )}\n {showCloneButton && (\n <ButtonPrimaryWithAdminAndLocalAreaPermissions clickHandler={cloneModalOpenHandler} disabled={pageSaving}>\n Clone\n </ButtonPrimaryWithAdminAndLocalAreaPermissions>\n )}\n {showEditAndPublishButton && (\n <ButtonPrimaryWithAdminAndLocalAreaPermissions\n clickHandler={publishModalOpenHandler}\n disabled={shouldDisablePublish}\n >\n Publish\n </ButtonPrimaryWithAdminAndLocalAreaPermissions>\n )}\n </div>\n );\n}\n","import React, {useEffect, useMemo} from 'react';\nimport {useFormikContext} from 'formik';\nimport {useGeneralInstrumentMeta} from 'admin/library/instruments/hooks';\nimport {FormNameEnum, SelectionEnum, SelectionListItems} from 'filters-selections';\n\ninterface ISidebarInstrumentDetailsEditProps {\n isGeneralTemplate: boolean;\n disableAll?: boolean;\n}\n\nexport function SidebarInstrumentDetailsEdit({isGeneralTemplate, disableAll}: ISidebarInstrumentDetailsEditProps) {\n const {setFieldValue} = useFormikContext();\n const {audienceType, feedbackType} = useGeneralInstrumentMeta();\n\n useEffect(() => {\n if (isGeneralTemplate) {\n setFieldValue(FormNameEnum.instrumentType, feedbackType?.id);\n setFieldValue(FormNameEnum.audience, audienceType?.id);\n }\n }, [isGeneralTemplate, feedbackType.id, audienceType.id, setFieldValue]);\n\n const selectionList = useMemo(() => {\n if (isGeneralTemplate) {\n return [SelectionEnum.InstrumentType, SelectionEnum.Audience];\n }\n\n return [\n SelectionEnum.Pillar,\n SelectionEnum.ProgramMultiSelection,\n SelectionEnum.Phase,\n SelectionEnum.InstrumentType,\n SelectionEnum.InstrumentSubType,\n SelectionEnum.Audience,\n ];\n }, [isGeneralTemplate]);\n\n return <SelectionListItems list={selectionList} disableAll={isGeneralTemplate || disableAll} />;\n}\n","import React, {Fragment} from 'react';\nimport {SidebarAuthor, SidebarTagWithValue, SidebarTitle} from 'admin/components';\nimport {useGeneralInstrumentMeta} from 'admin/library/instruments/hooks';\nimport {Divider} from 'components-lib';\nimport {IInstrumentDetails} from 'models';\ninterface ISidebarInstrumentDetailsViewProps {\n instrument: IInstrumentDetails;\n}\n\nexport function SidebarInstrumentDetailsView({instrument}: ISidebarInstrumentDetailsViewProps) {\n const {isGeneralTemplate, pillar, programs, phase, type, audience, createdBy, createdOn} = instrument;\n const {audienceType, feedbackType} = useGeneralInstrumentMeta();\n\n if (isGeneralTemplate) {\n return (\n <Fragment>\n <SidebarTagWithValue tag=\"Type\" text={feedbackType?.displayText} />\n <SidebarTagWithValue tag=\"Audience\" text={audienceType?.displayText} />\n <Divider.Horizontal />\n <SidebarTitle text=\"Details\" />\n <SidebarAuthor author={createdBy} date={createdOn} />\n </Fragment>\n );\n }\n\n return (\n <Fragment>\n <SidebarTagWithValue tag=\"Pillar\" text={pillar?.name} />\n {programs?.map((program) => (\n <SidebarTagWithValue key={program.id} tag=\"Program\" text={program?.name} />\n ))}\n <SidebarTagWithValue tag=\"Phase\" text={phase?.displayText} />\n <SidebarTagWithValue tag=\"Type\" text={type?.displayText} />\n <SidebarTagWithValue tag=\"Audience\" text={audience?.displayText} />\n <Divider.Horizontal />\n <SidebarTitle text=\"Details\" />\n <SidebarAuthor author={createdBy} date={createdOn} />\n </Fragment>\n );\n}\n","import React from 'react';\nimport {SidebarTitle} from 'admin/components';\nimport {AdminRolesWithLocalAreaInstruments} from 'admin/library/instruments/enums';\nimport {Sidebar} from 'components-lib';\nimport {ActiveModeEnum} from 'hooks';\nimport {IInstrumentDetails} from 'models';\nimport {usePermissions} from 'permissions';\nimport {SidebarInstrumentDetailsEdit} from './SidebarInstrumentDetailsEdit';\nimport {SidebarInstrumentDetailsView} from './SidebarInstrumentDetailsView';\n\ninterface ISidebarInstrumentsDetails {\n instrument: IInstrumentDetails;\n activeMode: ActiveModeEnum;\n disableAll?: boolean;\n}\n\nexport function SidebarInstrumentDetails({instrument, activeMode, disableAll = false}: ISidebarInstrumentsDetails) {\n const {hasPermission} = usePermissions();\n\n if (!instrument) {\n return null;\n }\n\n const isEditMode = activeMode === ActiveModeEnum.edit;\n const {isMasterTemplate, isGeneralTemplate} = instrument;\n const canEdit = hasPermission(AdminRolesWithLocalAreaInstruments);\n const shouldRenderEdit = isMasterTemplate && isEditMode && canEdit;\n\n return (\n <Sidebar.Base>\n <SidebarTitle text=\"Tags\" />\n {shouldRenderEdit ? (\n <SidebarInstrumentDetailsEdit isGeneralTemplate={isGeneralTemplate} disableAll={disableAll} />\n ) : (\n <SidebarInstrumentDetailsView instrument={instrument} />\n )}\n </Sidebar.Base>\n );\n}\n","import React, {FC, useMemo} from 'react';\nimport {Dropdown, MenuItem} from 'admin/components';\nimport {IDropdownListOptions} from 'models';\nimport {usePermissions} from 'permissions';\nimport {AllRolesExceptStudent} from 'admin/library/instruments/enums';\n\ninterface IPreviewDropdownProps {\n justify?: 'center' | 'flex-start' | 'flex-end' | 'space-between';\n previewClickHandler: () => void;\n previewWithAnswersClickHandler: () => void;\n}\n\nexport const PreviewDropdown: FC<IPreviewDropdownProps> = ({\n justify = 'flex-start',\n previewClickHandler,\n previewWithAnswersClickHandler,\n}) => {\n const {hasPermission} = usePermissions();\n const shouldRenderPreviewWithAnswers = hasPermission(AllRolesExceptStudent);\n\n const previewListOptions = useMemo(\n () => [\n {\n name: 'Preview',\n clickHandler: () => previewClickHandler(),\n },\n ],\n [previewClickHandler]\n ) as IDropdownListOptions[];\n\n if (shouldRenderPreviewWithAnswers && previewListOptions.length < 2) {\n previewListOptions.push({\n name: 'Preview with answers',\n clickHandler: () => previewWithAnswersClickHandler(),\n });\n }\n\n return (\n <Dropdown text=\"Preview\" justify={justify} withTextButton={false} withSecondaryButton withRow={false}>\n {() =>\n previewListOptions.map(({name, clickHandler}: IDropdownListOptions, index: number) => (\n <MenuItem key={index} clickHandlerCallback={clickHandler}>\n {name}\n </MenuItem>\n ))\n }\n </Dropdown>\n );\n};\n","import React, {Fragment, useCallback, useEffect, useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Column, Loading, PageViewHeader, Row, Text} from 'components-lib';\nimport {Form} from 'forms';\nimport {SubtitlePageViewHeader} from 'admin/components';\nimport {EntityHeaderInstructionalText, EntityHeaderName, EntityItems, Status} from 'admin/library/components';\nimport {ButtonPrimaryWithAdminAndLocalAreaPermissions} from '../components';\nimport {PageLayoutTwoCol, PageLayoutWithFixedAreas} from 'layout';\nimport {\n Builder,\n InstrumentEditHeaderAndFooter,\n InstrumentEditInstructionalText,\n InstrumentEditName,\n ModalInfoLinkItem,\n} from '../builder/components';\nimport {HeaderActionButtons, ModalEditClassRelatedInstrument, SidebarInstrumentDetails} from './components';\nimport {ModalsInstrumentDetails} from './components/modals';\nimport {EntityStatusEnum} from 'enums';\nimport {AdminRolesInstruments, AdminRolesWithLocalAreaInstruments} from '../enums';\nimport {FormNameEnum} from 'filters-selections';\nimport {IInstrumentItem} from 'models';\nimport {withRole} from 'permissions';\nimport {useBuilder} from '../builder/hooks';\nimport {ActiveModeEnum, useModal} from 'hooks';\nimport {getFormValue} from 'admin/library/utils';\nimport {IInstrumentDetailsFormBaseValues, instrumentDetailsFormBaseValidationSchema, getInstrumentLogo} from './utils';\nimport {getInstrumentIcon} from '../utils';\nimport {FEEDBACK_NUM, POST_SESSION_NUM, PRE_SESSION_FIRST_DIGIT, PRE_SESSION_NUM} from 'utils';\nimport {useInstrumentItem, usePretestItem} from '../hooks';\nimport {useInstrument, useInstrumentIdParams, useInstrumentModals} from './hooks';\nimport {FormikHelpers} from 'formik';\n\nexport const InstrumentDetailsView = () => {\n const classes = useStyles();\n const {instrumentId} = useInstrumentIdParams();\n const {builderItems, moveBuilderItem, deleteBuilderItem} = useBuilder();\n const {possiblePretestItems, getPossiblePretestItems} = usePretestItem();\n const {currentItem, setCurrentItem} = useInstrumentItem();\n const {\n isOpen: isEditClassRelatedInstrumentModalOpen,\n setIsOpen: setIsEditClassRelatedInstrumentModalOpen,\n } = useModal();\n const {isOpen: isInfoLinkItemModalOpen, setIsOpen: setIsInfoLinkItemModalOpen} = useModal();\n\n const {\n activeMode,\n fetchInstrumentById,\n exportGeneralClickHandler,\n activeTemplate,\n pageLoading,\n updateInstrument,\n backButtonClickHandler,\n setActiveModeHandler,\n classRelatedInstrumentEditConfirmationHandler,\n editItemsClickHandler,\n previewClickHandler,\n previewWithAnswersClickHandler,\n } = useInstrument(instrumentId);\n\n const {\n isDeleteModalOpen,\n setIsCloneModalOpen,\n handleDeleteModalOpen,\n handleDeleteModalClose,\n isPublishModalOpen,\n handlePublishModalOpen,\n handlePublishModalClose,\n isCloneModalOpen,\n handleCloneModalOpen,\n } = useInstrumentModals();\n\n const isViewMode = activeMode === ActiveModeEnum.view;\n const isEditMode = activeMode === ActiveModeEnum.edit;\n\n const handleLinkModalOpen = useCallback(() => setIsInfoLinkItemModalOpen(true), [setIsInfoLinkItemModalOpen]);\n\n const EditTextWithPermissions = withRole(AdminRolesInstruments, '')(Text.Caption);\n\n const EditHeaderAndFooterWithPermissions = withRole(\n AdminRolesWithLocalAreaInstruments,\n ''\n )(InstrumentEditHeaderAndFooter);\n\n // Renew the instrument details on each update. Dismiss handler in the builder will\n // clear instrument items on a url change. See: JADF-1719\n\n useEffect(() => {\n fetchInstrumentById(instrumentId);\n }, [fetchInstrumentById, instrumentId]);\n\n useEffect(() => {\n if (!possiblePretestItems.length) {\n getPossiblePretestItems(instrumentId);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [getPossiblePretestItems, instrumentId]);\n\n const initialValues: IInstrumentDetailsFormBaseValues = useMemo(() => {\n const {\n pillar,\n programs,\n phase,\n type,\n audience,\n isGeneralTemplate,\n templateName,\n instructionText,\n header,\n footer,\n } = activeTemplate ?? {\n pillars: null,\n programs: [],\n phase: null,\n type: null,\n subType: null,\n audience: null,\n templateName: '',\n instructionText: '',\n headerLogo: null,\n footerLogo: null,\n };\n\n let newType = null;\n let newSubType = null;\n\n if (!!type && type?.id > PRE_SESSION_NUM && type?.id < FEEDBACK_NUM) {\n newType = type?.id.toString().startsWith(PRE_SESSION_FIRST_DIGIT) ? PRE_SESSION_NUM : POST_SESSION_NUM;\n newSubType = type?.id;\n }\n\n return {\n [FormNameEnum.templateName]: templateName,\n [FormNameEnum.headerLogo]: header?.byteArray && getInstrumentLogo(header),\n [FormNameEnum.footerLogo]: footer?.byteArray && getInstrumentLogo(footer),\n [FormNameEnum.instructionText]: instructionText,\n [FormNameEnum.pillars]: pillar?.id,\n [FormNameEnum.programs]: getFormValue(programs, 'id'),\n [FormNameEnum.phase]: phase?.id,\n [FormNameEnum.instrumentType]: !!newType ? newType : type?.id,\n [FormNameEnum.instrumentSubType]: newSubType,\n [FormNameEnum.audience]: audience?.id,\n [FormNameEnum.isGeneralInstrument]: isGeneralTemplate,\n };\n }, [activeTemplate]);\n\n const submitHandler = useCallback(\n (data: IInstrumentDetailsFormBaseValues, {setSubmitting}: FormikHelpers<any>) =>\n updateInstrument(data, setSubmitting),\n [updateInstrument]\n );\n\n const updateModeClickHandler = useCallback(() => {\n /*\n * Show confirmation for un-publishing only\n * if the the status of the instrument is draft and there is a parentId in the instrument\n */\n if (activeTemplate?.parentId && activeTemplate?.status === EntityStatusEnum.live) {\n setIsEditClassRelatedInstrumentModalOpen(true);\n return;\n }\n\n setActiveModeHandler();\n }, [activeTemplate, setIsEditClassRelatedInstrumentModalOpen, setActiveModeHandler]);\n\n const {isGeneralTemplate, isMasterTemplate, status, elements, templateName, instructionText} = activeTemplate ?? {\n isMasterTemplate: null,\n templateId: null,\n status: null,\n elements: [],\n templateName: null,\n instructionText: '',\n };\n\n const headerSubHeading = useMemo(() => {\n const icon = getInstrumentIcon(!!isGeneralTemplate, isMasterTemplate);\n return (\n <Fragment>\n <SubtitlePageViewHeader> / ID: {instrumentId}</SubtitlePageViewHeader>\n {icon}\n </Fragment>\n );\n }, [isMasterTemplate, isGeneralTemplate, instrumentId]);\n\n const headerAction = useMemo(\n () => (\n <HeaderActionButtons\n instrumentId={instrumentId}\n status={status}\n editMode={activeMode}\n canPublish={activeTemplate?.canPublish}\n canEdit={activeTemplate?.canEdit}\n isMasterInstrument={activeTemplate?.isMasterTemplate}\n isGeneralTemplate={activeTemplate?.isGeneralTemplate}\n hasAssignmentResults={activeTemplate?.hasAssignmentResults}\n parentId={activeTemplate?.parentId}\n cancelClickHandler={setActiveModeHandler}\n previewClickHandler={previewClickHandler}\n previewWithAnswersClickHandler={previewWithAnswersClickHandler}\n updateModeClickHandler={updateModeClickHandler}\n cloneModalOpenHandler={handleCloneModalOpen}\n deleteModalOpenHandler={handleDeleteModalOpen}\n publishModalOpenHandler={handlePublishModalOpen}\n exportGeneralClickHandler={exportGeneralClickHandler}\n />\n ),\n [\n instrumentId,\n status,\n activeMode,\n activeTemplate,\n setActiveModeHandler,\n previewClickHandler,\n updateModeClickHandler,\n previewWithAnswersClickHandler,\n exportGeneralClickHandler,\n handleCloneModalOpen,\n handleDeleteModalOpen,\n handlePublishModalOpen,\n ]\n );\n\n const header = useMemo(\n () =>\n !pageLoading && (\n <PageViewHeader\n heading=\"Instrument\"\n subHeading={headerSubHeading}\n extraHeading={<Status status={status} />}\n action={headerAction}\n withBackButton\n backButtonClickHandler={backButtonClickHandler}\n />\n ),\n [status, backButtonClickHandler, headerAction, headerSubHeading, pageLoading]\n );\n\n const sidebar = useMemo(\n () => (\n <Fragment>\n {!pageLoading && <SidebarInstrumentDetails instrument={activeTemplate} activeMode={activeMode} />}\n </Fragment>\n ),\n [activeTemplate, activeMode, pageLoading]\n );\n\n const renderItems = useMemo(\n () => (\n <Fragment>\n {isEditMode ? (\n <Builder items={builderItems} />\n ) : (\n <EntityItems<IInstrumentItem>\n items={elements}\n itemPrefixText=\"Item\"\n handleLinkModalOpen={handleLinkModalOpen}\n setCurrentItem={setCurrentItem}\n />\n )}\n </Fragment>\n ),\n [isEditMode, builderItems, elements, handleLinkModalOpen, setCurrentItem]\n );\n\n const instrumentContent = useMemo(() => {\n return (\n <PageLayoutWithFixedAreas headerSize=\"small\" header={header}>\n <Column className={classes.column}>\n {pageLoading ? (\n <Loading />\n ) : (\n <Column sm={12} md={12} lg={12} xl={12}>\n {isEditMode ? <InstrumentEditName /> : <EntityHeaderName name={templateName} />}\n {isEditMode ? (\n <InstrumentEditInstructionalText />\n ) : (\n <EntityHeaderInstructionalText instructionText={instructionText} />\n )}\n\n {isEditMode && (\n <Row justify=\"flex-start\">\n <ButtonPrimaryWithAdminAndLocalAreaPermissions\n size=\"small\"\n clickHandler={editItemsClickHandler}\n className={classes.editItemsButton}\n >\n Edit Items\n </ButtonPrimaryWithAdminAndLocalAreaPermissions>\n </Row>\n )}\n <Row justify=\"flex-start\" classes={{root: classes.logoGroup}}>\n {isEditMode && <EditHeaderAndFooterWithPermissions />}\n </Row>\n\n <Row justify=\"flex-start\">\n {elements.length > 0 ? (\n <Fragment>{renderItems}</Fragment>\n ) : (\n <Fragment>\n {isViewMode && <EditTextWithPermissions>Click Edit to Add Items</EditTextWithPermissions>}\n </Fragment>\n )}\n </Row>\n </Column>\n )}\n </Column>\n </PageLayoutWithFixedAreas>\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n activeMode,\n header,\n classes.column,\n classes.editItemsButton,\n pageLoading,\n templateName,\n instructionText,\n editItemsClickHandler,\n elements,\n builderItems,\n deleteBuilderItem,\n moveBuilderItem,\n ]);\n\n return (\n <Fragment>\n <Form.Form<IInstrumentDetailsFormBaseValues>\n initialValues={initialValues}\n validationSchema={instrumentDetailsFormBaseValidationSchema}\n submitHandler={submitHandler}\n >\n <PageLayoutTwoCol sidebar={sidebar} content={instrumentContent} />\n </Form.Form>\n {!!activeTemplate && (\n <>\n <ModalsInstrumentDetails\n template={activeTemplate}\n isCloneModalOpen={isCloneModalOpen}\n isDeleteModalOpen={isDeleteModalOpen}\n isPublishModalOpen={isPublishModalOpen}\n setIsCloneModalOpen={setIsCloneModalOpen}\n deleteModalOnClose={handleDeleteModalClose}\n publishModalOnClose={handlePublishModalClose}\n fetchInstrumentById={fetchInstrumentById}\n />\n\n <ModalEditClassRelatedInstrument\n isOpen={isEditClassRelatedInstrumentModalOpen}\n setIsOpen={setIsEditClassRelatedInstrumentModalOpen}\n confirmHandler={classRelatedInstrumentEditConfirmationHandler}\n />\n </>\n )}\n <ModalInfoLinkItem\n linkedQuestionAnswerStackId={currentItem?.linkedQuestionAnswerStackId}\n isOpen={isInfoLinkItemModalOpen}\n setIsOpen={setIsInfoLinkItemModalOpen}\n />\n </Fragment>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n column: {\n flex: `1 0 auto`,\n },\n editItemsButton: {\n marginTop: theme.spacing(3),\n marginBottom: theme.spacing(3),\n marginLeft: 0,\n marginRight: 0,\n },\n logoGroup: {\n marginBottom: theme.spacing(3),\n },\n}));\n","export const learningPathsCreateReducer = {};\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {learningPathsApi} from 'api';\nimport {ICreateUpdateLearningPathApiResponse, ICreateLearningPathPayload} from 'models/resources/learning-paths';\n\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\n\nexport const createLearningPathThunk: any = createAsyncThunk<\n ICreateUpdateLearningPathApiResponse,\n ICreateLearningPathPayload\n>(`${prefix} createLearningPath`, async (payload: ICreateLearningPathPayload, {dispatch, rejectWithValue}) => {\n try {\n const response = await learningPathsApi.createLearningPath(payload);\n dispatch(toastNotificationManager.createSuccessToastAction('Learning path was created successfully'));\n return response.data;\n } catch (error) {\n dispatch(toastNotificationManager.createErrorToastAction(error.messages));\n return rejectWithValue({error});\n }\n});\n","export const prefix = '[Create / Learning Path]';\n","import {createLearningPathThunk} from './thunks';\nimport {ILearningPathsCreateStoreState} from './ILearningPathsCreateStoreState';\n\nexport const learningPathsCreateExtraReducer = {\n // createLearningPathThunk\n [createLearningPathThunk.fulfilled]: (state: ILearningPathsCreateStoreState) => {\n state.page.loading = false;\n },\n [createLearningPathThunk.pending]: (state: ILearningPathsCreateStoreState) => {\n state.page.loading = true;\n },\n [createLearningPathThunk.rejected]: (state: ILearningPathsCreateStoreState) => {\n state.page.loading = false;\n },\n};\n","import {createSlice} from '@reduxjs/toolkit';\nimport {learningPathsCreateInitialState} from './learningPathsCreate.initialState';\nimport {learningPathsCreateReducer} from './learningPathsCreate.reducer';\nimport {learningPathsCreateExtraReducer} from './learningPathsCreateExtra.reducer';\n\nexport const learningPathsCreateSlice = createSlice({\n name: 'learningPathsCreateSlice',\n initialState: learningPathsCreateInitialState,\n reducers: learningPathsCreateReducer,\n extraReducers: learningPathsCreateExtraReducer,\n});\n\nexport const {actions: learningPathsCreateSitesActions} = learningPathsCreateSlice;\n","import {ILearningPathsCreateStoreState} from './ILearningPathsCreateStoreState';\n\nexport const learningPathsCreateInitialState: ILearningPathsCreateStoreState = {\n page: {\n loading: false,\n },\n};\n","import {createSelector} from '@reduxjs/toolkit';\nimport {TStateStore} from 'store';\n\nconst getLearningPathsState = (state: TStateStore) => state.resources.learningPaths;\n\nexport const getLearningPathsCreateState = createSelector(\n getLearningPathsState,\n (learningPaths) => learningPaths.create\n);\n\nexport const learningPathCreatePageLoadingSelector = createSelector(\n getLearningPathsCreateState,\n (learningPathCreate) => learningPathCreate.page.loading\n);\n","export enum ProgramsClassesOrderingEnum {\n Class = 'Class',\n BCRMClassNumber = 'BCRMClassNumber',\n SchoolName = 'SchoolName',\n NumberOfStudents = 'StudentCount',\n}\n","export enum IReportApiEnum {\n ImpactSummaryReport = 'ImpactSummaryReport',\n AchievementSummaryReport = 'AchievementSummaryReport',\n StudentGradebookReport = 'StudentGradebookReport',\n StudentAchievementReport = 'StudentAchievementReport',\n}\n","export enum GoogleSiteListSortNameEnum {\n NAME_ASC = 'Name: A-Z',\n NAME_DESC = 'Name: Z-A',\n LAST_MODIFIED_DATE_ASC = 'Last Modified Date: Asc',\n LAST_MODIFIED_DATE_DESC = 'Last Modified Date: Desc',\n}\n","export enum ItemImportActiveStepEnum {\n First = 1,\n Second = 2,\n Third = 3,\n}\n","export enum FileFieldTableEnum {\n FileFieldName = 'fileFieldName',\n SystemFieldName = 'systemFieldName',\n Error = 'error',\n Option = 'option',\n}\n","export enum ISystemFieldOptionEnum {\n Required = 'Required',\n Optional = 'Optional',\n}\n","export enum MappingTableLabelEnum {\n SystemFieldName = 'System field name',\n RequiredField = '',\n FileFieldName = 'File field name',\n}\n","export const UploaderActionTypes = {\n SET_OPEN_UPLOAD_MODAL: 'open:upload:modal',\n SET_CLOSE_UPLOAD_MODAL: 'close:upload:modal',\n SET_FILE_UPLOAD_PERCENT: 'set:file:upload:percent',\n SET_UPLOAD_FILE_PROGRESS: 'set:upload:file:progress',\n SET_UPLOADED_FILE_STATUS: 'set:uploaded:file:status',\n REMOVE_FILE_FROM_UPLOAD_MANAGER: 'remove:file:from:upload:manager',\n SET_CLOSE_NOTIFICATION_MANAGER: 'close:notification:manager',\n SET_RESOURCE_TYPE_UPLOAD_MODAL: 'set:resource:upload:modal',\n SET_IS_FILE_ATTACHED: 'set:is:file:attached',\n SET_FILE_FOR_UPLOAD: 'set:file:for:upload',\n SET_FILE_TO_UPLOAD: 'set:file:to:upload',\n RESET_FILE_FOR_UPLOAD: 'reset:file:for:upload',\n RESET_IS_FILE_ATTACHED: 'reset:is:file:attached',\n RESET_RESOURCE_TYPE_UPLOAD_MODAL: 'reset:resource:upload:modal',\n CANCEL_FILE_UPLOAD: 'cancel:file:upload',\n\n POST_UPLOAD_FILE_REQUEST: 'upload:file:request',\n POST_UPLOAD_FILE_SUCCESS: 'upload:file:success',\n POST_UPLOAD_FILE_ERROR: 'upload:file:error',\n};\n","import {UploaderActionTypes} from './../uploader.types';\nimport {IUploadFile} from './../../models/IUploadFile';\n\nexport function setIsFileAttached(isValidFile: boolean) {\n return {\n type: UploaderActionTypes.SET_IS_FILE_ATTACHED,\n payload: isValidFile,\n };\n}\n\nexport function resetIsFileAttached() {\n return {\n type: UploaderActionTypes.RESET_IS_FILE_ATTACHED,\n };\n}\n\nexport function setUploadProgress(updatedFileUpload: IUploadFile) {\n return {\n type: UploaderActionTypes.SET_UPLOAD_FILE_PROGRESS,\n payload: updatedFileUpload,\n };\n}\n\nexport function removeFileFromUploadManager(id: string) {\n return {\n type: UploaderActionTypes.REMOVE_FILE_FROM_UPLOAD_MANAGER,\n payload: id,\n };\n}\n\nexport function setUploadFileStatus(name: string, status) {\n return {\n type: UploaderActionTypes.SET_UPLOADED_FILE_STATUS,\n payload: {name, status},\n };\n}\n\nexport function cancelUpload(id: string) {\n return {\n type: UploaderActionTypes.CANCEL_FILE_UPLOAD,\n payload: id,\n };\n}\n","import {TStateStore} from 'store';\n\nexport function getFilesNotificationManager(state: TStateStore) {\n return state.upload.notificationManager.files;\n}\n","import {IAction} from '../../../models/interfaces/IAction';\nimport {createReducer} from 'redux-create-reducer';\nimport {IUploaderState} from '../models';\nimport {UploaderActionTypes} from './uploader.types';\nimport {updateFileUploadPercent, updateUploadFileStatus, markCancelFileUpload, addFileToUpload} from '../utils';\n\nconst initialUploadReducer: IUploaderState = {\n error: {},\n notificationManager: {\n isOpen: false,\n files: [],\n },\n};\n\nexport const uploaderReducer = createReducer<IUploaderState, IAction>(initialUploadReducer, {\n [UploaderActionTypes.SET_UPLOAD_FILE_PROGRESS]: (state, action) => {\n return {\n ...state,\n notificationManager: {\n ...state.notificationManager,\n files: updateFileUploadPercent(state.notificationManager.files, action.payload),\n },\n };\n },\n [UploaderActionTypes.SET_UPLOADED_FILE_STATUS]: (state, action) => {\n return {\n ...state,\n notificationManager: {\n ...state.notificationManager,\n files: updateUploadFileStatus(state.notificationManager.files, action.payload),\n },\n };\n },\n [UploaderActionTypes.SET_CLOSE_NOTIFICATION_MANAGER]: (state) => {\n return {\n ...state,\n notificationManager: {\n ...state.notificationManager,\n isOpen: false,\n },\n };\n },\n [UploaderActionTypes.REMOVE_FILE_FROM_UPLOAD_MANAGER]: (state, action) => {\n return {\n ...state,\n notificationManager: {\n ...state.notificationManager,\n files: state.notificationManager.files.filter((f) => f.id !== action.payload),\n },\n };\n },\n [UploaderActionTypes.CANCEL_FILE_UPLOAD]: (state, action) => {\n return {\n ...state,\n notificationManager: {\n ...state.notificationManager,\n files: markCancelFileUpload(state.notificationManager.files, action.payload),\n },\n };\n },\n\n [UploaderActionTypes.POST_UPLOAD_FILE_REQUEST]: (state, action) => {\n return {\n ...state,\n isLoading: true,\n notificationManager: {\n ...state.notificationManager,\n files: addFileToUpload(state.notificationManager.files, action.payload),\n },\n };\n },\n});\n","import {EntitiesPerPageEnum, SortingOrderEnum} from 'enums';\nimport {IProgramClassesFilter} from 'models';\nimport {FilterNamesEnum, ProgramsClassesOrderingEnum} from '../enums';\nimport {IProgramClassesState} from './IProgramClassesState';\n\nconst filterDefault: IProgramClassesFilter = {\n [FilterNamesEnum.SEARCH_BY_NAME]: '',\n [FilterNamesEnum.AREAS]: [],\n [FilterNamesEnum.EDUCATORS]: [],\n [FilterNamesEnum.SCHOOL_NAMES]: [],\n [FilterNamesEnum.DISTRICTS]: [],\n [FilterNamesEnum.START_DATE]: null,\n [FilterNamesEnum.END_DATE]: null,\n [FilterNamesEnum.YEARS]: [],\n [FilterNamesEnum.ONLY_VIRTUAL_CLASSES]: null,\n};\n\nexport const programClassesInitialState: IProgramClassesState = {\n pool: {\n result: [],\n entities: {byId: {}},\n },\n filter: filterDefault,\n page: {\n loading: false,\n },\n sortOrder: {\n order: ProgramsClassesOrderingEnum.Class,\n sort: SortingOrderEnum.ASC,\n },\n pagination: {\n currentPage: 1,\n totalCount: 0,\n perPage: EntitiesPerPageEnum.FIFTY,\n },\n};\n","import {IActionFulfilled, IProgramClassesFilter, IProgramClassesSortOrder} from 'models';\nimport {cloneDeep} from 'utils';\n\nimport {IProgramClassesState} from './IProgramClassesState';\nimport {programClassesInitialState} from './programClasses.initialState';\n\nexport const programClassesReducer = {\n setFilter: (state: IProgramClassesState, action: IActionFulfilled<null, IProgramClassesFilter>) => {\n state.filter = action.payload;\n resetPagination(state);\n },\n\n resetFilter: (state: IProgramClassesState) => {\n state.filter = cloneDeep(programClassesInitialState.filter);\n resetPagination(state);\n },\n\n setCurrentPage: (state: IProgramClassesState, action: IActionFulfilled<null, number>) => {\n state.pagination.currentPage = action.payload;\n },\n\n setPerPage: (state: IProgramClassesState, action: IActionFulfilled<null, number>) => {\n state.pagination.perPage = action.payload;\n resetPagination(state);\n },\n\n setSortOrderProgramClasses: (\n state: IProgramClassesState,\n action: IActionFulfilled<null, IProgramClassesSortOrder>\n ) => {\n state.sortOrder = action.payload;\n resetPagination(state);\n },\n};\n\nconst resetPagination = (state: IProgramClassesState) => {\n state.pagination.currentPage = programClassesInitialState.pagination.currentPage;\n state.pagination.totalCount = programClassesInitialState.pagination.totalCount;\n};\n","import {schema as Schema} from 'normalizr';\n\nexport const poolListEntity = new Schema.Entity('byId', {}, {idAttribute: 'id'});\nexport const poolListSchema = new Schema.Array(poolListEntity);\n","import {IActionFulfilled, IGetPageOfProgramClassesResponse} from 'models';\nimport {normalize} from 'normalizr';\nimport {isObject} from 'utils';\nimport {IProgramClassesState} from './IProgramClassesState';\nimport {poolListSchema} from './normalizationSchemas';\nimport {fetchProgramClassesPagedThunk} from './thunks';\n\nexport const programClassesExtraReducer = {\n [fetchProgramClassesPagedThunk.fulfilled]: (\n state: IProgramClassesState,\n action: IActionFulfilled<null, IGetPageOfProgramClassesResponse>\n ) => {\n if (isObject(action.payload)) {\n state.pool = normalize(action.payload.classes, poolListSchema);\n state.pagination.totalCount = action.payload.totalCount;\n }\n\n state.page.loading = false;\n },\n [fetchProgramClassesPagedThunk.pending]: (state: IProgramClassesState) => {\n state.page.loading = true;\n },\n [fetchProgramClassesPagedThunk.rejected]: (state: IProgramClassesState) => {\n // TODO handle errors\n state.page.loading = false;\n },\n};\n","import {createSlice} from '@reduxjs/toolkit';\nimport {programClassesInitialState} from './programClasses.initialState';\nimport {programClassesReducer} from './programClasses.reducer';\nimport {programClassesExtraReducer} from './programClassesExtra.reducer';\n\nexport const programClassesSlice = createSlice({\n name: 'instruments',\n initialState: programClassesInitialState,\n reducers: programClassesReducer,\n extraReducers: programClassesExtraReducer,\n});\n\nexport const {actions: programClassesActions} = programClassesSlice;\n","import {EntitiesPerPageEnum, SortingOrderEnum} from 'enums';\nimport {IProgramMasterInstrumentsFilter} from 'models';\n\nimport {IProgramMasterInstrumentsState} from './IProgramMasterInstrumentsState';\nimport {FilterBackendNamesEnum, ProgramsMasterInstrumentsOrderingEnum} from '../enums';\n\nconst filterDefault: IProgramMasterInstrumentsFilter = {\n [FilterBackendNamesEnum.SEARCH_BY_NAME]: '',\n [FilterBackendNamesEnum.AUDIENCES]: [],\n [FilterBackendNamesEnum.PHASES]: [],\n [FilterBackendNamesEnum.STATUSES]: [1],\n};\n\nexport const programMasterInstrumentsInitialState: IProgramMasterInstrumentsState = {\n pool: {\n result: [],\n entities: {byId: {}},\n },\n\n filter: filterDefault,\n page: {\n loading: false,\n },\n orderBy: 't.Name ASC',\n pagination: {\n currentPage: 1,\n totalCount: 0,\n perPage: EntitiesPerPageEnum.FIFTY,\n },\n sortOrder: {\n order: ProgramsMasterInstrumentsOrderingEnum.Name,\n sort: SortingOrderEnum.ASC,\n },\n};\n","import {IActionFulfilled, IProgramMasterInstrumentsFilter, IProgramsMasterInstrumentsSortOrder} from 'models';\nimport {cloneDeep} from 'utils';\n\nimport {IProgramMasterInstrumentsState} from './IProgramMasterInstrumentsState';\nimport {programMasterInstrumentsInitialState} from './programMasterInstruments.initialState';\n\nexport const programMasterInstrumentsReducer = {\n setFilter: (\n state: IProgramMasterInstrumentsState,\n action: IActionFulfilled<null, IProgramMasterInstrumentsFilter>\n ) => {\n state.filter = action.payload;\n resetPagination(state);\n },\n\n resetFilter: (state: IProgramMasterInstrumentsState) => {\n state.filter = cloneDeep(programMasterInstrumentsInitialState.filter);\n resetPagination(state);\n },\n\n setCurrentPage: (state: IProgramMasterInstrumentsState, action: IActionFulfilled<null, number>) => {\n state.pagination.currentPage = action.payload;\n },\n\n setPerPage: (state: IProgramMasterInstrumentsState, action: IActionFulfilled<null, number>) => {\n state.pagination.perPage = action.payload;\n resetPagination(state);\n },\n\n setSortOrderProgramClasses: (\n state: IProgramMasterInstrumentsState,\n action: IActionFulfilled<null, IProgramsMasterInstrumentsSortOrder>\n ) => {\n state.sortOrder = action.payload;\n resetPagination(state);\n },\n};\n\nconst resetPagination = (state: IProgramMasterInstrumentsState) => {\n state.pagination.currentPage = programMasterInstrumentsInitialState.pagination.currentPage;\n state.pagination.totalCount = programMasterInstrumentsInitialState.pagination.totalCount;\n};\n","import {schema as Schema} from 'normalizr';\n\nexport const poolListEntity = new Schema.Entity('byId', {}, {idAttribute: 'id'});\nexport const poolListSchema = new Schema.Array(poolListEntity);\n","import {IActionFulfilled, IGetPageOfProgramMasterInstrumentsResponse, IProgramMasterInstrumentBase} from 'models';\nimport {normalize} from 'normalizr';\nimport {isObject} from 'utils';\nimport {IProgramMasterInstrumentsState} from './IProgramMasterInstrumentsState';\nimport {poolListSchema} from './normalizationSchemas';\nimport {fetchProgramMasterInstrumentsPagedThunk} from './thunks';\n\nexport const programMasterInstrumentsExtraReducer = {\n //fetchProgramMasterInstrumentsPagedThunk\n [fetchProgramMasterInstrumentsPagedThunk.fulfilled]: (\n state: IProgramMasterInstrumentsState,\n action: IActionFulfilled<null, IGetPageOfProgramMasterInstrumentsResponse>\n ) => {\n if (isObject(action.payload)) {\n state.pool = normalize(remapProgramMasterInstruments(action.payload.templates), poolListSchema);\n state.pagination.totalCount = action.payload.totalCount;\n }\n\n state.page.loading = false;\n },\n [fetchProgramMasterInstrumentsPagedThunk.pending]: (state: IProgramMasterInstrumentsState) => {\n state.page.loading = true;\n },\n [fetchProgramMasterInstrumentsPagedThunk.rejected]: (state: IProgramMasterInstrumentsState) => {\n // TODO handle errors\n state.page.loading = false;\n },\n};\n\nconst remapProgramMasterInstruments = (instruments: IProgramMasterInstrumentBase[]) =>\n instruments.map(({templateId: id, templateName: name, programs, audience, type, phase, status}) => ({\n id,\n name,\n programName: programs.map((p) => p.name).join(', '),\n audience,\n type,\n phase,\n status,\n }));\n","import {createSlice} from '@reduxjs/toolkit';\nimport {programMasterInstrumentsInitialState} from './programMasterInstruments.initialState';\nimport {programMasterInstrumentsReducer} from './programMasterInstruments.reducer';\nimport {programMasterInstrumentsExtraReducer} from './programMasterInstrumentsExtra.reducer';\n\nexport const programMasterInstrumentsSlice = createSlice({\n name: 'masterInstruments',\n initialState: programMasterInstrumentsInitialState,\n reducers: programMasterInstrumentsReducer,\n extraReducers: programMasterInstrumentsExtraReducer,\n});\n\nexport const {actions: programMasterInstrumentsActions} = programMasterInstrumentsSlice;\n","export const getApiMultipartFormDataHeadersConfig = () => {\n return {\n headers: {\n 'Content-Type': 'multipart/form-data',\n },\n };\n};\n","import {ErrorStatusCodesEnum} from 'enums';\n\nexport const redirectWhenErrorStatusCode = (status: number, path: string, redirectCallback: (path: string) => void) => {\n switch (status) {\n case ErrorStatusCodesEnum.BadRequest:\n case ErrorStatusCodesEnum.NotFound:\n return redirectCallback(path);\n default:\n return;\n }\n};\n","import {AxiosRequestConfig} from 'axios';\n\nexport const getApiJsonBlobDataHeadersConfig = (): AxiosRequestConfig => ({\n headers: {\n 'content-type': 'application/json',\n },\n responseType: 'blob',\n});\n","import React from 'react';\nimport {Grid} from '@material-ui/core';\nimport {IComponentWithChildren, IComponentWithClassName} from 'models';\n\nexport type TWidth = boolean | 'auto' | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\n\n/*\n\nThe grid is based on a 12 column system meaning the screen at any\ngiven point has 12 columns of available space. A grid item with sm=6 \nwill take up half the screen (6 of 12 columns) at screen size small\nand larger (width = 600px+).\n\n*/\n\ninterface IColumnProps extends IComponentWithChildren, IComponentWithClassName {\n sm?: TWidth; // 600 px - 960 px\n md?: TWidth; // 960 px - 1280 px\n lg?: TWidth; // 1280 px - 1920 px\n xl?: TWidth; // 1536 px +\n}\n\nexport function Column({children, sm = 12, md = 12, lg = 12, xl = 12, className}: IColumnProps) {\n return (\n <Grid container direction=\"column\" sm={sm} md={md} lg={lg} xl={xl} item className={className}>\n {children}\n </Grid>\n );\n}\n","import ContainerMUI from '@material-ui/core/Container';\nimport {IComponentWithChildren} from 'models';\nimport React from 'react';\n\ninterface IContainerProps extends IComponentWithChildren {\n disableGutters?: boolean;\n justify?: 'center' | 'flex-start';\n maxWidth?: 'sm' | 'md' | false;\n classes?: any;\n}\n\nexport function Container({children, disableGutters, classes, maxWidth = false}: IContainerProps) {\n return (\n <ContainerMUI maxWidth={maxWidth} disableGutters={disableGutters} classes={classes}>\n {children}\n </ContainerMUI>\n );\n}\n","import {Grid} from '@material-ui/core';\nimport {IComponentWithChildren} from 'models';\nimport React from 'react';\n\ninterface IRowProps extends IComponentWithChildren {\n justify?: 'center' | 'flex-start' | 'flex-end' | 'space-between';\n align?: 'center' | 'flex-start' | 'flex-end';\n classes?: any;\n}\n\nexport function Row({children, classes, justify = 'center', align = 'center'}: IRowProps) {\n return (\n <Grid container direction=\"row\" justify={justify} alignItems={align} classes={{...classes}} item>\n {children}\n </Grid>\n );\n}\n","import {IIntegrationDetails} from 'models/integrations';\nimport {\n getDefaultPreviewFirstColumnList,\n getIsGoogleClassRoom,\n getIsGoogleSitesDestination,\n getIsGoogleSitesSource,\n getIsMicrosoftTeams,\n} from '../../../utils/helpers';\nimport {getDateFromISOString, toNumber} from 'utils';\nimport {IntegrationLabel} from 'admin/integrations/enums';\nimport {DEFAULT_GOOGLE_DRIVE_FOLDER_LINK, IntegrationTypeObj} from 'admin/integrations/utils';\nimport {FormNameEnum, InputTypeEnum} from 'enums/form';\nimport {IntegrationStatusNum} from 'enums/integrations';\n\nexport const getIntegrationDetailsFirstColumnList = ({\n integrationType,\n areaName,\n schoolName,\n certificateExpirationDate,\n configuration: {clientId, defaultFolderId, masterClassroomEmailAccount},\n status,\n}: IIntegrationDetails) => {\n let list = [];\n const type = toNumber(integrationType);\n const integrationTypeString = IntegrationTypeObj[type];\n const isGoogleClassroom = getIsGoogleClassRoom(type);\n const isMicrosoftTeams = getIsMicrosoftTeams(type);\n const isGoogleSitesSource = getIsGoogleSitesSource(type);\n const isGoogleSitesDestination = getIsGoogleSitesDestination(type);\n const expirationDate = certificateExpirationDate ? getDateFromISOString(certificateExpirationDate) : '';\n\n const shouldDisableFormIntegrationInput =\n status !== IntegrationStatusNum.TEST_FAILED &&\n status !== IntegrationStatusNum.ERROR &&\n status !== IntegrationStatusNum.TEST_PENDING;\n\n const defaultList = getDefaultPreviewFirstColumnList({\n integrationTypeStringValue: integrationTypeString ?? '',\n areaName: areaName ?? '',\n schoolNameStringValue: schoolName ?? '',\n certificateName: '',\n });\n\n if (isGoogleClassroom) {\n const googleClassroomList = defaultList.slice(0, defaultList.length - 1);\n\n list = [\n ...googleClassroomList,\n {\n label: IntegrationLabel.ExpiryDateCertificate,\n value: expirationDate,\n options: {\n withForm: false,\n disabled: true,\n },\n },\n {\n name: FormNameEnum.masterClassroomEmailAccount,\n label: IntegrationLabel.UserToImpersonate,\n value: masterClassroomEmailAccount ?? '',\n options: {\n withForm: true,\n disabled: shouldDisableFormIntegrationInput,\n },\n },\n ];\n }\n\n if (isMicrosoftTeams) {\n const microsoftTeamsList = defaultList.slice(0, defaultList.length - 1);\n\n list = [\n ...microsoftTeamsList,\n {\n name: FormNameEnum.clientId,\n label: IntegrationLabel.ClientID,\n value: clientId ?? '',\n options: {\n withForm: true,\n disabled: shouldDisableFormIntegrationInput,\n },\n },\n {\n name: FormNameEnum.clientSecret,\n label: IntegrationLabel.ClientSecret,\n options: {\n withForm: true,\n withIcon: true,\n disabled: shouldDisableFormIntegrationInput,\n },\n type: InputTypeEnum.Password,\n },\n ];\n\n return list;\n }\n\n if (isGoogleSitesSource) {\n const googleSitesSourceList = defaultList.slice(0, defaultList.length - 1);\n\n list = [\n ...googleSitesSourceList,\n {\n label: IntegrationLabel.GoogleDriveSourceFolderLink,\n value: DEFAULT_GOOGLE_DRIVE_FOLDER_LINK + defaultFolderId ?? '',\n options: {\n withForm: true,\n disabled: shouldDisableFormIntegrationInput,\n },\n name: FormNameEnum.googleDriveSourceFolderLink,\n },\n {\n label: IntegrationLabel.ExpiryDateCertificate,\n value: expirationDate,\n options: {\n withForm: true,\n disabled: true,\n },\n name: FormNameEnum.certificateExpirationDate,\n },\n ];\n\n return list;\n }\n\n if (isGoogleSitesDestination) {\n const googleSitesDestinationList = defaultList.slice(0, defaultList.length - 1);\n\n list = [\n ...googleSitesDestinationList,\n {\n label: IntegrationLabel.GoogleDriveDestinationFolderLink,\n value: DEFAULT_GOOGLE_DRIVE_FOLDER_LINK + defaultFolderId ?? '',\n options: {\n withForm: true,\n disabled: shouldDisableFormIntegrationInput,\n },\n name: FormNameEnum.googleDriveDestinationFolderLink,\n },\n ];\n return list;\n }\n\n return list;\n};\n","import {IntegrationLabel} from 'admin/integrations/enums';\nimport {IIntegrationDetails} from 'models/integrations';\nimport {toNumber} from 'utils';\nimport {\n getDefaultPreviewSecondColumnList,\n getIsGoogleClassRoom,\n getIsGoogleSitesDestination,\n getIsGoogleSitesSource,\n getIsMicrosoftTeams,\n} from '../../../utils/helpers';\nimport {FormNameEnum} from 'enums/form';\nimport {IntegrationStatusNum} from 'enums/integrations';\nimport {IntegrationStatusObj} from 'admin/integrations/utils';\n\nexport const getIntegrationDetailsSecondColumnList = ({\n integrationType,\n name,\n configuration: {serviceEmailAccount, authorityUrl},\n schoolDistrict,\n status,\n}: IIntegrationDetails) => {\n let list = [];\n const type = toNumber(integrationType);\n const integrationStatus = IntegrationStatusObj[status];\n const isGoogleClassroom = getIsGoogleClassRoom(type);\n const isMicrosoftTeams = getIsMicrosoftTeams(type);\n const isGoogleSitesSource = getIsGoogleSitesSource(type);\n const isGoogleSitesDestination = getIsGoogleSitesDestination(type);\n\n const shouldDisableFormIntegrationInput =\n status !== IntegrationStatusNum.TEST_FAILED &&\n status !== IntegrationStatusNum.ERROR &&\n status !== IntegrationStatusNum.TEST_PENDING;\n\n const defaultList = getDefaultPreviewSecondColumnList({\n integrationName: name ?? '',\n schoolDistrictStringValue: schoolDistrict ?? '',\n email: serviceEmailAccount ?? '',\n googleDriveSourceFolderLink: '',\n });\n\n if (isGoogleClassroom) {\n const googleClassroomList = defaultList.slice(1, defaultList.length - 2);\n\n list = [\n {\n name: FormNameEnum.integrationName,\n label: IntegrationLabel.IntegrationName,\n value: name ?? '-',\n options: {\n withForm: true,\n disabled: false,\n },\n },\n ...googleClassroomList,\n {\n name: FormNameEnum.serviceEmail,\n label: IntegrationLabel.ServiceEmailAdress,\n value: serviceEmailAccount ?? '-',\n options: {\n withForm: true,\n disabled: shouldDisableFormIntegrationInput,\n },\n },\n {\n label: IntegrationLabel.Status,\n value: integrationStatus ?? '-',\n options: {\n withForm: false,\n disabled: true,\n },\n },\n ];\n }\n\n if (isMicrosoftTeams) {\n const microsoftTeamsList = defaultList.slice(1, defaultList.length - 2);\n\n list = [\n {\n name: FormNameEnum.integrationName,\n label: IntegrationLabel.IntegrationName,\n value: name ?? '-',\n options: {\n withForm: true,\n disabled: false,\n },\n },\n ...microsoftTeamsList,\n {\n name: FormNameEnum.authorityUrl,\n label: IntegrationLabel.AuthorityUrl,\n value: authorityUrl ?? '',\n options: {\n withForm: true,\n disabled: shouldDisableFormIntegrationInput,\n },\n },\n {\n label: IntegrationLabel.Status,\n value: integrationStatus ?? '-',\n options: {\n withForm: false,\n disabled: true,\n },\n },\n ];\n\n return list;\n }\n\n if (isGoogleSitesSource) {\n const googleSitesSourceList = defaultList.slice(1, defaultList.length - 2);\n\n list = [\n {\n name: FormNameEnum.integrationName,\n label: IntegrationLabel.IntegrationName,\n value: name ?? '-',\n options: {\n withForm: true,\n disabled: false,\n },\n },\n ...googleSitesSourceList,\n {\n name: FormNameEnum.serviceEmail,\n label: IntegrationLabel.ServiceEmailAdress,\n value: serviceEmailAccount ?? '-',\n options: {\n withForm: true,\n disabled: shouldDisableFormIntegrationInput,\n },\n },\n {\n label: IntegrationLabel.Status,\n value: integrationStatus ?? '-',\n options: {\n withForm: false,\n disabled: true,\n },\n },\n ];\n\n return list;\n }\n\n if (isGoogleSitesDestination) {\n const googleSitesDestinationList = defaultList.slice(1, defaultList.length - 2);\n\n list = [\n {\n name: FormNameEnum.integrationName,\n label: IntegrationLabel.IntegrationName,\n value: name ?? '-',\n options: {\n withForm: true,\n disabled: false,\n },\n },\n ...googleSitesDestinationList,\n {\n label: IntegrationLabel.Status,\n value: integrationStatus ?? '-',\n options: {\n withForm: false,\n disabled: true,\n },\n },\n ];\n\n return list;\n }\n\n return list;\n};\n","import {IAuditLogsColumn} from './../../models';\nimport {AuditLogsColumnsTableEnum, AuditLogsLabelEnum} from './../../enums';\n\nexport const getAuditLogsColumns = (): IAuditLogsColumn[] => [\n {\n id: AuditLogsColumnsTableEnum.DateOfChange,\n label: AuditLogsLabelEnum.DateOfChange,\n align: 'left',\n },\n {\n id: AuditLogsColumnsTableEnum.User,\n label: AuditLogsLabelEnum.User,\n align: 'left',\n },\n {\n id: AuditLogsColumnsTableEnum.Activity,\n label: AuditLogsLabelEnum.Activity,\n align: 'left',\n },\n {\n id: AuditLogsColumnsTableEnum.Outcome,\n label: AuditLogsLabelEnum.Outcome,\n align: 'left',\n },\n {\n id: AuditLogsColumnsTableEnum.Remarks,\n label: AuditLogsLabelEnum.Remarks,\n align: 'left',\n },\n];\n","import {IntegrationStatusNum} from 'enums';\n\nexport const getIsNotIntegrationFailedOrHasError = (status: number) => {\n return (\n status !== IntegrationStatusNum.TEST_FAILED &&\n status !== IntegrationStatusNum.ERROR &&\n status !== IntegrationStatusNum.TEST_PENDING\n );\n};\n","import React, {Fragment, useCallback, useMemo} from 'react';\nimport {Button} from 'components-lib';\nimport {ILearningPathSessionItem} from 'models';\nimport {createEmptySession} from '../../utils';\nimport {\n useLearningPathBuilderItemsEntities,\n useSessionBuilderStoreActions,\n} from 'admin/resources/learning-paths/views/session-builder';\nimport {USAAndSuperAdminRoles, usePermissions} from 'permissions';\n\nexport const AddSessionButton = () => {\n const {hasPermission} = usePermissions();\n const {builderSessionItemsCollection} = useLearningPathBuilderItemsEntities();\n const {addSessionBuilderItem} = useSessionBuilderStoreActions();\n\n const shouldRenderButton = hasPermission(USAAndSuperAdminRoles);\n\n const emptySession = createEmptySession();\n\n const emptySessionIdx = useMemo(\n () =>\n builderSessionItemsCollection.findIndex(\n ({title, description}: ILearningPathSessionItem) => title === '' && description === ''\n ),\n [builderSessionItemsCollection]\n );\n const shouldDisableAddSessionButton = emptySessionIdx > -1;\n\n const addSessionClickHandler = useCallback(() => addSessionBuilderItem(emptySession), [\n addSessionBuilderItem,\n emptySession,\n ]);\n\n return (\n <Fragment>\n {shouldRenderButton && (\n <Button.Primary\n size=\"small\"\n isFirst\n clickHandler={addSessionClickHandler}\n disabled={shouldDisableAddSessionButton}\n >\n Add Session\n </Button.Primary>\n )}\n </Fragment>\n );\n};\n","import React, {FC, Fragment, useCallback} from 'react';\nimport {Prompt} from 'react-router-dom';\nimport {useBeforeunload} from 'react-beforeunload';\nimport {useModal} from 'hooks';\nimport {ModalDelete} from 'admin';\nimport {learningPathMessages} from 'admin/resources/learning-paths/utils';\nimport {LearningPathFooter} from 'admin/resources/learning-paths/components';\nimport {useCreateLearningPath} from 'admin/resources/learning-paths/views/create/hooks';\nimport {useLearningPathBuilderItemsEntities} from 'admin/resources/learning-paths/views/session-builder';\n\ninterface ICreateLearningPathFooterProps {\n isDirty: boolean;\n submitFormCallback: () => void;\n}\n\nexport const CreateLearningPathFooter: FC<ICreateLearningPathFooterProps> = ({isDirty, submitFormCallback}) => {\n const {loading, redirectToViewListOLearningPaths} = useCreateLearningPath();\n const {isSomeOfSessionsWithEmptyName} = useLearningPathBuilderItemsEntities();\n const {isOpen: isModalCreateLPOpen, setIsOpen: setIsModalCreateLPOpen} = useModal();\n\n useBeforeunload(() => (isDirty || isSomeOfSessionsWithEmptyName) && learningPathMessages.warning);\n\n const openModalClickHandler = useCallback(() => setIsModalCreateLPOpen(true), [setIsModalCreateLPOpen]);\n\n return (\n <Fragment>\n <LearningPathFooter\n loading={loading}\n withSaveButton={true}\n withSubmitButton={false}\n isSomeOfSessionsWithEmptyName={isSomeOfSessionsWithEmptyName}\n disableSave={!isDirty || isSomeOfSessionsWithEmptyName}\n openModalClickHandler={openModalClickHandler}\n saveClickHandler={submitFormCallback}\n />\n {isModalCreateLPOpen && (\n <ModalDelete\n loading={false}\n title=\"Learning Path Creation\"\n text=\"Are you sure you want to cancel the creation of a learning path? The unsaved information will be lost.\"\n cancelButtonText=\"Return to creation\"\n confirmButtonText=\"Cancel\"\n isOpen={isModalCreateLPOpen}\n setIsOpen={setIsModalCreateLPOpen}\n confirmHandler={redirectToViewListOLearningPaths}\n />\n )}\n <Prompt when={isDirty} message={learningPathMessages.warning} />\n </Fragment>\n );\n};\n","import React, {Dispatch, FC, MutableRefObject, SetStateAction, useCallback, useMemo} from 'react';\nimport {batch} from 'react-redux';\nimport {FormikHelpers, FormikProps, FormikValues} from 'formik';\nimport {Form} from 'forms';\nimport {FormNameEnum} from 'enums/form';\nimport {ILearningPathViewCreateFormBaseValues, learningPathViewCreateFormBaseValidationSchema} from '../../utils';\nimport {useCreateLearningPath} from '../..';\nimport {IWithChildren} from 'models/common';\nimport {useSessionBuilderStoreActions} from 'admin/resources/learning-paths/views/session-builder';\n\ninterface ICreateLearningPathDetailsFormProps extends IWithChildren {\n setIsDirtyCallback: Dispatch<SetStateAction<boolean>>;\n formikFormRef: MutableRefObject<FormikProps<FormikValues>>;\n}\n\nexport const CreateLearningPathDetailsForm: FC<ICreateLearningPathDetailsFormProps> = ({\n children,\n formikFormRef,\n setIsDirtyCallback,\n}) => {\n const {createLearningPath, redirectToViewListOLearningPaths} = useCreateLearningPath();\n const {clearBuilderItems} = useSessionBuilderStoreActions();\n\n const submitHandler = useCallback(\n (formValues: ILearningPathViewCreateFormBaseValues, {resetForm, setSubmitting}: FormikHelpers<any>) => {\n batch(() => {\n setIsDirtyCallback(false);\n createLearningPath(formValues).then(() => {\n clearBuilderItems();\n redirectToViewListOLearningPaths();\n });\n resetForm();\n setSubmitting(false);\n });\n },\n [createLearningPath, clearBuilderItems, redirectToViewListOLearningPaths, setIsDirtyCallback]\n );\n\n const initialValues = useMemo(\n () => ({\n [FormNameEnum.learningPathName]: '',\n [FormNameEnum.briefDescription]: '',\n [FormNameEnum.futureProgramYear]: null,\n [FormNameEnum.primaryPillar]: null,\n [FormNameEnum.secondaryPillar]: null,\n [FormNameEnum.language]: null,\n [FormNameEnum.keyTerms]: null,\n [FormNameEnum.program]: null,\n [FormNameEnum.gradeLevels]: [],\n [FormNameEnum.expirationDate]: null,\n [FormNameEnum.learningObjectives]: null,\n }),\n []\n );\n\n return (\n <Form.Form<ILearningPathViewCreateFormBaseValues>\n formikRef={formikFormRef}\n initialValues={initialValues}\n validationSchema={learningPathViewCreateFormBaseValidationSchema}\n submitHandler={submitHandler}\n >\n {children}\n </Form.Form>\n );\n};\n","import React, {Dispatch, FC, SetStateAction, useEffect} from 'react';\nimport {useFormikContext} from 'formik';\nimport {\n LearningPathDetails,\n LearningPathDetailsFirstCol,\n LearningPathDetailsSecondCol,\n} from 'admin/resources/learning-paths/components';\nimport {ILearningPathViewCreateFormBaseValues} from '../../utils';\nimport {useLearningPathBuilderItemsEntities} from 'admin/resources/learning-paths/views/session-builder';\n\ninterface ICreateLearningPathDetailsProps {\n isDirty: boolean;\n setIsDirtyCallback: Dispatch<SetStateAction<boolean>>;\n}\n\nexport const CreateLearningPathDetails: FC<ICreateLearningPathDetailsProps> = ({isDirty, setIsDirtyCallback}) => {\n const {dirty, isValid} = useFormikContext<ILearningPathViewCreateFormBaseValues>();\n const {isSomeOfSessionsWithEmptyName} = useLearningPathBuilderItemsEntities();\n\n useEffect(() => {\n if ((dirty && isValid && !isDirty) || isSomeOfSessionsWithEmptyName) {\n setIsDirtyCallback(true);\n } else if (!isValid) {\n setIsDirtyCallback(false);\n }\n }, [isDirty, setIsDirtyCallback, dirty, isValid, isSomeOfSessionsWithEmptyName]);\n\n return (\n <LearningPathDetails>\n <LearningPathDetailsFirstCol />\n <LearningPathDetailsSecondCol />\n </LearningPathDetails>\n );\n};\n","import React, {FC, useCallback, useContext} from 'react';\nimport {ResourceHeader} from 'admin/resources';\nimport {LearningPathSessions} from 'admin/resources/learning-paths/components';\nimport {PageLayoutHorizontalRows} from 'layout';\nimport {CreateLearningPathDetails, CreateLearningPathDetailsForm, CreateLearningPathFooter} from '..';\nimport {FormContext} from 'forms/formik/FormContextProvider';\n\ninterface ILearningPathViewCreateContainerProps {\n loading: boolean;\n}\n\nexport const LearningPathViewCreateContainer: FC<ILearningPathViewCreateContainerProps> = ({loading}) => {\n const {formikFormRef, isDirty, setIsDirty, submitFormikForm} = useContext(FormContext);\n\n const submitFormClickHandler = useCallback(() => formikFormRef?.current && submitFormikForm(), [\n formikFormRef,\n submitFormikForm,\n ]);\n\n return (\n <PageLayoutHorizontalRows\n headerSize=\"large\"\n loading={loading}\n header={<ResourceHeader heading=\"Create Learning Path\" withBackButton={false} withSubHeading={false} />}\n contentUp={\n <CreateLearningPathDetailsForm formikFormRef={formikFormRef} setIsDirtyCallback={setIsDirty}>\n <CreateLearningPathDetails isDirty={isDirty} setIsDirtyCallback={setIsDirty} />\n </CreateLearningPathDetailsForm>\n }\n contentDown={<LearningPathSessions />}\n footer={<CreateLearningPathFooter isDirty={isDirty} submitFormCallback={submitFormClickHandler} />}\n />\n );\n};\n","import {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport {unwrapResult} from '@reduxjs/toolkit';\nimport {fetchResourcesThunk, filtersFutureYearsEntitiesSelector} from 'filters-selections';\nimport {useNavigate, useAppDispatch} from 'hooks';\nimport {pages} from 'paths';\nimport {useLearningPathBuilderItemsEntities} from 'admin/resources/learning-paths/views/session-builder';\nimport {createLearningPathThunk, learningPathCreatePageLoadingSelector} from '../store';\nimport {ILearningPathViewCreateFormBaseValues} from '../utils/schema';\nimport {IFetchResourcesThunkPayload} from 'models/resources';\nimport {mapCreateUpdateLearningPathPayload} from 'admin/resources/learning-paths/utils';\n\nexport const useCreateLearningPath = () => {\n const dispatch = useAppDispatch();\n const {push} = useNavigate();\n const futureProgramYears = useSelector(filtersFutureYearsEntitiesSelector);\n const {builderSessionItemsEntities, builderSessionItemsCollection} = useLearningPathBuilderItemsEntities();\n\n const loading = useSelector(learningPathCreatePageLoadingSelector) as boolean;\n\n const redirectToViewListOLearningPaths: () => void = useCallback(\n () => push(`${pages.adminPortal.learningPaths.root}`),\n [push]\n );\n\n const createLearningPath = useCallback(\n (formValues: ILearningPathViewCreateFormBaseValues) => {\n const futureProgramYearObj = futureProgramYears[formValues.futureProgramYear];\n const payload = mapCreateUpdateLearningPathPayload(\n {...formValues, futureProgramYear: futureProgramYearObj ? futureProgramYearObj.displayText : null},\n builderSessionItemsCollection\n );\n return dispatch(createLearningPathThunk(payload)).then(unwrapResult);\n },\n [dispatch, builderSessionItemsCollection, futureProgramYears]\n );\n\n const fetchResources: (payload: IFetchResourcesThunkPayload) => void = useCallback(\n (payload) => {\n return dispatch(fetchResourcesThunk(payload));\n },\n [dispatch]\n );\n\n const getResourcesIdsByLearningPathId = useCallback(\n (id: string) => {\n const learningPath = builderSessionItemsEntities[id];\n return learningPath.resources.map((resource) => resource.contentItemId);\n },\n [builderSessionItemsEntities]\n );\n\n return {\n loading,\n\n createLearningPath,\n redirectToViewListOLearningPaths,\n fetchResources,\n getResourcesIdsByLearningPathId,\n };\n};\n","import {pages} from 'paths';\nimport {useCallback} from 'react';\nimport {useSessionBuilderStoreActions} from '../../session-builder';\n\ninterface IUseCreateLearningPathResources {\n id?: string | number;\n}\n\nexport const useCreateLearningPathResources = ({id}: IUseCreateLearningPathResources) => {\n const {deleteSessionBuilderResourceItem, deleteSessionBuilderInstrumentItem} = useSessionBuilderStoreActions();\n\n const hasUrl = !!id;\n\n const redirectToEditResourcePage = useCallback(\n () => window.open(`${pages.adminPortal.files.editLink}/${id}`, '_blank'),\n [id]\n );\n\n const downloadResource = useCallback((url: string) => window.open(url, '_blank'), []);\n\n const redirectToEditInstrumentPage = useCallback(\n (instrumentId?: number) => {\n const detailsId = instrumentId ? instrumentId : id;\n return window.open(`${pages.adminPortal.instruments.detailsRoot}/${detailsId}`, '_blank');\n },\n [id]\n );\n\n return {\n hasUrl,\n redirectToEditResourcePage,\n redirectToEditInstrumentPage,\n deleteSessionBuilderResourceItem,\n deleteSessionBuilderInstrumentItem,\n downloadResource,\n };\n};\n","import {RolesEnum} from 'permissions/enums';\nimport {intersection} from 'utils';\n\nexport function hasRequiredPermissions(userRoles: RolesEnum[], requiredRoles: RolesEnum[]): boolean {\n return intersection(userRoles, requiredRoles as RolesEnum[]).length > 0;\n}\n","export const prefix = '[Permissions]';\n","export {useProgramClass} from './useProgramClass';\n","import {createSelector} from '@reduxjs/toolkit';\nimport {TStateStore} from 'store';\n\nconst getIntegrationsState = (state: TStateStore) => state.integrations;\n\nexport const paginationSelector = createSelector(getIntegrationsState, (integrations) => integrations.pagination);\nexport const pageLoadingSelector = createSelector(getIntegrationsState, (integrations) => integrations.page.loading);\nexport const pageSavingSelector = createSelector(getIntegrationsState, (integrations) => integrations.page.saving);\nexport const pageDeletingSelector = createSelector(getIntegrationsState, (integrations) => integrations.page.deleting);\n\nexport const integrationsAllSortBySelector = createSelector(\n getIntegrationsState,\n (integrations) => integrations.sortBy\n);\n\nexport const integrationsAllSortOrderSelector = createSelector(\n getIntegrationsState,\n (integrations) => integrations.sortOrder\n);\n\nexport const integrationsAllSelector = createSelector(\n getIntegrationsState,\n (integrations) => integrations.integrationList\n);\n\nexport const integrationsAllFilterSelector = createSelector(\n getIntegrationsState,\n (integrations) => integrations.filter\n);\n\nexport const serviceSourceEmailSelector = createSelector(\n getIntegrationsState,\n (integrations) => integrations.addIntegration.metadata.serviceSourceEmail\n);\n\nexport const addIntegrationErrorMessageSelector = createSelector(\n getIntegrationsState,\n (integrations) => integrations.addIntegration.metadata.errorMessage\n);\n\nexport const integrationDetailsSelector = createSelector(\n getIntegrationsState,\n (integrations) => integrations.integration\n);\n\nexport const integrationStatusesSelector = createSelector(\n getIntegrationsState,\n (integrations) => integrations.details.integrationStatuses\n);\n\nexport const auditLogsSelector = createSelector(\n getIntegrationsState,\n (integrations) => integrations.details.auditLogs.entities\n);\n\nexport const auditLogsLoadingSelector = createSelector(\n getIntegrationsState,\n (integrations) => integrations.details.auditLogs.loading\n);\n","import {createSelector} from '@reduxjs/toolkit';\nimport {TStateStore} from 'store';\n\nconst getPermissions = (state: TStateStore) => state.permissions;\n\nexport const permissionsStateSelector = createSelector(getPermissions, (permissions) => permissions);\nexport const userRoleListStateSelector = createSelector(getPermissions, (permissions) => permissions.roleList);\nexport const exportingSelector = createSelector(getPermissions, (permissions) => permissions.exporting);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {permissionsApi} from 'api';\nimport {IWithNavigationPush, TUserRolesApiResponse} from 'models';\nimport {paths} from 'paths';\nimport {permissionsManager} from '../../services';\nimport {prefix} from './config';\n\nexport const fetchUserRoleThunk: any = createAsyncThunk<TUserRolesApiResponse, IWithNavigationPush>(\n `${prefix} fetchUserRole`,\n async (payload: IWithNavigationPush, {rejectWithValue}) => {\n try {\n const {parsedBody: roles} = await permissionsApi.getUserRole();\n permissionsManager.setActiveUserRoles(roles.map((role) => role.value));\n return roles;\n } catch (err) {\n const {push} = payload;\n push(paths.error);\n return rejectWithValue(err);\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {permissionsApi} from 'api';\nimport {prefix} from './config';\n\nexport const fetchUserRoleListThunk: any = createAsyncThunk(\n `${prefix} fetchUserRoleList`,\n async (_, {rejectWithValue}) => {\n try {\n const {parsedBody} = await permissionsApi.getUserRolesList();\n return parsedBody;\n } catch (error) {\n return rejectWithValue(error);\n }\n }\n);\n","import {IActionFulfilled, IUserRole} from 'models';\nimport {IPermissionsStoreState} from './IPermissionsStoreState';\nimport {fetchUserActivityExportThunk, fetchUserRoleListThunk, fetchUserRoleThunk} from './thunks';\n\nexport const permissionsExtraReducer = {\n // fetchUserRoleThunk\n [fetchUserRoleThunk.fulfilled]: (state: IPermissionsStoreState) => {\n state.loading = false;\n },\n [fetchUserRoleThunk.pending]: (state: IPermissionsStoreState) => {\n state.loading = true;\n state.requestTriggered = true;\n },\n [fetchUserRoleThunk.rejected]: (state: IPermissionsStoreState) => {\n state.loading = false;\n },\n\n //fetchUserRoleListThunk\n [fetchUserRoleListThunk.fulfilled]: (state: IPermissionsStoreState, action: IActionFulfilled<null, IUserRole[]>) => {\n state.roleList = action.payload;\n },\n\n // fetchUserActivityExportThunk\n [fetchUserActivityExportThunk.fulfilled]: (state: IPermissionsStoreState) => {\n state.exporting = false;\n },\n [fetchUserActivityExportThunk.pending]: (state: IPermissionsStoreState) => {\n state.exporting = true;\n },\n [fetchUserActivityExportThunk.rejected]: (state: IPermissionsStoreState) => {\n state.exporting = false;\n },\n};\n","import {createSlice} from '@reduxjs/toolkit';\nimport {permissionsInitialState} from './permissions.initialState';\nimport {permissionsExtraReducer} from './permissionsExtra.reducer';\n\nexport const permissionsSlice = createSlice({\n name: 'permissions',\n initialState: permissionsInitialState,\n reducers: {},\n extraReducers: permissionsExtraReducer,\n});\n\nexport const {actions: permissionsActions, reducer: permissionsReducer} = permissionsSlice;\n","import {IPermissionsStoreState} from './IPermissionsStoreState';\n\nexport const permissionsInitialState: IPermissionsStoreState = {\n loading: true,\n exporting: false,\n requestTriggered: false,\n roleList: [],\n};\n","import React from 'react';\nimport {Icon} from 'components-lib';\nimport {makeStyles} from '@material-ui/core';\n\nexport const ErrorIcon = () => {\n const classes = useStyles();\n return (\n <div className={classes.icon}>\n <Icon.ErrorIcon />\n </div>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n icon: {\n marginRight: theme.spacing(2),\n paddingTop: 6,\n },\n}));\n","import React, {FC} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Text, Wrapper} from 'components-lib';\nimport {isString} from 'utils';\n\ninterface IErrorMessageProps {\n message?: string | string[];\n defaultMessage: string;\n withBottomMargin?: boolean;\n}\n\nexport const ErrorMessage: FC<IErrorMessageProps> = ({message, defaultMessage, withBottomMargin}) => {\n const classes = useStyles();\n return (\n <Wrapper className={classes.message}>\n <Text.Error withBottomMargin={withBottomMargin}>{isString(message) ? message : defaultMessage}</Text.Error>\n </Wrapper>\n );\n};\n\nconst useStyles = makeStyles(() => ({\n message: {\n flex: 1,\n },\n}));\n","import React, {FC, Fragment} from 'react';\nimport {Row} from 'components-lib';\nimport {ErrorIcon, ErrorMessage} from '..';\n\ninterface IErrorBoxMessageProps {\n errorMessage?: string | string[];\n defaultMessage: string;\n}\n\nexport const ErrorBoxMessage: FC<IErrorBoxMessageProps> = ({errorMessage, defaultMessage}) => {\n return (\n <Fragment>\n <Row align=\"center\" justify=\"center\">\n <ErrorIcon />\n <ErrorMessage message={errorMessage} defaultMessage={defaultMessage} withBottomMargin={false} />\n </Row>\n </Fragment>\n );\n};\n","import React, {Fragment} from 'react';\nimport {Row} from 'components-lib';\nimport {ErrorIcon, ErrorMessage} from '..';\n\nexport const ErrorBoxMessageList = ({errorMessages, defaultMessage}) => {\n return (\n <Fragment>\n {errorMessages.map((message: string, idx: number) => (\n <Row key={idx} justify=\"flex-start\">\n <ErrorIcon />\n <ErrorMessage message={message} defaultMessage={defaultMessage} />\n </Row>\n ))}\n </Fragment>\n );\n};\n","import React, {FC} from 'react';\nimport {Card, CardContent, makeStyles} from '@material-ui/core';\nimport {ErrorBoxMessage, ErrorBoxMessageList} from './components';\n\ninterface IErrorBoxProps {\n errorMessages: string | string[];\n defaultMessage?: string;\n withMarginLeft?: boolean;\n}\n\nexport const ErrorBox: FC<IErrorBoxProps> = ({\n errorMessages,\n defaultMessage = 'Something went wrong!',\n withMarginLeft = true,\n}) => {\n const classes = useStyles({withMarginLeft});\n const hasMultipleErrorsList = Array.isArray(errorMessages);\n\n return errorMessages.length ? (\n <Card variant=\"outlined\" classes={{root: classes.root}}>\n <CardContent>\n {hasMultipleErrorsList && <ErrorBoxMessageList errorMessages={errorMessages} defaultMessage={defaultMessage} />}\n {!hasMultipleErrorsList && <ErrorBoxMessage errorMessage={errorMessages} defaultMessage={defaultMessage} />}\n </CardContent>\n </Card>\n ) : null;\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: ({withMarginLeft}: Pick<IErrorBoxProps, 'withMarginLeft'>) => {\n return {\n marginLeft: withMarginLeft && theme.spacing(3),\n };\n },\n}));\n","export const prefix = '[Program Class Instruments]';\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {prefix} from './config';\nimport {programsApi} from 'api';\nimport {IGetPageOfProgramClassInstrumentsResponse, IGetPageOfProgramClassInstrumentsPayload} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\n\nexport const fetchProgramClassInstrumentsThunk: any = createAsyncThunk<\n IGetPageOfProgramClassInstrumentsResponse,\n IGetPageOfProgramClassInstrumentsPayload\n>(\n `${prefix} fetchProgramClassInstrumentsPaged`,\n async (payload: IGetPageOfProgramClassInstrumentsPayload, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await programsApi.getProgramClassInstrumentsPaged(payload);\n\n return parsedBody;\n } catch (err) {\n dispatch(\n toastNotificationManager.createErrorToastAction(err.parsedBody || err.statusText || 'Unknown error occurred.')\n );\n return rejectWithValue({error: err});\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {programsApi} from 'api';\nimport {IBindBaseEntity} from 'models';\nimport {prefix} from './config';\nimport {toastNotificationManager} from 'toast-notifications';\n\nexport const fetchSortByColumnsThunk: any = createAsyncThunk<IBindBaseEntity[]>(\n `${prefix} fetchSortByColumns`,\n async (_, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await programsApi.getSortOrderColumns();\n return parsedBody;\n } catch (err) {\n dispatch(\n toastNotificationManager.createErrorToastAction(err.parsedBody || err.statusText || 'Unknown error occurred.')\n );\n return rejectWithValue({error: err});\n }\n }\n);\n","import {config} from 'config';\nimport {ApiPathsEnum} from 'enums';\nimport {IReportApiEnum} from './../enums/IReportApi.enum';\nimport {ALL_AREAS_INDEX, returnQueryStringWithParams} from 'utils';\nimport {ReportTypesEnum} from 'admin/programs/details/enums';\nimport {IHttpResponse, programsApi} from 'api';\nimport {IGetProgramReportResponse, IProgramClassReportPayload} from 'models';\nimport {IProgramClassReportsQueryParams} from 'admin/programs/details';\n\nexport const IMPACT_SUMMARY_REPORT_URL =\n config.jaEeApi.baseUrlExports + '/' + ApiPathsEnum.REPORT_GENERATOR + '/' + IReportApiEnum.ImpactSummaryReport;\n\nexport const ACHIEVEMENT_SUMMARY_REPORT_URL =\n config.jaEeApi.baseUrlExports + '/' + ApiPathsEnum.REPORT_GENERATOR + '/' + IReportApiEnum.AchievementSummaryReport;\n\nexport const STUDENT_GRADEBOOK_REPORT_URL =\n config.jaEeApi.baseUrlExports + '/' + ApiPathsEnum.REPORT_GENERATOR + '/' + IReportApiEnum.StudentGradebookReport;\n\nexport const STUDENT_ACHIEVEMENT_SUMMARY_REPORT_URL =\n config.jaEeApi.baseUrlExports + '/' + ApiPathsEnum.REPORT_GENERATOR + '/' + IReportApiEnum.StudentAchievementReport;\n\nexport const mapProgramClassReport = ({\n programId,\n programSessionId,\n areaId,\n matchedSurveyTypesId,\n}: IProgramClassReportPayload) => {\n let params = {programId} as IProgramClassReportPayload;\n\n const hasAreaId = !!areaId;\n const isSingleArea = hasAreaId && areaId > ALL_AREAS_INDEX;\n\n if (programSessionId) {\n params = {...params, programSessionId};\n }\n\n if (isSingleArea) {\n params = {...params, areaId};\n }\n\n if (matchedSurveyTypesId) {\n params = {...params, matchedSurveyTypesId};\n }\n\n return params;\n};\n\nexport const getReportUrl = (type: ReportTypesEnum, params: IProgramClassReportsQueryParams) => {\n switch (type) {\n case ReportTypesEnum.ImpactSummary:\n return returnQueryStringWithParams(IMPACT_SUMMARY_REPORT_URL, params);\n case ReportTypesEnum.AchievementSummary:\n return returnQueryStringWithParams(ACHIEVEMENT_SUMMARY_REPORT_URL, params);\n case ReportTypesEnum.StudentGradebookReport:\n return returnQueryStringWithParams(STUDENT_GRADEBOOK_REPORT_URL, params);\n case ReportTypesEnum.StudentAchievementSummary:\n return returnQueryStringWithParams(STUDENT_ACHIEVEMENT_SUMMARY_REPORT_URL, params);\n }\n};\n\nexport const generateReport = (\n type: ReportTypesEnum,\n {programId, programSessionId, areaId, matchedSurveyTypesId, exportFormat}: IProgramClassReportsQueryParams\n): Promise<IHttpResponse<IGetProgramReportResponse>> => {\n const programClassReportPayload = {\n programId,\n programSessionId,\n areaId,\n matchedSurveyTypesId,\n } as IProgramClassReportPayload;\n\n const updatedParams = mapProgramClassReport(programClassReportPayload);\n const reportQueryUrl = getReportUrl(type, {...updatedParams, exportFormat});\n\n switch (type) {\n case ReportTypesEnum.ImpactSummary:\n return programsApi.getImpactSummaryReport(reportQueryUrl);\n case ReportTypesEnum.AchievementSummary:\n return programsApi.getAchievementSummaryReport(reportQueryUrl);\n case ReportTypesEnum.StudentGradebookReport:\n return programsApi.getStudentGradeBookReport(reportQueryUrl);\n case ReportTypesEnum.StudentAchievementSummary:\n return programsApi.getStudentAchievementSummaryReport(reportQueryUrl);\n }\n};\n","import {ExportTypesEnum, ExportTypesNamesEnum, ReportTypesEnum, ReportTypesNamesEnum} from '../../../../enums';\n\nexport const getReportTypes = () => [\n // remove deployPastTestFlag fields when reports are tested.\n {\n name: ReportTypesNamesEnum.ImpactSummary,\n type: ReportTypesEnum.ImpactSummary,\n deployPastTestFlag: true,\n },\n {\n name: ReportTypesNamesEnum.StudentGradebook,\n type: ReportTypesEnum.StudentGradebookReport,\n deployPastTestFlag: true,\n },\n {\n name: ReportTypesNamesEnum.AchievementSummary,\n type: ReportTypesEnum.AchievementSummary,\n deployPastTestFlag: false,\n },\n {\n name: ReportTypesNamesEnum.StudentAchievementSummary,\n type: ReportTypesEnum.StudentAchievementSummary,\n deployPastTestFlag: false,\n },\n];\n\nexport const getExportTypes = () => [\n {\n name: ExportTypesNamesEnum.RawDataFile,\n type: ExportTypesEnum.DataFile,\n },\n {\n name: ExportTypesNamesEnum.RawDataFileDetailed,\n type: ExportTypesEnum.DataFileDetailed,\n },\n];\n","import {IColumn} from 'models/library/common';\n\nexport const columns: IColumn[] = [\n {id: 'name', label: ''},\n {id: 'viewBtn', label: '', align: 'right', className: 'btn-col'},\n];\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {programsApi} from 'api';\nimport {IProgramBase, IWithNavigationPush} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {prefix} from './config';\nimport {pages} from 'paths';\n\ninterface IFetchProgramClassPayload extends IWithNavigationPush {\n classId: number;\n}\n\nexport const fetchProgramClassThunk: any = createAsyncThunk<IProgramBase, IFetchProgramClassPayload>(\n `${prefix} fetchProgramClass`,\n async ({classId, push}, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await programsApi.getProgramClassById(classId);\n\n return parsedBody;\n } catch (err) {\n dispatch(\n toastNotificationManager.createErrorToastAction(err.parsedBody || err.statusText || 'Unknown error occurred.')\n );\n\n push(pages.error);\n\n return rejectWithValue({error: err});\n }\n }\n);\n","export const prefix = '[Programs][Class][Details]';\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {prefix} from './config';\nimport {programsApi} from 'api';\nimport {IGetPageOfProgramClassesResponse, IGetPageOfProgramClassesPayload} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\n\nexport const fetchProgramClassesPagedThunk: any = createAsyncThunk<\n IGetPageOfProgramClassesResponse,\n IGetPageOfProgramClassesPayload\n>(\n `${prefix} fetchProgramClassesPaged`,\n async (payload: IGetPageOfProgramClassesPayload, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await programsApi.getProgramClassesPaged(payload);\n return parsedBody;\n } catch (err) {\n dispatch(\n toastNotificationManager.createErrorToastAction(err.parsedBody || err.statusText || 'Unknown error occurred.')\n );\n return rejectWithValue({error: err});\n }\n }\n);\n","export const prefix = '[Program Instruments]';\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {prefix} from './config';\nimport {programsApi} from 'api';\nimport {IGetPageOfProgramMasterInstrumentsResponse, IGetPageOfProgramMasterInstrumentsPayload} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\n\nexport const fetchProgramMasterInstrumentsPagedThunk: any = createAsyncThunk<\n IGetPageOfProgramMasterInstrumentsResponse,\n IGetPageOfProgramMasterInstrumentsPayload\n>(\n `${prefix} fetchProgramMasterInstrumentsPaged`,\n async (payload: IGetPageOfProgramMasterInstrumentsPayload, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await programsApi.getProgramMasterInstrumentsPaged(payload);\n\n return parsedBody;\n } catch (err) {\n dispatch(\n toastNotificationManager.createErrorToastAction(err.parsedBody || err.statusText || 'Unknown error occurred.')\n );\n return rejectWithValue({error: err});\n }\n }\n);\n","export const prefix = '[Program Instruments]';\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {prefix} from './config';\nimport {programsApi} from 'api';\nimport {IGetPageOfProgramsResponse, IGetPageOfProgramsPayload} from 'models';\nimport {toastNotificationManager} from 'toast-notifications';\n\nexport const fetchProgramsPagedThunk: any = createAsyncThunk<IGetPageOfProgramsResponse, IGetPageOfProgramsPayload>(\n `${prefix} fetchProgramsPaged`,\n async (payload: IGetPageOfProgramsPayload, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await programsApi.getActiveProgramsPaged(payload);\n\n return parsedBody;\n } catch (err) {\n dispatch(\n toastNotificationManager.createErrorToastAction(err.parsedBody || err.statusText || 'Unknown error occurred.')\n );\n return rejectWithValue({error: err});\n }\n }\n);\n","export const prefix = '[Programs]';\n","import React, {useCallback} from 'react';\nimport {useParams, useRouteMatch} from 'react-router-dom';\nimport {FormControlLabel, makeStyles, Radio, RadioGroup} from '@material-ui/core';\nimport {Column, Text} from 'components-lib';\nimport {ProgramsSectionNavigatorEnum} from 'enums';\nimport {useNavigate} from 'hooks';\nimport {IWithDisabled} from 'models';\nimport {pages} from 'paths';\nimport {toNumber} from 'utils';\n\nconst options = [\n {label: 'Show Instruments', value: ProgramsSectionNavigatorEnum.INSTRUMENTS},\n {label: 'Show Paper Assessments', value: ProgramsSectionNavigatorEnum.PAPER_ASSESSMENTS},\n {label: 'Show Exports & Reports', value: ProgramsSectionNavigatorEnum.REPORTS},\n];\n\nconst pathToViewMap = {\n [pages.adminPortal.programs.class]: ProgramsSectionNavigatorEnum.INSTRUMENTS,\n [pages.adminPortal.programs.classPaperAssessments]: ProgramsSectionNavigatorEnum.PAPER_ASSESSMENTS,\n [pages.adminPortal.programs.classReports]: ProgramsSectionNavigatorEnum.REPORTS,\n};\n\nconst viewToLinkMap = {\n [ProgramsSectionNavigatorEnum.INSTRUMENTS]: pages.adminPortal.programs.classLink,\n [ProgramsSectionNavigatorEnum.PAPER_ASSESSMENTS]: pages.adminPortal.programs.classPaperAssessmentsLink,\n [ProgramsSectionNavigatorEnum.REPORTS]: pages.adminPortal.programs.classReportsLink,\n};\n\nexport function ViewExpansionPanel({disabled}: IWithDisabled) {\n const {programId, classId} = useParams<{programId: string; classId: string}>();\n const {push} = useNavigate();\n const match = useRouteMatch();\n const classes = useStyles();\n\n const onChange = useCallback(\n (_event: any, value: any) => push(`${viewToLinkMap[toNumber(value)]}/${programId}/${classId}`),\n [classId, programId, push]\n );\n\n return (\n <Column className={classes.root}>\n <Text.Heading as=\"h4\">View</Text.Heading>\n <RadioGroup aria-label=\"choose_view\" name=\"choose_view\" value={pathToViewMap[match.path]} onChange={onChange}>\n {options.map((option: any, i: number) => (\n <FormControlLabel\n value={option.value}\n control={<Radio color=\"primary\" />}\n label={option.label}\n key={i}\n disabled={disabled}\n />\n ))}\n </RadioGroup>\n </Column>\n );\n}\n\nconst useStyles = makeStyles({\n root: {\n paddingLeft: 10,\n },\n});\n","import {makeStyles} from '@material-ui/core';\nimport {IComponentWithClassName} from 'models';\nimport React, {ChangeEvent, useCallback, useMemo} from 'react';\nimport {toNumber} from 'utils';\nimport {Icon} from 'components-lib';\n\ninterface ITagProps extends IComponentWithClassName {\n totalItems: number;\n position: number;\n moveHandler?: (movedItemIdx: number, newPosition: number) => void;\n}\n\nexport function CardItemPositionTag({totalItems, position, moveHandler}: ITagProps) {\n const classes = useStyles();\n\n const changeHandler = useCallback(\n (event: ChangeEvent<HTMLSelectElement>) => {\n const newPosition: number = toNumber(event.target.value);\n\n moveHandler(position, newPosition);\n },\n [moveHandler, position]\n );\n\n const renderOptions = useMemo(\n () =>\n [...Array(totalItems)].map((_, idx) => (\n <option key={`item-position-option-${idx}`} value={idx}>\n {idx + 1}\n </option>\n )),\n [totalItems]\n );\n\n return (\n <div className={classes.root}>\n <span className={classes.label}>Item</span>\n <div className={classes.selectWrapper}>\n {position + 1}\n <Icon.ExpandIcon color=\"primary\" />\n <select value={position} onChange={changeHandler} className={classes.select}>\n {renderOptions}\n </select>\n </div>\n </div>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n margin: theme.spacing(1),\n borderRadius: theme.spacing(1),\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: '#01763D',\n paddingLeft: 8,\n paddingRight: 2,\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n color: theme.palette.text.primary,\n fontWeight: 'bold',\n },\n label: {\n marginRight: theme.spacing(1),\n },\n selectWrapper: {\n position: 'relative',\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n },\n select: {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n opacity: 0,\n },\n}));\n","import {makeStyles} from '@material-ui/core';\nimport {cardTypeMap} from 'admin/library/enums';\nimport {Button, Divider, Icon, Row, Text} from 'components-lib';\nimport {QuestionAnswersTypeEnum} from 'enums';\nimport React, {Fragment} from 'react';\nimport {CardItemPositionTag} from './CardItemPositionTag';\nimport {CardLinkInfoTooltip} from 'admin/library/instruments/components';\nimport {Form} from 'forms';\n\ninterface ICardBodyProps {\n id?: number | null;\n type?: QuestionAnswersTypeEnum;\n title?: string;\n linkedQuestionAnswerStackId?: number;\n position?: number;\n totalItems?: number;\n withDelete?: boolean;\n withLink?: boolean;\n deleteClickHandler?: () => void;\n withEdit?: boolean;\n editClickHandler?: () => void;\n withApply?: boolean;\n applyClickHandler?: () => void;\n moveHandler?: (movedItemIdx: number, newPosition: number) => void;\n linkClickHandler?: () => void;\n withItemInfo?: boolean;\n openInfoLinkClickHandler?: () => void;\n withSubmit?: boolean;\n}\n\nexport function CardBody({\n id,\n type,\n title,\n linkedQuestionAnswerStackId,\n position,\n totalItems,\n withDelete,\n deleteClickHandler,\n withEdit,\n editClickHandler,\n withApply,\n applyClickHandler,\n withLink,\n linkClickHandler,\n moveHandler,\n withItemInfo,\n openInfoLinkClickHandler,\n withSubmit,\n}: ICardBodyProps) {\n const classes = useStyles();\n const shouldRenderActions = withDelete || withEdit || withApply || withLink;\n\n return (\n <>\n <Row justify=\"flex-start\" classes={{root: classes.header}}>\n <Fragment>\n {moveHandler && (\n <Fragment>\n <CardItemPositionTag totalItems={totalItems} position={position} moveHandler={moveHandler} />\n <Divider.Vertical size=\"small\" />\n </Fragment>\n )}\n </Fragment>\n {type && <Text.Paragraph variant=\"body2\">{cardTypeMap.get(type)}</Text.Paragraph>}\n {id && (\n <Fragment>\n <Divider.Vertical size=\"small\" />\n <Text.Paragraph variant=\"body2\">Item ID: {id}</Text.Paragraph>\n </Fragment>\n )}\n {linkedQuestionAnswerStackId && withItemInfo && openInfoLinkClickHandler && (\n <Fragment>\n <Divider.Vertical size=\"small\" />\n <CardLinkInfoTooltip clickHandler={openInfoLinkClickHandler} />\n </Fragment>\n )}\n {shouldRenderActions && (\n <div className={classes.deleteButton}>\n {withEdit && (\n <Button.Icon clickHandler={editClickHandler}>\n <Icon.EditIcon />\n </Button.Icon>\n )}\n {withLink && (\n <Button.Icon clickHandler={linkClickHandler}>\n <Icon.LinkIcon />\n </Button.Icon>\n )}\n {withDelete && (\n <Button.Icon clickHandler={deleteClickHandler}>\n <Icon.DeleteIcon />\n </Button.Icon>\n )}\n {withApply && (\n <Fragment>\n {!withSubmit && (\n <Button.Secondary size=\"small\" clickHandler={applyClickHandler}>\n Apply\n </Button.Secondary>\n )}\n\n {withSubmit && <Form.ButtonSubmit size=\"small\" text=\"Apply\" />}\n </Fragment>\n )}\n </div>\n )}\n </Row>\n <Row justify=\"flex-start\">{title && <Text.Heading as=\"h3\">{title}</Text.Heading>}</Row>\n </>\n );\n}\n\nconst useStyles = makeStyles((theme) => {\n const marginBottom = theme.spacing(3);\n return {\n header: {\n marginBottom,\n },\n heading: {\n marginBottom,\n },\n paragraph: {\n color: theme.palette.grey[100],\n },\n dragIcon: {\n marginRight: theme.spacing(3),\n },\n deleteButton: {\n marginLeft: 'auto',\n },\n };\n});\n","import {makeStyles} from '@material-ui/core';\nimport {layoutConfig} from 'layout';\nimport {IComponentWithChildren} from 'models';\nimport React from 'react';\nimport {borderGeneral} from 'styles';\n\ninterface IDroppableAreaProps extends IComponentWithChildren {\n isActive: boolean;\n asOverlay?: boolean;\n}\n\nexport function DroppableArea({children, isActive, asOverlay = false}: IDroppableAreaProps) {\n const classes = useStyles({isActive, asOverlay});\n return <div className={classes.root}>{!asOverlay && children}</div>;\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: ({isActive, asOverlay}: Pick<IDroppableAreaProps, 'isActive' | 'asOverlay'>) => ({\n zIndex: 99,\n position: asOverlay ? 'absolute' : 'relative',\n opacity: asOverlay ? 0.9 : 1,\n width: '100%',\n height: '100%',\n minHeight: asOverlay\n ? `calc(100vh - ${layoutConfig.scrollableAreaWithoutSecondaryNavigationSubtrahend + 190}px)`\n : '100%',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n padding: theme.spacing(4),\n background: isActive ? theme.palette.secondary.light : theme.palette.grey[50],\n ...borderGeneral,\n borderStyle: 'dashed',\n }),\n}));\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {itemsApi} from 'api';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {itemsMessages} from '../../utils';\nimport {prefix} from './config';\n\nexport const promoteItemAnswerStackThunk: any = createAsyncThunk<any, number>(\n `${prefix} promoteItemAnswerStack`,\n async (answerStackId: number, {dispatch, rejectWithValue}) => {\n try {\n const {parsedBody} = await itemsApi.promoteItemAnswerStack(answerStackId);\n dispatch(toastNotificationManager.createSuccessToastAction(itemsMessages.promoteAnswerStackSuccess));\n return parsedBody;\n } catch (err) {\n dispatch(toastNotificationManager.createErrorToastAction(err.parsedBody));\n return rejectWithValue({error: err});\n }\n }\n);\n","import React from 'react';\nimport {SubtitlePageViewHeader} from 'admin/components';\nimport {Wrapper} from 'components-lib';\n\nexport const Subtitle = ({withColor, as, color, title}) => {\n return (\n <SubtitlePageViewHeader withColor={withColor} as={as} color={color}>\n <Wrapper>{title}</Wrapper>\n </SubtitlePageViewHeader>\n );\n};\n","import React, {useCallback, useMemo, DragEvent, SyntheticEvent} from 'react';\nimport {PageLayoutOneOrTwoEqualCols} from 'layout';\nimport {ActiveStepPage, NavigationProgressBar} from 'admin/components';\nimport {AddIntegrationMetadata, UploadCertificate, PreviewAndTest, PickIntegrationTypeComponent} from '../';\nimport {useFormikContext} from 'formik';\nimport {FormNameEnum} from 'enums/form';\nimport {DraggableArea, PageViewHeader} from 'components-lib';\nimport {IAddIntegrationFormBaseValues} from 'models/integrations';\nimport {NavigationProgressBarTextEnum} from 'admin/integrations/enums';\nimport {NavigationProgressStepsEnum} from 'enums/common';\nimport {useAddIntegrationType} from '../../hooks';\n\nexport const AddIntegrationActiveStepPage = ({\n footer,\n backButtonClickHandler,\n activeStep,\n isFirstStep,\n isSecondStep,\n isThirdStep,\n}) => {\n const {\n values: {integrationType},\n setFieldValue,\n } = useFormikContext<IAddIntegrationFormBaseValues>();\n const {isMicrosoftTeams, isGoogleSitesSource, isGoogleSitesDestination} = useAddIntegrationType(integrationType);\n\n const shouldDisableBackButton = isFirstStep;\n const stepOneText = NavigationProgressStepsEnum.StepOne + NavigationProgressBarTextEnum.Step1Text;\n const stepTwoText = NavigationProgressStepsEnum.StepTwo + NavigationProgressBarTextEnum.Step2Text;\n const stepThreeText = NavigationProgressStepsEnum.StepThree + NavigationProgressBarTextEnum.Step3Text;\n\n const handleFileDrop = useCallback(\n (event: DragEvent<HTMLDivElement>) => {\n event.stopPropagation();\n event.preventDefault();\n\n const certificate = event.dataTransfer.files[0];\n setFieldValue(FormNameEnum.certificate, certificate);\n },\n [setFieldValue]\n );\n\n const handleDragOver = useCallback((event: SyntheticEvent) => {\n event.stopPropagation();\n event.preventDefault();\n }, []);\n\n const subHeading = useMemo(\n () => (\n <NavigationProgressBar\n isFirstStep={isFirstStep}\n isSecondStep={isSecondStep}\n isThirdStep={isThirdStep}\n stepOneText={stepOneText}\n stepTwoText={stepTwoText}\n stepThreeText={stepThreeText}\n />\n ),\n [isFirstStep, isSecondStep, isThirdStep, stepOneText, stepTwoText, stepThreeText]\n );\n\n const header = useMemo(\n () => (\n <PageViewHeader\n fullFlexWidth\n withColumnPadding={false}\n heading=\"Add Integration\"\n headingColor=\"textPrimary\"\n subHeading={subHeading}\n withBackButton\n shouldDisableBackButton={shouldDisableBackButton}\n backButtonClickHandler={backButtonClickHandler}\n />\n ),\n [subHeading, backButtonClickHandler, shouldDisableBackButton]\n );\n\n const uploadCertificateWrapper = useMemo(\n () => (\n <DraggableArea onDrop={handleFileDrop} onDragOver={handleDragOver}>\n <UploadCertificate />\n </DraggableArea>\n ),\n [handleFileDrop, handleDragOver]\n );\n\n const addIntegrationComponent = useMemo(\n () => (\n <PickIntegrationTypeComponent\n isMicrosoftTeams={isMicrosoftTeams}\n isGoogleSitesSource={isGoogleSitesSource}\n isGoogleSitesDestination={isGoogleSitesDestination}\n />\n ),\n [isMicrosoftTeams, isGoogleSitesSource, isGoogleSitesDestination]\n );\n\n const pageLayoutFirst = useMemo(\n () => <PageLayoutOneOrTwoEqualCols header={header} footer={footer} content={<AddIntegrationMetadata />} />,\n [header, footer]\n );\n\n const pageLayoutSecond = useMemo(() => {\n if (isGoogleSitesDestination || isMicrosoftTeams) {\n return <PageLayoutOneOrTwoEqualCols header={header} footer={footer} content={addIntegrationComponent} />;\n }\n\n return (\n <PageLayoutOneOrTwoEqualCols\n header={header}\n footer={footer}\n contentLeft={addIntegrationComponent}\n contentRight={uploadCertificateWrapper}\n />\n );\n }, [header, footer, uploadCertificateWrapper, addIntegrationComponent, isGoogleSitesDestination, isMicrosoftTeams]);\n\n const pageLayoutThird = useMemo(\n () => <PageLayoutOneOrTwoEqualCols header={header} footer={footer} content={<PreviewAndTest />} />,\n [header, footer]\n );\n\n return (\n <ActiveStepPage\n activeStep={activeStep}\n pageLayoutFirst={pageLayoutFirst}\n pageLayoutSecond={pageLayoutSecond}\n pageLayoutThird={pageLayoutThird}\n />\n );\n};\n","import React, {FC, useCallback} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Form} from 'forms';\nimport {Wrapper, Button} from 'components-lib';\nimport {useFormikContext} from 'formik';\nimport {IAddIntegrationFormBaseValues} from 'models/integrations';\nimport {useAddIntegration} from '../../hooks';\n\ninterface IAddIntegrationContentFooterProps {\n isFirstStep: boolean;\n isSecondStep: boolean;\n isThirdStep: boolean;\n shouldDisableCancelButton: boolean;\n shouldDisableNextButton: boolean;\n nextClickHandler: (formValues: any, resetForm: any) => void;\n openModalCancelAddIntegrationHandler: () => void;\n}\n\nexport const AddIntegrationContentFooter: FC<IAddIntegrationContentFooterProps> = ({\n isFirstStep,\n isSecondStep,\n isThirdStep,\n shouldDisableCancelButton,\n shouldDisableNextButton,\n nextClickHandler,\n openModalCancelAddIntegrationHandler,\n}) => {\n const classes = useStyles();\n const {loading, canShowGoogleSitesErrorBox} = useAddIntegration();\n const formikContext = useFormikContext<IAddIntegrationFormBaseValues>();\n const {\n values: {\n integrationType,\n area,\n integrationName,\n schoolDistrict,\n schoolName,\n email,\n certificate,\n googleDriveSourceFolderLink,\n googleDriveDestinationFolderLink,\n canGiveEditorPermissions,\n clientId,\n clientSecret,\n authorityUrl,\n isGoogleClassroom,\n isGoogleSitesSource,\n isGoogleSitesDestination,\n isMicrosoftTeams,\n },\n resetForm,\n errors,\n } = formikContext;\n\n const hasFormikFields = !!integrationType && !!integrationName && (!!area || !!schoolDistrict || !!schoolName);\n const hasGoogleClassRoomFields = !!email && !!certificate;\n const hasGoogleClassRoomFieldsErrors = !!errors.email || !!errors.certificate || !!errors.masterClassroomEmailAccount;\n const hasGoogleSitesSourceFields =\n !!email && !!googleDriveSourceFolderLink && canGiveEditorPermissions !== false && !!certificate;\n const hasGoogleSitesSourceFieldsErrors =\n !!errors.email || !!errors.certificate || !!errors.canGiveEditorPermissions || !!errors.googleDriveSourceFolderLink;\n const hasGoogleSitesDestinationFields = !!googleDriveDestinationFolderLink && canGiveEditorPermissions !== false;\n const hasGoogleSitesDestinationFieldsErrors =\n !!errors.canGiveEditorPermissions || !!errors.googleDriveDestinationFolderLink;\n const hasMicrosoftTeamsFields = !!clientId && !!clientSecret && !!authorityUrl;\n const hasMicrosoftTeamsFieldsErrors = !!errors.clientId || !!errors.clientSecret || !!errors.authorityUrl;\n\n const canDisableNextButton = useCallback(() => {\n let shouldDisable = false;\n\n if (isGoogleClassroom) {\n shouldDisable = !hasGoogleClassRoomFields || hasGoogleClassRoomFieldsErrors;\n } else if (isMicrosoftTeams) {\n shouldDisable = !hasMicrosoftTeamsFields || hasMicrosoftTeamsFieldsErrors;\n } else if (isGoogleSitesSource) {\n shouldDisable = !hasGoogleSitesSourceFields || hasGoogleSitesSourceFieldsErrors;\n } else if (isGoogleSitesDestination) {\n shouldDisable = !hasGoogleSitesDestinationFields || hasGoogleSitesDestinationFieldsErrors;\n }\n return shouldDisable;\n }, [\n isGoogleClassroom,\n isMicrosoftTeams,\n isGoogleSitesSource,\n isGoogleSitesDestination,\n hasGoogleClassRoomFieldsErrors,\n hasGoogleClassRoomFields,\n hasGoogleSitesSourceFields,\n hasGoogleSitesSourceFieldsErrors,\n hasGoogleSitesDestinationFields,\n hasGoogleSitesDestinationFieldsErrors,\n hasMicrosoftTeamsFields,\n hasMicrosoftTeamsFieldsErrors,\n ]);\n\n const shouldDisableSecondStepNextButton = canDisableNextButton();\n\n return (\n <Wrapper className={classes.actionButtons}>\n <Button.Secondary disabled={shouldDisableCancelButton} clickHandler={openModalCancelAddIntegrationHandler}>\n Cancel\n </Button.Secondary>\n {isFirstStep && (\n <Button.Primary\n size=\"large\"\n disabled={shouldDisableNextButton || !hasFormikFields || canShowGoogleSitesErrorBox}\n clickHandler={() =>\n nextClickHandler({integrationType, area, integrationName, schoolDistrict, schoolName}, resetForm)\n }\n >\n Next\n </Button.Primary>\n )}\n {isSecondStep && (\n <Button.Primary\n size=\"large\"\n disabled={shouldDisableNextButton || shouldDisableSecondStepNextButton}\n clickHandler={() =>\n nextClickHandler(\n {\n integrationType,\n area,\n integrationName,\n schoolDistrict,\n schoolName,\n email,\n clientId,\n clientSecret,\n authorityUrl,\n certificate,\n },\n resetForm\n )\n }\n >\n Next\n </Button.Primary>\n )}\n {isThirdStep && <Form.ButtonSubmit size=\"large\" text={loading ? 'Loading...' : 'Test'} />}\n </Wrapper>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n actionButtons: {\n display: 'flex',\n justifyContent: 'flex-end',\n paddingRight: theme.spacing(2),\n },\n}));\n","import React, {useCallback} from 'react';\nimport {Button, Column, Modal, Row, Text} from 'components-lib';\nimport {ReactComponent as IllustrationTrash} from 'resources/images/instruments/Illustration_trash.svg';\nimport {useFormikContext} from 'formik';\n\nexport const ModalCancelAddIntegration = ({isOpen, handleClose, handleCancelAddIntegration}) => {\n const {resetForm} = useFormikContext();\n\n const closeClickHandler = useCallback(() => {\n handleClose();\n }, [handleClose]);\n\n const cancelAddIntegrationClickHandler = useCallback(() => {\n resetForm();\n handleCancelAddIntegration();\n }, [handleCancelAddIntegration, resetForm]);\n\n return (\n <Modal isOpen={isOpen} handleClose={handleClose} title=\"Cancel Integration Creation\" size=\"small\">\n <Column>\n <Row align=\"center\">\n <IllustrationTrash />\n <Text.Paragraph align=\"center\" withMargin>\n Are you sure you want to cancel the creation of a new integration?\n </Text.Paragraph>\n <Text.Paragraph>This action cannot be undone!</Text.Paragraph>\n </Row>\n </Column>\n <>\n <Button.Secondary clickHandler={closeClickHandler} size=\"small\">\n Close\n </Button.Secondary>\n <Button.Primary clickHandler={cancelAddIntegrationClickHandler} size=\"small\">\n Yes\n </Button.Primary>\n </>\n </Modal>\n );\n};\n","import React, {FC, Fragment, useEffect, useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {useAddIntegration, useAddIntegrationStateActions} from '../../hooks';\nimport {Column, Row, Wrapper} from 'components-lib';\nimport {SelectionEnum, SelectionListItems} from 'filters-selections';\nimport {Subtitle} from '..';\nimport {ErrorBox} from 'admin/components/ErrorBox/ErrorBox';\nimport {heightThreeStepsActivity} from 'utils/layout';\nimport {fixedInputHeight} from '../../utils';\n\nconst firstColList = [\n SelectionEnum.IntegrationTypeSelect,\n SelectionEnum.AreaSingleBasedOnDistrictAndGoogleSites,\n SelectionEnum.SchoolNameBasedOnAreaAndDistrict,\n];\n\nconst secondColList = [SelectionEnum.IntegrationNameInput, SelectionEnum.SchoolDistrictBasedOnArea];\n\nexport const AddIntegrationMetadata: FC = () => {\n const classes = useStyles();\n const {fetchPublishedSourceDetails} = useAddIntegrationStateActions();\n const {hasServiceSourceEmail, googleSitesSourceErrorMessage, canShowGoogleSitesErrorBox} = useAddIntegration();\n\n useEffect(() => {\n if (!hasServiceSourceEmail) {\n fetchPublishedSourceDetails();\n }\n }, [fetchPublishedSourceDetails, hasServiceSourceEmail]);\n\n const renderContentFirstColList = useMemo(\n () => <SelectionListItems className={classes.selectionItem} list={firstColList} withMargin={false} />,\n [classes.selectionItem]\n );\n\n const renderContentSecondColList = useMemo(\n () => <SelectionListItems className={classes.selectionItem} list={secondColList} withMargin={false} />,\n [classes.selectionItem]\n );\n\n return (\n <Fragment>\n <Subtitle withColor={false} as=\"h3\" color=\"textPrimary\" title=\"Step 1: Choose Integration Details\" />\n <Row justify=\"flex-start\" classes={{root: classes.row}}>\n <Column sm={8} md={8} lg={8} xl={6} className={classes.content}>\n <Row align=\"flex-start\">\n <Column sm={6} md={6} lg={6} xl={6}>\n {renderContentFirstColList && renderContentFirstColList}\n </Column>\n <Column sm={6} md={6} lg={6} xl={6}>\n {renderContentSecondColList && renderContentSecondColList}\n </Column>\n </Row>\n </Column>\n <Column sm={4} md={4} lg={4} xl={4} className={classes.content}>\n <Row align=\"flex-start\" justify=\"flex-start\">\n <Column sm={6} md={6} lg={6} xl={6}>\n <Wrapper className={classes.errorBox}>\n {canShowGoogleSitesErrorBox && <ErrorBox errorMessages={googleSitesSourceErrorMessage} />}\n </Wrapper>\n </Column>\n </Row>\n </Column>\n </Row>\n </Fragment>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n row: {\n marginTop: theme.spacing(2),\n },\n content: {\n height: heightThreeStepsActivity,\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(4),\n },\n inputName: {\n height: fixedInputHeight,\n marginRight: theme.spacing(4),\n marginBottom: theme.spacing(3),\n },\n selectionItem: {\n height: fixedInputHeight,\n marginRight: theme.spacing(4),\n marginBottom: theme.spacing(3),\n },\n errorBox: {\n paddingTop: theme.spacing(4) - theme.spacing(1),\n paddingRight: theme.spacing(2),\n },\n}));\n","import React, {Fragment, useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Column, Row} from 'components-lib';\nimport {heightThreeStepsActivity} from 'utils/layout';\nimport {Subtitle} from '..';\nimport {SelectionEnum, SelectionListItems} from 'filters-selections';\n\nconst list = [SelectionEnum.ServiceEmailInput, SelectionEnum.UserToImpersonateInput];\n\nexport const AddIntegrationGoogleClassRoom = () => {\n const classes = useStyles();\n\n const content = useMemo(() => {\n return (\n <Fragment>\n <Subtitle withColor={false} as=\"h3\" color=\"textPrimary\" title=\"Step 2: Google Classroom\" />\n <Row classes={{root: classes.row}} align=\"flex-start\" justify=\"flex-start\">\n <Column sm={8} md={8} lg={8} xl={6}>\n <SelectionListItems list={list} />\n </Column>\n <Column sm={4} md={4} lg={4} xl={6} />\n </Row>\n </Fragment>\n );\n }, [classes.row]);\n\n return <Fragment>{content}</Fragment>;\n};\n\nconst useStyles = makeStyles((theme) => ({\n row: {\n marginTop: theme.spacing(2),\n },\n content: {\n height: heightThreeStepsActivity,\n paddingLeft: theme.spacing(2),\n },\n}));\n","import React from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {AddIntegrationInputList} from '../../../';\nimport {Column} from 'components-lib';\nimport {getAddIntegrationMicrosoftTeamsList} from 'admin/integrations/add-integration';\n\nexport const MicrosoftTeamsContent = () => {\n const classes = useStyles();\n const inputList = getAddIntegrationMicrosoftTeamsList();\n\n return (\n <Column sm={6} md={6} lg={6} xl={4} className={classes.col}>\n <AddIntegrationInputList list={inputList} withHeightThreeStepsActivity={false} />\n </Column>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n col: {\n marginTop: theme.spacing(2),\n },\n}));\n","import React, {Fragment, useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Subtitle} from 'admin';\nimport {Column, Container, Row, Wrapper} from 'components-lib';\nimport {MicrosoftTeamsContent} from './components';\nimport {heightThreeStepsActivity} from 'utils/layout';\n\nexport const AddIntegrationMicrosoftTeams = () => {\n const classes = useStyles();\n\n const content = useMemo(() => {\n return (\n <Fragment>\n <Subtitle withColor={false} as=\"h3\" color=\"textPrimary\" title=\"Step 2: Microsoft Teams\" />\n <Container disableGutters classes={{root: classes.content}}>\n <Row align=\"flex-start\" justify=\"flex-start\" classes={{root: classes.row}}>\n <Column sm={8} md={8} lg={8} xl={9} className={classes.col}>\n <Row align=\"flex-start\" justify=\"flex-start\">\n <MicrosoftTeamsContent />\n </Row>\n </Column>\n </Row>\n </Container>\n </Fragment>\n );\n }, [classes.row, classes.col, classes.content]);\n\n return <Wrapper className={classes.content}>{content}</Wrapper>;\n};\n\nconst useStyles = makeStyles((theme) => ({\n row: {\n marginTop: theme.spacing(2),\n },\n content: {\n height: heightThreeStepsActivity,\n },\n col: {\n paddingRight: theme.spacing(4),\n },\n}));\n","import React, {FC, Fragment, useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {SubtitlePageViewHeader, UploadSingleFile} from 'admin/components';\nimport {Wrapper} from 'components-lib';\nimport {FormNameEnum} from 'enums/form';\nimport {useAddIntegration} from '../../hooks';\nimport {heightThreeStepsActivity} from 'utils/layout';\nimport {IWithDisabled} from 'models';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface IUploadCertificateProps extends IWithDisabled {}\n\nexport const UploadCertificate: FC<IUploadCertificateProps> = ({disabled = false}) => {\n const classes = useStyles();\n const {loading} = useAddIntegration();\n\n const subTitle = useMemo(\n () => (\n <SubtitlePageViewHeader withColor={false} as=\"h3\" color=\"textPrimary\">\n <Fragment>Upload certificate</Fragment>\n </SubtitlePageViewHeader>\n ),\n []\n );\n\n const content = useMemo(() => {\n return (\n <Fragment>\n {subTitle}\n <Wrapper className={classes.content}>\n <UploadSingleFile\n disabled={disabled}\n title=\"Upload Certificate\"\n position=\"vertical\"\n name={FormNameEnum.certificate}\n loading={loading}\n />\n </Wrapper>\n </Fragment>\n );\n }, [classes.content, subTitle, loading, disabled]);\n\n return <Fragment>{content}</Fragment>;\n};\n\nconst useStyles = makeStyles(() => ({\n content: () => {\n return {\n height: heightThreeStepsActivity,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n };\n },\n}));\n","import React, {Fragment, useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {heightThreeStepsActivity} from 'utils/layout';\nimport {getPreviewFirstColumnList, getPreviewSecondColumnList, useAddIntegration} from '../..';\nimport {useFormikContext} from 'formik';\nimport {IAddIntegrationFormBaseValues} from 'models/integrations';\nimport {Column, Loading, Row} from 'components-lib';\nimport {Subtitle} from '..';\nimport {PreviewList} from 'admin/integrations/components';\n\nexport const PreviewAndTest = () => {\n const classes = useStyles();\n const {\n values: {integrationType},\n } = useFormikContext<IAddIntegrationFormBaseValues>();\n const {\n loading,\n email,\n integrationName,\n certificateName,\n areaName,\n integrationTypeStringValue,\n schoolDistrictStringValue,\n schoolNameStringValue,\n googleDriveSourceFolderLink,\n clientId,\n clientSecret,\n authorityUrl,\n masterClassroomEmailAccount,\n } = useAddIntegration();\n\n const type = Number(integrationType);\n\n const firstColInputList = getPreviewFirstColumnList(type, {\n certificateName,\n areaName,\n integrationTypeStringValue,\n schoolNameStringValue,\n clientId,\n });\n\n const secondColInputList = getPreviewSecondColumnList(type, {\n email,\n integrationName,\n schoolDistrictStringValue,\n googleDriveSourceFolderLink,\n clientSecret,\n authorityUrl,\n masterClassroomEmailAccount,\n });\n\n const contentFirstCol = useMemo(() => <PreviewList list={firstColInputList} />, [firstColInputList]);\n const contentSecondCol = useMemo(() => <PreviewList list={secondColInputList} />, [secondColInputList]);\n\n const content = useMemo(() => {\n return (\n <Fragment>\n <Subtitle withColor={false} as=\"h3\" color=\"textPrimary\" title=\"Step 3: Preview and Test\" />\n <Row justify=\"flex-start\" align=\"flex-start\" classes={{root: classes.row}}>\n <Column sm={8} md={8} lg={8} xl={6} className={classes.content}>\n <Row>\n <Column sm={6} md={6} lg={6} xl={6} className={classes.firstCol}>\n {contentFirstCol && contentFirstCol}\n </Column>\n <Column sm={6} md={6} lg={6} xl={6} className={classes.secondCol}>\n {contentSecondCol && contentSecondCol}\n </Column>\n </Row>\n </Column>\n <Column sm={4} md={4} lg={4} xl={4} />\n </Row>\n </Fragment>\n );\n }, [classes, contentFirstCol, contentSecondCol]);\n\n return <Fragment>{loading ? <Loading /> : content}</Fragment>;\n};\n\nconst useStyles = makeStyles((theme) => ({\n row: {\n marginTop: theme.spacing(2),\n },\n content: () => {\n return {\n height: heightThreeStepsActivity,\n display: 'flex',\n justifyContent: 'flex-start',\n alignItems: 'flex-start',\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(4),\n };\n },\n firstCol: {\n height: heightThreeStepsActivity,\n },\n secondCol: {\n height: heightThreeStepsActivity,\n },\n}));\n","import React, {useEffect} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {useFormikContext} from 'formik';\nimport {Column, Row} from 'components-lib';\nimport {IntegrationConfirmCheckbox} from 'admin/integrations/components';\nimport {AddIntegrationInputList} from '../..';\nimport {IAddIntegrationFormBaseValues} from 'models';\nimport {FormNameEnum} from 'enums/form';\nimport {useAddIntegration} from 'admin/integrations/add-integration';\nimport {getEditorPermissionCheckboxText} from 'admin/integrations/utils';\nimport {getAddIntegrationGoogleSitesList} from 'admin/integrations/add-integration/utils';\n\nexport const GoogleSitesDestinationContent = () => {\n const classes = useStyles();\n const {serviceSourceEmail} = useAddIntegration();\n const {\n values: {email, integrationType, canGiveEditorPermissions},\n setFieldValue,\n } = useFormikContext<IAddIntegrationFormBaseValues>();\n const type = Number(integrationType);\n const inputList = getAddIntegrationGoogleSitesList(type);\n const hasServiceEmail = !!serviceSourceEmail;\n const shouldShowError = canGiveEditorPermissions === false;\n const checkboxText = getEditorPermissionCheckboxText(serviceSourceEmail);\n\n useEffect(() => {\n if (!hasServiceEmail) {\n setFieldValue(FormNameEnum.email, serviceSourceEmail ?? '');\n }\n }, [email, setFieldValue, hasServiceEmail, serviceSourceEmail]);\n\n return (\n <Row justify=\"flex-start\" classes={{root: classes.row}}>\n <Column sm={6} md={6} lg={6} xl={4}>\n <AddIntegrationInputList list={inputList} withHeightThreeStepsActivity={false} />\n <IntegrationConfirmCheckbox\n text={checkboxText}\n name={FormNameEnum.canGiveEditorPermissions}\n showError={shouldShowError}\n />\n </Column>\n </Row>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n row: {\n marginTop: theme.spacing(2),\n },\n}));\n","import React, {Fragment, useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Column, Container, Row, Wrapper} from 'components-lib';\nimport {GoogleSitesDestinationContent} from './components';\nimport {heightThreeStepsActivity} from 'utils/layout';\nimport {Subtitle} from 'admin/components';\n\nexport const AddIntegrationGoogleSitesDestination = () => {\n const classes = useStyles();\n\n const content = useMemo(\n () => (\n <Fragment>\n <Subtitle withColor={false} as=\"h3\" color=\"textPrimary\" title=\"Step 2: Google Sites Destination\" />\n <Container disableGutters classes={{root: classes.content}}>\n <Row align=\"flex-start\" justify=\"flex-start\" classes={{root: classes.row}}>\n <Column sm={8} md={8} lg={8} xl={9}>\n <Row align=\"flex-start\" justify=\"flex-start\">\n <GoogleSitesDestinationContent />\n </Row>\n </Column>\n <Column sm={4} md={4} lg={4} xl={3} />\n </Row>\n </Container>\n </Fragment>\n ),\n [classes.row, classes.content]\n );\n\n return <Wrapper className={classes.content}>{content}</Wrapper>;\n};\n\nconst useStyles = makeStyles((theme) => ({\n row: {\n marginTop: theme.spacing(2),\n },\n content: {\n height: heightThreeStepsActivity,\n paddingRight: theme.spacing(4),\n },\n}));\n","import React, {Fragment, useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {useFormikContext} from 'formik';\nimport {Subtitle} from 'admin/components';\nimport {Column, Row, Wrapper} from 'components-lib';\nimport {IntegrationConfirmCheckbox} from 'admin/integrations/components';\nimport {AddIntegrationInputList} from '..';\nimport {IAddIntegrationFormBaseValues} from 'models/integrations';\nimport {heightThreeStepsActivity} from 'utils/layout';\nimport {FormNameEnum} from 'enums/form';\nimport {EXAMPLE_EMAIL, getEditorPermissionCheckboxText} from 'admin/integrations/utils';\nimport {getAddIntegrationGoogleSitesList} from '../../utils/helpers';\n\nexport const AddIntegrationGoogleSitesSource = () => {\n const classes = useStyles();\n const {\n values: {email, canGiveEditorPermissions, integrationType},\n } = useFormikContext<IAddIntegrationFormBaseValues>();\n const type = Number(integrationType);\n const inputList = getAddIntegrationGoogleSitesList(type);\n const shouldShowError = canGiveEditorPermissions === false;\n const checkboxText = getEditorPermissionCheckboxText(email ?? EXAMPLE_EMAIL);\n\n const content = useMemo(() => {\n return (\n <Fragment>\n <Subtitle withColor={false} as=\"h3\" color=\"textPrimary\" title=\"Step 2: Google Sites Source\" />\n <Row classes={{root: classes.row}} align=\"flex-start\" justify=\"flex-start\">\n <Column sm={8} md={8} lg={8} xl={6} className={classes.col}>\n <AddIntegrationInputList list={inputList} withHeightThreeStepsActivity={false} />\n <Wrapper className={classes.checkbox}>\n <IntegrationConfirmCheckbox\n text={checkboxText}\n name={FormNameEnum.canGiveEditorPermissions}\n showError={shouldShowError}\n />\n </Wrapper>\n </Column>\n </Row>\n </Fragment>\n );\n }, [classes.row, classes.checkbox, classes.col, inputList, checkboxText, shouldShowError]);\n\n return <Wrapper className={classes.content}>{content}</Wrapper>;\n};\n\nconst useStyles = makeStyles((theme) => ({\n row: {\n marginTop: theme.spacing(2),\n },\n content: {\n height: heightThreeStepsActivity,\n },\n checkbox: {\n paddingLeft: theme.spacing(2),\n },\n col: {\n paddingRight: theme.spacing(2) + theme.spacing(3),\n },\n}));\n","import React, {Fragment, ReactNode, useMemo} from 'react';\nimport {\n AddIntegrationGoogleClassRoom,\n AddIntegrationMicrosoftTeams,\n AddIntegrationGoogleSitesSource,\n AddIntegrationGoogleSitesDestination,\n} from '../';\n\nexport const PickIntegrationTypeComponent = ({isMicrosoftTeams, isGoogleSitesSource, isGoogleSitesDestination}) => {\n const content = useMemo(() => {\n let component: ReactNode = <AddIntegrationGoogleClassRoom />;\n\n if (isMicrosoftTeams) {\n component = <AddIntegrationMicrosoftTeams />;\n }\n\n if (isGoogleSitesSource) {\n component = <AddIntegrationGoogleSitesSource />;\n }\n\n if (isGoogleSitesDestination) {\n component = <AddIntegrationGoogleSitesDestination />;\n }\n\n return component;\n }, [isMicrosoftTeams, isGoogleSitesSource, isGoogleSitesDestination]);\n\n return <Fragment>{content}</Fragment>;\n};\n","import React from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {RemoveRedEye} from '@material-ui/icons';\nimport {Wrapper} from 'components-lib';\nimport {IntegrationInput} from 'admin/integrations/components';\nimport {heightThreeStepsActivity} from 'utils/layout';\nimport {fixedInputHeight} from 'admin/integrations/add-integration/utils';\n\nexport const AddIntegrationInputList = ({list, withHeightThreeStepsActivity = true}) => {\n const classes = useStyles({withHeightThreeStepsActivity});\n\n return (\n <Wrapper className={classes.content}>\n {list.map(({label, name, type, options: {withMargin, withIcon}}, idx: number) => (\n <IntegrationInputWrapper key={idx}>\n <IntegrationInput\n label={label}\n name={name}\n type={type}\n withMargin={withMargin}\n withIcon={withIcon}\n icon={withIcon && <RemoveRedEye />}\n />\n </IntegrationInputWrapper>\n ))}\n </Wrapper>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n content: ({withHeightThreeStepsActivity}: {withHeightThreeStepsActivity: boolean}) => {\n return {\n height: withHeightThreeStepsActivity ? heightThreeStepsActivity : '',\n paddingLeft: theme.spacing(2),\n };\n },\n inputContainer: {\n height: fixedInputHeight,\n marginBottom: theme.spacing(3),\n },\n}));\n\nconst IntegrationInputWrapper = ({children}) => {\n const {inputContainer} = useStyles();\n\n return <Wrapper className={inputContainer}>{children}</Wrapper>;\n};\n","export const prefix = '[SurveyTaker]';\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {instrumentsApi} from 'api';\nimport {IGetActiveSurveyApiResponse, IGetActiveSurveyPayload} from 'models';\nimport {prefix} from './config';\n\nexport const getActiveSurveyThunk: any = createAsyncThunk<IGetActiveSurveyApiResponse, IGetActiveSurveyPayload>(\n `${prefix} getActiveSurvey`,\n async ({userId, programId, instrumentId}) => {\n try {\n const {parsedBody} = await instrumentsApi.getActiveSurvey(userId, programId, instrumentId);\n return parsedBody;\n } catch (error) {\n throw new Error(error.parsedBody);\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {instrumentsApi} from 'api';\nimport {ISurvey} from 'survey-react';\nimport {prefix} from './config';\n\nexport const getGeneralSurveyThunk: any = createAsyncThunk<ISurvey, number>(\n `${prefix} getGeneralSurvey`,\n async (instrumentId) => {\n try {\n const {parsedBody} = await instrumentsApi.getGeneralSurvey(instrumentId);\n return parsedBody;\n } catch (err) {\n throw new Error(err.parsedBody);\n }\n }\n);\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {instrumentsApi} from 'api';\nimport {IGetActiveSurveyApiResponse} from 'models';\nimport {prefix} from './config';\n\nexport const saveActiveSurveyThunk: any = createAsyncThunk<\n IGetActiveSurveyApiResponse,\n {userId: number; instrumentId: number; results: {[id: number]: string}}\n>(`${prefix} saveActiveSurvey`, async (payload) => {\n try {\n const {parsedBody} = await instrumentsApi.saveSurvey(payload.userId, payload.instrumentId, payload.results);\n return parsedBody;\n } catch (err) {\n throw new Error(err.parsedBody);\n }\n});\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {instrumentsApi} from 'api';\nimport {ISaveGeneralSurveyApiResponse, ISaveGeneralSurveyPayload} from 'models/library/instruments';\nimport {prefix} from './config';\n\nexport const saveGeneralSurveyThunk: any = createAsyncThunk<ISaveGeneralSurveyApiResponse, ISaveGeneralSurveyPayload>(\n `${prefix} saveGeneralSurvey`,\n async (payload) => {\n try {\n const {parsedBody} = await instrumentsApi.saveGeneralSurvey(payload);\n return parsedBody;\n } catch (err) {\n throw new Error(err.parsedBody);\n }\n }\n);\n","import React from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {TextArea} from 'components-lib';\n\nexport const AnswerOpenEnded = () => {\n const classes = useStyles();\n\n return (\n <div className={classes.openEnded}>\n <TextArea placeholder={'...'} rows={2} disabled />\n </div>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n openEnded: {\n marginLeft: theme.spacing(1),\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(3),\n },\n}));\n","export enum DropdownItemTextEnum {\n editTags = 'Edit Tags',\n download = 'Download',\n delete = 'Delete',\n copyLink = 'Copy Link',\n open = 'Open',\n}\n","export const googleSitesMessages = {\n copySuccess: 'The Google Site was copied successfully.',\n copyError: 'The Google Site was not copied successfully.',\n unknownError: 'Something went wrong!',\n};\n","import React, {useCallback} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {IntegrationStatusNum} from 'enums/integrations';\nimport {useIntegration} from 'admin/integrations';\nimport {useModal} from 'hooks';\nimport {Button, Wrapper} from 'components-lib';\nimport {\n useIntegrationDetailsFormValues,\n useIntegrationDetailType,\n useIntegrationIdParam,\n} from 'admin/integrations/details';\nimport {ModalDelete, ModalUpdate} from 'admin/components';\nimport {IIntegrationDetailsFormBaseValues} from 'models/integrations';\nimport {useFormikContext} from 'formik';\n\nexport const SubheadingActions = () => {\n const classes = useStyles();\n const {integrationId} = useIntegrationIdParam();\n const {integration, loading, deleteIntegration, publishIntegration, updateIntegration} = useIntegration();\n const {isOpen: isUpdateIntegrationModalOpen, setIsOpen: setIsUpdateIntegrationModalOpen} = useModal();\n const {isOpen: isModalDeleteIntegration, setIsOpen: setIsDeleteIntegrationModal} = useModal();\n const {values, isValid, dirty, isSubmitting} = useFormikContext<IIntegrationDetailsFormBaseValues>();\n const {hasOnlyIntegrationNameChanged} = useIntegrationDetailsFormValues();\n const {isGoogleSitesSource, isGoogleClassRoom, isGoogleSitesDestination} = useIntegrationDetailType(\n integration?.integrationType\n );\n\n const shouldDisableDelete = loading;\n const shouldDisablePublish = integration?.status !== IntegrationStatusNum.TEST_SUCCESS;\n\n /*\n Enable Update button only if some of the fields are changed\n */\n\n const shouldDisableUpdateBasedOnGoogleIntegrations =\n (isGoogleSitesSource || isGoogleClassRoom || isGoogleSitesDestination) && !values.canGiveEditorPermissions;\n const shouldDisableUpdateBase = isSubmitting || !isValid;\n const shouldDisableUpdateButton = shouldDisableUpdateBase || !dirty || shouldDisableUpdateBasedOnGoogleIntegrations;\n\n /*\n Upon click a pop-up is shown “Are you sure you want to update the integration? It will be re-tested again.â€\n Pop-up is not shown if only Integration name is changed\n Upon click on Update, the integration is tested again\n\n If testing is successful and the integration was previously published > automatically publish after testing \n */\n\n const openDeleteModalClickHandler = useCallback(() => setIsDeleteIntegrationModal(true), [\n setIsDeleteIntegrationModal,\n ]);\n\n const openUpdateIntegrationModalHandler = useCallback(() => setIsUpdateIntegrationModalOpen(true), [\n setIsUpdateIntegrationModalOpen,\n ]);\n\n const publishClickHandler = useCallback(() => publishIntegration(integrationId), [integrationId, publishIntegration]);\n\n const updateClickIntegrationHandler = useCallback(() => updateIntegration(integrationId, values), [\n integrationId,\n updateIntegration,\n values,\n ]);\n\n const updateClickHandler = useCallback(() => {\n if (hasOnlyIntegrationNameChanged) {\n return updateClickIntegrationHandler();\n }\n\n return openUpdateIntegrationModalHandler();\n }, [openUpdateIntegrationModalHandler, hasOnlyIntegrationNameChanged, updateClickIntegrationHandler]);\n\n const deleteIntegrationClickHandler = useCallback(() => deleteIntegration(integrationId), [\n integrationId,\n deleteIntegration,\n ]);\n\n return (\n <Wrapper className={classes.actions}>\n <Button.Secondary disabled={loading || shouldDisableUpdateButton} clickHandler={updateClickHandler}>\n Update\n </Button.Secondary>\n <Button.Secondary disabled={shouldDisableDelete} clickHandler={openDeleteModalClickHandler}>\n Delete\n </Button.Secondary>\n\n <Button.Primary disabled={shouldDisablePublish || loading} clickHandler={publishClickHandler}>\n Publish\n </Button.Primary>\n <ModalUpdate\n loading={loading}\n title=\"Update Integration\"\n text=\"Are you sure you want to update the existing integration? It will be re-tested again.\"\n isOpen={isUpdateIntegrationModalOpen}\n setIsOpen={setIsUpdateIntegrationModalOpen}\n confirmHandler={updateClickIntegrationHandler}\n />\n <ModalDelete\n loading={loading}\n title=\"Delete Integration\"\n text=\"Are you sure you want to delete the existing integration?\"\n isOpen={isModalDeleteIntegration}\n setIsOpen={setIsDeleteIntegrationModal}\n confirmHandler={deleteIntegrationClickHandler}\n />\n </Wrapper>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n actions: {\n marginRight: theme.spacing(3),\n },\n}));\n","import React from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Wrapper} from 'components-lib';\nimport {ActiveHeader} from 'admin/components';\nimport {useIntegration} from 'admin/integrations';\nimport {SubheadingActions} from './components';\n\nconst emptySpaceWithSlash = `\\u00a0 / \\u00a0`;\n\nexport const Subheading = () => {\n const classes = useStyles();\n const {integration, loading} = useIntegration();\n const integrationName = integration?.name ?? '';\n const activeHeaderText = loading ? '' : emptySpaceWithSlash + integrationName;\n\n return (\n <Wrapper className={classes.subheading}>\n <Wrapper className={classes.activeHeaderContainer}>\n <ActiveHeader isActive={false}>{activeHeaderText}</ActiveHeader>\n </Wrapper>\n <SubheadingActions />\n </Wrapper>\n );\n};\n\nconst useStyles = makeStyles(() => ({\n subheading: {\n width: '100%',\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n activeHeaderContainer: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'center',\n alignItems: 'center',\n },\n}));\n","import React, {useCallback} from 'react';\nimport {Subheading} from '..';\nimport {PageViewHeader} from 'components-lib';\nimport {useIntegration} from 'admin/integrations';\n\nexport const Header = () => {\n const {redirectToViewListOfIntegrations} = useIntegration();\n\n const backButtonClickHandler = useCallback(() => redirectToViewListOfIntegrations(), [\n redirectToViewListOfIntegrations,\n ]);\n\n return (\n <PageViewHeader\n fullFlexWidth\n withColumnPadding={false}\n heading=\"Integrations\"\n headingColor=\"textPrimary\"\n subHeading={<Subheading />}\n withBackButton\n shouldDisableBackButton={false}\n backButtonClickHandler={backButtonClickHandler}\n />\n );\n};\n","import React, {Fragment, useEffect, useMemo} from 'react';\nimport {Wrapper, Table, Loading} from 'components-lib';\nimport {Subtitle} from 'admin/components';\nimport {makeStyles} from '@material-ui/core';\nimport {getAuditLogsColumns} from '../../utils';\nimport {useIntegration, useIntegrationStoreState} from 'admin/integrations';\nimport {getDatetimeAMPMinUTC} from 'utils/common';\n\nexport const AuditLogs = () => {\n const classes = useStyles();\n const {auditLogs, loadingAuditLogs} = useIntegration();\n const {clearIntegrationAuditLogsState} = useIntegrationStoreState();\n\n const columns = getAuditLogsColumns();\n\n useEffect(() => {\n return () => {\n clearIntegrationAuditLogsState();\n };\n }, [clearIntegrationAuditLogsState]);\n\n const rows = useMemo(() => {\n if (!auditLogs.length) {\n return [];\n }\n\n return auditLogs.map((auditLog) => {\n const {activity, date, messages, outcome, userName} = auditLog;\n const datetimeAMPMinUTC = getDatetimeAMPMinUTC(date);\n\n return {\n dateOfChange: datetimeAMPMinUTC,\n user: userName,\n activity,\n outcome,\n remarks: messages,\n };\n });\n }, [auditLogs]);\n\n const hasRows = !!rows.length;\n\n const tableContent = useMemo(\n () => (\n <Fragment>\n {hasRows ? <Table rows={rows} columns={columns} withTableHead /> : <Fragment>No results found</Fragment>}\n </Fragment>\n ),\n [rows, columns, hasRows]\n );\n\n return (\n <Fragment>\n <Subtitle withColor={false} as=\"h3\" color=\"textPrimary\" title=\"Audit Logs\" />\n <Wrapper className={classes.content}>{loadingAuditLogs ? <Loading /> : tableContent}</Wrapper>\n </Fragment>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n content: {\n paddingLeft: theme.spacing(2),\n },\n}));\n","import React, {Fragment, useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Wrapper} from 'components-lib';\nimport {AuditLogs, IntegrationDetails} from 'admin/integrations';\n\nexport const IntegrationDetailsContent = () => {\n const classes = useStyles();\n\n const content = useMemo(\n () => (\n <Fragment>\n <Wrapper className={classes.detailsContainer}>\n <IntegrationDetails />\n </Wrapper>\n <AuditLogs />\n </Fragment>\n ),\n [classes.detailsContainer]\n );\n\n return <Wrapper>{content}</Wrapper>;\n};\n\nconst useStyles = makeStyles((theme) => ({\n detailsContainer: {\n marginBottom: theme.spacing(3),\n },\n}));\n","import React, {useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Column, Container, Row} from 'components-lib';\nimport {Subtitle} from 'admin/components';\nimport {\n EditIntegrationCertificate,\n EditorPermissionsCheckbox,\n getIntegrationDetailsFirstColumnList,\n getIntegrationDetailsSecondColumnList,\n getIsNotIntegrationFailedOrHasError,\n PreviewList,\n useIntegration,\n useIntegrationDetailType,\n} from 'admin/integrations';\n\nexport const IntegrationDetails = () => {\n const classes = useStyles();\n const {integration} = useIntegration();\n const {isGoogleClassRoom, isGoogleSitesSource, isGoogleSitesDestination} = useIntegrationDetailType(\n integration?.integrationType\n );\n\n const shouldRenderEditorPermissionsCheckbox = isGoogleSitesSource || isGoogleSitesDestination;\n const shouldRenderEditIntegrationCertificate = isGoogleSitesSource || isGoogleClassRoom;\n const isTestingFailedOrErrorOrPending = getIsNotIntegrationFailedOrHasError(integration.status);\n\n const firstColInputList = getIntegrationDetailsFirstColumnList(integration);\n const secondColInputList = getIntegrationDetailsSecondColumnList(integration);\n\n const contentFirstCol = useMemo(() => <PreviewList list={firstColInputList} />, [firstColInputList]);\n const contentSecondCol = useMemo(() => <PreviewList list={secondColInputList} />, [secondColInputList]);\n\n return (\n <Container disableGutters classes={{root: classes.container}}>\n <Subtitle withColor={false} as=\"h3\" color=\"textPrimary\" title=\"Details\" />\n <Row justify=\"flex-start\" align=\"flex-start\" classes={{root: classes.row}}>\n <Column sm={8} md={8} lg={8} xl={9} className={classes.content}>\n <Row justify=\"flex-start\" align=\"flex-start\">\n <Column sm={6} md={6} lg={6} xl={4}>\n {contentFirstCol && contentFirstCol}\n </Column>\n <Column sm={6} md={6} lg={6} xl={4}>\n {contentSecondCol && contentSecondCol}\n </Column>\n </Row>\n {shouldRenderEditorPermissionsCheckbox && (\n <Row justify=\"flex-start\" align=\"flex-start\">\n <Column sm={6} md={6} lg={6} xl={4} className={classes.checkbox}>\n <EditorPermissionsCheckbox />\n </Column>\n </Row>\n )}\n {shouldRenderEditIntegrationCertificate && (\n <Row justify=\"flex-start\" align=\"flex-start\">\n <Column sm={6} md={6} lg={6} xl={4}>\n <EditIntegrationCertificate disabled={isTestingFailedOrErrorOrPending} />\n </Column>\n </Row>\n )}\n </Column>\n </Row>\n </Container>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n paddingBottom: theme.spacing(2),\n borderBottom: `1px solid ${theme.palette.grey[200]}`,\n },\n row: {\n marginTop: theme.spacing(2),\n },\n content: {\n paddingLeft: theme.spacing(2),\n },\n checkbox: {\n paddingLeft: theme.spacing(2),\n paddingBottom: theme.spacing(3),\n },\n}));\n","import React, {SyntheticEvent, DragEvent, useCallback, FC} from 'react';\nimport {useFormikContext} from 'formik';\nimport {makeStyles} from '@material-ui/core';\nimport {FormNameEnum} from 'enums/form';\nimport {DraggableArea, Wrapper} from 'components-lib';\nimport {IWithDisabled} from 'models/common';\nimport {UploadSingleFile} from 'admin/components';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface IEditIntegrationCertificateProps extends IWithDisabled {}\n\nexport const EditIntegrationCertificate: FC<IEditIntegrationCertificateProps> = ({disabled = false}) => {\n const classes = useStyles();\n const {setFieldValue} = useFormikContext<any>();\n\n const handleFileDrop = useCallback(\n (event: DragEvent<HTMLDivElement>) => {\n event.stopPropagation();\n event.preventDefault();\n\n const certificate = event.dataTransfer.files[0];\n setFieldValue(FormNameEnum.certificate, certificate);\n },\n [setFieldValue]\n );\n\n const handleDragOver = useCallback((event: SyntheticEvent) => {\n event.stopPropagation();\n event.preventDefault();\n }, []);\n\n return (\n <Wrapper className={classes.content}>\n <DraggableArea onDrop={handleFileDrop} onDragOver={handleDragOver} disabled={disabled}>\n <UploadSingleFile\n disabled={disabled}\n title=\"Upload Certificate\"\n position=\"horizontal\"\n name={FormNameEnum.certificate}\n loading={false}\n />\n </DraggableArea>\n </Wrapper>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n content: {\n marginBottom: theme.spacing(3),\n },\n}));\n","import React, {FC, useEffect} from 'react';\nimport {\n IntegrationConfirmCheckbox,\n useIntegration,\n getEditorPermissionCheckboxText,\n getIsNotIntegrationFailedOrHasError,\n} from 'admin/integrations';\nimport {FormNameEnum} from 'enums/form';\nimport {useFormikContext} from 'formik';\nimport {IIntegrationDetailsFormBaseValues} from 'models/integrations';\nimport {IWithDisabled} from 'models';\n\ntype IEditorPermissionsCheckboxProps = IWithDisabled;\n\nexport const EditorPermissionsCheckbox: FC<IEditorPermissionsCheckboxProps> = ({disabled}) => {\n const {\n values: {googleDriveSourceFolderLink, googleDriveDestinationFolderLink, serviceEmail},\n setFieldValue,\n } = useFormikContext<IIntegrationDetailsFormBaseValues>();\n const {integration} = useIntegration();\n\n const checkboxText = getEditorPermissionCheckboxText(serviceEmail);\n const isNotTestingFailedOrErrorOrPending = getIsNotIntegrationFailedOrHasError(integration.status);\n const shouldDisableConfirmCheckbox = disabled || isNotTestingFailedOrErrorOrPending;\n\n useEffect(() => {\n return () => {\n if (serviceEmail) {\n setFieldValue(FormNameEnum.canGiveEditorPermissions, false);\n }\n };\n }, [serviceEmail, setFieldValue]);\n\n useEffect(() => {\n return () => {\n if (googleDriveSourceFolderLink || googleDriveDestinationFolderLink) {\n setFieldValue(FormNameEnum.canGiveEditorPermissions, false);\n }\n };\n }, [googleDriveSourceFolderLink, googleDriveDestinationFolderLink, setFieldValue]);\n\n return (\n <IntegrationConfirmCheckbox\n text={checkboxText}\n name={FormNameEnum.canGiveEditorPermissions}\n showError={false}\n disabled={shouldDisableConfirmCheckbox}\n />\n );\n};\n","export enum EntityStatusEnum {\n draft = 'Draft',\n published = 'Published',\n live = 'Live',\n expired = 'Expired',\n error = 'Error',\n processing = 'Processing',\n}\n","export enum QuestionAnswersTypeEnum {\n radioGroup = 'radiogroup',\n checkbox = 'checkbox',\n matrix = 'matrix',\n dropdown = 'dropdown',\n text = 'text', // openEnded\n rating = 'rating', // numericScale\n matrixdropdown = 'matrixdropdown',\n html = 'html',\n questionAnswerEnum = 10,\n matrixEnum = 20,\n matrixHeaderAnswerEnum = 30,\n dropdownAnswerEnum = 40,\n ratingAnswerEnum = 50,\n openEndedAnswerEnum = 60,\n}\n","export enum QuestionPropertiesType {\n choices = 'choices',\n defaultAnswerStackId = 'defaultAnswerStackId',\n linkedQuestionAnswerStack = 'linkedQuestionAnswerStack',\n linkedQuestionAnswerStackId = 'linkedQuestionAnswerStackId',\n name = 'name',\n order = 'order',\n questionAnswerStackId = 'questionAnswerStackId',\n questionId = 'questionId',\n title = 'title',\n type = 'type',\n}\n","export enum QuestionTypeEnum {\n questionAnswerEnum = 10,\n matrixEnum = 20,\n matrixHeaderAnswerEnum = 30,\n dropdownAnswerEnum = 40,\n ratingAnswerEnum = 50,\n openEndedAnswerEnum = 60,\n}\n","export enum QuestionDomainEnum {\n Null = 'null',\n Knowledge = 'Knowledge',\n Attitude = 'Attitude',\n Behavioral = 'Behavioral',\n General = 'General',\n SelfAssessment = 'SelfAssessment',\n OtherAssessment = 'OtherAssessment',\n}\n","export enum QuestionDomainNumEnum {\n Knowledge = 10,\n Attitude = 20,\n Behavioral = 30,\n General = 40,\n SelfAssessment = 50,\n OtherAssessment = 60,\n}\n","export const exportUserActivityMessages = {\n warning:\n 'Are you sure you want to leave this page? You have unsaved changes. If you leave the page, these changes will be lost!',\n};\n","import {v4 as uuidv4} from 'uuid';\nimport {IAdminToolOptions} from 'models/navigation';\n\nexport const getAdminToolsOptions = (\n openUserActivityModalClickHandler: () => void,\n integrationsClickHandler: () => void,\n importItemsClickHandler: () => void,\n logInAsClickHandler: () => void\n): IAdminToolOptions[] => [\n {\n id: uuidv4(),\n text: 'User log',\n clickHandler: () => openUserActivityModalClickHandler(),\n },\n {\n id: uuidv4(),\n text: 'Integrations',\n clickHandler: () => integrationsClickHandler(),\n },\n {\n id: uuidv4(),\n text: 'Import items',\n clickHandler: () => importItemsClickHandler(),\n },\n {\n id: uuidv4(),\n text: 'Log in as',\n disabled: true,\n clickHandler: () => logInAsClickHandler(),\n },\n];\n","export const layoutConfig = {\n scrollableAreaSubtrahend: 110,\n scrollableAreaWithoutSecondaryNavigationSubtrahend: 64,\n};\n","import React from 'react';\nimport {Form} from 'forms';\nimport {InputTypeEnum} from 'enums/form';\n\nexport const IntegrationFormInput = ({name, type = 'text', disabled, withIcon, iconPosition, icon, value}) => {\n if (type === InputTypeEnum.Password) {\n return <Form.PasswordInput name={name} disabled={disabled} value=\"\" />;\n }\n\n return (\n <Form.InputWithField\n name={name}\n value={value}\n type={type}\n disabled={disabled}\n withIcon={withIcon}\n iconPosition={iconPosition}\n icon={icon}\n />\n );\n};\n","import {useAppDispatch} from 'hooks';\nimport {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport {ToastNotificationTypeEnum} from '../enums';\nimport {toastNotificationManager} from '../services';\nimport {notificationsSelector, toastNotificationsActions} from '../store';\n\nexport function useToastNotifications() {\n const dispatch = useAppDispatch();\n const {notifications, ids} = useSelector(notificationsSelector);\n\n const addToastNotification = useCallback(\n (message: string, type = ToastNotificationTypeEnum.success) => {\n dispatch(toastNotificationManager.createToastAction(message, type));\n },\n [dispatch]\n );\n\n const removeToastNotification = useCallback(\n (id: string) => {\n dispatch(toastNotificationsActions.remove({id}));\n },\n [dispatch]\n );\n\n return {\n ids,\n addToastNotification,\n notifications,\n removeToastNotification,\n type: ToastNotificationTypeEnum,\n };\n}\n","export enum SortingOrderEnum {\n ASC = 'ASC',\n DESC = 'DESC',\n}\n","import {useAppDispatch, useNavigate} from 'hooks';\nimport {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\n\nimport {\n activeEntitySelector,\n fetchProgramClassThunk,\n loadingSelector,\n programClassDetailsActions as actions,\n} from '../store';\n\nexport function useProgramClass(classId: number) {\n const dispatch = useAppDispatch();\n const {push} = useNavigate();\n const currentClass = useSelector(activeEntitySelector);\n const loading = useSelector(loadingSelector);\n\n const fetchClass = useCallback(\n (optional?: boolean) => {\n if (!loading && (!optional || !currentClass || currentClass.id !== classId)) {\n dispatch(actions.resetActiveEntry());\n dispatch(fetchProgramClassThunk({classId, push}));\n }\n },\n [loading, currentClass, classId, dispatch, push]\n );\n\n return {\n loading,\n currentClass,\n fetchClass,\n reset: actions.resetActiveEntry,\n };\n}\n","import {FormNameEnum} from 'filters-selections';\nimport {RolesEnum} from 'permissions';\nimport {IFetchUserActivityQueryParams} from '../models';\n\nexport const mapUserActivityExport = (from: Date, to: Date, roleList: RolesEnum[]): IFetchUserActivityQueryParams => {\n return {\n [FormNameEnum.from]: from.toISOString().substring(0, 10),\n [FormNameEnum.to]: to.toISOString().substring(0, 10),\n [FormNameEnum.role]: roleList,\n };\n};\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {IHttpResponse, permissionsApi} from 'api';\nimport {prefix} from './config';\nimport {config} from 'config';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {IFetchUserActivityQueryParams} from '../../models';\nimport {IGetUserActivityExportResponse} from 'models';\n\nconst url = `${config.jaEeApi.baseUrlExports}/UserActivity/GetUserActivityReport`;\n\nexport const fetchUserActivityExportThunk: any = createAsyncThunk(\n `${prefix} fetchUserActivityExport`,\n async (params: IFetchUserActivityQueryParams, {rejectWithValue, dispatch}) => {\n try {\n const response: IHttpResponse<IGetUserActivityExportResponse> = await permissionsApi.getUserActivityExport(\n url,\n params\n );\n\n if (response.ok) {\n dispatch(toastNotificationManager.createSuccessToastAction('The export was generated successfully.'));\n return response.parsedBody;\n }\n } catch (error) {\n dispatch(toastNotificationManager.createErrorToastAction(error.statusText || 'Unknown error occurred.'));\n return rejectWithValue(error);\n }\n }\n);\n","export const instrumentsMessages = {\n saveSuccess: 'The instrument was updated successfully.',\n publishSuccess: 'The instrument was published successfully.',\n publishError: 'Can not publish this template as not all required tags are provided!',\n exportSuccess: 'The export was generated successfully.',\n exportError: 'Unknown error occurred.',\n};\n","import React, {useMemo} from 'react';\nimport {Text} from 'components-lib';\nimport {FormNameEnum, SelectionEnum, SelectionListItems} from 'filters-selections';\nimport {useFormikContext} from 'formik';\nimport {Form} from 'forms';\nimport {usePermissions} from 'permissions';\nimport {checkIfAreaAdmin} from '../../details/utils';\n\nconst fieldsListDefault = [\n SelectionEnum.InstrumentName,\n SelectionEnum.Pillar,\n SelectionEnum.InstrumentType,\n SelectionEnum.InstrumentSubType,\n SelectionEnum.Audience,\n SelectionEnum.Phase,\n SelectionEnum.ProgramMultiSelection,\n];\n\nexport function CreateInstrumentFormFields() {\n const {values} = useFormikContext();\n const {hasPermission} = usePermissions();\n const isGeneralInstrument = values[FormNameEnum.isGeneralInstrument];\n const isAreaAdmin = checkIfAreaAdmin(hasPermission);\n\n const selectionListItems = useMemo(() => {\n const fieldsListGeneralInstrument = [SelectionEnum.InstrumentName];\n const list = isGeneralInstrument ? fieldsListGeneralInstrument : fieldsListDefault;\n\n return <SelectionListItems list={list} disableAll={isGeneralInstrument} />;\n }, [isGeneralInstrument]);\n\n return (\n <>\n <Text.Paragraph>Add tags for the newly created instrument. You can always edit this later.</Text.Paragraph>\n <Form.Switch\n label=\"General Instrument\"\n disabled={isAreaAdmin}\n value={isGeneralInstrument}\n name={FormNameEnum.isGeneralInstrument}\n />\n {selectionListItems}\n </>\n );\n}\n","import React, {FC, Fragment, useMemo} from 'react';\n\nimport {BUTTON_NUM_LIST} from 'utils';\nimport {RatingToggleGroup} from '../RatingToggleGroup/RatingToggleGroup';\nimport {FormNameEnum} from 'filters-selections';\nimport {IAnswer} from 'models';\ninterface IAnswersRatingProps {\n disabled?: boolean;\n list?: number[];\n answers: IAnswer[];\n}\n\nexport const AnswersRating: FC<IAnswersRatingProps> = ({list = BUTTON_NUM_LIST, disabled = true, answers}) => {\n const buttonList = useMemo(() => {\n return (\n <RatingToggleGroup\n name={FormNameEnum.positiveScores}\n withLabel={false}\n disabled={disabled}\n list={list}\n answers={answers}\n withPreview\n withForm\n />\n );\n }, [list, disabled, answers]);\n\n return <Fragment>{buttonList}</Fragment>;\n};\n","import React, {FC, Fragment, useCallback, useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {ToggleButton, ToggleButtonGroup} from '@material-ui/lab';\n\nimport {ToggleButton as Toggle} from 'components-lib';\nimport {Form} from 'forms';\nimport {FormNameEnum} from 'filters-selections';\nimport {BUTTON_NUM_LIST} from 'utils';\nimport {IAnswer, IToggleOption} from 'models';\nimport {Label} from 'components-lib';\nimport {mapToggleButtonOptions} from 'admin/library/utils';\n\ninterface IRatingToggleGroupProps {\n disabled?: boolean;\n list?: number[];\n label?: string;\n withLabel: boolean;\n name?: FormNameEnum;\n answers?: IAnswer[];\n withPreview?: boolean;\n withForm?: boolean;\n className?: string;\n}\n\nexport const RatingToggleGroup: FC<IRatingToggleGroupProps> = ({\n list = BUTTON_NUM_LIST,\n label = 'Positive Score',\n withLabel = false,\n disabled = false,\n name,\n answers,\n withPreview = false,\n withForm = false,\n className,\n}) => {\n const classes = useStyles({className});\n\n const defaultButtons = useMemo(\n () =>\n list.map((value) => {\n return {\n value,\n label: value.toString(),\n selected: undefined,\n };\n }),\n [list]\n );\n\n const getToggleButtons = useCallback((): IToggleOption[] => {\n if (withPreview && answers) {\n return mapToggleButtonOptions(answers);\n }\n\n return defaultButtons;\n }, [withPreview, answers, defaultButtons]);\n\n const buttons = getToggleButtons();\n\n const buttonGroup = useMemo(() => {\n return (\n <Fragment>\n {buttons.map((option: IToggleOption, idx: number) => (\n <Toggle\n key={`button-${idx}`}\n name={`button-${name}-${idx}`}\n value={option.value}\n aria-label={option.label}\n disabled={disabled}\n selected={withPreview && option.selected}\n >\n {option.label}\n </Toggle>\n ))}\n </Fragment>\n );\n }, [disabled, name, withPreview, buttons]);\n\n const toggleGroup = useMemo(\n () => (\n <Fragment>\n {withForm ? (\n <FormToggleButtonGroup buttons={buttons} disabled={disabled} withPreview={withPreview} name={name} />\n ) : (\n <ButtonGroup className={className}>{buttonGroup}</ButtonGroup>\n )}\n </Fragment>\n ),\n [className, disabled, name, withPreview, buttonGroup, withForm, buttons]\n );\n\n return (\n <div>\n {withLabel && <Label label={label} />}\n <div className={classes.buttonGroupContainer}>{toggleGroup}</div>\n </div>\n );\n};\n\nfunction FormToggleButtonGroup({buttons, name, disabled, withPreview}) {\n const classes = useStyles();\n\n return (\n <Form.ToggleButtonGroup name={name}>\n {buttons.map((option: IToggleOption, idx: number) => (\n <ToggleButton\n className={classes.toggleButton}\n key={`button-${idx}`}\n name={`button-${name}-${idx}`}\n value={option.value}\n aria-label={option.label}\n disabled={disabled}\n selected={withPreview ? option.selected : undefined}\n >\n {option.label}\n </ToggleButton>\n ))}\n </Form.ToggleButtonGroup>\n );\n}\n\nfunction ButtonGroup({children, className}) {\n return (\n <ToggleButtonGroup className={className} aria-label=\"toggle\">\n {children}\n </ToggleButtonGroup>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n toggleButton: {\n padding: 7.7,\n color: theme.palette.grey[900],\n fontWeight: 'bold',\n border: `1px solid ${theme.palette.grey[300]}`,\n '&.Mui-selected': {\n color: theme.palette.primary.contrastText,\n backgroundColor: theme.palette.secondary.main,\n },\n '&:hover': {\n color: theme.palette.primary.contrastText,\n backgroundColor: theme.palette.secondary.main,\n },\n '& span': {\n width: 10,\n },\n },\n label: {\n color: theme.palette.grey[800],\n fontSize: '0.75rem',\n },\n buttonGroupContainer: {\n display: 'flex',\n justifyContent: 'space-between',\n flexWrap: 'wrap',\n },\n rangeLabel: {\n color: theme.palette.grey[800],\n display: 'flex',\n alignSelf: 'center',\n margin: theme.spacing(2),\n fontSize: '0.75rem',\n },\n}));\n","import React, {FC} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Text} from 'components-lib';\n\ninterface IAreaTitleProps {\n creatorArea: string;\n}\n\nexport const AreaTitle: FC<IAreaTitleProps> = ({creatorArea = ''}) => {\n const classes = useStyles();\n\n return (\n <Text.Heading classes={{root: classes.root}} as=\"h4\">\n {creatorArea}\n </Text.Heading>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n color: theme.palette.grey[700],\n marginLeft: theme.spacing(3),\n },\n}));\n","import {makeStyles} from '@material-ui/core';\nimport {Answers, AnswersMatrix} from 'admin/library/components';\nimport {CardLinkInfoTooltip} from 'admin/library/instruments/components';\nimport {IBuilderDragItem} from 'admin/library/models';\nimport {Button, Icon} from 'components-lib';\nimport {DragItem} from 'dragAndDrop';\nimport {QuestionAnswersTypeEnum} from 'enums';\nimport React, {useRef} from 'react';\n\nimport {useBuilderItemDrop} from '../../hooks';\nimport {CardQuestionSimple} from '../CardQuestionSimple/CardQuestionSimple';\n\nexport const answersComponentMap = {\n 0: Answers,\n '': Answers,\n [QuestionAnswersTypeEnum.checkbox]: Answers,\n [QuestionAnswersTypeEnum.radioGroup]: Answers,\n [QuestionAnswersTypeEnum.questionAnswerEnum]: AnswersMatrix,\n [QuestionAnswersTypeEnum.matrix]: AnswersMatrix,\n [QuestionAnswersTypeEnum.matrixEnum]: AnswersMatrix,\n};\n\ninterface IMatrixQuestionItemProps {\n matrixItem: IBuilderDragItem;\n position: number;\n linkedQuestionAnswerStackId?: number;\n moveHandler: (dragIdx: number, hoverIdx: number) => void;\n deleteHandler: (rowId: number) => void;\n linkClickHandler?: (matrixItem: IBuilderDragItem) => void;\n openInfoLinkClickHandler?: () => void;\n withLink?: boolean;\n}\n\nexport function MatrixQuestionItem({\n matrixItem,\n position,\n moveHandler,\n deleteHandler,\n linkClickHandler,\n openInfoLinkClickHandler,\n withLink,\n}: IMatrixQuestionItemProps) {\n const classes = useStyles();\n const ref = useRef<HTMLDivElement>(null);\n\n useBuilderItemDrop(matrixItem, ref, position, moveHandler);\n\n return (\n <DragItem drag={ref}>\n <div className={classes.root}>\n <CardQuestionSimple\n type={matrixItem.questionType}\n text={matrixItem.text}\n withBorder\n withExtraPadding\n actions={\n <>\n {matrixItem.linkedQuestionAnswerStackId && (\n <CardLinkInfoTooltip clickHandler={openInfoLinkClickHandler} />\n )}\n {withLink && (\n <Button.Icon clickHandler={() => linkClickHandler(matrixItem)}>\n <Icon.LinkIcon />\n </Button.Icon>\n )}\n <Icon.DragIndicatorIcon />\n <Button.Icon clickHandler={() => deleteHandler(position)}>\n <Icon.DeleteIcon />\n </Button.Icon>\n </>\n }\n />\n </div>\n </DragItem>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n marginBottom: theme.spacing(2),\n cursor: 'move',\n },\n}));\n","export const uploadReducer = {};\n","import {IUploadStoreState} from './IUploadStoreState';\n\nconst fileDefaultState = {\n page: {\n loading: false,\n },\n};\n\nconst scormPackageDefaultState = {\n page: {\n loading: false,\n },\n};\n\nconst webLinkDefaultState = {\n page: {\n loading: false,\n },\n};\n\nexport const uploadInitialState: IUploadStoreState = {\n file: fileDefaultState,\n scormPackage: scormPackageDefaultState,\n webLink: webLinkDefaultState,\n};\n","export const getInitialFileToUploadPayload = (id: string, name: string, size: number, cancelRequest: () => void) => ({\n id,\n name,\n size,\n percentage: 0,\n status: 'uploading',\n cancelRequest,\n});\n","export const calculateLoadedPercent = (loaded: number, total: number) => {\n return Math.floor((loaded * 100) / total);\n};\n","import {combineReducers} from '@reduxjs/toolkit';\nimport {filesAllSlice} from '../views/all/store';\nimport {fileDetailsSlice} from '../views/edit/store';\n\nexport const filesReducer = combineReducers({\n all: filesAllSlice.reducer,\n details: fileDetailsSlice.reducer,\n});\n","import {integrationsInitialState} from './integrations.initialState';\nimport {IActionFulfilled, IIntegrationsAllSortOrder, IIntegratiosAllFilter} from 'models';\nimport {IIntegrationStoreState} from './IIntegrationsStoreState';\nimport {cloneDeep} from 'utils';\n\nexport const integrationsReducer = {\n clear(state: IIntegrationStoreState) {\n state.integration = {...integrationsInitialState.integration};\n },\n\n clearAuditLogs(state: IIntegrationStoreState) {\n state.details.auditLogs = {...integrationsInitialState.details.auditLogs};\n },\n\n setCurrentPage: (state: IIntegrationStoreState, action: IActionFulfilled<null, number>) => {\n state.pagination.currentPage = action.payload;\n },\n\n setPerPage: (state: IIntegrationStoreState, action: IActionFulfilled<null, number>) => {\n state.pagination.perPage = action.payload;\n resetPagination(state);\n },\n\n setSortOrderIntegrationsAll: (\n state: IIntegrationStoreState,\n action: IActionFulfilled<null, IIntegrationsAllSortOrder>\n ) => {\n state.sortOrder = action.payload;\n },\n\n setFilterIntegrations: (state: IIntegrationStoreState, action: IActionFulfilled<null, IIntegratiosAllFilter>) => {\n state.filter = action.payload;\n resetPagination(state);\n },\n\n resetFilterIntegrations: (state: IIntegrationStoreState) => {\n state.filter = cloneDeep(integrationsInitialState.filter);\n resetPagination(state);\n },\n};\n\nconst resetPagination = (state: IIntegrationStoreState) => {\n state.pagination.currentPage = integrationsInitialState.pagination.currentPage;\n state.pagination.totalCount = integrationsInitialState.pagination.totalCount;\n};\n","import React, {useCallback, useMemo} from 'react';\nimport {batch} from 'react-redux';\nimport {useActiveStep, useModal} from 'hooks';\nimport {Form} from 'forms';\nimport {AddIntegrationActiveStepPage, AddIntegrationContentFooter, ModalCancelAddIntegration} from './components';\nimport {IAddIntegrationFormBaseValues, IAddIntegrationPayload} from 'models/integrations';\nimport {addIntegrationFormBaseValidationSchema} from './utils/schema';\nimport {ActiveStepEnum} from 'enums/common';\nimport {FormNameEnum as FiltersFormNameEnum} from 'filters-selections';\nimport {FormNameEnum as IntegrationFormNameEnum} from 'enums/form';\nimport {mapAddIntegrationDataForPayload} from './utils/helpers';\nimport {useAddIntegrationStateActions} from './hooks';\nimport {getIsGoogleClassRoom, getIsMicrosoftTeams, getIsGoogleSitesSource, getIsGoogleSitesDestination} from 'admin';\n\nexport const AddIntegrationView = () => {\n const {\n redirectToViewListOfIntegrations,\n createGoogleClassroom,\n createGoogleSitesSource,\n createGoogleSitesDestination,\n createMicrosoftTeams,\n } = useAddIntegrationStateActions();\n const {activeStep, setActiveStep, isFirstStep, isSecondStep, isThirdStep} = useActiveStep();\n const {isOpen: isModalCancelAddIntegration, setIsOpen: setIsModalCancelAddIntegration} = useModal();\n const shouldDisableNextButton = isThirdStep;\n const shouldDisableCancelButton = false;\n\n const closeModalCancelAddIntegrationHandler = useCallback(() => setIsModalCancelAddIntegration(false), [\n setIsModalCancelAddIntegration,\n ]);\n\n const openModalCancelAddIntegrationHandler = useCallback(() => setIsModalCancelAddIntegration(true), [\n setIsModalCancelAddIntegration,\n ]);\n\n const backButtonClickHandler = useCallback(() => {\n if (activeStep < ActiveStepEnum.Second) {\n return;\n }\n\n setActiveStep(activeStep - ActiveStepEnum.First);\n }, [activeStep, setActiveStep]);\n\n const nextClickHandler = useCallback(() => setActiveStep(activeStep + ActiveStepEnum.First), [\n activeStep,\n setActiveStep,\n ]);\n\n const cancelClickHandler = useCallback(() => {\n return batch(() => {\n closeModalCancelAddIntegrationHandler();\n\n if (activeStep > ActiveStepEnum.First) {\n setActiveStep(ActiveStepEnum.First);\n }\n\n redirectToViewListOfIntegrations();\n\n return;\n });\n }, [activeStep, setActiveStep, closeModalCancelAddIntegrationHandler, redirectToViewListOfIntegrations]);\n\n const submitRequest = useCallback(\n (\n payload: IAddIntegrationPayload,\n isGoogleClassRoom: boolean,\n isMicrosoftTeams: boolean,\n isGoogleSitesSource: boolean,\n isGoogleSitesDestination: boolean\n ) => {\n if (isGoogleClassRoom) {\n createGoogleClassroom(payload);\n } else if (isMicrosoftTeams) {\n createMicrosoftTeams(payload);\n } else if (isGoogleSitesSource) {\n createGoogleSitesSource(payload);\n } else if (isGoogleSitesDestination) {\n createGoogleSitesDestination(payload);\n }\n },\n [createGoogleClassroom, createGoogleSitesSource, createGoogleSitesDestination, createMicrosoftTeams]\n );\n\n const submitHandler = useCallback(\n (formValues: IAddIntegrationFormBaseValues) => {\n const {integrationType} = formValues;\n const type = Number(integrationType);\n const isGoogleClassRoom = getIsGoogleClassRoom(type);\n const isMicrosoftTeams = getIsMicrosoftTeams(type);\n const isGoogleSitesSource = getIsGoogleSitesSource(type);\n const isGoogleSitesDestination = getIsGoogleSitesDestination(type);\n\n const payload = mapAddIntegrationDataForPayload(\n formValues,\n isGoogleClassRoom,\n isMicrosoftTeams,\n isGoogleSitesSource,\n isGoogleSitesDestination\n ) as FormData | any;\n\n submitRequest(payload, isGoogleClassRoom, isMicrosoftTeams, isGoogleSitesSource, isGoogleSitesDestination);\n },\n [submitRequest]\n );\n\n const initialValues = useMemo(\n () => ({\n [FiltersFormNameEnum.integrationType]: null,\n [FiltersFormNameEnum.area]: null,\n [FiltersFormNameEnum.schoolName]: null,\n [FiltersFormNameEnum.integrationName]: '',\n [FiltersFormNameEnum.masterClassroomEmailAccount]: '',\n [FiltersFormNameEnum.schoolDistrict]: null,\n [IntegrationFormNameEnum.clientId]: null,\n [IntegrationFormNameEnum.clientSecret]: null,\n [IntegrationFormNameEnum.certificate]: null,\n [IntegrationFormNameEnum.email]: null,\n [IntegrationFormNameEnum.canGiveEditorPermissions]: false,\n [IntegrationFormNameEnum.googleDriveSourceFolderLink]: null,\n [IntegrationFormNameEnum.authorityUrl]: null,\n [IntegrationFormNameEnum.isGoogleClassroom]: false,\n [IntegrationFormNameEnum.isGoogleSitesSource]: false,\n [IntegrationFormNameEnum.isGoogleSitesDestination]: false,\n [IntegrationFormNameEnum.isMicrosoftTeams]: false,\n }),\n []\n );\n\n const footer = useMemo(\n () => (\n <AddIntegrationContentFooter\n isFirstStep={isFirstStep}\n isSecondStep={isSecondStep}\n isThirdStep={isThirdStep}\n shouldDisableCancelButton={shouldDisableCancelButton}\n shouldDisableNextButton={shouldDisableNextButton}\n nextClickHandler={nextClickHandler}\n openModalCancelAddIntegrationHandler={openModalCancelAddIntegrationHandler}\n />\n ),\n [\n isFirstStep,\n isSecondStep,\n isThirdStep,\n nextClickHandler,\n shouldDisableNextButton,\n shouldDisableCancelButton,\n openModalCancelAddIntegrationHandler,\n ]\n );\n\n return (\n <Form.Form<IAddIntegrationFormBaseValues>\n initialValues={initialValues}\n validationSchema={addIntegrationFormBaseValidationSchema}\n submitHandler={submitHandler}\n validateOnChange={false}\n validateOnBlur={true}\n >\n <AddIntegrationActiveStepPage\n footer={footer}\n backButtonClickHandler={backButtonClickHandler}\n activeStep={activeStep}\n isFirstStep={isFirstStep}\n isSecondStep={isSecondStep}\n isThirdStep={isThirdStep}\n />\n <ModalCancelAddIntegration\n isOpen={isModalCancelAddIntegration}\n handleClose={closeModalCancelAddIntegrationHandler}\n handleCancelAddIntegration={cancelClickHandler}\n />\n </Form.Form>\n );\n};\n","import {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport {useAppDispatch, useNavigate} from 'hooks';\nimport {\n auditLogsLoadingSelector,\n auditLogsSelector,\n deleteIntegrationThunk,\n fetchAuditLogThunk,\n fetchIntegrationDetailsThunk,\n integrationDetailsSelector,\n integrationStatusesSelector,\n pageLoadingSelector,\n publishIntegrationThunk,\n serviceSourceEmailSelector,\n} from '../store';\nimport {\n IIntegrationDetails,\n IIntegrationDetailsFormBaseValues,\n IUpdateIntegrationApiResponse,\n} from 'models/integrations';\nimport {pages} from 'paths';\nimport {useIntegrations} from './useIntegrations';\nimport {useIntegrationStateActions} from '../details/hooks';\nimport {\n mapUpdateGoogleClassroomPayload,\n mapUpdateMicrosoftTeamsPayload,\n testGoogleClassroomThunk,\n testMicrosoftTeamsThunk,\n updateGoogleClassroomIntegrationThunk,\n updateMicrosoftTeamsIntegrationThunk,\n useIntegrationDetailType,\n mapGoogleSitesSourcePayload,\n updateGoogleSitesSourceIntegrationThunk,\n testGoogleSitesSourceThunk,\n updateGoogleSitesDestinationIntegrationThunk,\n mapGoogleSitesDestinationPayload,\n testGoogleSitesDestinationThunk,\n} from 'admin';\n\nimport {unwrapResult} from '@reduxjs/toolkit';\nimport {IHttpResponse} from 'api/models';\n\nexport const useIntegration = () => {\n const dispatch = useAppDispatch();\n const {push} = useNavigate();\n const {fetchIntegrationStatuses} = useIntegrations();\n const {fetchServiceEmail, fetchPublishedSourceDetails} = useIntegrationStateActions();\n\n const integration = useSelector(integrationDetailsSelector);\n const loading = useSelector(pageLoadingSelector);\n const statuses = useSelector(integrationStatusesSelector);\n const serviceSourceEmail = useSelector(serviceSourceEmailSelector);\n const hasServiceSourceEmail = !!serviceSourceEmail;\n const auditLogs = useSelector(auditLogsSelector);\n const loadingAuditLogs = useSelector(auditLogsLoadingSelector);\n\n const {isGoogleClassRoom, isMicrosoftTeams, isGoogleSitesSource, isGoogleSitesDestination} = useIntegrationDetailType(\n integration.integrationType\n );\n\n const fetchIntegration = useCallback(\n (integrationId: string) => dispatch(fetchIntegrationDetailsThunk(integrationId)),\n [dispatch]\n );\n\n const fetchAuditLog = useCallback((integrationId: string) => dispatch(fetchAuditLogThunk(integrationId)), [dispatch]);\n\n const updateMicrosoftTeams = useCallback(\n (integrationId, payload) =>\n dispatch(updateMicrosoftTeamsIntegrationThunk({integrationId, payload}))\n .then(unwrapResult)\n .then((response: IHttpResponse<IUpdateIntegrationApiResponse>) => response.data)\n .then(\n ({configurationUpdated, details: {id}}: {configurationUpdated: boolean; details: IIntegrationDetails}) => {\n if (configurationUpdated) {\n return dispatch(testMicrosoftTeamsThunk(id)).then(() => fetchAuditLog(id));\n }\n\n return fetchAuditLog(id);\n }\n ),\n [dispatch, fetchAuditLog]\n );\n\n const updateGoogleClassroom = useCallback(\n (integrationId, payload) =>\n dispatch(updateGoogleClassroomIntegrationThunk({integrationId, payload}))\n .then(unwrapResult)\n .then((response: IHttpResponse<IUpdateIntegrationApiResponse>) => response.data)\n .then(\n ({configurationUpdated, details: {id}}: {configurationUpdated: boolean; details: IIntegrationDetails}) => {\n if (configurationUpdated) {\n return dispatch(testGoogleClassroomThunk(id)).then(() => fetchAuditLog(id));\n }\n\n return fetchAuditLog(id);\n }\n ),\n [dispatch, fetchAuditLog]\n );\n\n const updateGoogleSitesSource = useCallback(\n (integrationId, payload) =>\n dispatch(updateGoogleSitesSourceIntegrationThunk({integrationId, payload}))\n .then(unwrapResult)\n .then((response: IHttpResponse<IUpdateIntegrationApiResponse>) => response.data)\n .then(\n ({configurationUpdated, details: {id}}: {configurationUpdated: boolean; details: IIntegrationDetails}) => {\n if (configurationUpdated) {\n return dispatch(testGoogleSitesSourceThunk(id)).then(() => fetchAuditLog(id));\n }\n\n return fetchAuditLog(id);\n }\n ),\n [dispatch, fetchAuditLog]\n );\n\n const updateGoogleSitesDestination = useCallback(\n (integrationId, payload) =>\n dispatch(updateGoogleSitesDestinationIntegrationThunk({integrationId, payload}))\n .then(unwrapResult)\n .then((response: IHttpResponse<IUpdateIntegrationApiResponse>) => response.data)\n .then(\n ({configurationUpdated, details: {id}}: {configurationUpdated: boolean; details: IIntegrationDetails}) => {\n if (configurationUpdated) {\n return dispatch(testGoogleSitesDestinationThunk(id)).then(() => fetchAuditLog(id));\n }\n\n return fetchAuditLog(id);\n }\n ),\n [dispatch, fetchAuditLog]\n );\n\n const updateIntegration = useCallback(\n (integrationId: string, formikValues: IIntegrationDetailsFormBaseValues) => {\n if (isMicrosoftTeams) {\n const payload = mapUpdateMicrosoftTeamsPayload(formikValues);\n return updateMicrosoftTeams(integrationId, payload);\n }\n\n if (isGoogleClassRoom) {\n const payload = mapUpdateGoogleClassroomPayload(formikValues);\n return updateGoogleClassroom(integrationId, payload);\n }\n\n if (isGoogleSitesSource) {\n const payload = mapGoogleSitesSourcePayload(formikValues);\n return updateGoogleSitesSource(integrationId, payload);\n }\n\n if (isGoogleSitesDestination) {\n const payload = mapGoogleSitesDestinationPayload(formikValues);\n return updateGoogleSitesDestination(integrationId, payload);\n }\n },\n [\n isMicrosoftTeams,\n isGoogleClassRoom,\n isGoogleSitesSource,\n isGoogleSitesDestination,\n updateMicrosoftTeams,\n updateGoogleClassroom,\n updateGoogleSitesSource,\n updateGoogleSitesDestination,\n ]\n );\n\n const redirectToViewListOfIntegrations = useCallback(() => {\n push(`${pages.adminPortal.integrations.all}`);\n }, [push]);\n\n const deleteIntegration = useCallback(\n (integrationId: string) =>\n dispatch(deleteIntegrationThunk({integrationId})).then(() => redirectToViewListOfIntegrations()),\n [dispatch, redirectToViewListOfIntegrations]\n );\n\n const publishIntegration = useCallback(\n (integrationId: string) =>\n dispatch(publishIntegrationThunk({integrationId})).then(() => redirectToViewListOfIntegrations()),\n [dispatch, redirectToViewListOfIntegrations]\n );\n\n return {\n loading,\n integration,\n statuses,\n serviceSourceEmail,\n hasServiceSourceEmail,\n auditLogs,\n loadingAuditLogs,\n\n fetchServiceEmail,\n fetchPublishedSourceDetails,\n fetchIntegrationStatuses,\n redirectToViewListOfIntegrations,\n fetchIntegration,\n updateIntegration,\n fetchAuditLog,\n deleteIntegration,\n publishIntegration,\n };\n};\n","import {useAppDispatch} from 'hooks';\nimport {useCallback, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {integrationsActions as actions} from '../store/integrations.slice';\nimport {\n fetchIntegrationStatusesThunk,\n fetchIntegrationTypesThunk,\n integrationsAllFilterSelector,\n integrationsAllSelector,\n integrationsAllSortOrderSelector,\n pageLoadingSelector,\n paginationSelector,\n} from '../store';\nimport {fetchIntegrationsPagedThunk} from '../store';\nimport {integrationFiltersEntitiesSelector} from 'filters-selections';\nimport {fetchIntegrationListDropdownThunk} from 'filters-selections/store';\nimport {IIntegratiosAllFilter} from 'models';\n\nexport const useIntegrations = () => {\n const dispatch = useAppDispatch();\n\n const {currentPage, perPage, totalCount} = useSelector(paginationSelector);\n const pageLoading = useSelector(pageLoadingSelector);\n const integrationsList = useSelector(integrationsAllSelector);\n const filter = useSelector(integrationsAllFilterSelector);\n const sortOrder = useSelector(integrationsAllSortOrderSelector);\n const filterEntities = useSelector(integrationFiltersEntitiesSelector);\n\n const setCurrentPage = useCallback((newPage: number) => dispatch(actions.setCurrentPage(newPage)), [dispatch]);\n\n const setPerPage = useCallback((perPage: number) => dispatch(actions.setPerPage(perPage)), [dispatch]);\n\n const fetchIntegrations = useMemo(\n () => () =>\n dispatch(\n fetchIntegrationsPagedThunk({\n filter,\n sortOrder,\n pagination: {\n page: currentPage,\n itemsPerPage: perPage,\n },\n })\n ),\n [dispatch, filter, currentPage, perPage, sortOrder]\n );\n\n const fetchIntegrationTypes = useMemo(() => () => dispatch(fetchIntegrationTypesThunk()), [dispatch]);\n\n const fetchIntegrationStatuses = useMemo(() => () => dispatch(fetchIntegrationStatusesThunk()), [dispatch]);\n\n const fetchIntegrationListDropdown = useMemo(() => () => dispatch(fetchIntegrationListDropdownThunk()), [dispatch]);\n\n const setIntegrationFilterItems = useCallback(\n (updated: IIntegratiosAllFilter) => dispatch(actions.setFilterIntegrations(updated)),\n [dispatch]\n );\n\n return {\n filter,\n filterEntities,\n currentPage,\n perPage,\n totalCount,\n setCurrentPage,\n setPerPage,\n pageLoading,\n integrationsList,\n fetchIntegrations,\n fetchIntegrationTypes,\n fetchIntegrationStatuses,\n fetchIntegrationListDropdown,\n setIntegrationFilterItems,\n };\n};\n","import React, {FC, useCallback, useEffect, useMemo} from 'react';\nimport {PageLayoutOneOrTwoEqualCols} from 'layout';\nimport {Header, IntegrationDetailsContent} from './components';\nimport {\n DEFAULT_CLIENT_SECRET,\n DEFAULT_GOOGLE_DRIVE_FOLDER_LINK,\n integrationDetailsFormBaseValidationSchema,\n useIntegration,\n useIntegrationDetailType,\n useIntegrationIdParam,\n useIntegrationStoreState,\n} from 'admin/integrations';\nimport {Form} from 'forms';\nimport {FormNameEnum} from 'enums/form';\nimport {IIntegrationDetailsFormBaseValues} from 'models/integrations';\nimport {getIsGoogleSitesDestination} from '../utils';\n\nexport const IntegrationsDetailView: FC = () => {\n const {integrationId} = useIntegrationIdParam();\n const {integration, fetchAuditLog} = useIntegration();\n const {isGoogleSitesSource, isGoogleSitesDestination} = useIntegrationDetailType(integration.integrationType);\n\n const {\n loading,\n integration: {\n configuration: {\n serviceEmailAccount,\n clientId,\n clientSecret,\n authorityUrl,\n defaultFolderId,\n certificateExpirationDate,\n masterClassroomEmailAccount,\n },\n name,\n integrationType,\n },\n serviceSourceEmail,\n hasServiceSourceEmail,\n\n fetchIntegration,\n fetchPublishedSourceDetails,\n updateIntegration,\n } = useIntegration();\n\n const {clearIntegrationState} = useIntegrationStoreState();\n\n useEffect(() => {\n fetchIntegration(integrationId);\n\n return () => {\n clearIntegrationState();\n };\n }, [integrationId, fetchIntegration, clearIntegrationState]);\n\n useEffect(() => {\n if (!hasServiceSourceEmail && (isGoogleSitesSource || isGoogleSitesDestination)) {\n fetchPublishedSourceDetails();\n }\n }, [fetchPublishedSourceDetails, hasServiceSourceEmail, isGoogleSitesSource, isGoogleSitesDestination]);\n\n useEffect(() => {\n fetchAuditLog(integrationId);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const header = useMemo(() => {\n return <Header />;\n }, []);\n\n const content = useMemo(() => <IntegrationDetailsContent />, []);\n\n const submitHandler = useCallback(\n (formValues: IIntegrationDetailsFormBaseValues) => {\n // const castValues = Contact.cast(values)\n updateIntegration(integrationId, formValues);\n },\n [updateIntegration, integrationId]\n );\n\n const initialValues = useMemo(() => {\n const isGoogleSitesDestination = getIsGoogleSitesDestination(integrationType);\n\n let serviceEmail = serviceEmailAccount;\n\n if (isGoogleSitesDestination) {\n serviceEmail = serviceSourceEmail;\n }\n\n return {\n [FormNameEnum.integrationName]: name ?? null,\n [FormNameEnum.serviceEmail]: serviceEmail ?? null,\n [FormNameEnum.clientId]: clientId ?? null,\n [FormNameEnum.clientSecret]: clientSecret ?? DEFAULT_CLIENT_SECRET,\n [FormNameEnum.authorityUrl]: authorityUrl ?? null,\n [FormNameEnum.googleDriveSourceFolderLink]: defaultFolderId\n ? DEFAULT_GOOGLE_DRIVE_FOLDER_LINK + defaultFolderId\n : null,\n [FormNameEnum.googleDriveDestinationFolderLink]: defaultFolderId\n ? DEFAULT_GOOGLE_DRIVE_FOLDER_LINK + defaultFolderId\n : null,\n [FormNameEnum.certificateExpirationDate]: certificateExpirationDate ?? null,\n [FormNameEnum.canGiveEditorPermissions]: true,\n [FormNameEnum.masterClassroomEmailAccount]: masterClassroomEmailAccount,\n [FormNameEnum.integrationType]: integrationType,\n [FormNameEnum.certificate]: null,\n };\n }, [\n name,\n clientId,\n clientSecret,\n authorityUrl,\n defaultFolderId,\n certificateExpirationDate,\n serviceSourceEmail,\n integrationType,\n serviceEmailAccount,\n masterClassroomEmailAccount,\n ]);\n\n return (\n <Form.Form<IIntegrationDetailsFormBaseValues>\n initialValues={initialValues}\n validationSchema={integrationDetailsFormBaseValidationSchema}\n submitHandler={submitHandler}\n >\n <PageLayoutOneOrTwoEqualCols header={header} content={content} loading={loading} withFooter={false} />\n </Form.Form>\n );\n};\n","import {createSlice} from '@reduxjs/toolkit';\nimport {googleSitesExtraReducer, googleSitesInitialState, googleSitesReducer} from '.';\n\nexport const googleSitesSlice = createSlice({\n name: 'googleSites',\n initialState: googleSitesInitialState,\n reducers: googleSitesReducer,\n extraReducers: googleSitesExtraReducer,\n});\n\nexport const {actions: googleSitesActions} = googleSitesSlice;\n","export {GoogleSitesOrderingEnum} from './GoogleSitesListOrdering.enum';\nexport {GoogleSiteListSortNameEnum} from './GoogleSitesListSortName.enum';\n","import {\n fetchImportCriticalIssuesThunk,\n fetchImportInstructionalTextThunk,\n fetchImportItemsTemplateThunk,\n fetchItemBankPreviewTableRowsThunk,\n importItemsThunk,\n uploadItemBankThunk,\n} from './thunks';\nimport {IItemsImportStoreState} from './IItemsImportStoreState';\nimport {\n IActionFulfilled,\n IGetUpdateItemBankApiResponse,\n IImportInstructionalText,\n IItemsImportFieldDetails,\n TGetItemBankVerificationApiResponse,\n} from 'models';\nimport {isObject} from 'utils';\n\nexport const itemsImportExtraReducer = {\n //fetchImportItemsTemplateThunk\n [fetchImportItemsTemplateThunk.fulfilled]: (state: IItemsImportStoreState) => {\n state.page.downloading = false;\n },\n [fetchImportItemsTemplateThunk.pending]: (state: IItemsImportStoreState) => {\n state.page.downloading = true;\n },\n [fetchImportItemsTemplateThunk.rejected]: (state: IItemsImportStoreState) => {\n state.page.downloading = false;\n },\n\n //fetchImportInstructionalTextThunk\n [fetchImportInstructionalTextThunk.fulfilled]: (\n state: IItemsImportStoreState,\n action: IActionFulfilled<null, IImportInstructionalText>\n ) => {\n if (isObject(action.payload)) {\n state.templateInstructionalText = action.payload.value;\n }\n\n state.page.loading = false;\n },\n [fetchImportInstructionalTextThunk.pending]: (state: IItemsImportStoreState) => {\n state.page.loading = true;\n },\n [fetchImportInstructionalTextThunk.rejected]: (state: IItemsImportStoreState) => {\n state.page.loading = false;\n },\n\n //uploadItemBankThunk\n [uploadItemBankThunk.fulfilled]: (\n state: IItemsImportStoreState,\n action: IActionFulfilled<null, IGetUpdateItemBankApiResponse>\n ) => {\n if (isObject(action.payload)) {\n const {validationResults, fileName, itemImportId} = action.payload;\n const requiredFieldErrors = getRequiredFieldErrors(validationResults);\n const hasRequiredFieldErrors = !!requiredFieldErrors && requiredFieldErrors.length > 0;\n\n state.mapping.itemImportId = itemImportId;\n state.mapping.fieldList = validationResults;\n state.mapping.fileName = fileName;\n state.mapping.hasRequiredFieldErrors = !!validationResults && hasRequiredFieldErrors;\n }\n\n state.page.uploading = false;\n },\n [uploadItemBankThunk.pending]: (state: IItemsImportStoreState) => {\n state.page.uploading = true;\n },\n [uploadItemBankThunk.rejected]: (state: IItemsImportStoreState) => {\n state.page.uploading = false;\n },\n\n // fetchItemBankPreviewTableRowsThunk\n [fetchItemBankPreviewTableRowsThunk.fulfilled]: (\n state: IItemsImportStoreState,\n action: IActionFulfilled<null, TGetItemBankVerificationApiResponse>\n ) => {\n if (isObject(action.payload)) {\n const {criticalIssueCount, previewRows} = action.payload;\n\n state.preview.criticalIssueCount = criticalIssueCount;\n state.preview.previewRows = [...previewRows];\n }\n\n state.preview.loading = false;\n },\n [fetchItemBankPreviewTableRowsThunk.pending]: (state: IItemsImportStoreState) => {\n state.preview.loading = true;\n },\n [fetchItemBankPreviewTableRowsThunk.rejected]: (state: IItemsImportStoreState) => {\n state.preview.loading = false;\n },\n\n // fetchImportCriticalIssuesThunk\n [fetchImportCriticalIssuesThunk.fulfilled]: (state: IItemsImportStoreState) => {\n state.preview.downloadingCriticalIssues = false;\n },\n [fetchImportCriticalIssuesThunk.pending]: (state: IItemsImportStoreState) => {\n state.preview.downloadingCriticalIssues = true;\n },\n [fetchImportCriticalIssuesThunk.rejected]: (state: IItemsImportStoreState) => {\n state.preview.downloadingCriticalIssues = false;\n },\n\n // importItemsThunk\n [importItemsThunk.fulfilled]: (state: IItemsImportStoreState) => {\n state.page.importing = false;\n },\n [importItemsThunk.pending]: (state: IItemsImportStoreState) => {\n state.page.importing = true;\n },\n [importItemsThunk.rejected]: (state: IItemsImportStoreState) => {\n state.page.importing = false;\n },\n};\n\nfunction getRequiredFieldErrors(validationResults) {\n const fieldErrors = validationResults.filter(\n (result: IItemsImportFieldDetails) => !!result.isRequired && !!result.validationError\n );\n\n return fieldErrors;\n}\n","export {Library} from './Library';\nexport * from './store';\nexport * from './items';\n","export * from './Programs';\nexport * from './store';\nexport * from './utils';\n","import {FiltersEnum} from 'filters-selections';\nimport {ItemFilterNamesEnum} from '../../enums/ItemFilterNamesEnum';\n\nexport const itemFilterToTilterNameMap = {\n [FiltersEnum.Pillar]: ItemFilterNamesEnum.PILLARS,\n [FiltersEnum.EvaluationType]: ItemFilterNamesEnum.EVALUATION_TYPES,\n [FiltersEnum.Domain]: ItemFilterNamesEnum.DOMAINS,\n [FiltersEnum.Category]: ItemFilterNamesEnum.CATEGORY,\n [FiltersEnum.ProgramMulti]: ItemFilterNamesEnum.PROGRAMS,\n [FiltersEnum.Competency]: ItemFilterNamesEnum.COMPETENCIES,\n [FiltersEnum.Concept]: ItemFilterNamesEnum.CONCEPTS,\n [FiltersEnum.Administration]: ItemFilterNamesEnum.ADMINISTRATIONS,\n [FiltersEnum.SchoolLevel]: ItemFilterNamesEnum.SCHOOL_LEVELS,\n [FiltersEnum.ItemType]: ItemFilterNamesEnum.ITEM_TYPES,\n [FiltersEnum.Areas]: ItemFilterNamesEnum.AREAS,\n [FiltersEnum.LearningObjective]: ItemFilterNamesEnum.LEARNING_OBJECTIVE,\n};\n","export const itemAllColumns = [\n {id: 'item', label: 'Question'},\n {id: 'questionType', label: 'Question Type', minWidth: 160},\n {id: 'actions', label: ''},\n];\n","import {SortingOrderEnum} from 'enums';\nimport {ItemsOrderingEnum} from '../../enums';\n\nexport const itemAllOrderingMap = {\n [ItemsOrderingEnum.Name]: {\n [SortingOrderEnum.ASC]: 'Text: A-Z',\n [SortingOrderEnum.DESC]: 'Text: Z-A',\n },\n [ItemsOrderingEnum.Created]: {\n [SortingOrderEnum.ASC]: 'Created: Oldest First',\n [SortingOrderEnum.DESC]: 'Created: Newest First',\n },\n};\n","import {FiltersEnum} from 'filters-selections';\n\nexport const itemsFilterList = [\n FiltersEnum.ProgramMulti,\n FiltersEnum.Pillar,\n FiltersEnum.EvaluationType,\n FiltersEnum.Domain,\n FiltersEnum.LearningObjective,\n FiltersEnum.Category,\n FiltersEnum.Competency,\n FiltersEnum.Concept,\n FiltersEnum.Administration,\n FiltersEnum.SchoolLevel,\n FiltersEnum.AreasAutocompleteMulti,\n];\n","import React, {useCallback} from 'react';\nimport {useAppDispatch} from 'hooks';\nimport {useSelector} from 'react-redux';\n\nimport {itemsActions as actions} from '../../../store/items.slice';\nimport {itemSortOrderSelector} from 'admin/library/items/store';\nimport {IItemsAllSortOrder} from 'models';\nimport {SortByDropdown} from 'admin';\nimport {itemAllOrderingMap} from '../../utils';\nimport {getSortMenuItemsList} from 'admin/library/utils';\n\nexport function ItemsAllSortBy() {\n const dispatch = useAppDispatch();\n\n const sortOrder = useSelector(itemSortOrderSelector);\n\n const handleItemClick = useCallback(\n (sortOrder: IItemsAllSortOrder) => {\n dispatch(actions.setSortOrderItemsAll(sortOrder));\n },\n [dispatch]\n );\n\n return (\n <SortByDropdown\n label=\"Sort By: \"\n handleItemClick={handleItemClick}\n getMenuItemsList={getSortMenuItemsList}\n sortOrder={sortOrder}\n map={itemAllOrderingMap}\n />\n );\n}\n","import React, {useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {useFormikContext} from 'formik';\nimport {usePermissions} from 'permissions';\nimport {AdminRolesInstruments} from 'admin/library/instruments/enums';\nimport {Filters} from 'components-lib';\nimport {filtersDomainsEntitiesSelector, FiltersEnum, FiltersList, FormNameEnum} from 'filters-selections';\nimport {isDomainKnowledge as isDomainKnowledgeFunction} from 'utils';\n\ninterface IFiltersPanelItemsProps {\n clearButtonClickHandler: () => void;\n filterList: FiltersEnum[];\n searchFieldName?: string;\n disableAll?: boolean;\n}\n\nexport function FiltersPanelItems({\n filterList,\n searchFieldName,\n clearButtonClickHandler,\n disableAll,\n}: IFiltersPanelItemsProps) {\n const {values} = useFormikContext();\n\n const domainId = values[FormNameEnum.domain];\n const domains = useSelector(filtersDomainsEntitiesSelector);\n const domain = domains[domainId];\n const isDomainKnowledge = isDomainKnowledgeFunction(domain);\n const {hasPermission} = usePermissions();\n\n const filterListItems = useMemo(() => {\n const shouldRenderAreaFilter = hasPermission(AdminRolesInstruments);\n const filters = [...filterList];\n\n if (!shouldRenderAreaFilter) {\n const index = filters.indexOf(FiltersEnum.Areas);\n\n if (index > -1) {\n filters.splice(index, 1);\n }\n }\n\n if (isDomainKnowledge) {\n // replace the program enum\n const index = filters.indexOf(FiltersEnum.ProgramMulti); // multi is the default filter\n if (index > -1) {\n filters.splice(index, 1, FiltersEnum.ProgramSingle); // TODO find index and replace by index\n }\n } else {\n // remove concept and competency\n const competencyIndex = filters.indexOf(FiltersEnum.Competency);\n if (competencyIndex > -1) filters.splice(competencyIndex, 1);\n\n const conceptIndex = filters.indexOf(FiltersEnum.Concept);\n if (conceptIndex > -1) filters.splice(conceptIndex, 1);\n }\n\n return <FiltersList disableAll={disableAll} filters={filters} />;\n }, [filterList, isDomainKnowledge, disableAll, hasPermission]);\n\n return (\n <Filters.FiltersPanel\n clearButtonClickHandler={clearButtonClickHandler}\n searchFieldName={searchFieldName}\n filters={filterListItems}\n disableAll={disableAll}\n />\n );\n}\n","import {useSelector} from 'react-redux';\nimport {activeItemSelector, savingSelector} from '../store';\n\nexport function useActiveItem() {\n const activeItem = useSelector(activeItemSelector);\n const saving = useSelector(savingSelector);\n\n return {item: activeItem, saving};\n}\n","import {useCallback} from 'react';\nimport {useActiveItem, useItemStateActions} from '.';\n\nexport function useItem() {\n const {item} = useActiveItem();\n const {\n fetchItem,\n fetchNewItem,\n deleteItem,\n promoteAnswerStack,\n pageLoading,\n loadingPageSection,\n saving,\n promotingStack,\n } = useItemStateActions();\n\n const deleteActiveItem = useCallback(() => deleteItem(item.id), [deleteItem, item.id]);\n\n const promoteAnswerStackClickHandler = useCallback(\n (answerStackId: number, questionId: number) => promoteAnswerStack(answerStackId, questionId),\n [promoteAnswerStack]\n );\n\n return {\n fetchItem,\n fetchNewItem,\n deleteItem: deleteActiveItem,\n promoteAnswerStackClickHandler,\n pageLoading,\n loadingPageSection,\n saving,\n item,\n promotingStack,\n };\n}\n","import {useParams} from 'react-router-dom';\nimport {toNumber} from 'utils';\n\nexport function useItemIdParam() {\n const urlParams = useParams<{id: string; answerStackId: string}>();\n\n const itemId = toNumber(urlParams?.id);\n const answerStackId = toNumber(urlParams?.answerStackId);\n\n return {itemId, answerStackId};\n}\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport {useCallback} from 'react';\nimport {unwrapResult} from '@reduxjs/toolkit';\nimport {useSelector} from 'react-redux';\nimport {useAppDispatch, useNavigate} from 'hooks';\nimport {ICreateQuestionPayload} from 'models';\nimport {usePageLoading} from '.';\nimport {useItemSavingActions} from '.';\nimport {\n createQuestionThunk,\n fetchItemThunk,\n fetchNewItemThunk,\n fetchQuestionsThunk,\n deleteItemThunk,\n fetchPossibleDefaultAnswerStacksThunk,\n addDefaultAnswerStackThunk,\n addCustomAnswerStackThunk,\n updateAnswerStackThunk,\n deletingSelector,\n promotingStackSelector,\n} from '../store';\nimport {\n mapItemDefaultAnswerStacksPayload,\n mapItemFormDataPayload,\n mapItemFormDataToUpdateAnswerStackPayload,\n} from '../builder/utils';\nimport {promoteItemAnswerStackThunk} from '../store/thunks/promoteItemAnswerStack.thunk';\n\nexport function useItemStateActions() {\n const dispatch = useAppDispatch();\n const {push} = useNavigate();\n const {pageLoading, loadingPageSection} = usePageLoading();\n const {saving} = useItemSavingActions();\n const promotingStack = useSelector(promotingStackSelector);\n\n const fetchNewItem = useCallback(() => dispatch(fetchNewItemThunk()), []);\n\n const fetchItem = useCallback(\n (id: number, fullPageLoad = true) => dispatch(fetchItemThunk({id, push, fullPageLoad})).then(unwrapResult),\n []\n );\n\n const fetchQuestions = useCallback(() => dispatch(fetchQuestionsThunk()), []);\n\n const fetchPossibleDefaultAnswerStacks = useCallback(\n (questionId: string) => dispatch(fetchPossibleDefaultAnswerStacksThunk(questionId)),\n []\n );\n\n const createQuestion = useCallback(\n (payload: ICreateQuestionPayload) => dispatch(createQuestionThunk(payload)).then(unwrapResult),\n [dispatch]\n );\n\n const deleteItem = useCallback((itemId: number) => dispatch(deleteItemThunk({itemId, push})), [dispatch, push]);\n\n const addDefaultAnswerStack = useCallback(\n (payload) => dispatch(addDefaultAnswerStackThunk(mapItemDefaultAnswerStacksPayload(payload))).then(unwrapResult),\n [dispatch]\n );\n\n const addCustomAnswerStack = useCallback(\n (payload) => dispatch(addCustomAnswerStackThunk(mapItemFormDataPayload(payload))).then(unwrapResult),\n [dispatch]\n );\n\n const updateAnswerStack = useCallback(\n (payload) =>\n dispatch(updateAnswerStackThunk(mapItemFormDataToUpdateAnswerStackPayload(payload))).then(unwrapResult),\n [dispatch]\n );\n\n const deleteAnswerStack = useCallback(\n (payload, fullPageLoad = true) =>\n dispatch(updateAnswerStackThunk(mapItemFormDataToUpdateAnswerStackPayload(payload), push, fullPageLoad)).then(\n unwrapResult\n ),\n [dispatch]\n );\n\n const promoteAnswerStack = useCallback(\n async (answerStackId: number, questionId: number) => {\n await promoteItemAnswerStackThunk(answerStackId)(dispatch);\n await fetchItem(questionId, false);\n },\n [dispatch, fetchItem]\n );\n\n return {\n fetchItem,\n fetchNewItem,\n deleteItem,\n fetchQuestions,\n fetchPossibleDefaultAnswerStacks,\n createQuestion,\n pageLoading,\n saving,\n deleting: deletingSelector,\n promotingStack,\n loadingPageSection,\n addDefaultAnswerStack,\n addCustomAnswerStack,\n updateAnswerStack,\n deleteAnswerStack,\n promoteAnswerStack,\n };\n}\n","import {useSelector} from 'react-redux';\nimport {itemPageLoadingStatusSelector} from './../store';\n\nexport function usePageLoading() {\n const {loading: pageLoading, loadingPageSection} = useSelector(itemPageLoadingStatusSelector);\n return {pageLoading, loadingPageSection};\n}\n","import {useAppDispatch} from 'hooks';\nimport {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport {\n publishAllAnswerStacksForQuestionThunk,\n publishingStackSelector,\n publishItemAnswerStackThunk,\n unPublishItemAnswerStackThunk,\n} from '../store';\nimport {useItemStateActions} from './useItemStateActions';\n\nexport function usePublish() {\n const dispatch = useAppDispatch();\n const publishingStack = useSelector(publishingStackSelector);\n const {fetchItem, loadingPageSection} = useItemStateActions();\n\n const publishItemAnswerStack = useCallback(\n async (answerStackId: number, questionId: number) => {\n await publishItemAnswerStackThunk(answerStackId)(dispatch);\n await fetchItem(questionId, false);\n },\n [dispatch, fetchItem]\n );\n\n const unPublishItemAnswerStack = useCallback(\n async (answerStackId: number, questionId: number) => {\n await unPublishItemAnswerStackThunk(answerStackId)(dispatch);\n await fetchItem(questionId, false);\n },\n [dispatch, fetchItem]\n );\n\n const publishAllAnswerStacksForQuestion = useCallback(\n (questionId: number) => {\n dispatch(publishAllAnswerStacksForQuestionThunk(questionId));\n },\n [dispatch]\n );\n\n return {\n publishingStack: publishingStack || loadingPageSection,\n publishItemAnswerStack,\n publishAllAnswerStacksForQuestion,\n unPublishItemAnswerStack,\n };\n}\n","import {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport {\n itemSortOrderSelector,\n itemPageLoadingStatusSelector,\n itemsFilterSelector,\n itemsForPreviewSelector,\n itemsSortByColumnsSelector,\n paginationSelector,\n fetchListItemsPagedThunk,\n savingSelector,\n} from '../store';\nimport {useAppDispatch} from 'hooks';\nimport {itemFiltersEntitiesSelector} from 'filters-selections';\nimport {itemsActions as actions} from '../store/items.slice';\n\nexport function useItems() {\n const dispatch = useAppDispatch();\n const saving = useSelector(savingSelector);\n const {loading: pageLoading} = useSelector(itemPageLoadingStatusSelector);\n\n const filter = useSelector(itemsFilterSelector);\n const filterEntities = useSelector(itemFiltersEntitiesSelector);\n const itemsList = useSelector(itemsForPreviewSelector);\n const sortByColumns = useSelector(itemsSortByColumnsSelector);\n const sortOrder = useSelector(itemSortOrderSelector);\n\n const {currentPage, perPage, totalCount} = useSelector(paginationSelector);\n\n const setCurrentPage = useCallback((newPage: number) => dispatch(actions.setCurrentPage(newPage)), [dispatch]);\n const setPerPage = useCallback((perPage: number) => dispatch(actions.setPerPage(perPage)), [dispatch]);\n\n const fetchItems = useCallback(\n () =>\n dispatch(\n fetchListItemsPagedThunk({\n filter,\n sortOrder,\n pagination: {\n page: currentPage,\n itemsPerPage: perPage,\n },\n })\n ),\n [currentPage, dispatch, filter, perPage, sortOrder]\n );\n\n return {\n pageLoading,\n saving,\n filter,\n filterEntities,\n sortByColumns,\n sortOrder,\n currentPage,\n perPage,\n totalCount,\n itemsList,\n fetchItems,\n setCurrentPage,\n setPerPage,\n };\n}\n","import {useAppDispatch} from 'hooks';\nimport {useEffect} from 'react';\nimport {fetchSortByColumnsThunk, fetchSortOrderTypesThunk} from '../store';\n\nexport const useItemFilters = () => {\n const dispatch = useAppDispatch();\n\n useEffect(() => {\n dispatch(fetchSortByColumnsThunk());\n dispatch(fetchSortOrderTypesThunk());\n }, [dispatch]);\n\n return {};\n};\n","import {useSelector} from 'react-redux';\nimport {savingSelector} from './../store';\n\nexport const useItemSavingActions = () => {\n const saving = useSelector(savingSelector);\n\n return {\n saving,\n };\n};\n","import * as Yup from 'yup';\nimport {FormNameEnum} from 'filters-selections';\n\nexport interface IItemsAllFiltersFormValues {\n [FormNameEnum.pillars]: number[];\n [FormNameEnum.evaluationType]: number[];\n [FormNameEnum.domain]: number[];\n [FormNameEnum.programs]: number | number[];\n [FormNameEnum.learningObjective]: string;\n [FormNameEnum.category]: string;\n [FormNameEnum.competency]: number[];\n [FormNameEnum.concept]: number[];\n [FormNameEnum.administration]: number[];\n [FormNameEnum.schoolLevel]: number[];\n [FormNameEnum.areas]: number[];\n [FormNameEnum.searchByName]: string;\n}\n\nexport const itemsAllFiltersFormValidationSchema = Yup.object().shape({\n [FormNameEnum.pillars]: Yup.array().of(Yup.number()),\n [FormNameEnum.evaluationType]: Yup.array().of(Yup.number()),\n [FormNameEnum.domain]: Yup.array().of(Yup.number()),\n [FormNameEnum.programs]: Yup.array().of(Yup.number()),\n [FormNameEnum.learningObjective]: Yup.string(),\n [FormNameEnum.category]: Yup.string().ensure(),\n [FormNameEnum.competency]: Yup.array().of(Yup.number()),\n [FormNameEnum.concept]: Yup.array().of(Yup.number()),\n [FormNameEnum.administration]: Yup.array().of(Yup.number()),\n [FormNameEnum.schoolLevel]: Yup.array().of(Yup.number()),\n [FormNameEnum.areas]: Yup.array().of(Yup.number()),\n [FormNameEnum.searchByName]: Yup.string(),\n});\n","import React, {useCallback, useMemo} from 'react';\nimport {useDispatch} from 'react-redux';\nimport {FormNameEnum} from 'filters-selections';\nimport {Form} from 'forms';\nimport {ItemFilterNamesEnum} from 'admin/library/items/enums';\nimport {itemsActions as actions} from 'admin/library/items/store';\nimport {FiltersPanelItems} from '../FiltersPanelItems/FiltersPanelItems';\nimport {useItems} from 'admin/library/items/hooks';\nimport {IItemsAllFiltersFormValues, itemsAllFiltersFormValidationSchema} from './config';\nimport {itemsFilterList} from '../../utils';\n\nexport function ItemsAllFilters() {\n const dispatch = useDispatch();\n const {filter, pageLoading} = useItems();\n\n const initialValues: IItemsAllFiltersFormValues = useMemo(\n () => ({\n [FormNameEnum.pillars]: filter[ItemFilterNamesEnum.PILLARS],\n [FormNameEnum.evaluationType]: filter[ItemFilterNamesEnum.EVALUATION_TYPES],\n [FormNameEnum.domain]: filter[ItemFilterNamesEnum.DOMAINS],\n [FormNameEnum.programs]: filter[ItemFilterNamesEnum.PROGRAMS],\n [FormNameEnum.learningObjective]: filter[ItemFilterNamesEnum.LEARNING_OBJECTIVE],\n [FormNameEnum.category]: filter[ItemFilterNamesEnum.CATEGORY],\n [FormNameEnum.competency]: filter[ItemFilterNamesEnum.COMPETENCIES],\n [FormNameEnum.concept]: filter[ItemFilterNamesEnum.CONCEPTS],\n [FormNameEnum.administration]: filter[ItemFilterNamesEnum.ADMINISTRATIONS],\n [FormNameEnum.schoolLevel]: filter[ItemFilterNamesEnum.SCHOOL_LEVELS],\n [FormNameEnum.areas]: filter[ItemFilterNamesEnum.AREAS],\n [FormNameEnum.searchByName]: filter[ItemFilterNamesEnum.SEARCH_BY_NAME],\n }),\n [filter]\n );\n\n const submitHandler = ({\n pillars,\n evaluationType,\n domain,\n programs,\n learningObjective,\n category,\n competency,\n concept,\n administration,\n schoolLevel,\n areas,\n searchByName,\n }: IItemsAllFiltersFormValues) => {\n const programsFilter: any[] = programs instanceof Array ? programs : [programs]; // for single/multi choice in programs filter\n\n dispatch(\n actions.setFilterItems({\n [ItemFilterNamesEnum.PILLARS]: pillars,\n [ItemFilterNamesEnum.EVALUATION_TYPES]: evaluationType,\n [ItemFilterNamesEnum.DOMAINS]: domain,\n [ItemFilterNamesEnum.PROGRAMS]: programsFilter,\n [ItemFilterNamesEnum.LEARNING_OBJECTIVE]: learningObjective,\n [ItemFilterNamesEnum.CATEGORY]: category,\n [ItemFilterNamesEnum.COMPETENCIES]: competency,\n [ItemFilterNamesEnum.CONCEPTS]: concept,\n [ItemFilterNamesEnum.ADMINISTRATIONS]: administration,\n [ItemFilterNamesEnum.SCHOOL_LEVELS]: schoolLevel,\n [ItemFilterNamesEnum.AREAS]: areas,\n [ItemFilterNamesEnum.SEARCH_BY_NAME]: searchByName.trim().replace(/\\s+/g, ' '), // trim and replace multiple spaces (works on on the actual search, the form is not updated)\n })\n );\n };\n\n const resetHandler = useCallback(() => {\n dispatch(actions.resetFilterItems());\n }, [dispatch]);\n\n return (\n <Form.Form<IItemsAllFiltersFormValues>\n initialValues={initialValues}\n validationSchema={itemsAllFiltersFormValidationSchema}\n submitHandler={submitHandler}\n >\n <FiltersPanelItems\n filterList={itemsFilterList}\n clearButtonClickHandler={resetHandler}\n searchFieldName={ItemFilterNamesEnum.SEARCH_BY_NAME}\n disableAll={pageLoading}\n />\n </Form.Form>\n );\n}\n","import {Button} from 'components-lib';\nimport {withRole} from 'permissions';\nimport {AdminRolesItems, AdminRolesItemsWithoutArea, SuperAdminRolesItems} from '../../enums';\n\nexport const ButtonPrimaryWithAdminPermissions = withRole(AdminRolesItems, '')(Button.Primary);\nexport const ButtonSecondaryWithAdminPermissions = withRole(AdminRolesItems, '')(Button.Secondary);\nexport const ButtonSecondaryWithSuperAdminPermissions = withRole(SuperAdminRolesItems, '')(Button.Secondary);\nexport const ButtonSecondaryWithAdminRolesItemsWithoutAreaPermissions = withRole(\n AdminRolesItemsWithoutArea,\n ''\n)(Button.Secondary);\n","import {Button} from 'components-lib';\nimport {Form} from 'forms';\nimport {ActiveModeEnum, useQueryParams} from 'hooks';\nimport React, {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport {usePublish} from '../../hooks';\nimport {deletingSelector, savingSelector} from '../../store';\n\nimport {\n ButtonPrimaryWithAdminPermissions,\n ButtonSecondaryWithAdminPermissions,\n ButtonSecondaryWithAdminRolesItemsWithoutAreaPermissions,\n} from '../buttonsWithAdminPermissions/buttonsWithAdminPermissions';\n\ninterface IHeaderActionButtonsProps {\n itemId: number;\n isPublished: boolean;\n editMode: ActiveModeEnum;\n canDelete?: boolean;\n editModeClickHandler: () => void;\n dismissClickHandler: () => void;\n deleteModalOpenHandler: () => void;\n deleteAnswerStackHandler: () => void;\n}\n\nexport function HeaderActionButtons({\n itemId,\n isPublished,\n editMode,\n canDelete,\n editModeClickHandler,\n dismissClickHandler,\n deleteModalOpenHandler,\n deleteAnswerStackHandler,\n}: IHeaderActionButtonsProps) {\n const saving = useSelector(savingSelector);\n const {publishingStack, publishAllAnswerStacksForQuestion} = usePublish();\n const {questionId} = useQueryParams();\n\n const isCreateMode = editMode === ActiveModeEnum.create;\n const isEditMode = editMode === ActiveModeEnum.edit;\n const isCreateOrEditMode = editMode === ActiveModeEnum.edit || isCreateMode;\n\n const publishHandler = useCallback(() => {\n publishAllAnswerStacksForQuestion(itemId);\n }, [itemId, publishAllAnswerStacksForQuestion]);\n\n if (isCreateOrEditMode) {\n const submitContent = questionId || !isCreateMode ? 'Save' : 'Create';\n\n return (\n <div>\n {isCreateOrEditMode && (\n <DeleteButton\n isEditMode={isEditMode}\n clickHandler={isCreateMode ? deleteModalOpenHandler : deleteAnswerStackHandler}\n disabled={isCreateMode && !canDelete}\n />\n )}\n <DismissButton clickHandler={dismissClickHandler} />\n\n <Form.ButtonSubmit text={submitContent} size=\"large\" disabled={saving} />\n </div>\n );\n }\n\n return (\n <div>\n <DismissButton clickHandler={dismissClickHandler} />\n <DeleteButton clickHandler={deleteModalOpenHandler} disabled={!canDelete} />\n\n <ButtonSecondaryWithAdminPermissions clickHandler={editModeClickHandler} disabled={publishingStack}>\n Edit\n </ButtonSecondaryWithAdminPermissions>\n\n {!isPublished && (\n <ButtonPrimaryWithAdminPermissions\n clickHandler={!publishingStack ? publishHandler : null}\n disabled={isPublished || publishingStack}\n >\n Publish\n </ButtonPrimaryWithAdminPermissions>\n )}\n </div>\n );\n}\n\ninterface IButtonProps {\n clickHandler: () => void;\n disabled?: boolean;\n isEditMode?: boolean;\n}\n\nfunction DismissButton({clickHandler}: IButtonProps) {\n return <Button.Secondary clickHandler={clickHandler}>Dismiss</Button.Secondary>;\n}\n\nfunction DeleteButton({clickHandler, disabled = false, isEditMode = false}: IButtonProps) {\n const deleting = useSelector(deletingSelector);\n const deleteContent = deleting ? 'Loading...' : 'Delete';\n const shouldDisableDelete = deleting || disabled;\n\n if (isEditMode) {\n return (\n <ButtonSecondaryWithAdminPermissions clickHandler={clickHandler} disabled={shouldDisableDelete}>\n {deleteContent}\n </ButtonSecondaryWithAdminPermissions>\n );\n }\n\n return (\n <ButtonSecondaryWithAdminRolesItemsWithoutAreaPermissions\n clickHandler={clickHandler}\n disabled={shouldDisableDelete}\n >\n {deleteContent}\n </ButtonSecondaryWithAdminRolesItemsWithoutAreaPermissions>\n );\n}\n","import {ModalDelete} from 'admin/components';\nimport React from 'react';\nimport {useItem} from '../../hooks';\n\ninterface IModalDeleteItemProps {\n isOpen: boolean;\n setIsOpen: (state: boolean) => void;\n}\n\nexport function ModalDeleteItem({isOpen, setIsOpen}: IModalDeleteItemProps) {\n const {deleteItem} = useItem();\n\n return (\n <ModalDelete\n text=\"This action will delete the question and all related answer stacks. Are you sure you want to delete this item?\"\n isOpen={isOpen}\n setIsOpen={setIsOpen}\n confirmHandler={deleteItem}\n />\n );\n}\n","import React, {useCallback} from 'react';\nimport {ModalDelete} from 'admin/components';\nimport {FormNameEnum} from 'filters-selections';\nimport {isDomainKnowledge} from 'utils';\nimport {getAnswerStackData} from '../../builder/utils';\nimport {useItem, useItemIdParam, useItemStateActions} from '../../hooks';\nimport {getFormValue, idProp} from 'admin/library/utils';\nimport {useNavigate} from 'hooks';\nimport {pages} from 'paths';\n\ninterface IModalDeleteAnswerStackProps {\n isOpen: boolean;\n setIsOpen: (state: boolean) => void;\n}\n\nexport function ModalDeleteAnswerStack({isOpen, setIsOpen}: IModalDeleteAnswerStackProps) {\n let answerStack = null;\n\n const {goBackOptionally} = useNavigate();\n const {itemId, answerStackId} = useItemIdParam();\n const {deleteAnswerStack} = useItemStateActions();\n const {item} = useItem();\n const {questionTextHtml, text, questionOptionsTypeId} = item;\n const isDomainKnowledgeSelected = isDomainKnowledge(answerStack?.metaData?.domain);\n const questionIdQueryParam = `?questionId=${itemId}`;\n\n if (item) {\n answerStack = getAnswerStackData(item, answerStackId);\n }\n\n const mapDeleteAnswerStackPayload = useCallback(\n () => ({\n [FormNameEnum.id]: itemId,\n [FormNameEnum.questionAnswerStackId]: answerStackId,\n [FormNameEnum.isDeleted]: true,\n [FormNameEnum.questionType]: questionOptionsTypeId,\n [FormNameEnum.text]: text,\n [FormNameEnum.questionTextHtml]: questionTextHtml,\n [FormNameEnum.pillars]: getFormValue(answerStack?.metaData?.pillars, idProp),\n [FormNameEnum.evaluationTypes]: getFormValue(answerStack?.metaData?.evaluationTypes, idProp),\n [FormNameEnum.domain]: answerStack?.metaData?.domain?.id,\n [FormNameEnum.programs]: isDomainKnowledgeSelected\n ? answerStack?.metaData.programs[0]?.id\n : getFormValue(answerStack?.metaData?.programs, idProp),\n [FormNameEnum.competencies]: getFormValue(answerStack?.metaData?.competencies, idProp),\n [FormNameEnum.concepts]: getFormValue(answerStack?.metaData?.concepts, idProp),\n [FormNameEnum.administration]: answerStack?.metaData?.administration?.id,\n [FormNameEnum.schoolLevels]: getFormValue(answerStack?.metaData?.schoolLevels, idProp),\n [FormNameEnum.category]: answerStack?.metaData?.category ?? '',\n [FormNameEnum.choices]: answerStack?.choices,\n [FormNameEnum.rangeFrom]: answerStack?.rangeFrom,\n [FormNameEnum.rangeTo]: answerStack?.rangeTo,\n [FormNameEnum.minimumRateDescription]: answerStack?.minimumRateDescription ?? '',\n [FormNameEnum.maximumRateDescription]: answerStack?.maximumRateDescription ?? '',\n }),\n [answerStack, answerStackId, isDomainKnowledgeSelected, itemId, questionOptionsTypeId, questionTextHtml, text]\n );\n\n const deleteAnswerStackHandler = useCallback(() => {\n const payload = mapDeleteAnswerStackPayload();\n deleteAnswerStack(payload).then(() => goBackOptionally(`${pages.adminPortal.items.create}${questionIdQueryParam}`));\n }, [mapDeleteAnswerStackPayload, deleteAnswerStack, goBackOptionally, questionIdQueryParam]);\n\n return (\n <ModalDelete\n title=\"Delete Answer stack\"\n text=\"This action will delete the question's answer stack. Are you sure you want to delete this answer stack?\"\n isOpen={isOpen}\n setIsOpen={setIsOpen}\n confirmHandler={deleteAnswerStackHandler}\n />\n );\n}\n","import React, {Fragment, useCallback, useEffect, useMemo, useState} from 'react';\nimport {useDispatch} from 'react-redux';\nimport {ItemsAllSortBy, ItemsAllFilters} from './components';\nimport {ButtonPrimaryWithAdminPermissions} from '../components';\nimport {PageLayoutTwoCol, PageLayoutWithFixedAreas} from 'layout';\nimport {Button, Checkbox, Loading, PageViewHeader, Table, Tag, PaginationLocal} from 'components-lib';\nimport {useNavigate} from 'hooks';\nimport {useItems, useItemFilters} from '../hooks';\nimport {IItemsFilter} from 'models';\nimport {pages} from 'paths';\nimport {ItemFilterNamesEnum} from '../enums';\nimport {itemsActions as actions} from '../store/items.slice';\nimport {itemAllColumns, itemsFilterList, itemFilterToTilterNameMap, maxSymbols} from './utils';\n\nexport function ItemsAllView() {\n const dispatch = useDispatch();\n const {push} = useNavigate();\n const [selectedIds, setSelectedIds] = useState<string[]>([]);\n\n const {\n pageLoading,\n filter,\n filterEntities,\n currentPage,\n perPage,\n totalCount,\n itemsList,\n fetchItems,\n setCurrentPage,\n setPerPage,\n } = useItems();\n\n useItemFilters();\n\n useEffect(() => {\n fetchItems();\n }, [fetchItems]);\n\n const viewItemDetailsClickHandler = useCallback(\n (id: number) => {\n const questionIdQueryParam = `?questionId=${id}`;\n push(`${pages.adminPortal.items.create}${questionIdQueryParam}`);\n },\n [push]\n );\n\n const rows = useMemo(() => {\n const changeSelection = (id: string, selected: boolean) => {\n if (selected === true) {\n setSelectedIds((prevSelected) => prevSelected.concat(id));\n } else {\n setSelectedIds((prevSelected) => {\n const indexOfCurrent = prevSelected.indexOf(id);\n if (indexOfCurrent !== -1) {\n return prevSelected.filter((selectedId) => selectedId !== id);\n }\n });\n }\n };\n\n if (itemsList && itemsList.result.length > 0) {\n const itemIds = itemsList?.result;\n return itemIds.map((itemId) => {\n const item = itemsList.entities.items[itemId];\n const {questionId, questionText, questionType} = item;\n return {\n checkbox: (\n <Checkbox\n key={`items-list-item-${questionId}`}\n changeHandler={(_event, checked) => changeSelection(questionId.toString(), checked)}\n checked={selectedIds.indexOf(questionId.toString()) > -1}\n />\n ),\n item: questionText?.length <= maxSymbols ? questionText : questionText?.substr(0, maxSymbols) + '...',\n questionType: questionType,\n actions: (\n <Button.Secondary\n size=\"small\"\n clickHandler={() => {\n viewItemDetailsClickHandler(questionId);\n }}\n >\n View\n </Button.Secondary>\n ),\n };\n });\n } else {\n return [];\n }\n }, [itemsList, selectedIds, viewItemDetailsClickHandler]);\n\n const contentFooter = useMemo(() => {\n let isPaginationVisible: boolean;\n\n if (selectedIds.length === 0) {\n isPaginationVisible = true;\n } else {\n isPaginationVisible = false;\n }\n return (\n <PaginationLocal\n onPageChange={setCurrentPage}\n onPerPageChange={setPerPage}\n totalCount={totalCount}\n perPage={perPage}\n currentPage={currentPage}\n isVisible={isPaginationVisible}\n disabled={pageLoading}\n />\n );\n }, [selectedIds.length, setCurrentPage, setPerPage, totalCount, perPage, currentPage, pageLoading]);\n\n const renderSortOrder = useMemo(() => <ItemsAllSortBy />, []);\n\n const appliedFilters = useMemo(() => {\n const chips: any[] = [];\n\n const resetDropdownFilter = (propName: string, id: string | number) => {\n const updated: IItemsFilter = {...filter};\n\n updated[propName] = updated[propName].filter((pId: number) => pId !== id);\n dispatch(actions.setFilterItems(updated));\n };\n\n itemsFilterList.forEach((itemFilter, idx) => {\n const mappedFilterName: ItemFilterNamesEnum = itemFilterToTilterNameMap[itemFilter];\n const current = filter[mappedFilterName];\n\n if (current instanceof Array && current.length > 0) {\n current.forEach((id) => {\n const filterName = mappedFilterName.replace(/(filter)/gi, '');\n const currentFilter = filterEntities[filterName][id];\n const label = currentFilter?.displayText ? currentFilter?.displayText : currentFilter?.name;\n\n chips.push(\n <Tag\n withFilterChip\n key={`${mappedFilterName}-${id}`}\n label={label}\n deleteHandler={() => resetDropdownFilter(mappedFilterName, currentFilter.id)}\n />\n );\n });\n }\n\n if (typeof current === 'string' && !!current) {\n chips.push(\n <Tag\n withFilterChip\n key={`${mappedFilterName}-${idx}`}\n label={current}\n deleteHandler={() => {\n const updated: any = {...filter};\n updated[mappedFilterName] = '';\n dispatch(actions.setFilterItems(updated));\n }}\n />\n );\n }\n });\n\n if (!!filter.searchByName) {\n const deleteSearchFilter = () => {\n const updated = {...filter, [ItemFilterNamesEnum.SEARCH_BY_NAME]: ''};\n dispatch(actions.setFilterItems(updated));\n };\n chips.push(\n <Tag\n withFilterChip\n key={`search-${filter.searchByName}`}\n label={filter.searchByName}\n deleteHandler={deleteSearchFilter}\n />\n );\n }\n\n return chips;\n }, [dispatch, filter, filterEntities]);\n\n const header = useMemo(\n () => (\n <PageViewHeader\n heading=\"Questions\"\n action={\n <Fragment>\n <ButtonPrimaryWithAdminPermissions clickHandler={() => push(`${pages.adminPortal.items.create}`)}>\n New Item\n </ButtonPrimaryWithAdminPermissions>\n </Fragment>\n }\n sort={renderSortOrder}\n filters={appliedFilters}\n />\n ),\n [appliedFilters, push, renderSortOrder]\n );\n\n const content = useMemo(\n () => (\n <PageLayoutWithFixedAreas header={header} footer={contentFooter}>\n {pageLoading ? (\n <Loading />\n ) : !!rows.length ? (\n <Table rows={rows} columns={itemAllColumns} />\n ) : (\n 'No results found'\n )}\n </PageLayoutWithFixedAreas>\n ),\n [rows, contentFooter, pageLoading, header]\n );\n\n return <PageLayoutTwoCol sidebar={<ItemsAllFilters />} content={content} />;\n}\n","export const maxSymbols = 1024;\n","import React, {Fragment, useCallback, useEffect, useMemo, useRef} from 'react';\nimport {SubtitlePageViewHeader} from 'admin/components';\nimport {Column, Loading, PageViewHeader} from 'components-lib';\nimport {ActiveModeEnum, useAppDispatch, useModal, useNavigate, useQueryParams} from 'hooks';\nimport {PageLayoutTwoCol, PageLayoutWithFixedAreas} from 'layout';\nimport {IItemDetails} from 'models';\nimport {pages} from 'paths';\nimport {HeaderActionButtons, ModalDeleteAnswerStack, ModalDeleteItem} from '../components';\nimport {useItem, useItemIdParam} from '../hooks';\nimport {itemsActions} from '../store';\ninterface IItemBaseViewProps {\n Sidebar: any;\n editMode: ActiveModeEnum;\n children: (item: IItemDetails) => void;\n}\n\nexport function ItemBaseView({children, Sidebar, editMode}: IItemBaseViewProps) {\n const dispatch = useAppDispatch();\n const {itemId, answerStackId} = useItemIdParam();\n const {questionId} = useQueryParams();\n const {push} = useNavigate();\n const shouldClearItem = useRef(true);\n const {item, pageLoading, loadingPageSection} = useItem();\n const {isOpen: isDeleteItemModalOpen, setIsOpen: setIsDeleteItemModalOpen} = useModal();\n const {isOpen: isDeleteAnswerStackModalOpen, setIsOpen: setIsDeleteIAnswerStackModalOpen} = useModal();\n const isEditMode = editMode === ActiveModeEnum.edit;\n\n const hasAnswerStackId = !!answerStackId;\n const hasEmptyAnswerStacks = item.elements.length === 0;\n const canDelete = !!item?.id && hasEmptyAnswerStacks;\n const buildQuestionMode = !!questionId ? 'Edit' : 'Create';\n const buildHeader = hasAnswerStackId ? 'Answer Stack' : 'Question';\n const questionHeader = `${buildQuestionMode} ${buildHeader}`;\n const answerStackHeader = `Edit ${buildHeader}`;\n\n const isLoading = pageLoading && !loadingPageSection;\n\n useEffect(() => {\n return () => {\n // We would not clear the item data if the next route is the item edit\n shouldClearItem.current && dispatch(itemsActions.clear());\n };\n }, [dispatch, shouldClearItem]);\n\n const backButtonClickHandler = useCallback(() => {\n if (isEditMode) {\n return push(`${pages.adminPortal.items.create}?questionId=${itemId}`);\n }\n\n return push(pages.adminPortal.items.root);\n }, [push, itemId, isEditMode]);\n\n const headerSubHeading = useMemo(() => {\n const headerSubHeadingTitle = hasAnswerStackId ? answerStackId : itemId;\n return <SubtitlePageViewHeader> {!!itemId && `/ ID: ${headerSubHeadingTitle}`}</SubtitlePageViewHeader>;\n }, [itemId, answerStackId, hasAnswerStackId]);\n\n const header = useMemo(() => {\n const headerAction = (\n <HeaderActionButtons\n itemId={itemId}\n isPublished={item.isApproved}\n editMode={editMode}\n canDelete={canDelete}\n editModeClickHandler={() => {\n shouldClearItem.current = false;\n push(`${pages.adminPortal.items.editLink}/${itemId}`);\n }}\n dismissClickHandler={() => {\n if (isEditMode) {\n shouldClearItem.current = false;\n push(`${pages.adminPortal.items.create}?questionId=${itemId}`);\n return;\n }\n\n push(pages.adminPortal.items.root);\n }}\n deleteModalOpenHandler={() => setIsDeleteItemModalOpen(true)}\n deleteAnswerStackHandler={() => setIsDeleteIAnswerStackModalOpen(true)}\n />\n );\n\n const heading = editMode === ActiveModeEnum.create ? questionHeader : answerStackHeader;\n\n return isLoading ? null : (\n <PageViewHeader\n heading={heading}\n subHeading={headerSubHeading}\n action={headerAction}\n withBackButton\n backButtonClickHandler={backButtonClickHandler}\n />\n );\n }, [\n item,\n editMode,\n isEditMode,\n canDelete,\n isLoading,\n headerSubHeading,\n backButtonClickHandler,\n push,\n itemId,\n setIsDeleteItemModalOpen,\n questionHeader,\n answerStackHeader,\n setIsDeleteIAnswerStackModalOpen,\n ]);\n\n const sidebar = useMemo(\n () => <Sidebar item={item} loading={isLoading} />,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [item, isLoading]\n );\n\n const content = useMemo(\n () => (\n <PageLayoutWithFixedAreas headerSize=\"small\" header={header}>\n <Column sm={12} md={12} lg={12} xl={12}>\n {isLoading ? <Loading /> : children(item)}\n </Column>\n </PageLayoutWithFixedAreas>\n ),\n [children, header, item, isLoading]\n );\n\n return (\n <Fragment>\n <PageLayoutTwoCol sidebar={sidebar} content={content} />\n <ModalDeleteItem isOpen={isDeleteItemModalOpen} setIsOpen={setIsDeleteItemModalOpen} />\n <ModalDeleteAnswerStack isOpen={isDeleteAnswerStackModalOpen} setIsOpen={setIsDeleteIAnswerStackModalOpen} />\n </Fragment>\n );\n}\n","import React from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Text} from 'components-lib';\nimport {ActiveModeEnum} from 'admin/library/items/enums';\nimport {IComponentWithChildren} from 'models';\nimport {SectionContainer} from '..';\n\ninterface IItemQuestionProps extends IComponentWithChildren {\n mode: ActiveModeEnum;\n}\n\nexport function ItemQuestion({children, mode}: IItemQuestionProps) {\n const classes = useStyles();\n const isCreateMode = mode === ActiveModeEnum.create;\n\n return (\n <SectionContainer>\n <div className={classes.info}>{isCreateMode && <Text.Heading as=\"h3\">Item stem</Text.Heading>}</div>\n {children}\n </SectionContainer>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n info: {\n marginBottom: theme.spacing(2),\n },\n addButton: {\n marginTop: -8,\n },\n}));\n","import React, {FC} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {useFormikContext} from 'formik';\nimport {Column, Row, Text} from 'components-lib';\nimport {QuestionTypeEnum} from 'enums';\nimport {FormNameEnum} from 'filters-selections';\nimport {Form} from 'forms';\nimport {useActiveItem} from '../../../hooks';\nimport {useQueryParams} from 'hooks';\nimport {usePermissions} from 'permissions';\nimport {ActiveModeEnum, AdminRolesItems} from 'admin/library/items/enums';\nimport {CreateQuestionEditor, EditQuestionEditor} from '..';\nimport {IItemCreateFormValues} from '../../views/create/components/ItemBuilderCreateForm/config';\n\ninterface IAddEditQuestionProps {\n mode: ActiveModeEnum;\n}\n\nexport const AddEditQuestion: FC<IAddEditQuestionProps> = ({mode}) => {\n const classes = useStyles();\n const {values} = useFormikContext<IItemCreateFormValues>();\n const {item} = useActiveItem();\n const {hasPermission} = usePermissions();\n const {questionId} = useQueryParams();\n\n const typeValue = values[FormNameEnum.type];\n const canEditText = item?.canEditQuestionText;\n const isCreateMode = mode === ActiveModeEnum.create;\n const hasAdminPermission = hasPermission(AdminRolesItems);\n const hasQuestionText = !!values[FormNameEnum.questionTextHtml];\n const isQuestionExist = !!questionId;\n\n return (\n <>\n <Column className={classes.group}>\n {!isQuestionExist && (\n <CreateQuestionEditor\n toolbarHidden={!hasAdminPermission}\n readOnly={!canEditText && !isCreateMode}\n withEdit={false}\n />\n )}\n {hasQuestionText && isQuestionExist && (\n <EditQuestionEditor\n hasQuestionText={hasQuestionText}\n readOnly={!canEditText && !isCreateMode}\n withEdit\n toolbarHidden={!hasAdminPermission}\n />\n )}\n </Column>\n {hasAdminPermission && (\n <Column className={classes.group}>\n <Text.Caption>Question type</Text.Caption>\n <Form.RadioGroup name={FormNameEnum.type} value={typeValue}>\n <Row justify=\"flex-start\" align=\"flex-start\">\n <Form.Radio\n value={QuestionTypeEnum.questionAnswerEnum}\n label=\"Question + Answer\"\n disabled={isQuestionExist}\n />\n <Form.Radio value={QuestionTypeEnum.matrixEnum} label=\"Matrix Header\" disabled={isQuestionExist} />\n </Row>\n </Form.RadioGroup>\n </Column>\n )}\n </>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n group: {\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(3),\n },\n}));\n","import React, {FC, Fragment, useCallback, useMemo, useState} from 'react';\nimport {Chip} from '@material-ui/core';\nimport {makeStyles} from '@material-ui/core/styles';\nimport moment from 'moment';\nimport {cardTypeMap} from 'admin/library/enums';\nimport {Button, Card, Column, Divider, Row, Text, Wrapper} from 'components-lib';\nimport {useNavigate} from 'hooks';\nimport {IAnswerStack} from 'models';\nimport {pages} from 'paths';\nimport {EntityCardAnswers} from 'admin/library/components/EntityCard/EntityCardAnswers';\nimport {useItem, usePublish} from 'admin/library/items/hooks';\nimport {getIsJaUSA, updateNameConceptsWithKSAs} from '../../utils';\nimport {USAAndSuperAdminRoles, withRole} from 'permissions';\n\ninterface IItemCardProps {\n item: IAnswerStack;\n}\n\nconst dateFormat = 'MMM DD, YYYY';\n\nconst ButtonSecondaryWithSuperAdminPermissions = withRole(USAAndSuperAdminRoles, '')(Button.Secondary);\n\nexport const ItemCard: FC<IItemCardProps> = ({item}) => {\n const classes = useStyles();\n const {push} = useNavigate();\n const [showDetails, setShowDetails] = useState(false);\n const {publishItemAnswerStack, unPublishItemAnswerStack, publishingStack} = usePublish();\n const {promotingStack, promoteAnswerStackClickHandler} = useItem();\n\n const isItemJAUSA = getIsJaUSA(item.details);\n const showPromoteAnswerStack = !isItemJAUSA;\n\n const canBeUnpublished = useMemo(() => item.canBeUnpublished === true && item.isApproved === true, [\n item.canBeUnpublished,\n item.isApproved,\n ]);\n\n const canBePublished = useMemo(() => item.canEdit === true && item.isApproved === false, [\n item.canEdit,\n item.isApproved,\n ]);\n\n const toggleDetails = useCallback(() => {\n setShowDetails(!showDetails);\n }, [showDetails]);\n\n const togglePublish = useCallback(() => {\n if (canBeUnpublished) {\n unPublishItemAnswerStack(item.questionAnswerStackId, item.questionId);\n } else if (canBePublished) {\n publishItemAnswerStack(item.questionAnswerStackId, item.questionId);\n }\n }, [\n canBePublished,\n canBeUnpublished,\n item.questionAnswerStackId,\n item.questionId,\n publishItemAnswerStack,\n unPublishItemAnswerStack,\n ]);\n\n const handleEdit = useCallback(() => {\n push(`${pages.adminPortal.items.editAnswerStackLink}/${item.questionId}/${item.questionAnswerStackId}`);\n }, [item.questionAnswerStackId, item.questionId, push]);\n\n const handleAddToJSA = useCallback(\n () => promoteAnswerStackClickHandler(item.questionAnswerStackId, item.questionId),\n [promoteAnswerStackClickHandler, item.questionAnswerStackId, item.questionId]\n );\n\n const Chips = useMemo(\n () => () => (\n <Row justify=\"flex-start\" classes={{root: classes.metaData}}>\n {Object.entries(item.metaData).map(([key, val]) => {\n if (!val) return val;\n const hasName = !!val.name;\n const name = hasName ? val.name : val;\n const getChip = (label: string) => <Chip className={classes.chip} key={key} label={label} />;\n\n if (Array.isArray(val)) {\n return val.map((value) => getChip(`${updateNameConceptsWithKSAs(key)}: ${value.name}`));\n }\n\n return getChip(`${updateNameConceptsWithKSAs(key)}: ${name}`);\n })}\n </Row>\n ),\n [classes.metaData, classes.chip, item.metaData]\n );\n\n const ItemDetails = useMemo(\n () => () => (\n <Column className={classes.details}>\n <Row justify=\"flex-start\">\n <Text.Paragraph>Author: {item.details.createdBy}</Text.Paragraph>\n </Row>\n <Row justify=\"flex-start\">\n <Text.Paragraph>Date Created: {moment(item.details.createdOn).format(dateFormat)}</Text.Paragraph>\n </Row>\n </Column>\n ),\n [classes.details, item.details]\n );\n\n return (\n <Card>\n <Row classes={{root: classes.header}}>\n <Text.Paragraph variant=\"body2\">{item.details.creatorArea}</Text.Paragraph>\n <Divider.Vertical size=\"small\" />\n {item?.questionType && (\n <Fragment>\n <Text.Paragraph variant=\"body2\">{cardTypeMap.get(item?.questionType)}</Text.Paragraph>\n <Divider.Vertical size=\"small\" />\n </Fragment>\n )}\n <Text.Paragraph variant=\"body2\">Item ID: {item.questionAnswerStackId}</Text.Paragraph>\n <Wrapper className={classes.actions}>\n {showPromoteAnswerStack && (\n <ButtonSecondaryWithSuperAdminPermissions\n clickHandler={handleAddToJSA}\n size=\"small\"\n disabled={promotingStack}\n >\n Add to JA USA\n </ButtonSecondaryWithSuperAdminPermissions>\n )}\n {item?.canEdit && (\n <Button.Secondary clickHandler={handleEdit} size=\"small\" disabled={publishingStack || canBeUnpublished}>\n Edit\n </Button.Secondary>\n )}\n {(canBeUnpublished || canBePublished) && (\n <Button.Primary size=\"small\" clickHandler={togglePublish} disabled={publishingStack}>\n {publishingStack ? 'loading...' : canBeUnpublished ? 'Un-publish' : canBePublished ? 'Publish' : ''}\n </Button.Primary>\n )}\n </Wrapper>\n </Row>\n <Row>\n {item.choices && (\n <EntityCardAnswers choices={item.choices} questionId={item.questionId} type={item.questionType} />\n )}\n </Row>\n <Row justify=\"flex-start\">\n <Button.Text className={classes.showDetails} clickHandler={toggleDetails} color=\"primary\">\n {showDetails ? 'Hide' : 'Show'} Details\n </Button.Text>\n {showDetails && (\n <Fragment>\n <Chips />\n <ItemDetails />\n </Fragment>\n )}\n </Row>\n </Card>\n );\n};\n\nconst useStyles = makeStyles((theme) => {\n const marginBottom = theme.spacing(3);\n\n return {\n header: {\n marginBottom,\n },\n actions: {\n marginLeft: 'auto',\n },\n showDetails: {\n padding: 5,\n },\n metaData: {\n display: 'flex',\n flexDirection: 'row',\n gap: '5px',\n },\n details: {\n marginTop: 15,\n display: 'flex',\n gap: '5px',\n },\n chip: {\n '& .MuiChip-label': {\n color: 400,\n },\n },\n };\n});\n","import React, {FC, Fragment} from 'react';\nimport {useFormikContext} from 'formik';\nimport {makeStyles} from '@material-ui/core';\nimport {Button, Column, Row, Text} from 'components-lib';\nimport {useModal, useQueryParams} from 'hooks';\nimport {ModalCreateAnswerStack, ModalSelectAnswerStack} from '..';\nimport {AddEditQuestion} from '../AddEditQuestion/AddEditQuestion';\nimport {useActiveItem, usePageLoading} from '../../../hooks';\nimport {ItemCard} from '../ItemCard/ItemCard';\nimport {usePermissions} from 'permissions';\nimport {ActiveModeEnum, AdminRolesItems} from 'admin/library/items/enums';\nimport {QuestionAnswersTypeEnum} from 'enums';\nimport {IItemCreateFormValues} from '../../views/create/components/ItemBuilderCreateForm/config/itemBuilderCreateFormBaseValuesConfig';\nimport {getQuestionMode} from '../../utils';\nimport {FormContextProvider} from 'forms';\n\nexport const ItemQuestionEdit: FC = () => {\n const classes = useStyles();\n const {values} = useFormikContext<IItemCreateFormValues>();\n const {item} = useActiveItem();\n const {loadingPageSection} = usePageLoading();\n const {hasPermission} = usePermissions();\n const hasAdminPermission = hasPermission(AdminRolesItems);\n const {questionId} = useQueryParams();\n\n const isMatrixType = values.type === QuestionAnswersTypeEnum.matrixEnum;\n const itemQuestionId = Number(questionId);\n const mode = itemQuestionId ? ActiveModeEnum.edit : ActiveModeEnum.create;\n const {isCreateMode} = getQuestionMode(mode);\n\n const shouldDisableButtonGroup = !!itemQuestionId;\n const shouldRenderComponent = hasAdminPermission && !isCreateMode;\n\n // Disable using Create Answer stack if type is matrix\n const shouldDisableCreateAnswerStackButton = isMatrixType;\n\n const {isOpen: isSelectAnswerStackOpen, setIsOpen: setIsSelectAnswerStackOpen} = useModal();\n const {isOpen: isCreateAnswerStackOpen, setIsOpen: setIsCreateAnswerStackOpen} = useModal();\n\n return (\n <>\n <Row align=\"flex-start\" justify=\"flex-start\">\n <Column sm={12} md={12} lg={12} xl={12}>\n <AddEditQuestion mode={mode} />\n {shouldRenderComponent && (\n <Fragment>\n <Text.Heading as=\"h3\">Answer(s)</Text.Heading>\n <Text.Caption>Add at least one answer stack.</Text.Caption>\n </Fragment>\n )}\n </Column>\n {shouldRenderComponent && (\n <div className={classes.buttonGroup}>\n <Button.Secondary\n size=\"small\"\n isFirst\n clickHandler={() => setIsSelectAnswerStackOpen(true)}\n disabled={loadingPageSection || !shouldDisableButtonGroup}\n >\n Select Answer Stack\n </Button.Secondary>\n <Button.Secondary\n size=\"small\"\n clickHandler={() => setIsCreateAnswerStackOpen(true)}\n disabled={loadingPageSection || !shouldDisableButtonGroup || shouldDisableCreateAnswerStackButton}\n >\n Create Answer Stack\n </Button.Secondary>\n </div>\n )}\n {item && (\n <Column className={classes.itemGroup} sm={12} md={12} lg={12} xl={12}>\n {item.elements.map((item) => (\n <ItemCard key={item.questionAnswerStackId} item={item} />\n ))}\n </Column>\n )}\n </Row>\n <FormContextProvider>\n {isSelectAnswerStackOpen && (\n <ModalSelectAnswerStack isOpen={isSelectAnswerStackOpen} setIsOpen={setIsSelectAnswerStackOpen} />\n )}\n {isCreateAnswerStackOpen && (\n <ModalCreateAnswerStack isOpen={isCreateAnswerStackOpen} setIsOpen={setIsCreateAnswerStackOpen} />\n )}\n </FormContextProvider>\n </>\n );\n};\n\nconst useStyles = makeStyles({\n buttonGroup: {\n marginTop: 10,\n },\n itemGroup: {\n marginTop: 20,\n },\n});\n","import React, {Fragment, useMemo} from 'react';\nimport {useFormikContext} from 'formik';\n\nimport {FormNameEnum} from 'filters-selections';\nimport {Form} from 'forms';\n\nexport function ItemQuestionName() {\n const {values} = useFormikContext();\n const hasQuestionText = !!values[FormNameEnum.questionTextHtml];\n\n const PreviewTextEditor = useMemo(\n () => () => <Form.RichTextEditor name={FormNameEnum.questionTextHtml} withEdit readOnly toolbarHidden />,\n []\n );\n return <Fragment>{hasQuestionText && <PreviewTextEditor />}</Fragment>;\n}\n","import {FormControlLabel, makeStyles} from '@material-ui/core';\nimport {Accordion, Column, Row, Text} from 'components-lib';\nimport {FormNameEnum} from 'filters-selections';\nimport {Form} from 'forms';\nimport {IAnswerStack} from 'models';\nimport React, {SyntheticEvent, useMemo} from 'react';\n\ninterface IItemAnswerStackProps {\n idx: number;\n answerStack: IAnswerStack;\n disabled?: boolean;\n}\n\nexport function ItemAnswerStack({answerStack, idx, disabled}: IItemAnswerStackProps) {\n const classes = useStyles();\n\n const heading = useMemo(() => {\n const subHeading = answerStack.choices.map((answer) => answer.text).join(', ');\n return (\n <Row align=\"center\" classes={{root: classes.heading}}>\n <Text.Heading as=\"h4\">{answerStack.answerTypeName}</Text.Heading>\n <div className={classes.subHeading}>\n <Text.Caption>{subHeading}</Text.Caption>\n </div>\n </Row>\n );\n }, [answerStack.choices, answerStack.answerTypeName, classes.heading, classes.subHeading]);\n\n const accordionHeadingAction = useMemo(() => {\n const stopPropagationHandler = (event: SyntheticEvent) => event.stopPropagation();\n\n return (\n <FormControlLabel\n onClick={stopPropagationHandler}\n onFocus={stopPropagationHandler}\n control={<Form.Checkbox name={`${FormNameEnum.answerStacks}.${idx}.isSelected`} disabled={disabled} />}\n label=\"\"\n classes={{root: classes.accordionAction}}\n />\n );\n }, [idx, classes, disabled]);\n\n return (\n <Accordion heading={heading} headingActionLeft={accordionHeadingAction} withBorder>\n <Column>\n {answerStack.choices.map((answer, answerIdx) => {\n return (\n <Row key={answer.answerId} classes={{root: classes.answer}} justify=\"flex-start\">\n <Form.Checkbox\n name={`${FormNameEnum.answerStacks}.${idx}.choices.${answerIdx}.isCorrect`}\n label={answer.text}\n disabled={disabled}\n />\n </Row>\n );\n })}\n </Column>\n </Accordion>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n answer: {\n paddingLeft: theme.spacing(4),\n },\n heading: {\n flex: 1,\n },\n subHeading: {\n marginLeft: theme.spacing(3),\n flex: 1,\n },\n accordionAction: {\n margin: 0,\n },\n}));\n","import {makeStyles} from '@material-ui/core';\nimport {Accordion, Button, Checkbox, Column, Icon, Row, Text} from 'components-lib';\nimport {FormNameEnum} from 'filters-selections';\nimport {ArrayHelpers} from 'formik';\nimport {Form} from 'forms';\nimport {IAnswerStackCustom} from 'models';\nimport React, {SyntheticEvent} from 'react';\nimport {createEmptyAnswer} from '../../utils';\n\ninterface IItemAnswerStackCustomProps {\n stack: IAnswerStackCustom;\n idx: number;\n removeClickHandler: (event: SyntheticEvent) => void;\n}\n\nexport function ItemAnswerStackCustom({stack, idx, removeClickHandler}: IItemAnswerStackCustomProps) {\n const classes = useStyles();\n\n return (\n <Accordion\n heading={<Text.Heading as=\"h4\">{stack.title || 'Custom Stack'}</Text.Heading>}\n headingActionLeft={<Checkbox checked disabled />}\n headingActionRight={\n <Button.Icon clickHandler={removeClickHandler}>\n <Icon.DeleteIcon />\n </Button.Icon>\n }\n withBorder\n initialIsExpanded\n >\n <Column sm={11} md={11} lg={11} xl={11}>\n <Column className={classes.section}>\n <Text.Caption>Response Type</Text.Caption>\n <Form.RadioGroup name={`${FormNameEnum.customStacks}.${idx}.questionType`}>\n <Row justify=\"flex-start\">\n <Form.Radio value={10} label=\"Single Select\" />\n <Form.Radio value={20} label=\"Multiple Select\" />\n </Row>\n </Form.RadioGroup>\n <Text.Paragraph color=\"primary\">\n You should provide text to all answers and select the correct one.\n </Text.Paragraph>\n </Column>\n\n <Form.Array name={`${FormNameEnum.customStacks}[${idx}].choices`}>\n {(arrayHelpers: ArrayHelpers) => (\n <>\n {stack.choices.map((choice, choiceIdx) => {\n const choiceNameBase = `${FormNameEnum.customStacks}[${idx}].choices[${choiceIdx}]`;\n\n return (\n <Row key={choiceIdx} justify=\"flex-start\" classes={{root: classes.answerRow}}>\n <Form.Checkbox name={`${choiceNameBase}.isCorrect`} checked={choice?.isCorrect} />\n\n <div className={classes.choiceInput}>\n <Form.Input name={`${choiceNameBase}.text`} value={choice.text} />\n </div>\n <Button.Icon\n clickHandler={() => arrayHelpers.remove(choiceIdx)}\n disabled={stack.choices.length === 1}\n >\n <Icon.DeleteIcon />\n </Button.Icon>\n </Row>\n );\n })}\n <div className={classes.addAnswerButton}>\n <Button.Secondary\n size=\"small\"\n clickHandler={() => arrayHelpers.insert(stack.choices.length, createEmptyAnswer())}\n >\n Add Answer\n </Button.Secondary>\n </div>\n </>\n )}\n </Form.Array>\n </Column>\n </Accordion>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n section: {\n marginBottom: theme.spacing(4),\n },\n titleInput: {\n display: 'flex',\n flexGrow: 2,\n width: '100%',\n marginTop: theme.spacing(1),\n paddingRight: 26,\n },\n choiceInput: {\n display: 'flex',\n flexGrow: 2,\n },\n addButton: {\n marginTop: theme.spacing(1),\n marginLeft: 42,\n },\n answerRow: {\n marginBottom: theme.spacing(2),\n },\n addAnswerButton: {\n width: 130,\n marginTop: theme.spacing(2),\n },\n}));\n","import {makeStyles} from '@material-ui/core';\nimport {IComponentWithChildren} from 'models';\nimport React from 'react';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface ISectionContainerProps extends IComponentWithChildren {}\n\nexport function SectionContainer({children}: ISectionContainerProps) {\n const classes = useStyles();\n return <div className={classes.root}>{children}</div>;\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n },\n}));\n","import {makeStyles} from '@material-ui/core';\nimport {Button, Column, Row, Text} from 'components-lib';\nimport {QuestionAnswersTypeEnum} from 'enums';\nimport {FormNameEnum} from 'filters-selections';\nimport {ArrayHelpers} from 'formik';\nimport {Form} from 'forms';\nimport {IAnswerStack, IAnswerStackCustom} from 'models';\nimport React from 'react';\nimport {groupBy} from 'utils';\nimport {useCustomAnswerStack} from '../../hooks';\nimport {ItemAnswerStack} from '../ItemAnswerStack/ItemAnswerStack';\nimport {ItemAnswerStackCustom} from '../ItemAnswerStackCustom/ItemAnswerStackCustom';\nimport {SectionContainer} from '../SectionContainer/SectionContainer';\n\nenum PublishedTextEnum {\n Published = 'Published',\n NotPublished = 'Not Published',\n}\n\ninterface IItemAnswersProps {\n answerStacks: IAnswerStack[];\n questionType: QuestionAnswersTypeEnum;\n disableAll?: boolean;\n}\n\nexport function ItemAnswers({answerStacks, questionType, disableAll}: IItemAnswersProps) {\n const classes = useStyles();\n const {customStacksValue, addCustomStack} = useCustomAnswerStack();\n const isMatrix = questionType === QuestionAnswersTypeEnum.matrixEnum;\n const heading = isMatrix ? 'Matrix Scale(s)' : 'Answers';\n const caption = isMatrix\n ? 'Select matrix scale(s). Then mark the correct or positive answer(s). You will have the ability to add child items during instrument creation.'\n : 'Select answer stack(s). Then mark the correct or positive answer(s).';\n\n const hasStacks = !!answerStacks && !!answerStacks.length;\n let stacksGrouped = {};\n\n if (hasStacks) {\n stacksGrouped = groupBy(\n answerStacks.map((stack) => ({\n ...stack,\n isPublished: stack.isApproved ? PublishedTextEnum.Published : PublishedTextEnum.NotPublished,\n })),\n (item) => item.isPublished\n );\n }\n\n return (\n <SectionContainer>\n <Row justify=\"flex-start\">\n <Column className={classes.heading}>\n <Text.Heading as=\"h4\">{heading}</Text.Heading>\n <Text.Paragraph>{caption}</Text.Paragraph>\n <Text.Paragraph>In order to proceed you should select at least one answer stack.</Text.Paragraph>\n </Column>\n </Row>\n\n {!isMatrix && (\n <Form.Array name={FormNameEnum.customStacks}>\n {(arrayHelpers: ArrayHelpers) => (\n <>\n <Row justify=\"flex-start\">\n <Button.Primary\n size=\"small\"\n isFirst\n clickHandler={() => {\n const customStack = addCustomStack();\n arrayHelpers.insert(customStacksValue.length, customStack);\n }}\n disabled={disableAll}\n >\n Create Answer Stack\n </Button.Primary>\n </Row>\n <Row justify=\"flex-start\">\n {!!customStacksValue.length &&\n customStacksValue.map((stack: IAnswerStackCustom, idx: number) => (\n <ItemAnswerStackCustom\n key={stack.id}\n idx={idx}\n stack={stack}\n removeClickHandler={() => {\n arrayHelpers.remove(idx);\n }}\n />\n ))}\n </Row>\n </>\n )}\n </Form.Array>\n )}\n\n <Row justify=\"flex-start\">\n <Form.Array name={FormNameEnum.answerStacks}>\n {() => {\n const published = stacksGrouped[PublishedTextEnum.Published];\n const notPublished = stacksGrouped[PublishedTextEnum.NotPublished];\n const additionalIdx = (published && published.length) ?? 0;\n\n return (\n hasStacks && (\n <>\n {published && (\n <>\n <Text.Heading as=\"h4\">{PublishedTextEnum.Published}</Text.Heading>\n {published.map((answerStack: IAnswerStack, idx: number) => (\n <ItemAnswerStack\n key={answerStack.questionAnswerStackId}\n idx={idx}\n answerStack={answerStack}\n disabled={disableAll}\n />\n ))}\n </>\n )}\n <div className={classes.withMarginTop}>\n {notPublished && (\n <>\n <Text.Heading as=\"h4\">{PublishedTextEnum.NotPublished}</Text.Heading>\n {notPublished.map((answerStack: IAnswerStack, idx: number) => (\n <ItemAnswerStack\n key={answerStack.questionAnswerStackId}\n idx={additionalIdx + idx}\n answerStack={answerStack}\n disabled={disableAll}\n />\n ))}\n </>\n )}\n </div>\n </>\n )\n );\n }}\n </Form.Array>\n </Row>\n </SectionContainer>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n heading: {\n marginBottom: theme.spacing(3),\n },\n withMarginTop: {\n marginTop: theme.spacing(2),\n },\n}));\n","import React, {Fragment, useMemo} from 'react';\nimport {SidebarTitle} from 'admin/components';\nimport {Sidebar} from 'components-lib';\nimport {SelectionEnum, SelectionListItems} from 'filters-selections';\nimport {useItem, useItemIdParam, usePageLoading} from 'admin/library/items/hooks';\n\nexport function SidebarItem() {\n const {loadingPageSection} = usePageLoading();\n const {itemId} = useItemIdParam();\n const {pageLoading} = useItem();\n\n const selectionListItems = useMemo(() => {\n const selectionList = [\n SelectionEnum.PillarMultiSelect,\n SelectionEnum.EvaluationType,\n SelectionEnum.Domain,\n SelectionEnum.ProgramSelectWithDomainDependency,\n SelectionEnum.CompetencyByDomain,\n SelectionEnum.Concepts,\n SelectionEnum.AdministrationType,\n SelectionEnum.SchoolLevel,\n SelectionEnum.LearningObjectiveWithDomainDependency,\n SelectionEnum.Category,\n ];\n\n return <SelectionListItems list={selectionList} disableAll={!itemId || loadingPageSection} />;\n }, [loadingPageSection, itemId]);\n\n return (\n <Sidebar.Base withHeader={false}>\n <SidebarTitle text=\"Tags\" />\n <Fragment>{!pageLoading && selectionListItems}</Fragment>\n </Sidebar.Base>\n );\n}\n","import React, {Fragment, useMemo} from 'react';\nimport {SidebarAuthor, SidebarTitle} from 'admin/components';\nimport {useActiveItem, usePageLoading} from 'admin/library/items/hooks';\nimport {Sidebar} from 'components-lib';\n\nexport const SidebarBuilderCreateItem = () => {\n const {item} = useActiveItem();\n const {loadingPageSection} = usePageLoading();\n\n const date = item?.createdOn;\n const creatorArea = item?.creatorArea;\n const author = item?.createdBy;\n const questionOptionsType = item?.questionOptionsType?.displayText;\n\n const SidebarContent = useMemo(\n () => () => (\n <Fragment>\n {author && (\n <Fragment>\n <SidebarTitle text=\"Question\" />\n <SidebarAuthor author={author} date={date} creatorArea={creatorArea} questionType={questionOptionsType} />\n </Fragment>\n )}\n </Fragment>\n ),\n [author, date, creatorArea, questionOptionsType]\n );\n\n const sidebarInfo = useMemo(() => {\n return <Fragment>{!loadingPageSection && <SidebarContent />}</Fragment>;\n }, [loadingPageSection, SidebarContent]);\n\n return <Sidebar.Base withHeader={false}>{sidebarInfo}</Sidebar.Base>;\n};\n","import React from 'react';\nimport {Form} from 'forms';\nimport {Column, Row, Text} from 'components-lib';\nimport {FormNameEnum} from 'filters-selections';\nimport {ItemQuestionAnswersTypeEnum as answerTypeEnum} from 'admin/library/items/enums';\n\nenum ResponseTypeOptions {\n SingleSelect = 'Single Select',\n MultiSelect = 'Multiple Select',\n Dropdown = 'Dropdown',\n OpenEnded = 'Open-ended',\n NumericScale = 'Numeric Scale',\n}\n\nconst responseTypeOptions = [\n {\n label: ResponseTypeOptions.SingleSelect,\n value: answerTypeEnum.singleSelectAnswerEnum,\n },\n {\n label: ResponseTypeOptions.MultiSelect,\n value: answerTypeEnum.matrixMultiSelectAnswerEnum,\n },\n {\n label: ResponseTypeOptions.Dropdown,\n value: answerTypeEnum.dropdownAnswerEnum,\n },\n {\n label: ResponseTypeOptions.OpenEnded,\n value: answerTypeEnum.openEndedAnswerEnum,\n },\n {\n label: ResponseTypeOptions.NumericScale,\n value: answerTypeEnum.ratingAnswerEnum,\n },\n];\n\nexport const ResponseTypeGroup = () => {\n return (\n <Column>\n <Text.Caption>Response Type</Text.Caption>\n <Form.RadioGroup name={FormNameEnum.questionType}>\n <Row justify=\"flex-start\">\n {responseTypeOptions.map((responseType, index: number) => (\n <Form.Radio key={index} value={responseType.value} label={responseType.label} />\n ))}\n </Row>\n </Form.RadioGroup>\n </Column>\n );\n};\n","import React, {Dispatch, FC, Fragment, SetStateAction, useEffect, useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Column, Text} from 'components-lib';\nimport {SelectionEnum, SelectionListItems} from 'filters-selections';\nimport {useActiveItem} from 'admin/library/items/hooks';\nimport {DefaultAnswerStacks} from '..';\nimport {useFormikContext} from 'formik';\nimport {IModalSelectAnswerStackFormValues} from './modalSelectAnswerStackValidationSchema';\n\nconst selectionList = [\n SelectionEnum.PillarMultiSelect,\n SelectionEnum.EvaluationType,\n SelectionEnum.DomainWithoutKnowledge,\n SelectionEnum.ProgramSelectWithDomainDependency,\n SelectionEnum.AdministrationType,\n SelectionEnum.SchoolLevel,\n SelectionEnum.Category,\n];\n\ninterface IModalSelectAnswerStackContentProps {\n isDirty: boolean;\n setIsDirtyCallback: Dispatch<SetStateAction<boolean>>;\n}\n\nexport const ModalSelectAnswerStackContent: FC<IModalSelectAnswerStackContentProps> = ({\n isDirty,\n setIsDirtyCallback,\n}) => {\n const classes = useStyles();\n const {item} = useActiveItem();\n const {dirty, isValid} = useFormikContext<IModalSelectAnswerStackFormValues>();\n\n useEffect(() => {\n if (dirty && isValid && !isDirty) {\n setIsDirtyCallback(true);\n } else if (!isValid) {\n setIsDirtyCallback(false);\n }\n }, [dirty, isDirty, isValid, setIsDirtyCallback]);\n\n const selectionListItems = useMemo(() => <SelectionListItems list={selectionList} />, []);\n\n const metatags = useMemo(() => <div className={classes.metatags}>{selectionListItems}</div>, [\n classes,\n selectionListItems,\n ]);\n\n return (\n <Column>\n <Text.Heading as=\"h4\" classes={{root: classes.heading}}>\n Add tags to make this item easy to find later on.\n </Text.Heading>\n {metatags}\n <Text.Heading as=\"h4\" classes={{root: classes.heading}}>\n Select an answer stack. Then, mark the correct or positive answer(s).\n </Text.Heading>\n <Fragment>\n {item?.answerStacks && (\n <Fragment>\n <DefaultAnswerStacks />\n </Fragment>\n )}\n </Fragment>\n </Column>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n width: '100%',\n },\n heading: {\n padding: '5px 0px',\n color: theme.palette.grey[800],\n },\n metatags: {\n maxWidth: 420,\n },\n}));\n","import React, {Fragment, useCallback, useContext, useEffect} from 'react';\nimport {batch, useSelector} from 'react-redux';\nimport {useFormikContext} from 'formik';\nimport {FormContext} from 'forms/formik/FormContextProvider';\nimport {IWithModal} from 'models';\nimport {Button, Modal} from 'components-lib';\nimport {useItemStateActions} from 'admin/library/items/hooks';\nimport {usePermissions} from 'permissions';\nimport {AdminRolesItems} from 'admin/library/items/enums';\nimport {useQueryParams} from 'hooks';\nimport {useDebounce} from 'hooks';\nimport {savingSelector} from 'admin/library/items/store';\nimport {ModalSelectAnswerStackForm} from '..';\nimport {ModalSelectAnswerStackContent} from './ModalSelectAnswerStackContent';\n\ninterface IModalSelectAnswerStackProps extends IWithModal {\n text?: string;\n confirmHandler?: () => void;\n}\n\nexport const ModalSelectAnswerStack = ({isOpen, setIsOpen}: IModalSelectAnswerStackProps) => {\n const queryParams = useQueryParams();\n const {fetchPossibleDefaultAnswerStacks} = useItemStateActions();\n const {resetForm} = useFormikContext();\n const {hasPermission} = usePermissions();\n const debouncedReset = useDebounce(() => resetForm());\n const {setIsDirty, isDirty, formikFormRef, submitFormikForm} = useContext(FormContext);\n\n const saving = useSelector(savingSelector);\n\n const questionId = queryParams.questionId;\n const hasAdminPermission = hasPermission(AdminRolesItems);\n\n useEffect(() => {\n if (questionId && hasAdminPermission) {\n fetchPossibleDefaultAnswerStacks(questionId);\n }\n }, [questionId, hasAdminPermission, fetchPossibleDefaultAnswerStacks]);\n\n const closeHandler = useCallback(\n () =>\n batch(() => {\n debouncedReset();\n setIsOpen(false);\n }),\n [setIsOpen, debouncedReset]\n );\n\n const submitFormClickHandler = useCallback(() => formikFormRef?.current && submitFormikForm(), [\n formikFormRef,\n submitFormikForm,\n ]);\n\n return (\n <Modal\n disableBackdropClick\n isOpen={isOpen}\n handleClose={closeHandler}\n title=\"Add Tags and Select an Answer Stack\"\n size=\"medium\"\n >\n <ModalSelectAnswerStackForm setIsOpen={setIsOpen}>\n <ModalSelectAnswerStackContent isDirty={isDirty} setIsDirtyCallback={setIsDirty} />\n </ModalSelectAnswerStackForm>\n <Fragment>\n <Button.Secondary clickHandler={closeHandler} size=\"small\">\n Cancel\n </Button.Secondary>\n <Button.Primary clickHandler={submitFormClickHandler} size=\"small\" disabled={!isDirty || saving}>\n {saving ? 'Loading...' : 'Done'}\n </Button.Primary>\n </Fragment>\n </Modal>\n );\n};\n","import * as Yup from 'yup';\nimport {FormNameEnum} from 'filters-selections/enums';\nimport {errorMessages} from 'utils';\nimport {IAnswerStack} from 'models';\n\nexport interface IModalSelectAnswerStackFormValues {\n [FormNameEnum.pillars]: number[] | [];\n [FormNameEnum.evaluationTypes]: number[] | [];\n [FormNameEnum.domain]: number;\n [FormNameEnum.programs]: number[] | [] | number | null;\n [FormNameEnum.competencies]: number[] | [];\n [FormNameEnum.concepts]: number[] | [];\n [FormNameEnum.administration]: number | null;\n [FormNameEnum.schoolLevels]: number[] | [];\n [FormNameEnum.learningObjective]: string | '';\n [FormNameEnum.category]: string | '';\n [FormNameEnum.answerStacks]: IAnswerStack[];\n}\nexport const modalSelectAnswerStackFormValidationSchema = Yup.object().shape({\n [FormNameEnum.pillars]: Yup.array().of(Yup.number()).required(errorMessages.requiredWithFieldName('a Pillar')),\n [FormNameEnum.evaluationTypes]: Yup.array()\n .of(Yup.number())\n .required(errorMessages.requiredWithFieldName('an Evaluation Type')),\n [FormNameEnum.domain]: Yup.number().nullable().required(errorMessages.requiredWithFieldName('a Domain')),\n [FormNameEnum.competencies]: Yup.array()\n .of(Yup.number())\n .when(FormNameEnum.domain, {\n is: 10,\n then: Yup.array().of(Yup.number()).required(errorMessages.requiredWithFieldName('a Competency')),\n }),\n [FormNameEnum.concepts]: Yup.array()\n .of(Yup.number())\n .when(FormNameEnum.domain, {\n is: 10,\n then: Yup.array().of(Yup.number()).required(errorMessages.requiredWithFieldName('a KSA')),\n }),\n [FormNameEnum.administration]: Yup.number()\n .nullable()\n .required(errorMessages.requiredWithFieldName('an Administration')),\n [FormNameEnum.schoolLevels]: Yup.array()\n .of(Yup.number())\n .required(errorMessages.requiredWithFieldName('a School Level')),\n [FormNameEnum.learningObjective]: Yup.string().ensure(),\n [FormNameEnum.category]: Yup.string().ensure(),\n [FormNameEnum.answerStacks]: Yup.array().of(\n Yup.object().shape({\n answerTypeName: Yup.string(),\n isSelected: Yup.boolean(),\n choises: Yup.array().of(\n Yup.object().shape({\n text: Yup.string(),\n isCorrect: Yup.boolean(),\n position: Yup.number(),\n answerQuestionAnswerStackId: Yup.number(),\n answerId: Yup.number(),\n })\n ),\n defaultAnswerStackId: Yup.number(),\n })\n ),\n [FormNameEnum.customValidation]: Yup.boolean().test(\n 'has-selected-stack',\n 'You should select a default answer stack and at least one correct answer!',\n function () {\n const {answerStacks} = this.parent;\n\n const isValid = answerStacks.some((stack: IAnswerStack) => {\n const isSelected = stack.isSelected;\n const hasCorrectChoice = stack.choices.some((choice) => choice.isCorrect);\n\n return isSelected && hasCorrectChoice;\n });\n\n return isValid;\n }\n ),\n});\n","import React, {FC, useContext, useMemo} from 'react';\nimport {FormNameEnum} from 'filters-selections';\nimport {Form} from 'forms';\nimport {useItem, useItemStateActions} from 'admin/library/items/hooks';\nimport {\n IModalSelectAnswerStackFormValues,\n modalSelectAnswerStackFormValidationSchema,\n} from './modalSelectAnswerStackValidationSchema';\nimport {FormikHelpers} from 'formik';\nimport {batch} from 'react-redux';\nimport {IWithChildren} from 'models';\nimport {FormContext} from 'forms/formik/FormContextProvider';\n\ninterface IModalSelectAnswerStackFormProps extends IWithChildren {\n setIsOpen: (arg: boolean) => void;\n}\n\nexport const ModalSelectAnswerStackForm: FC<IModalSelectAnswerStackFormProps> = ({children, setIsOpen}) => {\n const {item} = useItem();\n const {formikFormRef, setIsDirty} = useContext(FormContext);\n const {addDefaultAnswerStack} = useItemStateActions();\n\n const submitHandler = async (data: IModalSelectAnswerStackFormValues, {resetForm}: FormikHelpers<any>) => {\n addDefaultAnswerStack({\n ...data,\n questionId: item.questionId,\n }).then(() => {\n batch(() => {\n setIsOpen(false);\n resetForm();\n setIsDirty(false);\n });\n });\n };\n\n const initialValues: IModalSelectAnswerStackFormValues = useMemo(\n () => ({\n [FormNameEnum.pillars]: [],\n [FormNameEnum.evaluationTypes]: [],\n [FormNameEnum.domain]: null,\n [FormNameEnum.programs]: [],\n [FormNameEnum.competencies]: [],\n [FormNameEnum.concepts]: [],\n [FormNameEnum.administration]: null,\n [FormNameEnum.schoolLevels]: [],\n [FormNameEnum.learningObjective]: '',\n [FormNameEnum.category]: '',\n [FormNameEnum.answerStacks]: item.answerStacks,\n }),\n [item]\n );\n\n return (\n <Form.Form<IModalSelectAnswerStackFormValues>\n initialValues={initialValues}\n validationSchema={modalSelectAnswerStackFormValidationSchema}\n submitHandler={submitHandler}\n formikRef={formikFormRef}\n >\n {children}\n </Form.Form>\n );\n};\n","import * as Yup from 'yup';\nimport {FormNameEnum} from 'filters-selections/enums';\nimport {errorMessages} from 'utils';\nimport {IChoice} from 'models/library/common/IAnswer';\nimport {ItemQuestionAnswersTypeEnum as answerTypeEnum} from 'admin/library/items/enums';\n\nexport interface IModalCreateAnswerStackFormValues {\n [FormNameEnum.choices]: IChoice[];\n [FormNameEnum.pillars]: number[];\n [FormNameEnum.evaluationTypes]: number[];\n [FormNameEnum.domain]: number;\n [FormNameEnum.programs]: number[] | number | null;\n [FormNameEnum.competencies]: number[];\n [FormNameEnum.concepts]: number[];\n [FormNameEnum.administration]: number;\n [FormNameEnum.schoolLevels]: number[];\n [FormNameEnum.learningObjective]: string | '';\n [FormNameEnum.category]: string;\n}\n\nexport const modalCreateAnswerStackFormValidationSchema = Yup.object().shape({\n [FormNameEnum.choices]: Yup.array().of(\n Yup.object().shape({\n text: Yup.string(),\n isCorrect: Yup.boolean(),\n position: Yup.number(),\n })\n ),\n [FormNameEnum.pillars]: Yup.array().of(Yup.number()).required(errorMessages.requiredWithFieldName('a Pillar')),\n [FormNameEnum.evaluationTypes]: Yup.array()\n .of(Yup.number())\n .required(errorMessages.requiredWithFieldName('an Evaluation Type')),\n [FormNameEnum.domain]: Yup.number().nullable().required(errorMessages.requiredWithFieldName('a Domain')),\n [FormNameEnum.competencies]: Yup.array()\n .of(Yup.number())\n .when(FormNameEnum.domain, {\n is: 10,\n then: Yup.array().of(Yup.number()).required(errorMessages.requiredWithFieldName('a Competency')),\n }),\n [FormNameEnum.concepts]: Yup.array()\n .of(Yup.number())\n .when(FormNameEnum.domain, {\n is: 10,\n then: Yup.array().of(Yup.number()).required(errorMessages.requiredWithFieldName('a KSA')),\n }),\n [FormNameEnum.administration]: Yup.number()\n .nullable()\n .required(errorMessages.requiredWithFieldName('an Administration')),\n [FormNameEnum.schoolLevels]: Yup.array()\n .of(Yup.number())\n .required(errorMessages.requiredWithFieldName('a School Level')),\n [FormNameEnum.learningObjective]: Yup.string().ensure(),\n [FormNameEnum.category]: Yup.string().ensure(),\n [FormNameEnum.customValidation]: Yup.boolean()\n .test('has-text', 'You should add text to all answers!', function () {\n const {choices, questionType} = this.parent;\n const isSingleChoice = isAnswerTypeSingleChoice(questionType, answerTypeEnum.singleSelectAnswerEnum);\n const isMultiChoice = isAnswerTypeMultiChoice(questionType, answerTypeEnum.matrixMultiSelectAnswerEnum);\n const isDropdown = isAnswerTypeDropdown(questionType, answerTypeEnum.dropdownAnswerEnum);\n const isSelectedAnswerType = isSingleChoice || isMultiChoice || isDropdown;\n\n if (isSelectedAnswerType) {\n const hasText = choices.every((choice: IChoice) => !!choice.text);\n\n return hasText;\n }\n\n return true;\n })\n .test('do-not-allow-same-choices', 'You cannot use same answer more than once!', function () {\n const {choices, questionType} = this.parent;\n const isSingleChoice = isAnswerTypeSingleChoice(questionType, answerTypeEnum.singleSelectAnswerEnum);\n const isMultiChoice = isAnswerTypeMultiChoice(questionType, answerTypeEnum.matrixMultiSelectAnswerEnum);\n const isDropdown = isAnswerTypeDropdown(questionType, answerTypeEnum.dropdownAnswerEnum);\n const isSelectedAnswerType = isSingleChoice || isMultiChoice || isDropdown;\n\n function getUniqueChoices(choices: IChoice[]) {\n const choicesList = choices.map((c) => c.text);\n return [...new Set(choicesList)];\n }\n\n function isUnique(choices: IChoice[]) {\n const uniqueChoices = getUniqueChoices(choices);\n return uniqueChoices.length === choices.length;\n }\n\n if (isSelectedAnswerType && choices.length > 1) {\n return isUnique(choices);\n }\n\n return true;\n }),\n});\n\nconst isAnswerTypeSingleChoice = (questionType: number, singleSelectAnswerEnum: number) =>\n questionType === singleSelectAnswerEnum;\nconst isAnswerTypeMultiChoice = (questionType: number, matrixMultiSelectAnswerEnum: number) =>\n questionType === matrixMultiSelectAnswerEnum;\nconst isAnswerTypeDropdown = (questionType: number, dropdownAnswerEnum: number) => questionType === dropdownAnswerEnum;\n","import React, {Dispatch, FC, Fragment, SetStateAction, useEffect, useMemo} from 'react';\nimport {useFormikContext} from 'formik';\nimport {makeStyles} from '@material-ui/core/styles';\nimport {Column, Text, Wrapper} from 'components-lib';\nimport {FormNameEnum, SelectionEnum, SelectionListItems} from 'filters-selections';\nimport {ItemAnswerOpenEnded, ItemAnswersCustom, ItemAnswersRange, ItemAnswersMultiSelect, ResponseTypeGroup} from '..';\nimport {getAnswerType} from '../../utils';\nimport {IModalCreateAnswerStackFormValues} from './config';\n\nconst selectionList = [\n SelectionEnum.PillarMultiSelect,\n SelectionEnum.EvaluationType,\n SelectionEnum.Domain,\n SelectionEnum.ProgramSelectWithDomainDependency,\n SelectionEnum.CompetencyByDomain,\n SelectionEnum.Concepts,\n SelectionEnum.AdministrationType,\n SelectionEnum.SchoolLevel,\n SelectionEnum.LearningObjectiveWithDomainDependency,\n SelectionEnum.Category,\n];\n\ninterface IModalCreateAnswerStackContentProps {\n isDirty: boolean;\n setIsDirtyCallback: Dispatch<SetStateAction<boolean>>;\n}\n\nexport const ModalCreateAnswerStackContent: FC<IModalCreateAnswerStackContentProps> = ({\n isDirty,\n setIsDirtyCallback,\n}) => {\n const classes = useStyles();\n const {values, dirty, isValid, errors} = useFormikContext<IModalCreateAnswerStackFormValues>();\n\n useEffect(() => {\n if (dirty && isValid && !isDirty) {\n setIsDirtyCallback(true);\n } else if (!isValid) {\n setIsDirtyCallback(false);\n }\n }, [dirty, isDirty, isValid, setIsDirtyCallback]);\n\n const answerStackErrors = errors[FormNameEnum.customValidation];\n\n const {\n isAnswerTypeMultiChoice,\n isAnswerTypeSingleDropdownChoice,\n isAnswerTypeOpenEnded,\n isAnswerTypeNumericScale,\n } = getAnswerType(values[FormNameEnum.questionType]);\n\n const selectionListItems = useMemo(() => <SelectionListItems list={selectionList} />, []);\n\n const Metatags = useMemo(() => <Wrapper className={classes.metatags}>{selectionListItems}</Wrapper>, [\n classes,\n selectionListItems,\n ]);\n\n const answerStackError = useMemo(\n () => (\n <Wrapper className={classes.answerStackErrors}>\n {answerStackErrors && <Text.Error>{answerStackErrors}</Text.Error>}\n </Wrapper>\n ),\n [classes, answerStackErrors]\n );\n\n const answerStack = useMemo(\n () => (\n <Fragment>\n {isAnswerTypeSingleDropdownChoice && <ItemAnswersCustom choices={values.choices} />}\n {isAnswerTypeMultiChoice && <ItemAnswersMultiSelect choices={values.choices} />}\n {isAnswerTypeOpenEnded && <ItemAnswerOpenEnded />}\n {isAnswerTypeNumericScale && <ItemAnswersRange />}\n </Fragment>\n ),\n [\n isAnswerTypeSingleDropdownChoice,\n isAnswerTypeMultiChoice,\n isAnswerTypeOpenEnded,\n isAnswerTypeNumericScale,\n values.choices,\n ]\n );\n\n return (\n <Column>\n <Text.Heading as=\"h4\" classes={{root: classes.heading}}>\n Add tags to make this item easy to find later on.\n </Text.Heading>\n <Fragment>{Metatags}</Fragment>\n <Text.Heading as=\"h4\" classes={{root: classes.heading}}>\n Create an answer stack. Then, mark the correct or positive answer(s).\n </Text.Heading>\n {answerStackError}\n <ResponseTypeGroup />\n {answerStack}\n </Column>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n heading: {\n padding: theme.spacing(1, 0),\n color: theme.palette.grey[800],\n },\n metatags: {\n maxWidth: 420,\n },\n answerStackErrors: {\n marginBottom: 10,\n },\n}));\n","import React, {FC, Fragment, useCallback, useContext, useEffect} from 'react';\nimport {useFormikContext} from 'formik';\nimport {useSelector} from 'react-redux';\nimport {Button, Modal} from 'components-lib';\nimport {FormNameEnum} from 'filters-selections';\nimport {ModalCreateAnswerStackForm} from '..';\nimport {IWithModal} from 'models';\nimport {savingSelector} from '../../../store';\nimport {IModalCreateAnswerStackFormValues} from './config/modalCreateAnswerStackValidationSchema';\nimport {createEmptyFourAnswers, getAnswerType} from '../../utils';\nimport {useDebounce} from 'hooks';\nimport {ModalCreateAnswerStackContent} from './ModalCreateAnswerStackContent';\nimport {FormContext} from 'forms/formik/FormContextProvider';\n\nexport const ModalCreateAnswerStack: FC<IWithModal> = ({isOpen, setIsOpen}) => {\n const saving = useSelector(savingSelector);\n const {setIsDirty, isDirty, formikFormRef, submitFormikForm} = useContext(FormContext);\n const {values, resetForm, setFieldValue} = useFormikContext<IModalCreateAnswerStackFormValues>();\n const debouncedReset = useDebounce(() => resetForm());\n\n const {isAnswerTypeSingleOrMultiOrDropdownChoice} = getAnswerType(values[FormNameEnum.questionType]);\n\n useEffect(() => {\n const emptyChoices = createEmptyFourAnswers();\n\n if (!isAnswerTypeSingleOrMultiOrDropdownChoice) {\n setFieldValue(FormNameEnum.choices, []);\n } else {\n setFieldValue(FormNameEnum.choices, [...emptyChoices]);\n }\n }, [isAnswerTypeSingleOrMultiOrDropdownChoice, setFieldValue]);\n\n const submitFormClickHandler = useCallback(() => formikFormRef?.current && submitFormikForm(), [\n formikFormRef,\n submitFormikForm,\n ]);\n\n const closeHandler = useCallback(() => {\n setIsOpen(false);\n debouncedReset();\n }, [setIsOpen, debouncedReset]);\n\n return (\n <Modal\n disableBackdropClick\n isOpen={isOpen}\n handleClose={closeHandler}\n title=\"Add Tags and Create an Answer Stack\"\n size=\"medium\"\n >\n <ModalCreateAnswerStackForm setIsOpen={setIsOpen} setIsDirtyCallback={setIsDirty}>\n <ModalCreateAnswerStackContent isDirty={isDirty} setIsDirtyCallback={setIsDirty} />\n </ModalCreateAnswerStackForm>\n <Fragment>\n <Button.Secondary clickHandler={closeHandler} size=\"small\">\n Cancel\n </Button.Secondary>\n <Button.Primary clickHandler={submitFormClickHandler} size=\"small\" disabled={!isDirty || saving}>\n {saving ? 'Loading...' : 'Done'}\n </Button.Primary>\n </Fragment>\n </Modal>\n );\n};\n","import React, {Dispatch, FC, SetStateAction, useCallback, useContext, useMemo} from 'react';\nimport {Form} from 'forms';\nimport {FormNameEnum} from 'filters-selections';\nimport {useItem, useItemStateActions} from '../../../hooks';\nimport {createEmptyFourAnswers} from '../../utils';\nimport {\n IModalCreateAnswerStackFormValues,\n modalCreateAnswerStackFormValidationSchema,\n} from './config/modalCreateAnswerStackValidationSchema';\nimport {FormikHelpers} from 'formik';\nimport {ItemQuestionAnswersTypeEnum as answerTypeEnum} from 'admin/library/items/enums';\nimport {FormContext} from 'forms/formik/FormContextProvider';\ninterface IModalCreateAnswerStackFormProps {\n setIsOpen: (arg: boolean) => void;\n setIsDirtyCallback: Dispatch<SetStateAction<boolean>>;\n}\n\nexport const ModalCreateAnswerStackForm: FC<IModalCreateAnswerStackFormProps> = ({\n children,\n setIsOpen,\n setIsDirtyCallback,\n}) => {\n const {formikFormRef} = useContext(FormContext);\n const {item} = useItem();\n const {addCustomAnswerStack} = useItemStateActions();\n\n const submitHandler = useCallback(\n async (data, {resetForm}: FormikHelpers<any>) => {\n try {\n await addCustomAnswerStack({\n ...data,\n rangeFrom: Number(data.rangeFrom),\n rangeTo: Number(data.rangeTo),\n questionId: item.questionId,\n });\n setIsOpen(false);\n resetForm();\n setIsDirtyCallback(false);\n } catch (err) {\n console.log(err);\n }\n },\n [item, addCustomAnswerStack, setIsOpen, setIsDirtyCallback]\n );\n\n const initialValues = useMemo(\n () => ({\n [FormNameEnum.questionType]: answerTypeEnum.singleSelectAnswerEnum,\n [FormNameEnum.choices]: createEmptyFourAnswers(),\n [FormNameEnum.pillars]: [],\n [FormNameEnum.evaluationTypes]: [],\n [FormNameEnum.domain]: null,\n [FormNameEnum.programs]: [],\n [FormNameEnum.competencies]: [],\n [FormNameEnum.concepts]: [],\n [FormNameEnum.administration]: null,\n [FormNameEnum.schoolLevels]: [],\n [FormNameEnum.learningObjective]: '',\n [FormNameEnum.category]: '',\n [FormNameEnum.rangeFrom]: -5,\n [FormNameEnum.rangeTo]: 10,\n [FormNameEnum.positiveScores]: [],\n [FormNameEnum.minimumRateDescription]: '',\n [FormNameEnum.maximumRateDescription]: '',\n }),\n []\n );\n\n return (\n <Form.Form<IModalCreateAnswerStackFormValues>\n initialValues={initialValues}\n validationSchema={modalCreateAnswerStackFormValidationSchema}\n submitHandler={submitHandler}\n formikRef={formikFormRef}\n >\n {children}\n </Form.Form>\n );\n};\n","import React, {Fragment} from 'react';\nimport {useFormikContext} from 'formik';\nimport {IAnswerStack} from 'models';\nimport {Form} from 'forms';\nimport {FormNameEnum} from 'filters-selections';\nimport {ItemAnswerStack} from '..';\nimport {Loading, Text} from 'components-lib';\nimport {IModalSelectAnswerStackFormValues} from '../ModalSelectAnswerStack/modalSelectAnswerStackValidationSchema';\n\nconst isSelectedProperty = 'isSelected';\nconst validationName = 'customValidation';\n\nconst getIsSomeAnswerStackChecked = (answerStacks: IAnswerStack[]) =>\n answerStacks.some((el: IAnswerStack) => el.hasOwnProperty(isSelectedProperty) && el.isSelected === true);\n\nexport const DefaultAnswerStacks = () => {\n const {values} = useFormikContext<IModalSelectAnswerStackFormValues>();\n const answerStacks = values[FormNameEnum.answerStacks];\n\n return (\n <Form.Array name={FormNameEnum.answerStacks}>\n {(props) => {\n const error = props.form.errors[validationName];\n\n return (\n <Fragment>\n <Fragment>{error && <Text.Error>{error}</Text.Error>}</Fragment>\n {answerStacks.length ? (\n answerStacks?.map((answerStack: IAnswerStack, idx: number) => {\n const isCheckedSomeAnswerStack = getIsSomeAnswerStackChecked(answerStacks);\n const isSelectedPropertyDoNotExists = !answerStacks[idx].hasOwnProperty(isSelectedProperty);\n const isNotSelected = answerStacks[idx].isSelected === false;\n const isNotSelectedStack = isSelectedPropertyDoNotExists || isNotSelected;\n\n return (\n <Fragment key={`${idx}-${answerStack.answerTypeName}`}>\n <ItemAnswerStack\n idx={idx}\n answerStack={answerStack}\n disabled={isCheckedSomeAnswerStack && isNotSelectedStack}\n />\n </Fragment>\n );\n })\n ) : (\n <Loading size={20} />\n )}\n </Fragment>\n );\n }}\n </Form.Array>\n );\n};\n","import React, {FC, useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Accordion, Column, Row, Text, Wrapper} from 'components-lib';\nimport {IAnswerStack} from 'models';\nimport {EditRangeAnswerStack, ItemAnswersCustom} from '..';\nimport {useFormikContext} from 'formik';\nimport {FormNameEnum} from 'filters-selections';\nimport {useEditAnswerStack, useMapChoicesBasedOnDomainKnowledge} from '../../hooks';\nimport {IItemEditFormValues} from '../../views/edit/itemBuilderEditForm';\ninterface IItemEditAnswerStackProps {\n answerStack: IAnswerStack;\n}\n\nexport const ItemEditAnswerStack: FC<IItemEditAnswerStackProps> = ({answerStack}) => {\n const classes = useStyles();\n const {values, setFieldValue} = useFormikContext<IItemEditFormValues>();\n const choices = values[FormNameEnum.choices];\n const {isTypeRating, isTypeOpenEnded, isOtherType, isTypeMultiSelect} = useEditAnswerStack(answerStack);\n const {isDomainKnowledge} = useMapChoicesBasedOnDomainKnowledge(values, setFieldValue);\n\n const heading = useMemo(() => {\n return (\n <Row\n align=\"center\"\n classes={{\n root: classes.heading,\n }}\n >\n <Text.Heading as=\"h4\">{answerStack.answerTypeName}</Text.Heading>\n </Row>\n );\n }, [classes, answerStack]);\n\n return (\n <Accordion heading={heading} headingActionLeft=\"\" initialIsExpanded withBorder disabled>\n {choices && (\n <Column>\n {isTypeRating && <EditRangeAnswerStack />}\n {isOtherType && (\n <Wrapper className={classes.otherAnswerStacks}>\n <ItemAnswersCustom\n disableDelete={isTypeMultiSelect && isDomainKnowledge}\n disableAdd={isTypeMultiSelect && isDomainKnowledge}\n withEdit\n withRightButton\n choices={choices}\n canEditAnswerInAnswerStack={answerStack?.canModifyAnswerQuestionAnswerstacks}\n />\n </Wrapper>\n )}\n </Column>\n )}\n {isTypeOpenEnded && <Column />}\n </Accordion>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n answer: {\n paddingLeft: theme.spacing(4),\n },\n heading: {\n flex: 1,\n justifyContent: 'flex-start',\n marginLeft: theme.spacing(3),\n },\n otherAnswerStacks: {\n marginLeft: theme.spacing(2),\n width: '50%',\n },\n}));\n","import React from 'react';\nimport {Form} from 'forms';\nimport {FormNameEnum} from 'filters-selections';\n\nexport const ItemAnswerOpenEnded = () => {\n return <Form.TextArea name={FormNameEnum.openEndedQuestion} placeholder={''} disabled />;\n};\n","import React, {FC} from 'react';\nimport {FormNameEnum} from 'filters-selections';\nimport {Button, Icon, Row} from 'components-lib';\nimport {createEmptyAnswer} from '../../utils';\nimport {Form} from 'forms';\nimport {ArrayHelpers, useFormikContext} from 'formik';\nimport {IModalCreateAnswerStackFormValues} from '../ModalCreateAnswerStack/config/modalCreateAnswerStackValidationSchema';\nimport {makeStyles} from '@material-ui/core/styles';\nimport {IAnswer, IChoice} from 'models/library/common/IAnswer';\nimport {INITIAL_ANSWER_POSITION, ONE_ANSWER_POSITION, SINGLE_ANSWER} from 'utils/items';\ninterface IItemAnswersCustomProps {\n choices: IAnswer[];\n withEdit?: boolean;\n withRightButton?: boolean;\n canEditAnswerInAnswerStack?: boolean;\n disableAdd?: boolean;\n disableDelete?: boolean;\n}\n\nexport const ItemAnswersCustom: FC<IItemAnswersCustomProps> = ({\n choices,\n withEdit = false,\n withRightButton,\n canEditAnswerInAnswerStack = false,\n disableAdd = false,\n disableDelete = false,\n}) => {\n const classes = useStyles({withRightButton});\n const {errors} = useFormikContext<IModalCreateAnswerStackFormValues>();\n const answerStackErrors = errors[FormNameEnum.customValidation];\n const answerPosition = withEdit ? choices?.length + ONE_ANSWER_POSITION : INITIAL_ANSWER_POSITION;\n const hasSingleAsnwer = choices.length === SINGLE_ANSWER;\n const hasEditPermissions = withEdit && !canEditAnswerInAnswerStack;\n\n return (\n <Form.Array name={FormNameEnum.choices}>\n {(arrayHelpers: ArrayHelpers) => (\n <>\n {choices.map((choice: IChoice, choiceIdx: number) => {\n const choiceNameBase: any = `${FormNameEnum.choices}[${choiceIdx}]`;\n\n return (\n <Row key={`choice-${choiceIdx}`} justify=\"flex-start\" classes={{root: classes.answerRow}}>\n <Form.Checkbox name={`${choiceNameBase}.isCorrect`} checked={choice?.isCorrect} />\n\n <div className={classes.choiceInput}>\n <Form.Input name={`${choiceNameBase}.text`} value={choice.text} disabled={hasEditPermissions} />\n </div>\n <Button.Icon\n clickHandler={() => arrayHelpers.remove(choiceIdx)}\n disabled={hasSingleAsnwer || hasEditPermissions || disableDelete}\n >\n <Icon.DeleteIcon />\n </Button.Icon>\n </Row>\n );\n })}\n <div className={classes.addAnswerButton}>\n <Button.Secondary\n size=\"small\"\n clickHandler={() => arrayHelpers.insert(choices.length, createEmptyAnswer(false, answerPosition))}\n disabled={!!answerStackErrors || disableAdd || hasEditPermissions}\n >\n Add Answer\n </Button.Secondary>\n </div>\n </>\n )}\n </Form.Array>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n choiceInput: {\n display: 'flex',\n flexGrow: 2,\n marginRight: theme.spacing(1),\n },\n answerRow: {\n marginBottom: theme.spacing(2),\n },\n addAnswerButton: ({withRightButton}: {withRightButton: boolean}) => {\n let styles: any = {width: '100%', marginTop: theme.spacing(2)};\n\n if (withRightButton) {\n styles = {\n ...styles,\n paddingRight: theme.spacing(3) + theme.spacing(1),\n display: 'flex',\n justifyContent: 'flex-end',\n };\n }\n\n return {\n ...styles,\n };\n },\n}));\n","import React, {Fragment, useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\n\nimport {FormNameEnum, SelectionEnum, SelectionListItems} from 'filters-selections';\nimport {ItemAnswerRangeInput} from '..';\nimport {RangeButtons} from 'components-lib';\n\nexport const ItemAnswersRange = () => {\n const rateListItems = useMemo(() => {\n const selectionList = [SelectionEnum.RangeFrom, SelectionEnum.RangeTo];\n\n return <SelectionListItems list={selectionList} withFullWidth />;\n }, []);\n\n const positiveScoreItems = useMemo(() => {\n return (\n <Fragment>\n <RangeButtons />\n </Fragment>\n );\n }, []);\n\n const rateDescriptionItems = useMemo(() => {\n return (\n <Fragment>\n <ItemAnswerRangeInput name={FormNameEnum.minimumRateDescription} label={'Minimum Rate Description'} />\n <ItemAnswerRangeInput name={FormNameEnum.maximumRateDescription} label={'Maximum Rate Description'} />\n </Fragment>\n );\n }, []);\n\n return (\n <Fragment>\n <ContainerList>{rateListItems}</ContainerList>\n <ContainerList>{positiveScoreItems}</ContainerList>\n <ContainerList>{rateDescriptionItems}</ContainerList>\n </Fragment>\n );\n};\n\nconst ContainerList = ({children}) => {\n const classes = useStyles();\n return <div className={classes.container}>{children}</div>;\n};\n\nconst useStyles = makeStyles(() => ({\n container: {\n width: '100%',\n display: 'flex',\n },\n}));\n","import React from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Label, Wrapper} from 'components-lib';\nimport {Form} from 'forms';\n\nexport const ItemAnswerRangeInput = ({label, name}) => {\n const classes = useStyles();\n return (\n <Wrapper className={classes.descriptionItem}>\n {label && <Label label={label} />}\n <Form.Input name={name} />\n </Wrapper>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n width: '100%',\n display: 'flex',\n },\n descriptionItem: (withWidth: boolean) => {\n let styles: any = {marginTop: theme.spacing(3), marginRight: theme.spacing(3), marginBottom: theme.spacing(3)};\n\n if (withWidth) {\n styles = {...styles, width: '100%'};\n }\n return styles;\n },\n}));\n","import React, {FC, Fragment, useMemo} from 'react';\nimport {useFormikContext} from 'formik';\nimport {makeStyles} from '@material-ui/core';\nimport {ItemAnswerRangeInput} from '..';\nimport {RatingToggleGroup} from 'admin/library/components';\nimport {FormNameEnum, SelectionEnum, SelectionListItems} from 'filters-selections';\nimport {useRangeAnswerStack} from '../../hooks';\nimport {Wrapper} from 'components-lib';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface IEditRangeAnswerStackProps {}\n\nexport const EditRangeAnswerStack: FC<IEditRangeAnswerStackProps> = () => {\n const classes = useStyles();\n const {list} = useRangeAnswerStack();\n const {\n values: {choices},\n } = useFormikContext<any>();\n\n const PositiveScore = useMemo(\n () => () => {\n return (\n <RatingToggleGroup\n name={FormNameEnum.positiveScores}\n withLabel\n disabled={false}\n list={list}\n answers={choices}\n withForm\n />\n );\n },\n [list, choices]\n );\n\n const rateListItems = useMemo(() => {\n const selectionList = [SelectionEnum.RangeFrom, SelectionEnum.RangeTo];\n\n return <SelectionListItems list={selectionList} withFullWidth />;\n }, []);\n\n const rateDescriptionItems = useMemo(() => {\n return (\n <Fragment>\n <ItemAnswerRangeInput name={FormNameEnum.minimumRateDescription} label={'Minimum Rate Description'} />\n <ItemAnswerRangeInput name={FormNameEnum.maximumRateDescription} label={'Maximum Rate Description'} />\n </Fragment>\n );\n }, []);\n\n const Rating = useMemo(\n () => () => {\n return (\n <Wrapper className={classes.rating}>\n {rateListItems}\n {rateDescriptionItems}\n </Wrapper>\n );\n },\n [classes, rateDescriptionItems, rateListItems]\n );\n\n return (\n <Wrapper className={classes.container}>\n <Rating />\n <PositiveScore />\n </Wrapper>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: `${theme.spacing(0)}px ${theme.spacing(2)}px`,\n },\n rating: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n}));\n","import React, {FC} from 'react';\nimport {Form} from 'forms';\nimport {FormNameEnum} from 'filters-selections';\ninterface ICreateQuestionEditorProps {\n readOnly: boolean;\n withEdit: boolean;\n toolbarHidden: boolean;\n}\n\nexport const CreateQuestionEditor: FC<ICreateQuestionEditorProps> = ({readOnly, withEdit, toolbarHidden}) => {\n return (\n <Form.RichTextEditor\n readOnly={readOnly}\n withEdit={withEdit}\n name={FormNameEnum.questionTextHtml}\n placeholder=\"Add question text here...\"\n toolbarHidden={toolbarHidden}\n />\n );\n};\n","import React from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Form} from 'forms';\nimport {Row} from 'components-lib';\nimport {FormNameEnum} from 'filters-selections';\nimport {IAnswer} from 'models';\nimport {useFormikContext} from 'formik';\n\nexport const EditAnswerStack = () => {\n const classes = useStyles();\n const {values} = useFormikContext<any>();\n\n return (\n <Form.Array name={FormNameEnum.choices}>\n {() => {\n return values?.choices?.map((choice: IAnswer, choiceIdx: number) => {\n const choiceNameBase = `${FormNameEnum.choices}[${choiceIdx}]`;\n return (\n <Row\n key={`${choice.answerId}-${choiceIdx}`}\n classes={{\n root: classes.answer,\n }}\n justify=\"flex-start\"\n >\n <Form.Checkbox name={`${choiceNameBase}.isCorrect`} label={choice.text} checked={choice?.isCorrect} />\n </Row>\n );\n });\n }}\n </Form.Array>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n answer: {\n paddingLeft: theme.spacing(4),\n },\n}));\n","import React, {FC, Fragment} from 'react';\nimport {FormNameEnum} from 'filters-selections';\nimport {Form} from 'forms';\n\ninterface IEditQuestionEditorProps {\n hasQuestionText: boolean;\n readOnly: boolean;\n withEdit: boolean;\n toolbarHidden: boolean;\n}\n\nexport const EditQuestionEditor: FC<IEditQuestionEditorProps> = ({\n hasQuestionText,\n readOnly,\n withEdit,\n toolbarHidden,\n}) => {\n return (\n <Fragment>\n {!hasQuestionText ? (\n <Fragment>Loading...</Fragment>\n ) : (\n <Form.RichTextEditor\n readOnly={readOnly}\n withEdit={withEdit}\n name={FormNameEnum.questionTextHtml}\n placeholder=\"Add question text here...\"\n toolbarHidden={toolbarHidden}\n />\n )}\n </Fragment>\n );\n};\n","import React, {FC} from 'react';\nimport {ItemAnswersCustom} from '../ItemAnswersCustom/ItemAnswersCustom';\nimport {IAnswer} from 'models/library/common/IAnswer';\nimport {useFormikContext} from 'formik';\nimport {IModalCreateAnswerStackFormValues} from '../ModalCreateAnswerStack/config/modalCreateAnswerStackValidationSchema';\nimport {useMapChoicesBasedOnDomainKnowledge} from '../../hooks';\ninterface IItemAnswersMultiSelectProps {\n choices: IAnswer[];\n}\n\nexport const ItemAnswersMultiSelect: FC<IItemAnswersMultiSelectProps> = ({choices}) => {\n const {values, setFieldValue} = useFormikContext<IModalCreateAnswerStackFormValues>();\n const {isDomainKnowledge} = useMapChoicesBasedOnDomainKnowledge(values, setFieldValue);\n\n return <ItemAnswersCustom choices={choices} disableAdd={isDomainKnowledge} disableDelete={isDomainKnowledge} />;\n};\n","import React, {Fragment, useMemo} from 'react';\nimport {Box} from '@material-ui/core';\nimport {FormErrorBox} from 'admin/components';\nimport {Column, Row, Loading} from 'components-lib';\nimport {IItemDetails} from 'models';\nimport {ItemQuestion, ItemQuestionEdit} from '../../../../components';\nimport {ActiveModeEnum} from 'admin/library/items/enums';\nimport {useItems} from 'admin/library/items/hooks';\n\ninterface IItemBuilderCreateContentProps {\n item: IItemDetails;\n questionId: number;\n loadingPageSection: boolean;\n pageLoading: boolean;\n}\n\nexport function ItemBuilderCreateContent({loadingPageSection}: IItemBuilderCreateContentProps) {\n const {saving} = useItems();\n const loading = saving || loadingPageSection;\n\n const errorBox = useMemo(\n () => (\n <Fragment>\n {!loadingPageSection && (\n <Box\n mt={5}\n mr={3}\n css={{\n paddingTop: '4px',\n }}\n >\n <FormErrorBox />\n </Box>\n )}\n </Fragment>\n ),\n [loadingPageSection]\n );\n\n const content = useMemo(\n () => (\n <Row align=\"flex-start\" justify=\"space-between\">\n <Column sm={8} md={8} lg={8} xl={8}>\n <ItemQuestion mode={ActiveModeEnum.create}>\n <ItemQuestionEdit />\n </ItemQuestion>\n </Column>\n <Column sm={4} md={4} lg={4} xl={4}>\n {errorBox}\n </Column>\n </Row>\n ),\n [errorBox]\n );\n\n return <Column>{loading ? <Loading /> : content}</Column>;\n}\n","import React, {useEffect, useMemo} from 'react';\nimport {useItemStateActions, usePageLoading} from 'admin/library/items/hooks';\nimport {ItemBaseView} from 'admin/library/items/views';\nimport {useQueryParams} from 'hooks';\nimport {ActiveModeEnum} from 'admin/library/items/enums';\nimport {IItemDetails} from 'models';\nimport {SidebarBuilderCreateItem} from '../../../../components';\nimport {ItemBuilderCreateContent} from '../ItemBuilderCreateContent/ItemBuilderCreateContent';\n\nexport function ItemBuilderCreate() {\n const queryParams = useQueryParams();\n const questionId = Number(queryParams.questionId);\n const {loadingPageSection, pageLoading} = usePageLoading();\n const {fetchItem} = useItemStateActions();\n\n useEffect(() => {\n if (questionId && questionId > 0) {\n fetchItem(questionId, false);\n }\n }, [fetchItem, questionId]);\n\n const content = useMemo(\n () => (item: IItemDetails) => (\n <ItemBuilderCreateContent\n item={item}\n loadingPageSection={loadingPageSection}\n questionId={questionId}\n pageLoading={pageLoading}\n />\n ),\n [loadingPageSection, pageLoading, questionId]\n );\n\n return (\n <ItemBaseView Sidebar={SidebarBuilderCreateItem} editMode={ActiveModeEnum.create}>\n {content}\n </ItemBaseView>\n );\n}\n","import * as Yup from 'yup';\nimport {QuestionAnswersTypeEnum} from 'enums';\nimport {FormNameEnum} from 'filters-selections';\nimport {errorMessages} from 'utils';\n\nexport interface IItemCreateFormValues {\n [FormNameEnum.questionId]: number;\n [FormNameEnum.questionTextHtml]: string;\n [FormNameEnum.text]: string;\n [FormNameEnum.type]: QuestionAnswersTypeEnum;\n}\n\nexport const itemCreateFormValidationSchema = Yup.object().shape({\n [FormNameEnum.type]: Yup.number().required(errorMessages.requiredWithFieldName('a Question option type')),\n [FormNameEnum.text]: Yup.string().nullable().required('Question text cannot be empty!'),\n [FormNameEnum.questionTextHtml]: Yup.string(),\n});\n","import React, {FC, useMemo} from 'react';\nimport {FormikHelpers} from 'formik/dist/types';\nimport {useItem, useItemStateActions} from 'admin/library/items/hooks';\nimport {updateItemThunk} from 'admin/library/items/store';\nimport {FormNameEnum} from 'filters-selections';\nimport {Form} from 'forms';\nimport {useAppDispatch, useNavigate, useQueryParams} from 'hooks';\nimport {ICreateQuestionPayload, IWithChildren} from 'models';\nimport {IItemCreateFormValues, itemCreateFormValidationSchema} from './config';\nimport {mapItemFormDataToUpdatePayload} from 'admin/library/items/builder/utils';\n\ntype IItemBuilderCreateFormProps = IWithChildren;\n\nexport const ItemBuilderCreateForm: FC<IItemBuilderCreateFormProps> = ({children}) => {\n const dispatch = useAppDispatch();\n const {createQuestion} = useItemStateActions();\n const {push} = useNavigate();\n const {item} = useItem();\n const {questionId} = useQueryParams();\n\n const initialValues: IItemCreateFormValues = useMemo(\n () => ({\n [FormNameEnum.questionId]: item.questionId ?? null,\n [FormNameEnum.text]: item.text ?? '',\n [FormNameEnum.questionTextHtml]: item.questionTextHtml ?? '',\n [FormNameEnum.type]: item.questionOptionsTypeId ?? null,\n }),\n [item]\n );\n\n const submitHandler = async (data: IItemCreateFormValues, {resetForm}: FormikHelpers<IItemCreateFormValues>) => {\n if (!questionId) {\n const response = (await createQuestion({\n text: data.text,\n questionTextHtml: data.questionTextHtml,\n questionOptionsType: data.type as number,\n })) as ICreateQuestionPayload;\n push(`?questionId=${response.questionId}`);\n } else {\n const payloadData = mapItemFormDataToUpdatePayload({...data, questionId: Number(questionId)});\n dispatch(updateItemThunk(payloadData));\n }\n };\n\n return (\n <Form.Form<IItemCreateFormValues>\n initialValues={initialValues}\n validationSchema={itemCreateFormValidationSchema}\n submitHandler={submitHandler}\n >\n {children}\n </Form.Form>\n );\n};\n","import * as Yup from 'yup';\n\nimport {FormNameEnum} from 'filters-selections';\nimport {IChoice} from 'models/library/common/IAnswer';\nimport {errorMessages} from 'utils';\nimport {checkCorrectAnswer, getTypeCheckbox, getTypeDropdown, getTypeRadioGroup} from '../../utils';\nexport interface IItemEditFormValues {\n [FormNameEnum.id]: number;\n [FormNameEnum.questionAnswerStackId]: number;\n [FormNameEnum.isDeleted]: boolean;\n [FormNameEnum.questionTextHtml]: string;\n [FormNameEnum.pillars]: number[];\n [FormNameEnum.evaluationTypes]: number[];\n [FormNameEnum.domain]: number;\n [FormNameEnum.programs]: number[] | number | null;\n [FormNameEnum.competencies]: number[];\n [FormNameEnum.concepts]: number[];\n [FormNameEnum.administration]: number;\n [FormNameEnum.schoolLevels]: number[];\n [FormNameEnum.category]: string;\n [FormNameEnum.choices]: any[];\n [FormNameEnum.rangeFrom]: number;\n [FormNameEnum.rangeTo]: number;\n [FormNameEnum.positiveScores]: number[];\n [FormNameEnum.minimumRateDescription]: string;\n [FormNameEnum.maximumRateDescription]: string;\n [FormNameEnum.questionTypeAnswerStack]: number;\n}\n\nexport const itemEditFormValidationSchema = Yup.object().shape({\n [FormNameEnum.questionTextHtml]: Yup.string().trim().required(errorMessages.questionTextRequired),\n [FormNameEnum.pillars]: Yup.array().of(Yup.number()).required(errorMessages.requiredWithFieldName('a Pillar')),\n [FormNameEnum.evaluationTypes]: Yup.array()\n .of(Yup.number())\n .required(errorMessages.requiredWithFieldName('an Evaluation Type')),\n [FormNameEnum.domain]: Yup.number().nullable().required(errorMessages.requiredWithFieldName('a Domain')),\n [FormNameEnum.competencies]: Yup.array()\n .of(Yup.number())\n .when(FormNameEnum.domain, {\n is: 10, // Domain Knowledge id --> TODO better way to handle validation - rules on the backend\n then: Yup.array().of(Yup.number()).required(errorMessages.requiredWithFieldName('a Competency')),\n }),\n [FormNameEnum.concepts]: Yup.array()\n .of(Yup.number())\n .when(FormNameEnum.domain, {\n is: 10, // Domain Knowledge id --> TODO better way to handle validation - rules on the backend\n then: Yup.array().of(Yup.number()).required(errorMessages.requiredWithFieldName('a KSA')),\n }),\n [FormNameEnum.administration]: Yup.number()\n .nullable()\n .required(errorMessages.requiredWithFieldName('an Administration')),\n [FormNameEnum.schoolLevels]: Yup.array()\n .of(Yup.number())\n .required(errorMessages.requiredWithFieldName('a School Level')),\n [FormNameEnum.category]: Yup.string().ensure(),\n [FormNameEnum.choices]: Yup.array()\n .of(\n Yup.object().shape({\n id: Yup.mixed(),\n text: Yup.string(),\n isCorrect: Yup.boolean(),\n position: Yup.number(),\n })\n )\n .test('has-text', 'You should add text to all answers!', function () {\n const {choices} = this.parent;\n const hasText = choices?.every((choice: IChoice) => !!choice.text);\n return hasText;\n })\n .when(FormNameEnum.domain, {\n is: 10, // Domain Knowledge id --> TODO better way to handle validation - rules on the backend\n then: Yup.array()\n .of(\n Yup.object().shape({\n id: Yup.mixed(),\n text: Yup.string(),\n isCorrect: Yup.boolean(),\n position: Yup.number(),\n })\n )\n .test('is-dropdown-with-positive', 'Please add at least one positive answer!', function () {\n const choices = this.parent[FormNameEnum.choices] as IChoice[];\n const questionTypeAnswerStack = this.parent[FormNameEnum.questionTypeAnswerStack];\n const isTypeDropdown = getTypeDropdown(questionTypeAnswerStack);\n\n if (!!choices && choices?.length && isTypeDropdown) {\n return checkCorrectAnswer(choices);\n }\n\n return true;\n }),\n })\n .test('is-dropdown-with-positive', 'Please add at least one positive answer!', function () {\n const choices = this.parent[FormNameEnum.choices] as IChoice[];\n const questionTypeAnswerStack = this.parent[FormNameEnum.questionTypeAnswerStack];\n const isTypeRadioGroup = getTypeRadioGroup(questionTypeAnswerStack);\n const isTypeCheckbox = getTypeCheckbox(questionTypeAnswerStack);\n\n if (!!choices && choices?.length && (isTypeRadioGroup || isTypeCheckbox)) {\n return checkCorrectAnswer(choices);\n }\n return true;\n }),\n});\n","import React, {useCallback, useEffect, useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {FormErrorBox} from 'admin/components';\nimport {getFormValue, idProp} from 'admin/library/utils';\nimport {Column, Loading, Row, Wrapper} from 'components-lib';\nimport {FormNameEnum} from 'filters-selections/enums';\nimport {Form} from 'forms';\nimport {ActiveModeEnum} from 'hooks';\nimport {useItem, useItemIdParam, useItemStateActions} from '../../../hooks';\nimport {ItemBaseView} from '../../../views';\nimport {ItemEditAnswerStack, ItemQuestion, ItemQuestionName, SidebarItem} from '../../components';\nimport {getAnswerStackData} from '../../utils';\nimport {IItemEditFormValues, itemEditFormValidationSchema} from './itemBuilderEditForm';\nimport {isDomainKnowledge} from 'utils';\n\nexport function ItemBuilderEditAnswerStackView() {\n let answerStack = null;\n const classes = useStyles();\n const {itemId, answerStackId} = useItemIdParam();\n const {updateAnswerStack} = useItemStateActions();\n const {item, fetchItem, pageLoading, saving} = useItem();\n\n if (item) {\n answerStack = getAnswerStackData(item, answerStackId);\n }\n\n useEffect(() => {\n if (item?.id !== itemId) {\n fetchItem(itemId);\n }\n }, [fetchItem, item, itemId]);\n\n const initialValues: IItemEditFormValues = useMemo(() => {\n const {id, questionTextHtml, text, questionOptionsTypeId} = item;\n const isDomainKnowledgeSelected = isDomainKnowledge(answerStack?.metaData?.domain);\n return {\n [FormNameEnum.id]: id,\n [FormNameEnum.questionAnswerStackId]: answerStack?.questionAnswerStackId,\n [FormNameEnum.isDeleted]: answerStack?.isDeleted,\n [FormNameEnum.questionType]: questionOptionsTypeId,\n [FormNameEnum.questionTypeAnswerStack]: answerStack?.questionType,\n [FormNameEnum.text]: text,\n [FormNameEnum.questionTextHtml]: questionTextHtml,\n [FormNameEnum.pillars]: getFormValue(answerStack?.metaData?.pillars, idProp),\n [FormNameEnum.evaluationTypes]: getFormValue(answerStack?.metaData?.evaluationTypes, idProp),\n [FormNameEnum.domain]: answerStack?.metaData?.domain?.id,\n [FormNameEnum.programs]: isDomainKnowledgeSelected\n ? answerStack?.metaData.programs[0]?.id\n : getFormValue(answerStack?.metaData?.programs, idProp),\n [FormNameEnum.competencies]: getFormValue(answerStack?.metaData?.competencies, idProp),\n [FormNameEnum.concepts]: getFormValue(answerStack?.metaData?.concepts, idProp),\n [FormNameEnum.administration]: answerStack?.metaData?.administration?.id,\n [FormNameEnum.schoolLevels]: getFormValue(answerStack?.metaData?.schoolLevels, idProp),\n [FormNameEnum.learningObjective]: answerStack?.metaData?.learningObjective ?? '',\n [FormNameEnum.category]: answerStack?.metaData?.category ?? '',\n [FormNameEnum.choices]: answerStack?.choices,\n [FormNameEnum.rangeFrom]: answerStack?.rangeFrom?.toString(),\n [FormNameEnum.rangeTo]: answerStack?.rangeTo?.toString(),\n [FormNameEnum.positiveScores]: answerStack?.positiveScores,\n [FormNameEnum.minimumRateDescription]: answerStack?.minimumRateDescription,\n [FormNameEnum.maximumRateDescription]: answerStack?.maximumRateDescription,\n };\n }, [item, answerStack]);\n\n const submitHandler = useCallback(\n async (data) => {\n updateAnswerStack(data).then(() => fetchItem(itemId));\n },\n [itemId, fetchItem, updateAnswerStack]\n );\n\n const content = useMemo(\n () => () => {\n return (\n <Column>\n {pageLoading || saving ? (\n <Loading fullHeight />\n ) : (\n <Row align=\"flex-start\">\n <Column sm={9} md={9} lg={9} xl={9}>\n <Wrapper className={classes.questionContainer}>\n <ItemQuestion mode={ActiveModeEnum.view}>\n <ItemQuestionName />\n </ItemQuestion>\n </Wrapper>\n {answerStack && <ItemEditAnswerStack answerStack={answerStack} />}\n </Column>\n <Column sm={3} md={3} lg={3} xl={3}>\n <Wrapper className={classes.errorBox}>\n <FormErrorBox />\n </Wrapper>\n </Column>\n </Row>\n )}\n </Column>\n );\n },\n [pageLoading, saving, answerStack, classes.errorBox, classes.questionContainer]\n );\n\n return (\n <Form.Form<IItemEditFormValues>\n initialValues={initialValues}\n validationSchema={itemEditFormValidationSchema}\n submitHandler={submitHandler}\n validateOnMount={true}\n >\n <ItemBaseView Sidebar={SidebarItem} editMode={ActiveModeEnum.edit}>\n {content}\n </ItemBaseView>\n </Form.Form>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n errorBox: {\n marginRight: theme.spacing(3),\n marginTop: theme.spacing(2),\n },\n questionContainer: {\n marginRight: theme.spacing(3),\n },\n}));\n","import {pages, paths} from 'paths';\nimport {withRole} from 'permissions';\nimport React from 'react';\nimport {Redirect, Route, Switch} from 'react-router-dom';\nimport {AdminRolesItems, AdminWithStaffRolesItems} from '../enums';\nimport {ItemBuilderCreateView, ItemBuilderEditAnswerStackView} from './views';\n\nconst ItemBuilderCreateViewEnhanced = withRole(\n AdminWithStaffRolesItems,\n `${paths.adminPortal.root}${paths.noPermission}`\n)(ItemBuilderCreateView);\n\nconst ItemBuilderEditAnswerStackViewEnhanced = withRole(\n AdminRolesItems,\n `${paths.adminPortal.root}${paths.noPermission}`\n)(ItemBuilderEditAnswerStackView);\n\nexport function ItemBuilderView() {\n return (\n <Switch>\n <Route\n exact\n path={pages.adminPortal.items.build}\n render={() => <Redirect to={pages.adminPortal.items.create} />}\n />\n <Route path={pages.adminPortal.items.create} component={ItemBuilderCreateViewEnhanced} />\n <Route path={pages.adminPortal.items.editAnswerStack} component={ItemBuilderEditAnswerStackViewEnhanced} />\n </Switch>\n );\n}\n","import React from 'react';\nimport {ItemBuilderCreateForm, ItemBuilderCreate} from './components';\n\nexport const ItemBuilderCreateView = () => {\n return (\n <ItemBuilderCreateForm>\n <ItemBuilderCreate />\n </ItemBuilderCreateForm>\n );\n};\n","import {SidebarAuthor, SidebarLink, SidebarTagWithValue, SidebarTitle} from 'admin/components';\nimport {Divider, Sidebar} from 'components-lib';\nimport {IEntityBase, IItemDetails} from 'models';\nimport {pages} from 'paths';\nimport React from 'react';\n\ninterface ISidebarItemDetails {\n item: IItemDetails;\n loading: boolean;\n}\n\nexport function SidebarItemDetails({item, loading}: ISidebarItemDetails) {\n if (!item.metaData || loading) return null;\n\n const {createdBy, createdOn} = item;\n const {\n administration,\n competencies,\n concepts,\n category,\n domain,\n evaluationTypes,\n instruments,\n pillars,\n programs,\n schoolLevels,\n } = item.metaData;\n\n return (\n <Sidebar.Base>\n <SidebarTitle text=\"Tags\" />\n <SidebarTagWithValue tag=\"Pillar\" text={mapValues(pillars)} />\n <SidebarTagWithValue tag=\"Evaluation Type\" text={mapValues(evaluationTypes)} />\n <SidebarTagWithValue tag=\"Domain\" text={domain?.name} />\n <SidebarTagWithValue tag=\"Program\" text={mapValues(programs)} />\n <SidebarTagWithValue tag=\"Competency\" text={mapValues(competencies)} />\n <SidebarTagWithValue tag=\"KSAs\" text={mapValues(concepts)} />\n <SidebarTagWithValue tag=\"Administration\" text={administration?.name} />\n <SidebarTagWithValue tag=\"School Level\" text={mapValues(schoolLevels)} />\n <SidebarTagWithValue tag=\"Category\" text={category} />\n <Divider.Horizontal />\n <SidebarTitle text=\"Details\" />\n <SidebarAuthor author={createdBy} date={createdOn} />\n <Divider.Horizontal />\n {!!instruments && (\n <>\n <SidebarTitle text={`Used in ${instruments.length} instrument${instruments.length > 1 ? 's' : ''}`} />\n {instruments.map((instrument) => (\n <SidebarLink\n key={instrument.id}\n to={`${`${pages.adminPortal.instruments.all}/${instrument.id}`}`}\n text={instrument.name}\n />\n ))}\n </>\n )}\n </Sidebar.Base>\n );\n}\n\nfunction mapValues(values: IEntityBase[] | IEntityBase): string {\n if (Array.isArray(values)) {\n return values.map((value) => value.name).join(', ') ?? '';\n }\n\n return values?.name ?? '';\n}\n","import React, {useEffect, useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {EntityHeaderName, EntityItems} from 'admin/library/components';\nimport {Button, Column, Row, Text} from 'components-lib';\nimport {IAnswerStack, IItemDetails} from 'models';\nimport {useItem, useItemIdParam, usePublish} from '../hooks';\nimport {ItemBaseView} from '../views';\nimport {SidebarItemDetails} from './components';\nimport {ActiveModeEnum} from '../enums';\n\nexport function ItemDetailsView() {\n const {itemId} = useItemIdParam();\n const classes = useStyles();\n const {publishingStack, publishItemAnswerStack, unPublishItemAnswerStack} = usePublish();\n const {item, fetchItem} = useItem();\n\n useEffect(() => {\n if (item?.id !== itemId) {\n fetchItem(itemId);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [fetchItem, item.id, itemId]);\n\n const actions = useMemo(\n () => (isApproved: boolean, canBeUnpublished: boolean, id: number) => {\n const publishClickHandler = () => {\n publishItemAnswerStack(id, item.questionId);\n };\n const unPublishClickHandler = () => {\n unPublishItemAnswerStack(id, item.questionId);\n };\n\n return (\n <div className={classes.actions}>\n {!isApproved ? (\n <Button.Primary\n size=\"small\"\n clickHandler={!publishingStack ? publishClickHandler : null}\n disabled={publishingStack}\n >\n Publish\n </Button.Primary>\n ) : canBeUnpublished ? (\n <Button.Secondary\n size=\"small\"\n clickHandler={!publishingStack ? unPublishClickHandler : null}\n disabled={publishingStack}\n >\n Un-publish\n </Button.Secondary>\n ) : (\n <Text.Caption>Published</Text.Caption>\n )}\n </div>\n );\n },\n [classes.actions, item.questionId, publishItemAnswerStack, publishingStack, unPublishItemAnswerStack]\n );\n\n return (\n <ItemBaseView Sidebar={SidebarItemDetails} editMode={ActiveModeEnum.view}>\n {(item: IItemDetails) => {\n const stacks = item?.answerStacks.filter((stack) => stack.questionId > -1 && stack.isSelected);\n\n return (\n !!item && (\n <Column>\n <EntityHeaderName name={item.text} />\n <Row justify=\"flex-start\">\n {item?.answerStacks && !!item?.answerStacks.length && (\n <EntityItems<IAnswerStack>\n items={stacks}\n itemPrefixText=\"Answer Stack\"\n withTitle={false}\n actions={actions}\n />\n )}\n </Row>\n </Column>\n )\n );\n }}\n </ItemBaseView>\n );\n}\n\nconst useStyles = makeStyles({\n actions: {\n marginLeft: 'auto',\n },\n});\n","import {pages} from 'paths';\nimport React from 'react';\nimport {Route, Switch} from 'react-router-dom';\nimport {ItemsAllView} from './all';\nimport {ItemBuilderView} from './builder';\nimport {ItemDetailsView} from './details';\n\nexport function Items() {\n return (\n <Switch>\n <Route exact path={pages.adminPortal.items.root} component={ItemsAllView} />\n <Route path={pages.adminPortal.items.build} component={ItemBuilderView} />\n <Route path={pages.adminPortal.items.details} component={ItemDetailsView} />\n </Switch>\n );\n}\n","import {useCallback, useEffect} from 'react';\nimport {useSelector} from 'react-redux';\nimport {useFormikContext} from 'formik';\nimport {useAppDispatch} from 'hooks';\nimport {FormNameEnum} from 'enums/form';\nimport {orderBy} from 'utils/functions';\nimport {googleSitesActions as actions, googleSitesListSortOrderSelector} from '../../store';\nimport {IGoogleSiteListSortOrder} from 'models/resources/google-sites';\nimport {IGoogleSitesFormValues} from '../utils';\nimport {useGoogleSitesAll} from '../..';\n\nexport const useGoogleSitesSortOrder = () => {\n const dispatch = useAppDispatch();\n const {googleSitesList} = useGoogleSitesAll();\n const {\n values: {googleSitesFilteredList, searchTerm},\n setFieldValue,\n } = useFormikContext<IGoogleSitesFormValues>();\n const sortOrder = useSelector(googleSitesListSortOrderSelector);\n\n const sortGoogleSitesBy: (sortOrder: IGoogleSiteListSortOrder) => void = useCallback(\n (sortOrder: IGoogleSiteListSortOrder) => {\n if (!googleSitesFilteredList.length) {\n return setFieldValue(FormNameEnum.googleSitesFilteredList, googleSitesList);\n }\n\n const sortedList = orderBy(googleSitesFilteredList, sortOrder.order, sortOrder.sort.toLowerCase());\n return setFieldValue(FormNameEnum.googleSitesFilteredList, sortedList);\n },\n [setFieldValue, googleSitesFilteredList, googleSitesList]\n );\n\n const handleItemClick: (sortOrder: IGoogleSiteListSortOrder) => void = useCallback(\n (sortOrder) => dispatch(actions.setSortOrderGoogleSites(sortOrder)),\n [dispatch]\n );\n\n useEffect(() => {\n sortGoogleSitesBy(sortOrder);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [sortOrder]);\n\n return {sortOrder, handleItemClick, searchTerm, setFieldValue};\n};\n","import * as Yup from 'yup';\nimport {FormNameEnum} from 'enums/form';\nimport {IGoogleFileBaseResponse} from 'models/resources/google-sites';\n\nexport interface IGoogleSitesFormValues {\n [FormNameEnum.searchTerm]: string;\n [FormNameEnum.googleSitesList]: IGoogleFileBaseResponse[];\n [FormNameEnum.googleSitesFilteredList]: IGoogleFileBaseResponse[];\n}\n\nexport const googleSitesFormValidationSchema = Yup.object().shape({\n [FormNameEnum.searchTerm]: Yup.string().nullable(),\n});\n","import {getDatetimeAMPMinUTC} from 'utils/common';\n\nexport const getFormattedGoogleSitesListDate = (date: string) => {\n return getDatetimeAMPMinUTC(date);\n};\n","import {IColumn} from 'models';\n\nexport const getGoogleSitesListColumns = (): IColumn[] => [\n {\n id: 'name',\n label: 'Name',\n align: 'left',\n minWidth: 300,\n },\n {\n id: 'lastModifiedTime',\n label: 'Last Modified Date (UTC)',\n align: 'left',\n },\n {\n id: 'actions',\n label: '',\n align: 'right',\n },\n];\n","import {SortingOrderEnum} from 'enums';\nimport {IGoogleSiteListSortOrder} from 'models/resources/google-sites';\nimport {GoogleSitesOrderingEnum} from '../enums/GoogleSitesListOrdering.enum';\nimport {GoogleSiteListSortNameEnum} from '../enums/GoogleSitesListSortName.enum';\n\nexport const getSortGoogleSiteLiesMenuItemsList = (\n itemClickHandler: () => void,\n handleItemClick: (handleItemSortObj: IGoogleSiteListSortOrder) => void\n) => {\n const onClick = (\n itemClickHandler: () => void,\n handleItemClick: (handleItemSortObj: IGoogleSiteListSortOrder) => void,\n handleItemSortObj: IGoogleSiteListSortOrder\n ) => {\n return () => {\n itemClickHandler();\n handleItemClick(handleItemSortObj);\n };\n };\n\n return [\n {\n name: GoogleSiteListSortNameEnum.NAME_ASC,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: GoogleSitesOrderingEnum.Name,\n sort: SortingOrderEnum.ASC,\n }),\n },\n {\n name: GoogleSiteListSortNameEnum.NAME_DESC,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: GoogleSitesOrderingEnum.Name,\n sort: SortingOrderEnum.DESC,\n }),\n },\n {\n name: GoogleSiteListSortNameEnum.LAST_MODIFIED_DATE_ASC,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: GoogleSitesOrderingEnum.LastModifiedDate,\n sort: SortingOrderEnum.ASC,\n }),\n },\n {\n name: GoogleSiteListSortNameEnum.LAST_MODIFIED_DATE_DESC,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: GoogleSitesOrderingEnum.LastModifiedDate,\n sort: SortingOrderEnum.DESC,\n }),\n },\n ];\n};\n","import {SortingOrderEnum} from 'enums';\nimport {GoogleSitesOrderingEnum} from '../enums/GoogleSitesListOrdering.enum';\n\nexport const googleSiteListOrderingMap = {\n [GoogleSitesOrderingEnum.Name]: {\n [SortingOrderEnum.ASC]: 'Name: A-Z',\n [SortingOrderEnum.DESC]: 'Name: Z-A',\n },\n [GoogleSitesOrderingEnum.LastModifiedDate]: {\n [SortingOrderEnum.ASC]: 'Last Modified Date: Asc',\n [SortingOrderEnum.DESC]: 'Last Modified Date: Desc',\n },\n};\n","import {PaginationNumEnum} from 'enums';\nimport {FormNameEnum} from 'enums/form';\nimport {IGoogleFileBaseResponse, IGoogleSite} from 'models/resources/google-sites';\nimport {useCallback, useEffect} from 'react';\nimport {useGoogleSitesAll} from '.';\nimport {MIN_LENGTH} from '../../utils';\nimport {calculatePaginationResult, filterGoogleSites} from '../utils';\nimport {useGoogleSitesSortOrder} from './useGoogleSitesSortOrder';\n\nexport const useGoogleSitesSearch = () => {\n const {searchTerm, setFieldValue} = useGoogleSitesSortOrder();\n const {googleSitesList, currentPage, setCurrentPage, perPage, setTotalCount} = useGoogleSitesAll();\n\n const hasSearchTerm = searchTerm.trim().length > MIN_LENGTH;\n const cloneList = useCallback((list: IGoogleSite[]) => [...list], []);\n\n const setFieldValues: (filteredList: IGoogleFileBaseResponse[]) => void = useCallback(\n (filteredList) => {\n setTotalCount(filteredList.length);\n const resultList = calculatePaginationResult(filteredList, currentPage, perPage);\n setFieldValue(FormNameEnum.googleSitesFilteredList, resultList);\n },\n [perPage, currentPage, setFieldValue, setTotalCount]\n );\n\n useEffect(() => {\n if (hasSearchTerm) {\n if (currentPage > PaginationNumEnum.ONE) {\n setCurrentPage(PaginationNumEnum.ONE);\n }\n\n const clonedList = cloneList(googleSitesList) as IGoogleSite[];\n const filteredList = filterGoogleSites(clonedList, searchTerm) as IGoogleSite[];\n\n setFieldValues(filteredList);\n } else {\n setFieldValues(googleSitesList);\n }\n }, [\n searchTerm,\n hasSearchTerm,\n googleSitesList,\n setFieldValue,\n currentPage,\n setCurrentPage,\n perPage,\n setTotalCount,\n cloneList,\n setFieldValues,\n ]);\n};\n","export const MIN_LENGTH = 0;\nexport const PAGE_ONE = 1;\n","import {PaginationNumEnum} from 'enums';\nimport {IGoogleSite} from 'models/resources/google-sites';\n\nexport const calculatePaginationResult = (list: IGoogleSite[], currentPage: number, perPage: number): IGoogleSite[] =>\n list.slice((currentPage - PaginationNumEnum.ONE) * perPage, currentPage * perPage);\n","import {isIncludesTerm} from '.';\nimport {IGoogleSite} from '../../../../../models/resources/google-sites';\n\nexport const filterGoogleSites = (clonedList: IGoogleSite[], searchTerm: string) =>\n clonedList.filter((item) => {\n const hasIncludesTermInName = isIncludesTerm(searchTerm, item?.name);\n return hasIncludesTermInName;\n });\n","export const isIncludesTerm = (searchWord: string, fieldVal: string) => {\n if (searchWord && fieldVal) {\n return fieldVal.toLowerCase().includes(searchWord.toLowerCase());\n }\n return false;\n};\n","import {useSelector} from 'react-redux';\nimport {useCallback} from 'react';\nimport {useAppDispatch} from 'hooks';\nimport {googleSitesActions as actions} from '../..';\nimport {IGoogleSiteDetails} from 'models';\nimport {\n fetchGoogleSiteListThunk,\n googleSitesEntitiesBaseCollectionSelector,\n googleSitesEntitiesSelector,\n googleSitesListItemIdsSelector,\n pageLoadingSelector,\n paginationSelector,\n} from '../../store';\n\nexport const useGoogleSitesAll = () => {\n const loading = useSelector(pageLoadingSelector);\n const dispatch = useAppDispatch();\n\n const {currentPage, perPage, totalCount} = useSelector(paginationSelector);\n const googleSitesListItemIds = useSelector(googleSitesListItemIdsSelector);\n const googleSitesEntities = useSelector(googleSitesEntitiesSelector);\n const googleSitesList = useSelector(googleSitesEntitiesBaseCollectionSelector) as IGoogleSiteDetails[];\n\n const fetchGoogleSiteList: () => void = useCallback(() => dispatch(fetchGoogleSiteListThunk()), [dispatch]);\n\n const setCurrentPage: (newPage: number) => void = useCallback(\n (newPage: number) => dispatch(actions.setCurrentPageGoogleSites(newPage)),\n [dispatch]\n );\n\n const setPerPage: (perPage: number) => void = useCallback(\n (perPage: number) => dispatch(actions.setPerPageGoogleSites(perPage)),\n [dispatch]\n );\n\n const setTotalCount: (totalCount: number) => void = useCallback(\n (totalCount: number) => dispatch(actions.setTotalCountGoogleSites(totalCount)),\n [dispatch]\n );\n\n return {\n loading,\n googleSitesList,\n fetchGoogleSiteList,\n googleSitesListItemIds,\n googleSitesEntities,\n setCurrentPage,\n setPerPage,\n setTotalCount,\n currentPage,\n perPage,\n totalCount,\n };\n};\n","import React from 'react';\nimport {FormNameEnum} from 'enums/form';\nimport {Form} from 'forms';\nimport {useGoogleSitesSearch} from 'admin/resources/google-sites';\n\nexport const GoogleSitesAllHeaderSearch = () => {\n useGoogleSitesSearch();\n\n return <Form.Search name={FormNameEnum.searchTerm} disabled={false} withIcon />;\n};\n","import React, {FC, useCallback, useMemo} from 'react';\nimport {Form} from 'forms';\nimport {FormNameEnum} from 'enums/form';\nimport {IWithChildren} from 'models/common';\nimport {IGoogleSiteDetails} from 'models/resources';\nimport {googleSitesFormValidationSchema, IGoogleSitesFormValues} from '../../utils/forms/all';\n\ninterface IGoogleSitesFormProps extends IWithChildren {\n googleSitesList: IGoogleSiteDetails[];\n}\n\nexport const GoogleSitesForm: FC<IGoogleSitesFormProps> = ({children, googleSitesList}) => {\n const submitHandler = useCallback(() => null, []);\n\n const initialValues = useMemo(\n () => ({\n [FormNameEnum.searchTerm]: '',\n [FormNameEnum.googleSitesList]: googleSitesList ?? [],\n [FormNameEnum.googleSitesFilteredList]: googleSitesList ?? [],\n }),\n [googleSitesList]\n );\n\n return (\n <Form.Form<IGoogleSitesFormValues>\n initialValues={initialValues}\n validationSchema={googleSitesFormValidationSchema}\n submitHandler={submitHandler}\n >\n {children}\n </Form.Form>\n );\n};\n","import React, {FC, Fragment} from 'react';\nimport {Column, Row, Table} from 'components-lib';\nimport {GoogleSitesAllHeaderSearch, GoogleSitesSortBy} from '..';\nimport {IColumn} from 'models/library/common';\n\ninterface IGoogleSitesTableProps {\n columns: IColumn[];\n rows: any[];\n}\n\nexport const GoogleSitesTable: FC<IGoogleSitesTableProps> = ({rows, columns}) => {\n return (\n <Fragment>\n <Row justify=\"space-between\">\n <Column sm={4} md={4} lg={3} xl={2}>\n <GoogleSitesAllHeaderSearch />\n </Column>\n <Column sm={4} md={4} lg={3} xl={2}>\n <Row justify=\"flex-end\">\n <Column sm={12} md={12} lg={12} xl={12}>\n <GoogleSitesSortBy />\n </Column>\n </Row>\n </Column>\n </Row>\n <Table rows={rows} columns={columns} hasRows={!!rows.length} />\n </Fragment>\n );\n};\n","import React, {FC} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {SortByDropdown} from 'admin/components';\nimport {\n getSortGoogleSiteLiesMenuItemsList,\n googleSiteListOrderingMap,\n useGoogleSitesSortOrder,\n} from 'admin/resources/google-sites';\nimport {Container} from 'components-lib';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface IGoogleSitesSortByProps {}\n\nexport const GoogleSitesSortBy: FC<IGoogleSitesSortByProps> = () => {\n const classes = useStyles();\n\n const {sortOrder, handleItemClick} = useGoogleSitesSortOrder();\n\n return (\n <Container disableGutters classes={{root: classes.root}}>\n <SortByDropdown\n label=\"Sort By: \"\n handleItemClick={handleItemClick}\n getMenuItemsList={getSortGoogleSiteLiesMenuItemsList}\n sortOrder={sortOrder}\n map={googleSiteListOrderingMap}\n justify=\"flex-end\"\n />\n </Container>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n paddingRight: theme.spacing(3),\n },\n}));\n","import React, {useCallback} from 'react';\nimport {GoogleSitesTable} from '..';\nimport {useFormikContext} from 'formik';\nimport {\n getFormattedGoogleSitesListDate,\n getGoogleSitesListColumns,\n IGoogleSitesFormValues,\n} from 'admin/resources/google-sites';\nimport {Button} from 'components-lib';\nimport {pages} from 'paths';\nimport {useNavigate} from 'hooks';\n\nexport const GoogleSitesContent = () => {\n const {push} = useNavigate();\n const {\n values: {googleSitesFilteredList},\n } = useFormikContext<IGoogleSitesFormValues>();\n\n const columns = getGoogleSitesListColumns();\n\n const handleViewGoogleSitesDetails = useCallback(\n (googleSiteId: string) => push(`${pages.adminPortal.googleSites.detailsLink}/${googleSiteId}`),\n [push]\n );\n\n const rows = googleSitesFilteredList.map((el) => {\n if (!googleSitesFilteredList.length) {\n return [];\n }\n\n return {\n name: el.name,\n lastModifiedTime: getFormattedGoogleSitesListDate(el.lastModifiedTime),\n actions: (\n <Button.Secondary size=\"small\" clickHandler={() => handleViewGoogleSitesDetails(el.id)}>\n View\n </Button.Secondary>\n ),\n };\n });\n\n return <GoogleSitesTable rows={rows} columns={columns} />;\n};\n","import React from 'react';\nimport {PageViewHeader} from 'components-lib';\n\nexport const GoogleSitesHeader = () => {\n return (\n <PageViewHeader\n fullFlexWidth\n withColumnPadding={false}\n heading=\"Google Sites\"\n headingColor=\"textPrimary\"\n withBackButton={false}\n />\n );\n};\n","import React, {useEffect, useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Container, Loading, PaginationLocal} from 'components-lib';\nimport {PageLayoutWithFixedAreas} from 'layout';\nimport {GoogleSitesContent, GoogleSitesForm, GoogleSitesHeader} from './components';\nimport {useGoogleSitesAll} from './hooks';\n\nexport const GoogleSitesAllView = () => {\n const classes = useStyles();\n\n const {\n loading,\n fetchGoogleSiteList,\n currentPage,\n perPage,\n totalCount,\n setCurrentPage,\n setPerPage,\n googleSitesList,\n } = useGoogleSitesAll();\n\n useEffect(() => {\n fetchGoogleSiteList();\n }, [fetchGoogleSiteList]);\n\n const contentFooter = useMemo(() => {\n return (\n <PaginationLocal\n onPageChange={setCurrentPage}\n onPerPageChange={setPerPage}\n totalCount={totalCount}\n perPage={perPage}\n currentPage={currentPage}\n disabled={loading}\n />\n );\n }, [currentPage, perPage, setCurrentPage, setPerPage, totalCount, loading]);\n\n const header = useMemo(() => <GoogleSitesHeader />, []);\n\n const content = useMemo(\n () => (\n <Container disableGutters classes={{root: classes.root}}>\n <GoogleSitesForm googleSitesList={googleSitesList}>\n <PageLayoutWithFixedAreas headerSize=\"small\" header={header} footer={contentFooter}>\n {loading ? <Loading /> : <GoogleSitesContent />}\n </PageLayoutWithFixedAreas>\n </GoogleSitesForm>\n </Container>\n ),\n [loading, contentFooter, header, classes.root, googleSitesList]\n );\n\n return content;\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n background: theme.palette.common.white,\n },\n}));\n","import React from 'react';\nimport {Icon, Navigation, NavigationLink} from 'components-lib';\nimport {paths} from 'paths';\nimport {AdminRoles, USAAndSuperAdminRoles, usePermissions} from 'permissions';\n\nexport function ResourcesNavBar() {\n const {hasPermission} = usePermissions();\n const shouldRenderLearningPaths = hasPermission(AdminRoles);\n const shouldRenderGoogleSites = hasPermission(USAAndSuperAdminRoles);\n\n return (\n <Navigation type=\"secondary\">\n <NavigationLink\n to={`${paths.adminPortal.root}${paths.adminPortal.resources.root}${paths.adminPortal.resources.files}`}\n type=\"secondary\"\n >\n <>\n <Icon.AllInboxIcon />\n Files\n </>\n </NavigationLink>\n {shouldRenderLearningPaths && (\n <NavigationLink\n to={`${paths.adminPortal.root}${paths.adminPortal.resources.root}${paths.adminPortal.resources.learningPaths.root}`}\n type=\"secondary\"\n >\n <>\n <Icon.PermMediaIcon />\n Learning Paths\n </>\n </NavigationLink>\n )}\n {shouldRenderGoogleSites && (\n <NavigationLink\n to={`${paths.adminPortal.root}${paths.adminPortal.resources.root}${paths.adminPortal.resources.googleSites.root}${paths.adminPortal.resources.googleSites.all}`}\n type=\"secondary\"\n >\n <>\n <Icon.WebIcon />\n Google Sites\n </>\n </NavigationLink>\n )}\n </Navigation>\n );\n}\n","import React, {FC} from 'react';\nimport {Container} from '@material-ui/core';\nimport {Form} from 'forms';\nimport {IWithDisabled} from 'models/common';\nimport {ItemWithPlaceholder} from 'filters-selections';\n\ninterface IResourcesFormInputProps extends IWithDisabled {\n name: string;\n label: string;\n autoFocus?: boolean;\n}\n\nexport const ResourcesFormInput: FC<IResourcesFormInputProps> = ({label, name, disabled, autoFocus = false}) => {\n return (\n <Container disableGutters>\n <ItemWithPlaceholder label={label} hasItems>\n <Form.InputWithField name={name} type=\"text\" disabled={disabled} value=\"\" autoFocus={autoFocus} />\n </ItemWithPlaceholder>\n </Container>\n );\n};\n","import React, {FC} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {ItemWithPlaceholder} from 'filters-selections';\nimport {Form} from 'forms';\nimport {IWithDisabled} from 'models/common';\nimport {Container} from 'components-lib';\n\ninterface IResourcesFormTextAreaProps extends IWithDisabled {\n label: string;\n name: string;\n placeholder?: string;\n rows?: number;\n}\n\nexport const ResourcesFormTextArea: FC<IResourcesFormTextAreaProps> = ({\n label,\n name,\n disabled,\n placeholder = '',\n rows = 6,\n}) => {\n const classes = useStyles();\n\n return (\n <Container disableGutters classes={{root: classes.textArea}}>\n <ItemWithPlaceholder label={label} hasItems>\n <Form.TextArea disabled={disabled} name={name} rows={rows} placeholder={placeholder} />\n </ItemWithPlaceholder>\n </Container>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n textArea: {\n paddingTop: theme.spacing(3),\n paddingBottom: theme.spacing(3),\n },\n}));\n","import React, {FC} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Container, Input, Label} from 'components-lib';\nimport {IWithDisabled} from 'models';\n\ninterface IResourceInputProps extends IWithDisabled {\n value: string;\n label: string;\n type?: string;\n}\n\nexport const ResourceInput: FC<IResourceInputProps> = ({label, value, disabled, type = 'text'}) => {\n const classes = useStyles();\n\n return (\n <Container disableGutters classes={{root: classes.input}}>\n <Label label={label} />\n <Input value={value} disabled={disabled} type={type} />\n </Container>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n input: {\n marginTop: theme.spacing(3),\n marginRight: theme.spacing(3),\n marginBottom: theme.spacing(3),\n },\n}));\n","import React, {FC} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Container} from 'components-lib';\nimport {ItemWithPlaceholder} from 'filters-selections';\nimport {Form} from 'forms';\nimport {IWithDisabled} from 'models/common';\n\ninterface IResourceDatePickerProps extends IWithDisabled {\n label: string;\n name: string;\n value?: any;\n maxWidth?: boolean;\n disablePast?: boolean;\n disableFuture?: boolean;\n}\n\nexport const ResourcesDatePicker: FC<IResourceDatePickerProps> = ({\n label,\n name,\n value = null,\n disabled = false,\n maxWidth = true,\n disablePast = false,\n disableFuture = false,\n}) => {\n const classes = useStyles();\n\n return (\n <Container disableGutters classes={{root: classes.resourceDatePicker}}>\n <ItemWithPlaceholder label={label} hasItems>\n <Form.DatePicker\n name={name}\n label=\"\"\n value={value}\n disabled={disabled}\n maxWidth={maxWidth}\n disablePast={disablePast}\n disableFuture={disableFuture}\n format=\"MM/dd/yyyy\"\n />\n </ItemWithPlaceholder>\n </Container>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n resourceDatePicker: {\n paddingTop: theme.spacing(3),\n paddingBottom: theme.spacing(3),\n paddingRight: theme.spacing(3),\n },\n}));\n","import React, {FC} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Container, Label, TextArea} from 'components-lib';\nimport {IWithDisabled} from 'models';\n\ninterface IResourceTextAreaProps extends IWithDisabled {\n value: string;\n label: string;\n rows?: number;\n fullWidth?: boolean;\n placeholder?: string;\n}\n\nexport const ResourceTextArea: FC<IResourceTextAreaProps> = ({\n label,\n value,\n disabled,\n rows = 6,\n fullWidth = true,\n placeholder = '',\n}) => {\n const classes = useStyles();\n\n return (\n <Container disableGutters classes={{root: classes.textArea}}>\n <Label label={label} />\n <TextArea value={value} placeholder={placeholder} disabled={disabled} rows={rows} fullWidth={fullWidth} />\n </Container>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n textArea: {\n marginTop: theme.spacing(3),\n marginRight: theme.spacing(3),\n marginBottom: theme.spacing(3),\n },\n}));\n","import React, {FC, Fragment, ReactNode, useMemo} from 'react';\nimport {PageViewHeader} from 'components-lib';\nimport {SubtitlePageViewHeader} from 'admin/components';\n\ninterface IResourceHeaderProps {\n heading: string;\n subHeading?: string;\n withBackButton?: boolean;\n withSubHeading?: boolean;\n extraHeading?: ReactNode;\n backButtonClickHandler?: () => void;\n}\nexport const ResourceHeader: FC<IResourceHeaderProps> = ({\n heading,\n subHeading,\n extraHeading,\n withBackButton = true,\n withSubHeading = true,\n backButtonClickHandler,\n}) => {\n const headerSubHeading = useMemo(() => {\n return <Fragment>{subHeading && <SubtitlePageViewHeader> {`/ ${subHeading}`}</SubtitlePageViewHeader>}</Fragment>;\n }, [subHeading]);\n\n return (\n <PageViewHeader\n fullFlexWidth\n withBackButton={withBackButton}\n extraHeading={extraHeading}\n withColumnPadding={false}\n heading={heading}\n subHeading={withSubHeading && headerSubHeading}\n headingColor=\"textPrimary\"\n backButtonClickHandler={backButtonClickHandler}\n />\n );\n};\n","import React, {FC, Fragment} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Subtitle} from 'admin';\nimport {Column, Container, Row} from 'components-lib';\nimport {IWithChildren} from 'models';\ninterface IResourceDetailsProps extends IWithChildren {\n withSubtitle?: boolean;\n withBorderBottom?: boolean;\n}\n\nexport const ResourceDetails: FC<IResourceDetailsProps> = ({\n children,\n withSubtitle = true,\n withBorderBottom = true,\n}) => {\n const classes = useStyles({withBorderBottom});\n\n return (\n <Fragment>\n {withSubtitle && <Subtitle withColor={false} as=\"h3\" color=\"textPrimary\" title=\"Details\" />}\n <Container disableGutters classes={{root: classes.detailsContent}}>\n <Row align=\"flex-start\" justify=\"flex-start\">\n <Column sm={8} md={8} lg={8} xl={9}>\n <Row align=\"flex-start\" justify=\"flex-start\">\n {children}\n </Row>\n </Column>\n <Column sm={4} md={4} lg={4} xl={3} />\n </Row>\n </Container>\n </Fragment>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n detailsContent: ({withBorderBottom}: Pick<IResourceDetailsProps, 'withBorderBottom'>) => ({\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(4),\n borderBottom: withBorderBottom ? `1px solid ${theme.palette.grey[200]}` : 'none',\n }),\n}));\n","import React, {FC} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Box, Column, Row} from 'components-lib';\nimport {IBoxListItem} from 'models/resources';\n\ninterface IResourceUserDetailsProps {\n list: IBoxListItem[];\n}\n\nexport const ResourceUserDetails: FC<IResourceUserDetailsProps> = ({list}) => {\n const classes = useStyles();\n\n return (\n <Row justify=\"flex-start\" align=\"flex-start\">\n {list.map(({size = 'large', label, content, userInitials = ''}, idx: number) => (\n <Column sm={6} md={6} lg={3} xl={2} key={idx} className={classes.boxColumn}>\n <Box className={classes.box} size={size} label={label} content={content} userInitials={userInitials} />\n </Column>\n ))}\n </Row>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n box: {\n height: 28,\n display: 'flex',\n alignItems: 'center',\n },\n boxColumn: {\n paddingBottom: theme.spacing(3),\n },\n}));\n","import React, {FC} from 'react';\nimport {Button, Container, Row} from 'components-lib';\nimport {Form} from 'forms';\ninterface IResourceFooterButtonsProps {\n loading: boolean;\n withSubmitButton?: boolean;\n withPublishButton?: boolean;\n withDeleteButton?: boolean;\n withCancelButton?: boolean;\n withSaveButton?: boolean;\n disablePublish?: boolean;\n disableDelete?: boolean;\n disableSubmit?: boolean;\n disableSave?: boolean;\n submitButtonText?: string;\n cancelClickHandler?: () => void;\n publishClickHandler?: () => void;\n deleteClickHandler?: () => void;\n saveClickHandler?: () => void;\n}\n\nexport const ResourceFooterButtons: FC<IResourceFooterButtonsProps> = ({\n loading,\n withSubmitButton = true,\n withPublishButton = false,\n withDeleteButton = false,\n withCancelButton = true,\n withSaveButton = false,\n disablePublish = false,\n disableDelete = false,\n disableSubmit = false,\n disableSave = false,\n submitButtonText = 'Save',\n cancelClickHandler,\n publishClickHandler,\n deleteClickHandler,\n saveClickHandler,\n}) => (\n <Container disableGutters>\n <Row align=\"center\" justify=\"flex-end\">\n {withCancelButton && (\n <Button.Secondary clickHandler={cancelClickHandler} disabled={loading}>\n Cancel\n </Button.Secondary>\n )}\n {withDeleteButton && (\n <Button.Secondary clickHandler={deleteClickHandler} disabled={loading || disableDelete}>\n Delete\n </Button.Secondary>\n )}\n {withSubmitButton && (\n <Form.ButtonSubmit size=\"large\" text={submitButtonText} disabled={disableSubmit || loading} />\n )}\n {withSaveButton && (\n <Button.Primary clickHandler={saveClickHandler} disabled={loading || disableSave}>\n Save\n </Button.Primary>\n )}\n {withPublishButton && (\n <Button.Primary clickHandler={publishClickHandler} disabled={loading || disablePublish}>\n Publish\n </Button.Primary>\n )}\n </Row>\n </Container>\n);\n","import React, {FC} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Column, Container} from 'components-lib';\nimport {SelectionEnum, SelectionListItems} from 'filters-selections';\nimport {TWidth} from 'components-lib/layout/Column/Column';\ninterface IResourceListColumnProps {\n sm?: TWidth;\n md?: TWidth;\n lg?: TWidth;\n xl?: TWidth;\n list: SelectionEnum[];\n disableAll?: boolean;\n}\n\nexport const ResourceListColumn: FC<IResourceListColumnProps> = ({\n list,\n disableAll = false,\n sm = 6,\n md = 4,\n lg = 4,\n xl = 3,\n}) => {\n const classes = useStyles();\n\n return (\n <Column sm={sm} md={md} lg={lg} xl={xl}>\n <Container disableGutters classes={{root: classes.root}}>\n <SelectionListItems list={list} disableAll={disableAll} />\n </Container>\n </Column>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n paddingRight: theme.spacing(2),\n },\n}));\n","import {makeStyles} from '@material-ui/core';\nimport {footerHeight, secondaryNavigation} from 'utils/layout';\n\nconst height = `calc(100vh - 111px)`;\nconst fullHeight = `calc(100vh - 65px)`;\n\ninterface IContentStyles {\n height: string;\n withFooter?: boolean;\n}\n\nexport const useStyles = makeStyles(\n (theme) => ({\n root: (withSecondaryNavigation) => ({\n flexGrow: 1,\n maxHeight: withSecondaryNavigation ? height : fullHeight,\n }),\n row: {\n width: '100%',\n margin: 0,\n },\n sidebar: (withSecondaryNavigation) => ({\n background: theme.palette.grey[50],\n alignItems: 'stretch',\n height: withSecondaryNavigation ? height : fullHeight,\n overflow: 'auto',\n boxShadow: `inset 0 0 10px ${theme.palette.grey[200]}`,\n }),\n content: (withSecondaryNavigation) => ({\n background: theme.palette.common.white,\n alignItems: 'stretch',\n height: withSecondaryNavigation ? height : fullHeight,\n overflow: 'auto',\n }),\n contentEqualCols: {\n background: theme.palette.common.white,\n alignItems: 'stretch',\n height: '100vh',\n overflow: 'auto',\n },\n contentMiddle: {\n borderRight: `1px solid ${theme.palette.grey[200]}`,\n },\n borderRight: {\n borderRight: `1px solid ${theme.palette.grey[200]}`,\n },\n contentOneOrTwoVerticalColsRoot: ({height}: IContentStyles) => ({\n flexGrow: 1,\n maxHeight: height,\n }),\n contentOneOrTwoVerticalColsFooter: {\n height: footerHeight,\n borderTop: `1px solid ${theme.palette.grey[200]}`,\n background: theme.palette.common.white,\n },\n contentOneOrTwoVerticalCols: ({height, withFooter}: IContentStyles) => ({\n paddingTop: theme.spacing(1),\n paddingLeft: theme.spacing(4),\n paddingRight: theme.spacing(4),\n paddingBottom: !withFooter && theme.spacing(4),\n background: theme.palette.common.white,\n alignItems: 'stretch',\n height: height,\n overflow: 'auto',\n width: '100%',\n }),\n contentLeftOneOrTwoVerticalCols: {\n borderRight: `1px solid ${theme.palette.grey[200]}`,\n },\n headerSecondaryNavigation: {\n paddingLeft: theme.spacing(4),\n height: secondaryNavigation,\n borderBottom: `1px solid ${theme.palette.grey[200]}`,\n background: theme.palette.common.white,\n },\n }),\n {index: 1} // https://github.com/mui-org/material-ui/issues/18919\n);\n","import classnames from 'classnames';\nimport {Column, Container, Row} from 'components-lib';\nimport React, {ReactNode} from 'react';\nimport {useStyles} from './styles';\n\ninterface IPageLayoutThreeColProps {\n sidebar: ReactNode;\n contentMiddle: ReactNode;\n contentEnd: ReactNode;\n withSecondaryNavigation?: boolean;\n}\n\nexport function PageLayoutThreeCol({\n sidebar,\n contentMiddle,\n contentEnd,\n withSecondaryNavigation = false,\n}: IPageLayoutThreeColProps) {\n const classes = useStyles(withSecondaryNavigation);\n\n return (\n <Container classes={{root: classes.root}} disableGutters>\n <Row classes={{root: classes.row}}>\n <Column sm={3} md={3} lg={3} xl={3} className={classes.sidebar}>\n {sidebar && sidebar}\n </Column>\n <Column sm={3} md={3} lg={3} xl={3} className={classnames(classes.content, classes.contentMiddle)}>\n {contentMiddle && contentMiddle}\n </Column>\n <Column sm={6} md={6} lg={6} xl={6} className={classes.content}>\n {contentEnd && contentEnd}\n </Column>\n </Row>\n </Container>\n );\n}\n","import {Column, Container, Row} from 'components-lib';\nimport React, {ReactNode} from 'react';\nimport {useStyles} from './styles';\n\ninterface IPageLayoutProps {\n sidebar: ReactNode;\n content: ReactNode;\n withSecondaryNavigation?: boolean;\n}\n\nexport function PageLayoutTwoCol({sidebar, content, withSecondaryNavigation = true}: IPageLayoutProps) {\n const classes = useStyles(withSecondaryNavigation);\n\n return (\n <Container classes={{root: classes.root}} disableGutters>\n <Row classes={{root: classes.row}}>\n <Column sm={3} md={3} lg={3} xl={3} className={classes.sidebar}>\n {sidebar && sidebar}\n </Column>\n <Column sm={9} md={9} lg={9} xl={9} className={classes.content}>\n {content && content}\n </Column>\n </Row>\n </Container>\n );\n}\n","import React, {FC, ReactNode, useMemo, Fragment} from 'react';\nimport {Column, Container, Loading, Row, Wrapper} from 'components-lib';\nimport {makeStyles} from '@material-ui/core';\nimport {footerHeight, mainNavHeight, secondaryNavigation} from 'utils/layout';\n\ninterface IPageLayoutOneOrTwoEqualColsProps {\n header: ReactNode;\n footer?: ReactNode;\n content?: ReactNode;\n contentLeft?: ReactNode;\n contentRight?: ReactNode;\n loading?: boolean;\n withFooter?: boolean;\n}\n\nconst navHeight = mainNavHeight + secondaryNavigation;\n\nexport const PageLayoutOneOrTwoEqualCols: FC<IPageLayoutOneOrTwoEqualColsProps> = ({\n header,\n footer,\n content,\n contentLeft,\n contentRight,\n loading,\n withFooter = true,\n}) => {\n let height = `calc(100vh - ${navHeight}px - ${footerHeight}px)`;\n\n if (!withFooter) {\n height = `calc(100vh - ${navHeight}px)`;\n }\n\n const classes = useStyles({height, withFooter});\n\n const fullContent = useMemo(\n () => (\n <Fragment>\n {content && (\n <Column sm={12} md={12} lg={12} xl={12} className={classes.content}>\n {content && content}\n </Column>\n )}\n {contentLeft && (\n <Column sm={6} md={6} lg={6} xl={6} className={`${classes.content} ${classes.contentLeft}`}>\n {contentLeft && contentLeft}\n </Column>\n )}\n {contentRight && (\n <Column sm={6} md={6} lg={6} xl={6} className={classes.content}>\n {contentRight && contentRight}\n </Column>\n )}\n </Fragment>\n ),\n [classes, content, contentLeft, contentRight]\n );\n\n return (\n <Container classes={{root: classes.root}} disableGutters>\n <Row classes={{root: classes.secondaryNavigation}}>{header}</Row>\n <Row classes={{root: classes.row}}>\n {loading ? (\n <Wrapper className={classes.content}>\n <Loading />\n </Wrapper>\n ) : (\n fullContent\n )}\n </Row>\n {withFooter && (\n <Row justify=\"flex-end\" align=\"center\" classes={{root: classes.footer}}>\n {footer}\n </Row>\n )}\n </Container>\n );\n};\n\ninterface IContentStyles {\n height: string;\n withFooter?: boolean;\n}\n\nexport const useStyles = makeStyles((theme) => ({\n root: ({height}: IContentStyles) => ({\n flexGrow: 1,\n maxHeight: height,\n }),\n secondaryNavigation: {\n paddingLeft: theme.spacing(4),\n height: secondaryNavigation,\n borderBottom: `1px solid ${theme.palette.grey[200]}`,\n background: theme.palette.common.white,\n },\n footer: {\n height: footerHeight,\n borderTop: `1px solid ${theme.palette.grey[200]}`,\n background: theme.palette.common.white,\n },\n row: {\n width: '100%',\n margin: 0,\n },\n content: ({height, withFooter}: IContentStyles) => ({\n paddingTop: theme.spacing(1),\n paddingLeft: theme.spacing(4),\n paddingRight: theme.spacing(4),\n paddingBottom: !withFooter && theme.spacing(4),\n background: theme.palette.common.white,\n alignItems: 'stretch',\n height: height,\n overflow: 'auto',\n width: '100%',\n }),\n contentLeft: {\n borderRight: `1px solid ${theme.palette.grey[200]}`,\n },\n}));\n","import React, {FC, Fragment, memo, ReactNode, useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Container, Loading, Row, Wrapper} from 'components-lib';\nimport {footerHeight, navHeight, secondaryNavigation, secondaryNavigationLarge} from 'utils/layout';\ninterface IPageLayoutHorizontalRowsProps {\n headerSize?: 'small' | 'large';\n header?: ReactNode;\n contentUp?: ReactNode;\n contentDown?: ReactNode;\n contentMiddle?: ReactNode;\n footer?: ReactNode;\n withSecondaryNavigation?: boolean;\n loading?: boolean;\n}\n\nexport const PageLayoutHorizontalRows: FC<IPageLayoutHorizontalRowsProps> = memo(\n ({\n header,\n contentUp,\n contentDown,\n contentMiddle,\n footer,\n withSecondaryNavigation = true,\n headerSize = 'small',\n loading,\n }) => {\n const navigation = headerSize === 'small' ? 45 : 94;\n let height = `calc(100vh - ${navHeight}px - ${footerHeight}px - ${withSecondaryNavigation ? navigation : 0}px)`;\n\n if (!footer) {\n height = `calc(100vh - ${navHeight}px)`;\n }\n\n const classes = useStyles({height, footer, headerSize});\n\n const content = useMemo(\n () => (\n <Fragment>\n {contentUp && <Row justify=\"flex-start\">{contentUp}</Row>}\n {contentMiddle && <Row justify=\"flex-start\">{contentMiddle}</Row>}\n {contentDown && <Row justify=\"flex-start\">{contentDown}</Row>}\n </Fragment>\n ),\n [contentUp, contentDown, contentMiddle]\n );\n\n return (\n <Container classes={{root: classes.root}} disableGutters>\n <Row classes={{root: classes.secondaryNavigation}}>{header}</Row>\n\n <Wrapper className={classes.content}>{loading ? <Loading /> : content}</Wrapper>\n\n {footer && (\n <Row justify=\"flex-end\" align=\"center\" classes={{root: classes.footer}}>\n {footer}\n </Row>\n )}\n </Container>\n );\n }\n);\ninterface IContentStyles {\n height: string;\n footer?: ReactNode;\n headerSize?: 'small' | 'large';\n}\n\nexport const useStyles = makeStyles((theme) => ({\n root: ({height}: IContentStyles) => ({\n flexGrow: 1,\n maxHeight: height,\n }),\n secondaryNavigation: ({headerSize}: IContentStyles) => ({\n paddingLeft: theme.spacing(4),\n height: headerSize === 'small' ? secondaryNavigation : secondaryNavigationLarge,\n borderBottom: `1px solid ${theme.palette.grey[200]}`,\n background: theme.palette.common.white,\n }),\n content: ({height, footer}: IContentStyles) => ({\n paddingTop: theme.spacing(1),\n paddingLeft: theme.spacing(4),\n paddingRight: theme.spacing(4),\n paddingBottom: !footer && theme.spacing(4),\n background: theme.palette.common.white,\n alignItems: 'stretch',\n height: height,\n overflow: 'auto',\n width: '100%',\n }),\n footer: {\n height: footerHeight,\n borderTop: `1px solid ${theme.palette.grey[200]}`,\n background: theme.palette.common.white,\n paddingLeft: theme.spacing(4),\n paddingRight: theme.spacing(4),\n },\n}));\n","import React, {Fragment, ReactNode, useMemo} from 'react';\nimport classnames from 'classnames';\nimport {Column, Container, Loading, Row} from 'components-lib';\nimport {footerHeight, navHeight, secondaryNavigation} from 'utils/layout';\nimport {makeStyles} from '@material-ui/core';\n\ninterface IPageLayoutTwoVerticalColsProps {\n header?: ReactNode;\n contentStart: ReactNode;\n contentMiddle: ReactNode;\n footer?: ReactNode;\n secondRow?: ReactNode;\n withFooter?: boolean;\n withSecondaryNavigation?: boolean;\n withFirstColBorderRight?: boolean;\n withColumn?: boolean;\n withDoubleFirst?: boolean;\n withDoubleSecond?: boolean;\n loading?: boolean;\n}\n\nexport const PageLayoutTwoVerticalCols = ({\n contentStart,\n contentMiddle,\n withSecondaryNavigation = false,\n withFooter = false,\n header,\n footer,\n withFirstColBorderRight = true,\n withDoubleFirst = true,\n withDoubleSecond = false,\n secondRow,\n loading = false,\n}: IPageLayoutTwoVerticalColsProps) => {\n let height = `calc(100vh - ${navHeight}px - ${footerHeight}px - 45px)`;\n const firstColSize = !withDoubleFirst ? 4 : 8;\n const secondColSize = !withDoubleSecond ? 4 : 8;\n\n if (!withFooter) {\n height = `calc(100vh - ${navHeight}px)`;\n }\n\n const classes = useStyles({height, withFooter, withSecondaryNavigation});\n\n const firstCol = useMemo(\n () => (\n <Column\n sm={firstColSize}\n md={firstColSize}\n lg={firstColSize}\n xl={firstColSize}\n className={classnames(classes.contentOneOrTwoVerticalCols, withFirstColBorderRight && classes.borderRight)}\n >\n {contentStart && contentStart}\n </Column>\n ),\n [classes.borderRight, classes.contentOneOrTwoVerticalCols, withFirstColBorderRight, contentStart, firstColSize]\n );\n\n const secondCol = useMemo(\n () => (\n <Column\n sm={secondColSize}\n md={secondColSize}\n lg={secondColSize}\n xl={secondColSize}\n className={classes.contentOneOrTwoVerticalCols}\n >\n {contentMiddle && contentMiddle}\n </Column>\n ),\n [classes.contentOneOrTwoVerticalCols, contentMiddle, secondColSize]\n );\n\n return (\n <Container classes={{root: classes.contentOneOrTwoVerticalColsRoot}} disableGutters>\n <Row justify=\"flex-start\" classes={{root: classes.headerSecondaryNavigation}}>\n {header}\n </Row>\n <Row classes={{root: classes.row}}>\n {loading ? (\n <Container disableGutters classes={{root: classes.contentOneOrTwoVerticalCols}}>\n <Loading />\n </Container>\n ) : (\n <Fragment>\n {firstCol}\n {secondCol}\n {secondRow && (\n <Row classes={{root: classes.row}}>\n <Column>{secondRow}</Column>\n </Row>\n )}\n </Fragment>\n )}\n </Row>\n {withFooter && (\n <Row justify=\"space-between\" align=\"center\" classes={{root: classes.contentOneOrTwoVerticalColsFooter}}>\n {footer}\n </Row>\n )}\n </Container>\n );\n};\n\ninterface IContentStyles {\n height: string;\n withFooter?: boolean;\n}\n\nexport const useStyles = makeStyles((theme) => ({\n contentOneOrTwoVerticalColsRoot: ({height}: IContentStyles) => ({\n flexGrow: 1,\n maxHeight: height,\n }),\n contentOneOrTwoVerticalColsFooter: {\n height: footerHeight,\n borderTop: `1px solid ${theme.palette.grey[200]}`,\n background: theme.palette.common.white,\n },\n borderRight: {\n borderRight: `1px solid ${theme.palette.grey[200]}`,\n },\n row: {\n width: '100%',\n margin: 0,\n },\n contentOneOrTwoVerticalCols: ({height, withFooter}: IContentStyles) => ({\n paddingTop: theme.spacing(1),\n paddingLeft: theme.spacing(4),\n paddingRight: theme.spacing(4),\n paddingBottom: !withFooter && theme.spacing(4),\n background: theme.palette.common.white,\n alignItems: 'stretch',\n height: height,\n overflow: 'auto',\n width: '100%',\n }),\n headerSecondaryNavigation: {\n paddingLeft: theme.spacing(4),\n height: secondaryNavigation,\n borderBottom: `1px solid ${theme.palette.grey[200]}`,\n background: theme.palette.common.white,\n },\n}));\n","import React, {FC, ReactNode} from 'react';\nimport {Column, Container, Loading, Row} from 'components-lib';\nimport {footerHeight, navHeight} from 'utils/layout';\nimport {useStyles} from './styles';\n\ninterface IPageLayoutOneVerticalColProps {\n header: ReactNode;\n contentStart: ReactNode;\n footer?: ReactNode;\n loading?: boolean;\n withSecondaryNavigation?: boolean;\n}\n\nexport const PageLayoutOneVerticalCol: FC<IPageLayoutOneVerticalColProps> = ({\n contentStart,\n withSecondaryNavigation = false,\n header,\n footer,\n loading = false,\n}) => {\n let height = `calc(100vh - ${navHeight}px - ${footerHeight}px - 45px)`;\n\n const classes = useStyles({height, footer, withSecondaryNavigation});\n\n if (!footer) {\n height = `calc(100vh - ${navHeight}px)`;\n }\n return (\n <Container classes={{root: classes.root}} disableGutters>\n <Row justify=\"flex-start\" classes={{root: classes.headerSecondaryNavigation}}>\n {header}\n </Row>\n <Row classes={{root: classes.row}}>\n <Column sm={12} md={12} lg={12} xl={12}>\n <Container classes={{root: classes.contentOneOrTwoVerticalCols}} disableGutters>\n {loading ? <Loading /> : contentStart}\n </Container>\n </Column>\n </Row>\n {footer && (\n <Row justify=\"space-between\" align=\"center\" classes={{root: classes.contentOneOrTwoVerticalColsFooter}}>\n {footer}\n </Row>\n )}\n </Container>\n );\n};\n","export const SUPPORTED_FILE_FORMATS = ['application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'];\n","import {IColumn} from 'models';\n\nexport const columns: IColumn[] = [\n {id: 'questionText', label: 'Question Text'},\n {id: 'responseType', label: 'Response Type'},\n {id: 'domain', label: 'Domain'},\n {id: 'administration', label: 'Administration'},\n {id: 'pillar', label: 'Pillar'},\n {id: 'evaluationType', label: 'Evaluation Type'},\n {id: 'schoolLevel', label: 'School Level'},\n {id: 'category', label: 'Category'},\n {id: 'learningObjective', label: 'Learning Objective'},\n {id: 'competency', label: 'Competency'},\n {id: 'concept', label: 'KSAs'},\n {id: 'program', label: 'Program'},\n {id: 'answer1', label: 'Answer1'},\n {id: 'a1c', label: 'A1C'},\n {id: 'answer2', label: 'Answer2'},\n {id: 'a2c', label: 'A2C'},\n {id: 'answer3', label: 'Answer3'},\n {id: 'a3c', label: 'A3C'},\n {id: 'answer4', label: 'Answer4'},\n {id: 'a4c', label: 'A4C'},\n {id: 'answer5', label: 'Answer5'},\n {id: 'a5c', label: 'A5C'},\n {id: 'answer6', label: 'Answer6'},\n {id: 'a6c', label: 'A6C'},\n {id: 'answer7', label: 'Answer7'},\n {id: 'a7c', label: 'A7C'},\n];\n","import * as Yup from 'yup';\nimport {FormNameEnum} from 'enums/form';\nimport {SUPPORTED_FILE_FORMATS} from '../constants';\n\nexport const itemsImportFormBaseValidationSchema = Yup.object().shape({\n [FormNameEnum.templateImportFile]: Yup.mixed()\n .nullable()\n .test('has-correct-format', `Only .xlsx format is supported`, (value) =>\n value ? SUPPORTED_FILE_FORMATS.includes(value.type) : true\n ),\n});\n","import {useParams} from 'react-router-dom';\n\ninterface IIntegrationIdParam {\n integrationId: string;\n}\n\nexport const useIntegrationIdParam = () => {\n const urlParams = useParams<IIntegrationIdParam>();\n const integrationId = urlParams?.integrationId;\n return {integrationId};\n};\n","import {useCallback} from 'react';\nimport {useAppDispatch} from 'hooks';\nimport {fetchServiceEmailThunk, fetchPublishedSourceDetailsThunk} from 'admin';\n\nexport const useIntegrationStateActions = () => {\n const dispatch = useAppDispatch();\n\n const fetchServiceEmail = useCallback((): void => dispatch(fetchServiceEmailThunk()), [dispatch]);\n\n const fetchPublishedSourceDetails = useCallback((): void => dispatch(fetchPublishedSourceDetailsThunk()), [dispatch]);\n\n return {\n fetchServiceEmail,\n fetchPublishedSourceDetails,\n };\n};\n","import {useFormikContext} from 'formik';\nimport {useIntegration} from './../../hooks/useIntegration';\nimport {IIntegrationDetailsFormBaseValues} from 'models/integrations';\nimport {DEFAULT_GOOGLE_DRIVE_FOLDER_LINK, useIntegrationDetailType} from 'admin';\n\nexport const useIntegrationDetailsFormValues = () => {\n const {integration} = useIntegration();\n const {values} = useFormikContext<IIntegrationDetailsFormBaseValues>();\n const {isGoogleClassRoom, isMicrosoftTeams, isGoogleSitesSource, isGoogleSitesDestination} = useIntegrationDetailType(\n integration.integrationType\n );\n\n const isIntegrationNameChanged = !!values.integrationName ? integration.name !== values.integrationName : false;\n const isIntegrationAuthorityUrlChanged = integration.configuration.authorityUrl !== values.authorityUrl;\n const isIntegrationClientSecretChanged =\n !!integration.configuration.clientSecret && integration.configuration.clientSecret !== values.clientSecret;\n const isIntegrationClientIdChanged = integration.configuration.clientId !== values.clientId;\n const isIntegrationServiceEmailChanged =\n !isMicrosoftTeams && integration.configuration.serviceEmailAccount !== values.serviceEmail;\n const isIntegrationCertificateChanged = !!values.certificate;\n const isIntegrationGoogleDriveSourceFolderLinkChanged =\n DEFAULT_GOOGLE_DRIVE_FOLDER_LINK + integration.configuration.defaultFolderId !== values.googleDriveSourceFolderLink;\n const isIntegrationGoogleDriveDestinationFolderLinkChanged =\n DEFAULT_GOOGLE_DRIVE_FOLDER_LINK + integration.configuration.defaultFolderId !==\n values.googleDriveDestinationFolderLink;\n\n const getHasMsTeamsIntegrationNameChanged = () =>\n isIntegrationNameChanged &&\n !isIntegrationAuthorityUrlChanged &&\n !isIntegrationClientIdChanged &&\n !isIntegrationClientSecretChanged;\n\n const getGoogleClassroomIntegrationNameChanged = () => {\n return isIntegrationNameChanged && !isIntegrationServiceEmailChanged;\n };\n\n const getGoogleSitesSourceIntegrationNameChanged = () => {\n return (\n isIntegrationNameChanged &&\n !isIntegrationServiceEmailChanged &&\n !isIntegrationCertificateChanged &&\n !isIntegrationGoogleDriveSourceFolderLinkChanged\n );\n };\n\n const getGoogleSitesDestinationIntegrationNameChanged = () => {\n return isIntegrationNameChanged && !isIntegrationGoogleDriveDestinationFolderLinkChanged;\n };\n\n const getHasOnlyIntegrationNameChanged = () => {\n if (isGoogleClassRoom) {\n return getGoogleClassroomIntegrationNameChanged();\n }\n\n if (isMicrosoftTeams) {\n return getHasMsTeamsIntegrationNameChanged();\n }\n\n if (isGoogleSitesSource) {\n return getGoogleSitesSourceIntegrationNameChanged();\n }\n\n if (isGoogleSitesDestination) {\n return getGoogleSitesDestinationIntegrationNameChanged();\n }\n };\n const hasOnlyIntegrationNameChanged = getHasOnlyIntegrationNameChanged();\n\n return {\n isIntegrationNameChanged,\n isIntegrationAuthorityUrlChanged,\n isIntegrationClientSecretChanged,\n isIntegrationClientIdChanged,\n isIntegrationCertificateChanged,\n hasOnlyIntegrationNameChanged,\n };\n};\n","import {getIsMicrosoftTeams, getIsGoogleClassRoom, getIsGoogleSitesSource, getIsGoogleSitesDestination} from 'admin';\n\nexport const useIntegrationDetailType = (type: number) => {\n const isGoogleClassRoom = getIsGoogleClassRoom(type);\n const isMicrosoftTeams = getIsMicrosoftTeams(type);\n const isGoogleSitesSource = getIsGoogleSitesSource(type);\n const isGoogleSitesDestination = getIsGoogleSitesDestination(type);\n\n return {isGoogleClassRoom, isMicrosoftTeams, isGoogleSitesSource, isGoogleSitesDestination};\n};\n","export enum RolesEnum {\n SuperAdmin = 1,\n USAAdmin = 2,\n AreaAdmin = 3,\n Staff = 4,\n Educator = 5,\n Volunteer = 6,\n Student = 7,\n All = 8,\n}\n","import {RolesEnum} from './Roles.enum';\n\nexport const AdminRoles = [RolesEnum.SuperAdmin, RolesEnum.USAAdmin, RolesEnum.AreaAdmin, RolesEnum.Staff];\n\nexport const AdminWithoutStaffRoles = [RolesEnum.SuperAdmin, RolesEnum.USAAdmin, RolesEnum.AreaAdmin];\n\nexport const USAAndSuperAdminRoles = [RolesEnum.SuperAdmin, RolesEnum.USAAdmin];\n\nexport const AllRolesWithoutStudent = [\n RolesEnum.AreaAdmin,\n RolesEnum.Educator,\n RolesEnum.Staff,\n RolesEnum.SuperAdmin,\n RolesEnum.USAAdmin,\n RolesEnum.Volunteer,\n];\n\nexport const AllAreaRolesWithEducatorsAndStaff = [\n RolesEnum.AreaAdmin,\n RolesEnum.Educator,\n RolesEnum.Staff,\n RolesEnum.Volunteer,\n];\n\nexport const AllRoles = [\n RolesEnum.AreaAdmin,\n RolesEnum.Educator,\n RolesEnum.Staff,\n RolesEnum.Student,\n RolesEnum.SuperAdmin,\n RolesEnum.USAAdmin,\n RolesEnum.Volunteer,\n];\n\nexport const SuperAdminRole = [RolesEnum.SuperAdmin];\n\nexport const AreaAdminRole = [RolesEnum.AreaAdmin];\n","import {useAppDispatch, useNavigate} from 'hooks';\nimport {RolesEnum} from 'permissions/enums';\nimport {permissionsManager} from 'permissions/services';\nimport {hasRequiredPermissions} from 'permissions/utils';\nimport {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport {fetchUserRoleThunk, permissionsStateSelector, userRoleListStateSelector} from '../store';\n\nexport function usePermissions() {\n const dispatch = useAppDispatch();\n const {loading: permissionsLoading, requestTriggered: permissionsRequestTriggered} = useSelector(\n permissionsStateSelector\n );\n const {push} = useNavigate();\n\n const userRoles = permissionsManager.getActiveUserRoles();\n\n const fetchUserRole = useCallback(() => {\n dispatch(fetchUserRoleThunk({push}));\n }, [dispatch, push]);\n\n const hasPermission = useCallback(\n (requiredRoles: RolesEnum[]) => {\n return hasRequiredPermissions(userRoles, requiredRoles);\n },\n [userRoles]\n );\n\n const allUserRoles = useSelector(userRoleListStateSelector);\n\n return {fetchUserRole, permissionsLoading, permissionsRequestTriggered, userRoles, allUserRoles, hasPermission};\n}\n","import {useSelector} from 'react-redux';\nimport {useMemo} from 'react';\nimport {unwrapResult} from '@reduxjs/toolkit';\n\nimport {mapUserActivityExport} from '../utils/mapUserActivityExport';\nimport {IGetUserActivityExportResponse} from './../../models/permissions/IGetUserActivityExportResponse';\nimport {fetchUserActivityExportThunk} from './../store/thunks/fetchUserActivityExport.thunk';\nimport {createLinkForDownload} from 'utils';\nimport {useAppDispatch} from 'hooks';\nimport {exportingSelector, RolesEnum} from 'permissions';\n\nexport const useUserActivity = () => {\n const dispatch = useAppDispatch();\n const exporting = useSelector(exportingSelector);\n\n const getUserActivityExport = useMemo(\n () => (from: Date, to: Date, roleList: RolesEnum[]) =>\n dispatch(fetchUserActivityExportThunk(mapUserActivityExport(from, to, roleList)))\n .then(unwrapResult)\n .then((parsedBody: IGetUserActivityExportResponse) => {\n const {mimeType, data, fileName} = parsedBody;\n createLinkForDownload(`data:${mimeType};base64,${data}`, fileName);\n }),\n [dispatch]\n );\n\n return {\n exporting,\n getUserActivityExport,\n };\n};\n","import {IFiltersSelectionsStoreState} from './IFiltersSelectionsStoreState';\n\nexport const filtersSelectionsInitialState: IFiltersSelectionsStoreState = {\n selection: {\n loadingSchoolNames: false,\n loadingResources: false,\n loadingInstruments: false,\n loadingDistricts: false,\n },\n programs: {\n result: [],\n entities: {\n programs: {},\n },\n },\n gradeLevels: {\n result: [],\n entities: {\n gradeLevels: {},\n },\n },\n years: {\n result: [],\n entities: {\n years: {},\n },\n },\n futureYears: {\n result: [],\n entities: {\n futureYears: {},\n },\n },\n educators: {\n result: [],\n entities: {\n educators: {},\n },\n },\n districts: [],\n period: {\n startDate: null,\n endDate: null,\n },\n areas: {\n result: [],\n entities: {\n areas: {},\n },\n },\n schools: {\n result: [],\n entities: {\n schools: {},\n },\n },\n audiences: {\n result: [],\n entities: {\n audiences: {},\n },\n },\n phases: {\n result: [],\n entities: {\n phases: {},\n },\n },\n instrumentTypes: {\n result: [],\n entities: {\n instrumentTypes: {},\n },\n },\n instrumentMainTypes: {\n result: [],\n entities: {\n instrumentMainTypes: {},\n },\n },\n instrumentStatuses: {\n result: [],\n entities: {\n instrumentStatuses: {},\n },\n },\n pillars: {\n result: [],\n entities: {\n pillars: {},\n },\n },\n domains: {\n result: [],\n entities: {\n domains: {},\n },\n },\n evaluationTypes: {\n result: [],\n entities: {\n evaluationTypes: {},\n },\n },\n competencies: {\n result: [],\n entities: {\n competencies: {},\n },\n },\n concepts: {\n result: [],\n entities: {\n concepts: {},\n },\n },\n administrations: {\n result: [],\n entities: {\n administrations: {},\n },\n },\n schoolLevel: {\n result: [],\n entities: {\n schoolLevel: {},\n },\n },\n itemTypes: {\n result: [],\n entities: {\n itemTypes: {},\n },\n },\n itemStatuses: {\n result: [],\n entities: {\n itemStatuses: {},\n },\n },\n sessions: {\n result: [],\n entities: {\n sessions: {},\n },\n },\n tagGradeLevels: {\n result: [],\n entities: {\n tagGradeLevels: {},\n },\n },\n skillsAndBehaviors: {\n result: [],\n entities: {\n skillsAndBehaviors: {},\n },\n },\n languages: {\n result: [],\n entities: {\n languages: {},\n },\n },\n defaultKeyTerms: {\n result: [],\n entities: {\n keyTerms: {},\n },\n },\n digitalResourceTypes: {\n entities: {\n digitalResourceTypes: {},\n },\n result: [],\n },\n integrationTypes: {\n result: [],\n entities: {\n integrationTypes: {},\n },\n },\n integrationStatuses: {\n result: [],\n entities: {\n integrationStatuses: {},\n },\n },\n schoolNames: {\n result: [],\n entities: {\n schoolNames: {},\n },\n },\n schoolDistricts: {\n result: [],\n entities: {\n schoolDistricts: {},\n },\n },\n uploadFileTypes: {\n result: [],\n entities: {\n uploadFileTypes: {},\n },\n },\n fileTypes: {\n result: [],\n entities: {\n fileTypes: {},\n },\n },\n resources: {\n result: [],\n entities: {\n resources: {},\n },\n },\n resourcesBase: {\n result: [],\n entities: {\n resourcesBase: {},\n },\n },\n resourcesConcatenatedBase: {\n result: [],\n entities: {\n resourcesConcatenatedBase: {},\n },\n },\n instruments: {\n result: [],\n entities: {\n instruments: {},\n },\n },\n instrumentsBase: {\n result: [],\n entities: {\n instrumentsBase: {},\n },\n },\n instrumentsConcatenatedBase: {\n result: [],\n entities: {\n instrumentsConcatenatedBase: {},\n },\n },\n learningPathStatuses: {\n result: [],\n entities: {\n learningPathStatuses: {},\n },\n },\n fileStatuses: {\n result: [],\n entities: {\n fileStatuses: {},\n },\n },\n accessibleToStudents: {\n result: [0, 1],\n entities: {\n accessibleToStudents: {\n 0: {\n id: 0,\n name: 'No',\n displayText: 'No',\n },\n 1: {\n id: 1,\n name: 'Yes',\n displayText: 'Yes',\n },\n },\n },\n },\n publishedBy: {\n result: [999999],\n entities: {\n publishedBy: {\n 999999: {\n id: 999999,\n name: '999999',\n displayText: 'JA USA',\n },\n },\n },\n },\n\n initialMappedInstruments: [],\n digitalResourcesConcepts: [],\n keyTerms: [],\n learningObjectives: [],\n};\n","import {filtersSelectionsInitialState} from './filtersSelections.initialState';\nimport {IFiltersSelectionsStoreState} from './IFiltersSelectionsStoreState';\n\nexport const filtersReducer = {\n clearSchools(state: IFiltersSelectionsStoreState) {\n state.schoolNames = {...filtersSelectionsInitialState.schoolNames};\n },\n clearResources(state: IFiltersSelectionsStoreState) {\n state.resources = {...filtersSelectionsInitialState.resources};\n },\n clearInstruments(state: IFiltersSelectionsStoreState) {\n state.initialMappedInstruments = {...filtersSelectionsInitialState.initialMappedInstruments};\n },\n};\n","import {createSlice} from '@reduxjs/toolkit';\nimport {filtersReducer} from './filters.reducer';\nimport {filtersSelectionExtra} from './filtersSelectionExtra.reducer';\nimport {filtersSelectionsInitialState} from './filtersSelections.initialState';\n\nexport const filtersSelectionsSlice = createSlice({\n name: 'filtersSelections',\n initialState: filtersSelectionsInitialState,\n reducers: filtersReducer,\n extraReducers: filtersSelectionExtra,\n});\n\nexport const {actions: filtersActions, reducer: filtersSelectionsReducer} = filtersSelectionsSlice;\n","import * as Yup from 'yup';\nimport {FormNameEnum} from 'enums/form';\nimport {errorMessages} from 'utils/constants';\nimport {LearningPathLabelEnum} from 'admin/resources/learning-paths';\nimport {isEqual} from 'utils/functions';\nimport {getIsBeforeDate} from 'utils/common';\n\nexport interface ILearningPathDetailsFormBaseValues {\n [FormNameEnum.id]?: string;\n [FormNameEnum.program]: number;\n [FormNameEnum.futureProgramYear]: number;\n [FormNameEnum.learningPathName]: string;\n [FormNameEnum.keyTerms]: string;\n [FormNameEnum.primaryPillar]: number;\n [FormNameEnum.secondaryPillar]: number;\n [FormNameEnum.gradeLevels]: number[];\n [FormNameEnum.language]: number;\n [FormNameEnum.briefDescription]: string;\n [FormNameEnum.learningObjectives]: string;\n [FormNameEnum.expirationDate]: Date | string;\n}\n\nexport const ILearningPathValidationsShape = {\n [FormNameEnum.learningPathName]: Yup.string()\n .nullable()\n .required(errorMessages.requiredWithInputName(`a ${LearningPathLabelEnum.Name}`)),\n [FormNameEnum.program]: Yup.number().nullable(),\n [FormNameEnum.futureProgramYear]: Yup.number().nullable(),\n [FormNameEnum.primaryPillar]: Yup.number()\n .nullable()\n .test('has-distinct-secondary', 'Please select distinct primary and secondary pillars', function () {\n return checkIfDistinctPillars(this.parent.primaryPillar, this.parent.secondaryPillar);\n }),\n [FormNameEnum.secondaryPillar]: Yup.number()\n .nullable()\n .test('has-distinct-primary', 'Please select distinct primary and secondary pillars', function () {\n return checkIfDistinctPillars(this.parent.primaryPillar, this.parent.secondaryPillar);\n }),\n [FormNameEnum.gradeLevels]: Yup.array()\n .of(Yup.number())\n .required(errorMessages.requiredWithFieldName(`a ${LearningPathLabelEnum.GradeLevel}`)),\n [FormNameEnum.language]: Yup.number()\n .nullable()\n .required(errorMessages.requiredWithFieldName(`a ${LearningPathLabelEnum.Language}`)),\n [FormNameEnum.expirationDate]: Yup.date()\n .nullable()\n .typeError('Expected date format: (mm/dd/yyyy)')\n .test('is-date-earlier-than-now', 'The selected date should be in the future.', function () {\n const {expirationDate} = this.parent;\n\n // If the datepicker is cleaned up, then validation is true\n if (expirationDate === null) {\n return true;\n }\n\n function isBefore(expirationDate: Date): boolean {\n const dateIsBeforeToday = getIsBeforeDate(expirationDate);\n\n if (dateIsBeforeToday) {\n return false;\n }\n return true;\n }\n\n if (expirationDate instanceof Date) {\n return isBefore(expirationDate);\n }\n }),\n [FormNameEnum.briefDescription]: Yup.string().nullable(),\n [FormNameEnum.keyTerms]: Yup.string().nullable(),\n [FormNameEnum.learningObjectives]: Yup.string().nullable(),\n};\n\nfunction checkIfDistinctPillars(primaryPillar, secondaryPillar) {\n const hasPrimaryPillar = !!primaryPillar;\n const hasSecondaryPillar = !!secondaryPillar;\n\n if (!hasPrimaryPillar && !hasSecondaryPillar) {\n return true;\n }\n\n const isPillarsEqual = isEqual(primaryPillar, secondaryPillar);\n return isPillarsEqual ? false : true;\n}\n","import {\n IBaseInstrumentItem,\n IBaseResourceItem,\n ICreateLearningPathPayload,\n ICreateUpdateLearningPathBaseMetadataPayload,\n ILearningPathDetailsValues,\n ILearningPathSession,\n ILearningPathSessionItem,\n IUpdateLearningPathPayload,\n} from 'models/resources';\n\nconst mapLearningPathResources = (resources: IBaseResourceItem[]) =>\n resources.map((resource) => resource.contentItemId);\n\nconst mapLearningPathInstruments = (instruments: IBaseInstrumentItem[]) =>\n instruments.map((instrument) => instrument.id);\n\nconst mapCreateUpdateLPMetadataPayload = (values): ICreateUpdateLearningPathBaseMetadataPayload => ({\n keyTerms: values.keyTerms,\n learningObjectives: values.learningObjectives,\n accessExpirationDate: values.expirationDate,\n languages: values.language ? [values.language] : [],\n pillars: [values.primaryPillar, values.secondaryPillar],\n programs: values.program ? [values.program] : [],\n gradeLevels: values.gradeLevels,\n programYear: values.futureProgramYear,\n});\n\nconst mapCreateUpdateLPSessionsPayload = (builderSessions: ILearningPathSessionItem[]): ILearningPathSession[] =>\n builderSessions.length\n ? builderSessions.map(({title, description, resources, instruments}) => {\n const resourceIds = mapLearningPathResources(resources);\n const instrumentIds = mapLearningPathInstruments(instruments);\n\n return {\n title,\n description,\n resourceIds,\n instrumentIds,\n };\n })\n : [];\n\nexport const mapCreateUpdateLearningPathPayload = (\n values: ILearningPathDetailsValues,\n builderSessions: ILearningPathSessionItem[],\n isEdit = false\n): ICreateLearningPathPayload | IUpdateLearningPathPayload => {\n const metadata = mapCreateUpdateLPMetadataPayload(values);\n const sessions = mapCreateUpdateLPSessionsPayload(builderSessions);\n\n let payload = {\n title: values.learningPathName,\n briefDescription: values.briefDescription,\n metadata,\n sessions,\n } as IUpdateLearningPathPayload;\n\n if (isEdit) {\n payload = {...payload, id: values.id};\n }\n\n return payload;\n};\n","import {reducer as oidc} from '@axa-fr/react-oidc-redux';\nimport {combineReducers} from '@reduxjs/toolkit';\nimport {integrationsSlice, libraryReducer, programsReducer, uploaderReducer, resourcesReducer} from 'admin';\nimport {itemsImportSlice} from 'admin/items-import/store/itemsImport.slice';\nimport {filtersSelectionsReducer} from 'filters-selections';\nimport {permissionsReducer} from 'permissions';\nimport {toastNotificationsReducer} from 'toast-notifications';\nimport {userReducer} from 'user';\n\nexport const rootReducer = combineReducers({\n oidc,\n permissions: permissionsReducer,\n programs: programsReducer,\n resources: resourcesReducer,\n upload: uploaderReducer,\n user: userReducer,\n library: libraryReducer,\n filtersSelections: filtersSelectionsReducer,\n toastNotifications: toastNotificationsReducer,\n integrations: integrationsSlice?.reducer,\n itemsImport: itemsImportSlice.reducer,\n});\n","import {uniqueId} from 'utils';\nimport {ToastNotificationTypeEnum} from '../enums';\nimport {toastNotificationsActions} from '../store';\n\nexport class ToastNotificationManager {\n #defaultDuration = 5000;\n\n public createToastAction(message: string, type: ToastNotificationTypeEnum) {\n return toastNotificationsActions.add({\n message,\n type,\n id: uniqueId(),\n duration: this.#defaultDuration,\n });\n }\n\n public createSuccessToastAction(message: string) {\n return toastNotificationsActions.add({\n message,\n id: uniqueId(),\n type: ToastNotificationTypeEnum.success,\n duration: this.#defaultDuration,\n });\n }\n\n public createErrorToastAction(message: string) {\n return toastNotificationsActions.add({\n message,\n id: uniqueId(),\n type: ToastNotificationTypeEnum.error,\n duration: this.#defaultDuration,\n });\n }\n}\n\nexport const toastNotificationManager = new ToastNotificationManager();\n","import {schema as Schema} from 'normalizr';\n\nexport function createSchema(entityName: string, idAttribute = 'id') {\n const entity = new Schema.Entity(entityName, {}, {idAttribute});\n return new Schema.Array(entity);\n}\n","import {\n IActionFulfilled,\n IBindBaseEntity,\n IBindBaseEntityApiResponse,\n IBindBaseEnumEntity,\n IBaseFiltersApiResponse,\n IGetAllFileTypeOptionsApiResponse,\n IGetInstrumentsApiResponse,\n IGetResourcesApiResponse,\n IProgramClassesFilterOptions,\n} from 'models';\nimport {normalize} from 'normalizr';\nimport {isObject, uniqBy, values} from 'utils';\nimport {IFiltersSelectionsStoreState} from './IFiltersSelectionsStoreState';\nimport {createSchema} from './normalizationSchemas';\nimport {\n fetchAdministrationsThunk,\n fetchAudienceThunk,\n fetchCompetenciesThunk,\n fetchConceptsThunk,\n fetchDomainsThunk,\n fetchEvaluationTypesThunk,\n fetchGradeLevelsThunk,\n fetchInstrumentStatusesThunk,\n fetchInstrumentTypesThunk,\n fetchItemTypesThunk,\n fetchPhasesThunk,\n fetchPillarsThunk,\n fetchProgramsThunk,\n fetchProgramYearsThunk,\n fetchSchoolLevelThunk,\n fetchSessionsThunk,\n fetchTagGradeLevelsThunk,\n fetchSkillsAndBehaviorsThunk,\n fetchLanguagesThunk,\n fetchProgramClassesFiltersThunk,\n fetchAreasThunk,\n fetchDefualtKeyTermsThunk,\n fetchKeyTermsThunk,\n fetchLearningObjectivesThunk,\n fetchDigitalResourcesConceptsThunk,\n fetchDigitalResourceTypesThunk,\n fetchSessionsByProgramIdsThunk,\n fetchInstrumentMainTypesThunk,\n fetchIntegrationListDropdownThunk,\n fetchIntegrationTypesThunk,\n searchSchoolsThunk,\n fetchSchoolDistrictThunk,\n fetchUploadFileTypeOptionsThunk,\n fetchAllFileTypeOptionsThunk,\n fetchFutureProgramYearsThunk,\n fetchResourcesThunk,\n fetchInstrumentsThunk,\n fetchContentItemStatusesThunk,\n fetchFileStatusesThunk,\n} from './thunks';\n\nconst programsSchema = createSchema('programs');\nconst gradeLevelsSchema = createSchema('gradeLevels');\nconst areasSchema = createSchema('areas');\nconst educatorsSchema = createSchema('educators');\nconst schoolsSchema = createSchema('schools');\nconst audiencesSchema = createSchema('audiences');\nconst phasesSchema = createSchema('phases');\nconst instrumentTypesSchema = createSchema('instrumentTypes');\nconst instrumentMainTypesSchema = createSchema('instrumentMainTypes');\nconst instrumentStatusesSchema = createSchema('instrumentStatuses');\nconst pillarsSchema = createSchema('pillars');\nconst domainsSchema = createSchema('domains');\nconst evaluationTypesSchema = createSchema('evaluationTypes');\nconst competenciesSchema = createSchema('competencies');\nconst conceptsSchema = createSchema('concepts');\nconst administrationsSchema = createSchema('administrations');\nconst itemTypesSchema = createSchema('itemTypes');\nconst schoolLevelSchema = createSchema('schoolLevel');\nconst sessionsSchema = createSchema('sessions');\nconst tagGradeLevelsSchema = createSchema('tagGradeLevels');\nconst skillsAndBehaviorsSchema = createSchema('skillsAndBehaviors');\nconst languagesSchema = createSchema('languages');\nconst keyTermsSchema = createSchema('keyTerms');\nconst digitalResourceTypesSchema = createSchema('digitalResourceTypes');\nconst integrationStatusesSchema = createSchema('integrationStatuses');\nconst integrationTypesSchema = createSchema('integrationTypes');\nconst integrationSchoolNamesSchema = createSchema('schoolNames');\nconst schoolDistrictSchema = createSchema('schoolDistricts');\nconst uploadFileTypesSchema = createSchema('uploadFileTypes');\nconst fileTypesSchema = createSchema('fileTypes');\nconst resourcesSchema = createSchema('resources');\nconst resourcesBaseSchema = createSchema('resourcesBase', 'contentItemId');\nconst resourcesConcatenatedBase = createSchema('resourcesConcatenatedBase', 'contentItemId');\nconst instrumentsSchema = createSchema('instruments');\nconst instrumentsBaseSchema = createSchema('instrumentsBase');\nconst instrumentsConcatenatedBase = createSchema('instrumentsConcatenatedBase');\nconst futureYearsSchema = createSchema('futureYears');\nconst programYearsSchema = createSchema('years');\nconst learningPathStatusesSchema = createSchema('learningPathStatuses');\nconst fileStatusesSchema = createSchema('fileStatuses');\n\nexport const filtersSelectionExtra = {\n //fetchProgramsThunk\n [fetchProgramsThunk.fulfilled]: (\n state: IFiltersSelectionsStoreState,\n action: IActionFulfilled<null, IBindBaseEntity>\n ) => {\n state.programs = normalize(action.payload, programsSchema);\n },\n\n //fetchProgramYearsThunk\n [fetchProgramYearsThunk.fulfilled]: (\n state: IFiltersSelectionsStoreState,\n action: IActionFulfilled<null, IBaseFiltersApiResponse>\n ) => {\n if (isObject(action.payload)) {\n const {data} = action.payload;\n state.years = normalize(data, programYearsSchema);\n }\n },\n\n //fetchFutureProgramYearsThunk\n [fetchFutureProgramYearsThunk.fulfilled]: (\n state: IFiltersSelectionsStoreState,\n action: IActionFulfilled<null, IBaseFiltersApiResponse>\n ) => {\n if (isObject(action.payload)) {\n const {data} = action.payload;\n state.futureYears = normalize(data, futureYearsSchema);\n }\n },\n\n //fetchGradeLevelsThunk\n [fetchGradeLevelsThunk.fulfilled]: (\n state: IFiltersSelectionsStoreState,\n action: IActionFulfilled<null, IBindBaseEntity>\n ) => {\n state.gradeLevels = normalize(action.payload, gradeLevelsSchema);\n },\n\n //fetchAreasThunk\n [fetchAreasThunk.fulfilled]: (\n state: IFiltersSelectionsStoreState,\n action: IActionFulfilled<null, IBindBaseEntity>\n ) => {\n state.areas = normalize(action.payload, areasSchema);\n },\n\n //fetchProgramClassesFiltersThunk\n [fetchProgramClassesFiltersThunk.fulfilled]: (\n state: IFiltersSelectionsStoreState,\n action: IActionFulfilled<number, IProgramClassesFilterOptions>\n ) => {\n state.areas = normalize(action.payload.areas, areasSchema);\n state.districts = [...action.payload.districts];\n state.educators = normalize(action.payload.educators, educatorsSchema);\n state.schools = normalize(action.payload.schools, schoolsSchema);\n },\n\n //fetchAudienceThunk\n [fetchAudienceThunk.fulfilled]: (\n state: IFiltersSelectionsStoreState,\n action: IActionFulfilled<null, IBindBaseEnumEntity>\n ) => {\n state.audiences = normalize(action.payload, audiencesSchema);\n },\n\n //fetchPhasesThunk\n [fetchPhasesThunk.fulfilled]: (\n state: IFiltersSelectionsStoreState,\n action: IActionFulfilled<null, IBindBaseEnumEntity>\n ) => {\n state.phases = normalize(action.payload, phasesSchema);\n },\n\n //fetchInstrumentTypesThunk\n [fetchInstrumentTypesThunk.fulfilled]: (\n state: IFiltersSelectionsStoreState,\n action: IActionFulfilled<null, IBindBaseEnumEntity>\n ) => {\n state.instrumentTypes = normalize(action.payload, instrumentTypesSchema);\n },\n\n //fetchInstrumentMainTypesThunk\n [fetchInstrumentMainTypesThunk.fulfilled]: (\n state: IFiltersSelectionsStoreState,\n action: IActionFulfilled<null, IBindBaseEnumEntity>\n ) => {\n state.instrumentMainTypes = normalize(action.payload, instrumentMainTypesSchema);\n },\n\n //fetchInstrumentStatusesThunk\n [fetchInstrumentStatusesThunk.fulfilled]: (\n state: IFiltersSelectionsStoreState,\n action: IActionFulfilled<null, IBindBaseEnumEntity>\n ) => {\n state.instrumentStatuses = normalize(action.payload, instrumentStatusesSchema);\n },\n\n //fetchPillarsThunk\n [fetchPillarsThunk.fulfilled]: (\n state: IFiltersSelectionsStoreState,\n action: IActionFulfilled<null, IBindBaseEnumEntity>\n ) => {\n state.pillars = normalize(action.payload, pillarsSchema);\n },\n\n //fetchDomainsThunk\n [fetchDomainsThunk.fulfilled]: (\n state: IFiltersSelectionsStoreState,\n action: IActionFulfilled<null, IBindBaseEnumEntity>\n ) => {\n state.domains = normalize(action.payload, domainsSchema);\n },\n\n //fetchAdministrationsThunk\n [fetchAdministrationsThunk.fulfilled]: (\n state: IFiltersSelectionsStoreState,\n action: IActionFulfilled<null, IBindBaseEnumEntity>\n ) => {\n state.administrations = normalize(action.payload, administrationsSchema);\n },\n\n //fetchEvaluationTypesThunk\n [fetchEvaluationTypesThunk.fulfilled]: (\n state: IFiltersSelectionsStoreState,\n action: IActionFulfilled<null, IBindBaseEnumEntity>\n ) => {\n state.evaluationTypes = normalize(action.payload, evaluationTypesSchema);\n },\n\n //fetchCompetenciesThunk\n [fetchCompetenciesThunk.fulfilled]: (\n state: IFiltersSelectionsStoreState,\n action: IActionFulfilled<null, IBindBaseEnumEntity>\n ) => {\n state.competencies = normalize(action.payload, competenciesSchema);\n },\n\n //fetchConceptsThunk\n [fetchConceptsThunk.fulfilled]: (\n state: IFiltersSelectionsStoreState,\n action: IActionFulfilled<null, IBindBaseEnumEntity>\n ) => {\n state.concepts = normalize(action.payload, conceptsSchema);\n },\n\n //fetchItemTypesThunk\n [fetchItemTypesThunk.fulfilled]: (\n state: IFiltersSelectionsStoreState,\n action: IActionFulfilled<null, IBindBaseEnumEntity>\n ) => {\n state.itemTypes = normalize(action.payload, itemTypesSchema);\n },\n\n //fetchSchoolLevelThunk\n [fetchSchoolLevelThunk.fulfilled]: (\n state: IFiltersSelectionsStoreState,\n action: IActionFulfilled<null, IBindBaseEntity>\n ) => {\n state.schoolLevel = normalize(action.payload, schoolLevelSchema);\n },\n\n //fetchSessionsThunk\n [fetchSessionsThunk.fulfilled]: (\n state: IFiltersSelectionsStoreState,\n action: IActionFulfilled<null, IBindBaseEntity>\n ) => {\n state.sessions = normalize(action.payload, sessionsSchema);\n },\n\n //fetchTagGradeLevelsThunk\n [fetchTagGradeLevelsThunk.fulfilled]: (\n state: IFiltersSelectionsStoreState,\n action: IActionFulfilled<null, IBindBaseEntity>\n ) => {\n state.tagGradeLevels = normalize(action.payload, tagGradeLevelsSchema);\n },\n\n //fetchSkillsAndBehaviorsThunk\n [fetchSkillsAndBehaviorsThunk.fulfilled]: (\n state: IFiltersSelectionsStoreState,\n action: IActionFulfilled<null, IBindBaseEntity>\n ) => {\n state.skillsAndBehaviors = normalize(action.payload, skillsAndBehaviorsSchema);\n },\n\n //fetchLanguagesThunk\n [fetchLanguagesThunk.fulfilled]: (\n state: IFiltersSelectionsStoreState,\n action: IActionFulfilled<null, IBindBaseEntity>\n ) => {\n state.languages = normalize(action.payload, languagesSchema);\n },\n\n //fetchGradeLevelsThunk\n [fetchGradeLevelsThunk.fulfilled]: (\n state: IFiltersSelectionsStoreState,\n action: IActionFulfilled<null, IBindBaseEntity>\n ) => {\n state.gradeLevels = normalize(action.payload, gradeLevelsSchema);\n },\n\n //fetchDefualtKeyTermsThunk\n [fetchDefualtKeyTermsThunk.fulfilled]: (\n state: IFiltersSelectionsStoreState,\n action: IActionFulfilled<null, IBindBaseEntity>\n ) => {\n state.defaultKeyTerms = normalize(action.payload, keyTermsSchema);\n },\n\n //fetchDigitalResourcesConcepts\n [fetchDigitalResourcesConceptsThunk.fulfilled]: (\n state: IFiltersSelectionsStoreState,\n action: IActionFulfilled<null, string[]>\n ) => {\n state.digitalResourcesConcepts = action.payload;\n },\n\n //fetchKeyTerms\n [fetchKeyTermsThunk.fulfilled]: (state: IFiltersSelectionsStoreState, action: IActionFulfilled<null, string[]>) => {\n state.keyTerms = action.payload;\n },\n\n //fetchLearningObjectives\n [fetchLearningObjectivesThunk.fulfilled]: (\n state: IFiltersSelectionsStoreState,\n action: IActionFulfilled<null, string[]>\n ) => {\n state.learningObjectives = action.payload;\n },\n\n //fetchDigitalResourceTypesThunk\n [fetchDigitalResourceTypesThunk.fulfilled]: (\n state: IFiltersSelectionsStoreState,\n action: IActionFulfilled<null, IBindBaseEntity>\n ) => {\n state.digitalResourceTypes = normalize(action.payload, digitalResourceTypesSchema);\n },\n\n //fetchSessionsByProgramIdsThunk\n [fetchSessionsByProgramIdsThunk.fulfilled]: (\n state: IFiltersSelectionsStoreState,\n action: IActionFulfilled<null, IBindBaseEntity>\n ) => {\n state.sessions = normalize(action.payload, sessionsSchema);\n },\n\n // fetchIntegrationListDropdownThunk\n [fetchIntegrationListDropdownThunk.fulfilled]: (\n state: IFiltersSelectionsStoreState,\n action: IActionFulfilled<null, any>\n ) => {\n if (isObject(action.payload)) {\n const {\n data: {areas, integrationStatuses, integrationTypes},\n } = action.payload;\n\n state.areas = normalize(areas, areasSchema);\n state.integrationTypes = normalize(integrationTypes, integrationTypesSchema);\n state.integrationStatuses = normalize(integrationStatuses, integrationStatusesSchema);\n }\n },\n\n //fetchIntegrationTypesThunk\n [fetchIntegrationTypesThunk.fulfilled]: (\n state: IFiltersSelectionsStoreState,\n action: IActionFulfilled<null, IBindBaseEntityApiResponse>\n ) => {\n if (isObject(action.payload)) {\n const {data} = action.payload;\n\n state.integrationTypes = normalize(data, integrationTypesSchema);\n }\n },\n\n //searchSchoolsThunk\n [searchSchoolsThunk.fulfilled]: (\n state: IFiltersSelectionsStoreState,\n action: IActionFulfilled<null, IBindBaseEntityApiResponse>\n ) => {\n const {data} = action.payload;\n\n state.selection.loadingSchoolNames = false;\n state.schoolNames = normalize(data, integrationSchoolNamesSchema);\n },\n\n [searchSchoolsThunk.pending]: (state: IFiltersSelectionsStoreState) => {\n state.selection.loadingSchoolNames = true;\n },\n [searchSchoolsThunk.rejected]: (state: IFiltersSelectionsStoreState) => {\n state.selection.loadingSchoolNames = false;\n },\n\n //fetchUploadFileTypeOptionsThunk\n [fetchUploadFileTypeOptionsThunk.fulfilled]: (\n state: IFiltersSelectionsStoreState,\n action: IActionFulfilled<null, IGetAllFileTypeOptionsApiResponse>\n ) => {\n if (isObject(action.payload)) {\n const {data} = action.payload;\n state.uploadFileTypes = normalize(data, uploadFileTypesSchema);\n }\n },\n\n //fetchAllFileTypeOptionsThunk\n [fetchAllFileTypeOptionsThunk.fulfilled]: (\n state: IFiltersSelectionsStoreState,\n action: IActionFulfilled<null, IGetAllFileTypeOptionsApiResponse>\n ) => {\n if (isObject(action.payload)) {\n const {data} = action.payload;\n state.fileTypes = normalize(data, fileTypesSchema);\n }\n },\n\n // fetchResourcesThunk\n [fetchResourcesThunk.fulfilled]: (\n state: IFiltersSelectionsStoreState,\n action: IActionFulfilled<null, IGetResourcesApiResponse>\n ) => {\n const {data} = action.payload;\n\n const resourcesData = data.map(({contentItemId, title}) => ({\n id: contentItemId,\n name: title,\n displayText: title,\n }));\n\n const uniqueConcatResources = uniqBy(\n [...values(state.resourcesConcatenatedBase.entities.resourcesConcatenatedBase), ...data],\n 'contentItemId'\n );\n\n state.resourcesConcatenatedBase = normalize(uniqueConcatResources, resourcesConcatenatedBase);\n state.resourcesBase = normalize(data, resourcesBaseSchema);\n state.resources = normalize(resourcesData, resourcesSchema);\n state.selection.loadingResources = false;\n },\n [fetchResourcesThunk.pending]: (state: IFiltersSelectionsStoreState) => {\n state.selection.loadingResources = true;\n },\n [fetchResourcesThunk.rejected]: (state: IFiltersSelectionsStoreState) => {\n state.selection.loadingResources = false;\n },\n\n // fetchInstrumentsThunk\n [fetchInstrumentsThunk.fulfilled]: (\n state: IFiltersSelectionsStoreState,\n action: IActionFulfilled<null, IGetInstrumentsApiResponse>\n ) => {\n const {data} = action.payload;\n\n const instrumentsData = data.map(({id, name}) => ({\n id,\n name,\n displayText: name,\n }));\n\n const uniqueConcatInstruments = uniqBy(\n [...values(state.instrumentsConcatenatedBase.entities.instrumentsConcatenatedBase), ...data],\n 'id'\n );\n\n state.instrumentsConcatenatedBase = normalize(uniqueConcatInstruments, instrumentsConcatenatedBase);\n state.instrumentsBase = normalize(data, instrumentsBaseSchema);\n state.instruments = normalize(instrumentsData, instrumentsSchema);\n state.initialMappedInstruments = instrumentsData;\n state.selection.loadingInstruments = false;\n },\n [fetchInstrumentsThunk.pending]: (state: IFiltersSelectionsStoreState) => {\n state.selection.loadingInstruments = true;\n },\n [fetchInstrumentsThunk.rejected]: (state: IFiltersSelectionsStoreState) => {\n state.selection.loadingInstruments = false;\n },\n\n // fetchSchoolDistrictThunk\n [fetchSchoolDistrictThunk.fulfilled]: (\n state: IFiltersSelectionsStoreState,\n action: IActionFulfilled<null, IBindBaseEntityApiResponse>\n ) => {\n if (isObject(action.payload)) {\n const {data} = action.payload;\n state.schoolDistricts = normalize(data, schoolDistrictSchema);\n }\n\n state.selection.loadingDistricts = false;\n },\n [fetchSchoolDistrictThunk.pending]: (state: IFiltersSelectionsStoreState) => {\n state.selection.loadingDistricts = true;\n },\n [fetchSchoolDistrictThunk.rejected]: (state: IFiltersSelectionsStoreState) => {\n state.selection.loadingDistricts = false;\n },\n\n //fetchContentItemStatusesThunk\n [fetchContentItemStatusesThunk.fulfilled]: (\n state: IFiltersSelectionsStoreState,\n action: IActionFulfilled<null, IBaseFiltersApiResponse>\n ) => {\n if (isObject(action.payload)) {\n const {data} = action.payload;\n state.learningPathStatuses = normalize(data, learningPathStatusesSchema);\n }\n },\n\n //fetchFileStatusesThunk\n [fetchFileStatusesThunk.fulfilled]: (\n state: IFiltersSelectionsStoreState,\n action: IActionFulfilled<null, IBaseFiltersApiResponse>\n ) => {\n if (isObject(action.payload)) {\n const {data} = action.payload;\n state.fileStatuses = normalize(data, fileStatusesSchema);\n }\n },\n};\n","import {IntegrationStatus, IntegrationStatusNum, IntegrationType, IntegrationTypeNum} from 'enums/integrations';\n\nexport const DEFAULT_GOOGLE_DRIVE_FOLDER_LINK = 'http://drive.google.com/drive/folders/';\nexport const DEFAULT_CLIENT_SECRET = '******';\nexport const EXAMPLE_EMAIL = 'ja@example.com';\n\nexport const IntegrationStatusObj = {\n [IntegrationStatusNum.TEST_PENDING]: IntegrationStatus.TEST_PENDING,\n [IntegrationStatusNum.TEST_IN_PROGRESS]: IntegrationStatus.TEST_IN_PROGRESS,\n [IntegrationStatusNum.TEST_SUCCESS]: IntegrationStatus.TEST_SUCCESS,\n [IntegrationStatusNum.TEST_FAILED]: IntegrationStatus.TEST_FAILED,\n [IntegrationStatusNum.PUBLISHED]: IntegrationStatus.PUBLISHED,\n [IntegrationStatusNum.ERROR]: IntegrationStatus.ERROR,\n [IntegrationStatusNum.DELETED]: IntegrationStatus.DELETED,\n};\n\nexport const IntegrationTypeObj = {\n [IntegrationTypeNum.GOOGLE_CLASSROOM]: IntegrationType.GOOGLE_CLASSROOM,\n [IntegrationTypeNum.MICROSOFT_TEAMS]: IntegrationType.MICROSOFT_TEAMS,\n [IntegrationTypeNum.GOOGLE_SITES_SOURCE]: IntegrationType.GOOGLE_SITES_SOURCE,\n [IntegrationTypeNum.GOOGLE_SITES_DESTINATION]: IntegrationType.GOOGLE_SITES_DESTINATION,\n};\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {filtersApi} from 'api';\nimport {IProgramClassesFilterOptions} from 'models';\nimport {prefix} from './config';\nimport {toastNotificationManager} from 'toast-notifications';\n\nexport const fetchProgramClassesFiltersThunk: any = createAsyncThunk<IProgramClassesFilterOptions, number>(\n `${prefix} fetchClassFilters`,\n async (programId: number, {rejectWithValue, dispatch}) => {\n try {\n const {parsedBody} = await filtersApi.getClassFilterOptions(programId);\n return parsedBody;\n } catch (error) {\n dispatch(\n toastNotificationManager.createErrorToastAction(\n error.parsedBody || error.statusText || 'Unknown error occurred.'\n )\n );\n\n return rejectWithValue(error);\n }\n }\n);\n","export const prefix = '[Filters: Programs]';\n","import {IUploadStoreState} from './IUploadStoreState';\nimport {uploadFileThunk, uploadScormThunk, createWebLinkThunk} from './thunks';\n\nexport const uploadExtraReducer = {\n // uploadFileThunk\n [uploadFileThunk.fulfilled]: (state: IUploadStoreState) => {\n state.file.page.loading = false;\n },\n [uploadFileThunk.pending]: (state: IUploadStoreState) => {\n state.file.page.loading = true;\n },\n [uploadFileThunk.rejected]: (state: IUploadStoreState) => {\n state.file.page.loading = false;\n },\n\n // uploadScormThunk\n [uploadScormThunk.fulfilled]: (state: IUploadStoreState) => {\n state.scormPackage.page.loading = false;\n },\n [uploadScormThunk.pending]: (state: IUploadStoreState) => {\n state.scormPackage.page.loading = true;\n },\n [uploadScormThunk.rejected]: (state: IUploadStoreState) => {\n state.scormPackage.page.loading = false;\n },\n\n // createWebLinkThunk\n [createWebLinkThunk.fulfilled]: (state: IUploadStoreState) => {\n state.webLink.page.loading = false;\n },\n [createWebLinkThunk.pending]: (state: IUploadStoreState) => {\n state.webLink.page.loading = true;\n },\n [createWebLinkThunk.rejected]: (state: IUploadStoreState) => {\n state.webLink.page.loading = false;\n },\n};\n","import {createSlice} from '@reduxjs/toolkit';\nimport {uploadReducer} from './upload.reducer';\nimport {uploadInitialState} from './upload.initialState';\nimport {uploadExtraReducer} from './uploadExtra.reducer';\n\nexport const uploadSlice = createSlice({\n name: 'upload',\n initialState: uploadInitialState,\n reducers: uploadReducer,\n extraReducers: uploadExtraReducer,\n});\n","import * as Yup from 'yup';\nimport {FormNameEnum as IntegrationFiltersFormNameEnum} from 'filters-selections';\nimport {FormNameEnum as IntegrationFormNameEnum} from 'enums/form';\nimport {errorMessages} from 'utils/constants';\nimport {AddIntegrationLabelEnum} from '../../enums';\nimport {addIntegrationValidationWarnings, GOOGLE_DRIVE_URL, SUPPORTED_CERTIFICATE_FORMATS} from '../constants';\nimport {emailRegex} from 'utils/common';\n\nconst isChosenIntegrationType =\n IntegrationFormNameEnum.isGoogleClassroom ||\n IntegrationFormNameEnum.isGoogleSitesDestination || // not sure if it is applicable for area, schoolname, schoolDistrict\n IntegrationFormNameEnum.isMicrosoftTeams;\n\nexport const addIntegrationFormBaseValidationSchema = Yup.object().shape({\n [IntegrationFiltersFormNameEnum.integrationName]: Yup.string()\n .nullable()\n .required(errorMessages.requiredWithInputName('an Integration Name')),\n [IntegrationFiltersFormNameEnum.integrationType]: Yup.number()\n .nullable()\n .required(errorMessages.requiredWithFieldName('an Integration Type')),\n [IntegrationFiltersFormNameEnum.area]: Yup.number()\n .nullable()\n .when(isChosenIntegrationType, {\n is: true,\n then: Yup.number().test(\n 'has-selected-field',\n addIntegrationValidationWarnings.hasSelectedAreaOrSchoolNameOrSchoolDistrictField,\n function () {\n const {area, schoolDistrict, schoolName} = this.parent;\n const hasSomeOfFieldsSelected = checkIfHasAField(area, schoolDistrict, schoolName);\n\n return hasSomeOfFieldsSelected;\n }\n ),\n otherwise: Yup.number().nullable(),\n }),\n [IntegrationFiltersFormNameEnum.schoolName]: Yup.number()\n .nullable()\n .when(isChosenIntegrationType, {\n is: true,\n then: Yup.number().test(\n 'has-selected-field',\n addIntegrationValidationWarnings.hasSelectedAreaOrSchoolNameOrSchoolDistrictField,\n function () {\n const {area, schoolDistrict, schoolName} = this.parent;\n const hasSomeOfFieldsSelected = checkIfHasAField(area, schoolDistrict, schoolName);\n\n return hasSomeOfFieldsSelected;\n }\n ),\n otherwise: Yup.number().nullable(),\n }),\n [IntegrationFiltersFormNameEnum.schoolDistrict]: Yup.number()\n .nullable()\n .when(isChosenIntegrationType, {\n is: true,\n then: Yup.number().test(\n 'has-selected-field',\n addIntegrationValidationWarnings.hasSelectedAreaOrSchoolNameOrSchoolDistrictField,\n function () {\n const {area, schoolDistrict, schoolName} = this.parent;\n const hasSomeOfFieldsSelected = checkIfHasAField(area, schoolDistrict, schoolName);\n\n return hasSomeOfFieldsSelected;\n }\n ),\n otherwise: Yup.number().nullable(),\n }),\n [IntegrationFormNameEnum.certificate]: Yup.mixed()\n .nullable()\n .when(\n IntegrationFormNameEnum.isGoogleClassroom ||\n IntegrationFormNameEnum.isGoogleSitesDestination ||\n IntegrationFormNameEnum.isGoogleSitesSource ||\n IntegrationFormNameEnum.isMicrosoftTeams,\n {\n is: true,\n then: Yup.mixed().test(\n 'has-correct-format',\n addIntegrationValidationWarnings.certificateSupportedFormatWarning,\n (value) => (value ? SUPPORTED_CERTIFICATE_FORMATS.includes(value.type) : true)\n ),\n otherwise: Yup.mixed().nullable(),\n }\n ),\n\n // Service email required for Google Sites Source + Google Classroom\n [IntegrationFormNameEnum.email]: Yup.string()\n .nullable()\n .when([IntegrationFormNameEnum.isMicrosoftTeams, IntegrationFormNameEnum.isGoogleSitesDestination], {\n is: (isMicrosoftTeams, isGoogleSitesDestination) => {\n if (isMicrosoftTeams || isGoogleSitesDestination) return true;\n },\n then: Yup.string().nullable(),\n otherwise: Yup.string()\n .nullable()\n .required(errorMessages.requiredWithInputName(`a ${AddIntegrationLabelEnum.ServiceEmailAdress}`))\n .matches(emailRegex, addIntegrationValidationWarnings.validationServiceEmailWarning),\n }),\n\n [IntegrationFormNameEnum.masterClassroomEmailAccount]: Yup.string()\n .nullable()\n .when([IntegrationFormNameEnum.isGoogleClassroom], {\n is: (isGoogleClassroom, isGoogleSitesSource) => {\n if (isGoogleClassroom || isGoogleSitesSource) return true;\n },\n then: Yup.string()\n .nullable()\n .matches(emailRegex, addIntegrationValidationWarnings.validationmMsterClassroomEmailAccountlWarning),\n otherwise: Yup.string().nullable().notRequired(),\n }),\n\n // Google Sites\n [IntegrationFormNameEnum.googleDriveSourceFolderLink]: Yup.string()\n .nullable()\n .url(addIntegrationValidationWarnings.urlWarning(AddIntegrationLabelEnum.GoogleDriveSourceFolderLink))\n .when(IntegrationFormNameEnum.isGoogleSitesSource, {\n is: true,\n then: Yup.string()\n .required(errorMessages.requiredWithInputName(`a ${AddIntegrationLabelEnum.GoogleDriveSourceFolderLink}`))\n .test('has-google-drive-url', addIntegrationValidationWarnings.validationGoogleDriveLinkWarning, (value) =>\n value ? value.includes(GOOGLE_DRIVE_URL) : true\n ),\n otherwise: Yup.string().nullable(),\n }),\n\n [IntegrationFormNameEnum.googleDriveDestinationFolderLink]: Yup.string()\n .nullable()\n .url(addIntegrationValidationWarnings.urlWarning(AddIntegrationLabelEnum.GoogleDriveDestinationFolderLink))\n .when(IntegrationFormNameEnum.isGoogleSitesDestination, {\n is: true,\n then: Yup.string()\n .required(errorMessages.requiredWithInputName(`a ${AddIntegrationLabelEnum.GoogleDriveDestinationFolderLink}`))\n .test('has-google-drive-url', addIntegrationValidationWarnings.validationGoogleDriveLinkWarning, (value) =>\n value ? value.includes(GOOGLE_DRIVE_URL) : true\n ),\n otherwise: Yup.string().nullable(),\n }),\n\n // Microsoft teams\n [IntegrationFormNameEnum.authorityUrl]: Yup.string()\n .url(addIntegrationValidationWarnings.urlWarning(AddIntegrationLabelEnum.AuthorityUrl))\n .nullable()\n .when(IntegrationFormNameEnum.isMicrosoftTeams, {\n is: true,\n then: Yup.string()\n .url(addIntegrationValidationWarnings.urlWarning(AddIntegrationLabelEnum.AuthorityUrl))\n .required(errorMessages.requiredWithInputName(`a ${AddIntegrationLabelEnum.AuthorityUrl}`)),\n otherwise: Yup.string().nullable(),\n }),\n\n [IntegrationFormNameEnum.clientId]: Yup.string()\n .nullable()\n .when(IntegrationFormNameEnum.isMicrosoftTeams, {\n is: true,\n then: Yup.string().required(errorMessages.requiredWithInputName(`a ${AddIntegrationLabelEnum.ClientID}`)),\n otherwise: Yup.string().nullable(),\n }),\n\n [IntegrationFormNameEnum.clientSecret]: Yup.string()\n .nullable()\n .when(IntegrationFormNameEnum.isMicrosoftTeams, {\n is: true,\n then: Yup.string().required(errorMessages.requiredWithInputName(`a ${AddIntegrationLabelEnum.ClientSecret}`)),\n otherwise: Yup.string().nullable(),\n }),\n});\n\nfunction checkIfHasAField(area: number, schoolDistrict: number, schoolName: number) {\n return !!area || !!schoolDistrict || !!schoolName;\n}\n","export * from './reducers';\nexport * from './state';\nexport * from './store';\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle_2160\",\n \"data-name\": \"Rectangle 2160\",\n width: 970,\n height: 240,\n fill: \"none\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_3206\",\n \"data-name\": \"Group 3206\",\n transform: \"translate(-234 -2165)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1271\",\n \"data-name\": \"Path 1271\",\n d: \"M80.271,71c-10.354,0-18.9,3.456-25.39,10.271C40.181,96.7,41.315,123.817,41.37,124.964l0,73.643c0,43.757-39.678,44.261-41.367,44.261v5.91c.473,0,47.276-.573,47.276-50.171V124.822c-.015-.4-1.058-25.912,11.9-39.489,5.333-5.59,12.431-8.424,21.1-8.424,8.773,0,15.811,2.624,20.917,7.8,10.318,10.46,11.272,28.941,11.094,41.931l-.012.845c-.236,16.969-.533,38.087,13.07,48.4,9.535,7.233,24.022,7.84,44.288,1.854l-1.672-5.667c-18.083,5.338-31.222,5.038-39.044-.9-11.224-8.511-10.95-27.973-10.732-43.611l.012-.847c.194-14.051-.923-34.125-12.8-46.161C99.137,74.217,90.685,71,80.271,71Z\",\n transform: \"translate(280 2148.336)\",\n fill: \"#d5dae0\"\n}), /*#__PURE__*/React.createElement(\"g\", {\n id: \"_3\",\n \"data-name\": 3,\n transform: \"translate(447.111 2250.59)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1262\",\n \"data-name\": \"Path 1262\",\n d: \"M166.536,152.218l53.69-13.226,2.214,9.429-45.2,11.655-9.314-3.683Z\",\n transform: \"translate(-87.609 -69.795)\",\n fill: \"#f5f8fa\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1263\",\n \"data-name\": \"Path 1263\",\n d: \"M142.5,152.108l33.341-8.1,3.519,7.961-26.722,5.975-9.439-3.868Z\",\n transform: \"translate(-99.082 -67.401)\",\n fill: \"#f5f8fa\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1264\",\n \"data-name\": \"Path 1264\",\n d: \"M115.77,145.085c1.6-.145,33.551-7.759,33.551-7.759l1.111,4.734-27.382,6.557-6.322-1.9Z\",\n transform: \"translate(-111.844 -70.591)\",\n fill: \"#f5f8fa\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1265\",\n \"data-name\": \"Path 1265\",\n d: \"M181.492,183.054h0a12.493,12.493,0,0,1-12.313-9.661l-12.524-52.83a12.574,12.574,0,0,1,9.321-15.117l45.282-10.738,18.321,77.267L184.3,182.714A12.518,12.518,0,0,1,181.492,183.054Zm26.476-83.007L167,109.761a8.135,8.135,0,0,0-6.032,9.78l12.525,52.828a8.078,8.078,0,0,0,7.962,6.252h0a7.986,7.986,0,0,0,1.82-.22l40.969-9.714Z\",\n transform: \"translate(-92.488 -90.936)\",\n fill: \"#d5dae0\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1266\",\n \"data-name\": \"Path 1266\",\n d: \"M157.688,177.334a15.089,15.089,0,0,1-14.963-11.391L134.534,131.4c-1.9-8.012,3.326-16.138,11.648-18.11l21.384-5.072,1.022,4.314L147.206,117.6c-5.946,1.412-9.7,7.145-8.359,12.776l8.192,34.55c1.333,5.633,7.26,9.067,13.2,7.663l21.381-5.07,1.024,4.313-21.382,5.07A16,16,0,0,1,157.688,177.334Z\",\n transform: \"translate(-103.072 -84.487)\",\n fill: \"#d5dae0\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1267\",\n \"data-name\": \"Path 1267\",\n d: \"M152.673,150.268a2.216,2.216,0,0,1-2.172-1.706l-5.3-22.371a2.216,2.216,0,0,1,4.313-1.022l5.3,22.375a2.217,2.217,0,0,1-1.644,2.665A2.14,2.14,0,0,1,152.673,150.268Z\",\n transform: \"translate(-97.825 -77.209)\",\n fill: \"#d5dae0\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1268\",\n \"data-name\": \"Path 1268\",\n d: \"M157.621,149.1a2.213,2.213,0,0,1-2.173-1.706l-5.305-22.371A2.217,2.217,0,0,1,154.456,124l5.305,22.374a2.214,2.214,0,0,1-1.647,2.665A2.023,2.023,0,0,1,157.621,149.1Z\",\n transform: \"translate(-95.464 -77.77)\",\n fill: \"#d5dae0\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1269\",\n \"data-name\": \"Path 1269\",\n d: \"M151.277,145.119l-25.7,6.087a6.464,6.464,0,0,1-2.983-12.578l25.7-6.085a2.221,2.221,0,0,0-1.025-4.323l-25.7,6.1c-4.553,1.093-9.9,5.6-8.095,13.112,1.718,7.152,7.907,9.336,13.127,8.081l25.686-6.088a2.211,2.211,0,1,0-1.008-4.307Z\",\n transform: \"translate(-113.113 -74.968)\",\n fill: \"#d5dae0\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1270\",\n \"data-name\": \"Path 1270\",\n d: \"M212.014,179.441a2.214,2.214,0,0,1-2.155-1.709L190.429,94.876a2.216,2.216,0,1,1,4.315-1.012l19.429,82.855a2.215,2.215,0,0,1-1.652,2.662A2.139,2.139,0,0,1,212.014,179.441Z\",\n transform: \"translate(-76.231 -92.154)\",\n fill: \"#d5dae0\"\n})), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_3192\",\n \"data-name\": \"Group 3192\",\n transform: \"translate(844.424 2253.947)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1285\",\n \"data-name\": \"Path 1285\",\n d: \"M218.184,114.178a8.428,8.428,0,0,1-3.586-.835,6.406,6.406,0,0,1-2.331-9.956,8.8,8.8,0,0,1,4.983-3.123l24.882-5.837,1.014,4.314-24.881,5.837a4.427,4.427,0,0,0-2.491,1.519,2,2,0,0,0,.764,3.265,4.445,4.445,0,0,0,2.9.251l25.1-5.884,1.013,4.314-25.1,5.884A9.314,9.314,0,0,1,218.184,114.178Z\",\n transform: \"translate(-210.794 -94.427)\",\n fill: \"#d5dae0\"\n})), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_3193\",\n \"data-name\": \"Group 3193\",\n transform: \"translate(853.111 2290.984)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1286\",\n \"data-name\": \"Path 1286\",\n d: \"M224.092,139.244c-3.491-.049-6.532-2.114-7.257-5.228-.883-3.766,1.941-7.657,6.3-8.683l24.885-5.837,1.011,4.317-24.887,5.834c-1.941.457-3.308,1.994-2.99,3.357s2.235,2.138,4.178,1.677l25.092-5.882,1.011,4.314L226.338,139A9.129,9.129,0,0,1,224.092,139.244Z\",\n transform: \"translate(-216.674 -119.496)\",\n fill: \"#d5dae0\"\n})), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1272\",\n \"data-name\": \"Path 1272\",\n d: \"M477.355,39.636c-.473,0-47.276.606-47.276,52.939v77.072c.016.394,1.055,25.794-11.865,39.335-5.338,5.595-12.447,8.431-21.131,8.431-31.417,0-31.816-33.486-32.008-49.58l-.009-.83c-.149-12.893-.4-34.472-13.8-46.112-7.669-6.662-18.6-9.13-32.458-7.332a8.079,8.079,0,0,0-4,1.486l3.277,4.917a2.442,2.442,0,0,1,1.479-.542c12.123-1.569,21.486.425,27.827,5.935,11.4,9.9,11.631,29.818,11.77,41.716l.01.836c.2,16.584.659,55.417,37.916,55.417,10.373,0,18.927-3.457,25.424-10.278,14.666-15.4,13.533-42.4,13.478-43.543l0-76.928c0-46.347,39.683-47.024,41.373-47.03Z\",\n transform: \"translate(683.283 2133.363)\",\n fill: \"#d5dae0\"\n}), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_3186\",\n \"data-name\": \"Group 3186\",\n transform: \"translate(887.158 2292.785)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1279\",\n \"data-name\": \"Path 1279\",\n d: \"M239.719,131.787l46.709-11.072,2.13,9.415L241.63,140.383Z\",\n transform: \"translate(-239.719 -120.715)\",\n fill: \"#f5f8fa\"\n})), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_3187\",\n \"data-name\": \"Group 3187\",\n transform: \"translate(934.314 2281.926)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1280\",\n \"data-name\": \"Path 1280\",\n d: \"M271.638,121.563l35.2-8.2-5.226,9.222L273.6,129.654Z\",\n transform: \"translate(-271.638 -113.365)\",\n fill: \"#f5f8fa\"\n})), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_3191\",\n \"data-name\": \"Group 3191\",\n transform: \"translate(966.172 2254.775)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1284\",\n \"data-name\": \"Path 1284\",\n d: \"M293.2,102.788l33.277-7.8-2.772,6.776-29.025,6.619Z\",\n transform: \"translate(-293.201 -94.987)\",\n fill: \"#f5f8fa\"\n})), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_3195\",\n \"data-name\": \"Group 3195\",\n transform: \"translate(871.053 2232.207)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1288\",\n \"data-name\": \"Path 1288\",\n d: \"M245.473,162.889,228.818,91.871l51.839-12.159,16.659,71.02ZM234.145,95.174l14.632,62.39,43.211-10.133L277.359,85.039Z\",\n transform: \"translate(-228.818 -79.712)\",\n fill: \"#d5dae0\"\n})), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_3196\",\n \"data-name\": \"Group 3196\",\n transform: \"translate(923.158 2230.918)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1289\",\n \"data-name\": \"Path 1289\",\n d: \"M279.012,147.933,278,143.621,299.4,138.6a11.3,11.3,0,0,0,6.951-4.824,10.161,10.161,0,0,0,1.438-7.931l-8.106-34.568a10.186,10.186,0,0,0-4.813-6.464,11.323,11.323,0,0,0-8.374-1.229L265.1,88.6l-1.009-4.314,21.393-5.019A15.751,15.751,0,0,1,297.116,81,14.565,14.565,0,0,1,304,90.267l8.1,34.569a14.566,14.566,0,0,1-2.039,11.357,15.71,15.71,0,0,1-9.656,6.724Z\",\n transform: \"translate(-264.086 -78.839)\",\n fill: \"#d5dae0\"\n})), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_3197\",\n \"data-name\": \"Group 3197\",\n transform: \"translate(960.975 2243.094)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1290\",\n \"data-name\": \"Path 1290\",\n d: \"M295.83,114.674a2.217,2.217,0,0,1-.474-4.375l25.712-6.028a6.464,6.464,0,1,0-2.952-12.587L292.4,97.715a2.216,2.216,0,0,1-1.013-4.314l25.71-6.031a10.895,10.895,0,1,1,4.977,21.214l-25.709,6.029A2.032,2.032,0,0,1,295.83,114.674Z\",\n transform: \"translate(-289.683 -87.081)\",\n fill: \"#d5dae0\"\n})), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_3198\",\n \"data-name\": \"Group 3198\",\n transform: \"translate(938.07 2251.313)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1291\",\n \"data-name\": \"Path 1291\",\n d: \"M281.613,119.462a2.221,2.221,0,0,1-2.127-1.711l-5.246-22.384a2.213,2.213,0,1,1,4.31-1.012l5.252,22.384a2.213,2.213,0,0,1-1.652,2.662A2.238,2.238,0,0,1,281.613,119.462Z\",\n transform: \"translate(-274.18 -92.644)\",\n fill: \"#d5dae0\"\n})), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_3199\",\n \"data-name\": \"Group 3199\",\n transform: \"translate(945.379 2249.598)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1292\",\n \"data-name\": \"Path 1292\",\n d: \"M286.563,118.3a2.218,2.218,0,0,1-2.126-1.711l-5.251-22.382A2.214,2.214,0,1,1,283.5,93.2l5.255,22.384a2.22,2.22,0,0,1-1.653,2.664A2.384,2.384,0,0,1,286.563,118.3Z\",\n transform: \"translate(-279.127 -91.483)\",\n fill: \"#d5dae0\"\n})), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_3200\",\n \"data-name\": \"Group 3200\",\n transform: \"translate(917.893 2225.457)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1293\",\n \"data-name\": \"Path 1293\",\n d: \"M282.167,162.433a2.217,2.217,0,0,1-2.156-1.712L260.581,77.864a2.215,2.215,0,1,1,4.314-1.011l19.431,82.855a2.215,2.215,0,0,1-1.65,2.664A2.241,2.241,0,0,1,282.167,162.433Z\",\n transform: \"translate(-260.522 -75.143)\",\n fill: \"#d5dae0\"\n})), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_3205\",\n \"data-name\": \"Group 3205\",\n transform: \"translate(64.756 2000)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1321\",\n \"data-name\": \"Path 1321\",\n d: \"M567.369,979.525a2.5,2.5,0,0,1-.961-4.816l10.406-4.309a2.5,2.5,0,0,1,1.915,4.625l-10.405,4.309A2.491,2.491,0,0,1,567.369,979.525Z\",\n transform: \"translate(47.349 -671.616)\",\n fill: \"#fd8204\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1322\",\n \"data-name\": \"Path 1322\",\n d: \"M375.387,1059.062a2.5,2.5,0,0,1-.961-4.815l10.405-4.311a2.5,2.5,0,0,1,1.916,4.625l-10.405,4.309A2.5,2.5,0,0,1,375.387,1059.062Z\",\n transform: \"translate(217.365 -742.054)\",\n fill: \"#fd8204\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1323\",\n \"data-name\": \"Path 1323\",\n d: \"M1294.921,678.154a2.5,2.5,0,0,1-.959-4.815l10.405-4.309a2.5,2.5,0,0,1,1.916,4.624l-10.405,4.31A2.522,2.522,0,0,1,1294.921,678.154Z\",\n transform: \"translate(-596.958 -404.728)\",\n fill: \"#fd8204\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1324\",\n \"data-name\": \"Path 1324\",\n d: \"M1102.927,757.688a2.5,2.5,0,0,1-.961-4.815l10.406-4.31a2.5,2.5,0,0,1,1.916,4.626l-10.406,4.309A2.493,2.493,0,0,1,1102.927,757.688Z\",\n transform: \"translate(-426.933 -475.162)\",\n fill: \"#fd8204\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1325\",\n \"data-name\": \"Path 1325\",\n d: \"M577.772,757.673a2.482,2.482,0,0,1-.957-.192l-10.406-4.309a2.5,2.5,0,1,1,1.916-4.624l10.405,4.309a2.5,2.5,0,0,1-.958,4.816Z\",\n transform: \"translate(47.349 -475.148)\",\n fill: \"#fd8204\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1326\",\n \"data-name\": \"Path 1326\",\n d: \"M385.777,678.144a2.5,2.5,0,0,1-.957-.192l-10.406-4.31a2.5,2.5,0,0,1,1.915-4.624l10.406,4.31a2.5,2.5,0,0,1-.958,4.816Z\",\n transform: \"translate(217.375 -404.719)\",\n fill: \"#fd8204\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1327\",\n \"data-name\": \"Path 1327\",\n d: \"M1305.321,1059.047a2.529,2.529,0,0,1-.957-.191l-10.4-4.31a2.5,2.5,0,0,1,1.916-4.625l10.4,4.31a2.5,2.5,0,0,1-.959,4.815Z\",\n transform: \"translate(-596.957 -742.041)\",\n fill: \"#fd8204\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1328\",\n \"data-name\": \"Path 1328\",\n d: \"M1113.34,979.525a2.5,2.5,0,0,1-.958-.192l-10.405-4.309a2.5,2.5,0,0,1,1.915-4.625l10.406,4.309a2.5,2.5,0,0,1-.958,4.816Z\",\n transform: \"translate(-426.94 -671.616)\",\n fill: \"#fd8204\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1329\",\n \"data-name\": \"Path 1329\",\n d: \"M977.012,1115.853a2.5,2.5,0,0,1-2.314-1.545l-4.312-10.405a2.5,2.5,0,1,1,4.624-1.916l4.31,10.405a2.5,2.5,0,0,1-2.31,3.461Z\",\n transform: \"translate(-311.607 -786.951)\",\n fill: \"#fd8204\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1330\",\n \"data-name\": \"Path 1330\",\n d: \"M1056.549,1307.832a2.506,2.506,0,0,1-2.313-1.545l-4.311-10.405a2.5,2.5,0,0,1,4.625-1.915l4.31,10.4a2.5,2.5,0,0,1-2.311,3.461Z\",\n transform: \"translate(-382.045 -956.963)\",\n fill: \"#fd8204\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1331\",\n \"data-name\": \"Path 1331\",\n d: \"M675.65,388.286a2.5,2.5,0,0,1-2.313-1.546l-4.31-10.405a2.5,2.5,0,0,1,4.626-1.915l4.31,10.405a2.5,2.5,0,0,1-2.312,3.461Z\",\n transform: \"translate(-44.728 -142.63)\",\n fill: \"#fd8204\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1332\",\n \"data-name\": \"Path 1332\",\n d: \"M755.181,580.276a2.505,2.505,0,0,1-2.315-1.546l-4.309-10.405a2.5,2.5,0,1,1,4.624-1.915l4.312,10.406a2.5,2.5,0,0,1-2.312,3.46Z\",\n transform: \"translate(-115.159 -312.652)\",\n fill: \"#fd8204\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1331-2\",\n \"data-name\": \"Path 1331\",\n d: \"M675.65,388.286a2.5,2.5,0,0,1-2.313-1.546l-4.31-10.405a2.5,2.5,0,0,1,4.626-1.915l4.31,10.405a2.5,2.5,0,0,1-2.312,3.461Z\",\n transform: \"translate(1031.346 -382.544) rotate(90)\",\n fill: \"#fd8204\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1332-2\",\n \"data-name\": \"Path 1332\",\n d: \"M755.181,580.276a2.505,2.505,0,0,1-2.315-1.546l-4.309-10.405a2.5,2.5,0,1,1,4.624-1.915l4.312,10.406a2.5,2.5,0,0,1-2.312,3.46Z\",\n transform: \"translate(-102.159 -281.652)\",\n fill: \"#fd8204\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1333\",\n \"data-name\": \"Path 1333\",\n d: \"M750.86,1115.855a2.506,2.506,0,0,1-2.311-3.462l4.31-10.406a2.5,2.5,0,0,1,4.625,1.916l-4.309,10.406A2.509,2.509,0,0,1,750.86,1115.855Z\",\n transform: \"translate(-115.151 -786.951)\",\n fill: \"#fd8204\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1334\",\n \"data-name\": \"Path 1334\",\n d: \"M671.335,1307.835a2.506,2.506,0,0,1-2.311-3.462l4.309-10.405a2.5,2.5,0,0,1,4.626,1.915l-4.311,10.406A2.507,2.507,0,0,1,671.335,1307.835Z\",\n transform: \"translate(-44.726 -956.965)\",\n fill: \"#fd8204\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1335\",\n \"data-name\": \"Path 1335\",\n d: \"M1052.214,388.286a2.506,2.506,0,0,1-2.311-3.462l4.311-10.405a2.5,2.5,0,0,1,4.625,1.916l-4.31,10.405A2.5,2.5,0,0,1,1052.214,388.286Z\",\n transform: \"translate(-382.024 -142.628)\",\n fill: \"#fd8204\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1336\",\n \"data-name\": \"Path 1336\",\n d: \"M972.7,580.267a2.5,2.5,0,0,1-2.312-3.461L974.7,566.4a2.5,2.5,0,1,1,4.623,1.916l-4.31,10.405A2.5,2.5,0,0,1,972.7,580.267Z\",\n transform: \"translate(-311.606 -312.643)\",\n fill: \"#fd8204\"\n})), /*#__PURE__*/React.createElement(\"circle\", {\n id: \"Ellipse_49\",\n \"data-name\": \"Ellipse 49\",\n cx: 3,\n cy: 3,\n r: 3,\n transform: \"translate(277 2391)\",\n fill: \"#d5dae0\"\n}));\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"circle\", {\n id: \"Ellipse_50\",\n \"data-name\": \"Ellipse 50\",\n cx: 3,\n cy: 3,\n r: 3,\n transform: \"translate(915 26)\",\n fill: \"#d5dae0\"\n});\n\nvar SvgIllustrationError404 = function SvgIllustrationError404(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Illustration_-_Error_404\",\n \"data-name\": \"Illustration - Error 404\",\n width: 970,\n height: 240,\n viewBox: \"0 0 970 240\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2, _ref3, _ref4);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIllustrationError404, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/Illustration_Error_404.140ddecc.svg\";\nexport { ForwardRef as ReactComponent };","import React, {Fragment, useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Row, Text} from 'components-lib';\nimport {QuestionAnswersTypeEnum} from 'enums';\nimport {useEntityCard} from 'hooks';\nimport {IAnswer, IItemColumn} from 'models';\nimport {getAnswersComponentMap} from 'admin/library/utils';\n\ninterface ICardAnswersProps {\n type: QuestionAnswersTypeEnum;\n choices?: IAnswer[];\n columns?: IItemColumn[];\n rows?: IAnswer[];\n questionId: number;\n html?: string;\n}\n\nexport function EntityCardAnswers({type, choices, columns, rows, questionId, html}: ICardAnswersProps) {\n const classes = useStyles({type});\n const answersComponentMap = getAnswersComponentMap();\n const AnswersComponent: any = useMemo(() => answersComponentMap[type], [type, answersComponentMap]);\n\n useEntityCard(answersComponentMap, type, questionId);\n\n const answersContent = useMemo(() => {\n if (!answersComponentMap[type]) {\n const error = `Unknown question answer stack: ${type}!`;\n return <Fragment>{error && <Text.Error>{error}</Text.Error>}</Fragment>;\n }\n\n return (\n <AnswersComponent\n answers={choices}\n columns={columns}\n rows={rows}\n questionId={questionId}\n type={type}\n html={html}\n />\n );\n }, [AnswersComponent, choices, columns, rows, questionId, type, html, answersComponentMap]);\n\n return (\n <Row justify=\"flex-start\" classes={{root: classes.answers}}>\n <Fragment>{answersContent}</Fragment>\n </Row>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n answers: ({type}: {type: QuestionAnswersTypeEnum}) => ({\n marginLeft: type === QuestionAnswersTypeEnum.matrix ? 0 : theme.spacing(4),\n }),\n}));\n","import {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport {unwrapResult} from '@reduxjs/toolkit';\nimport {useAppDispatch, useNavigate} from 'hooks';\nimport {pages} from 'paths';\nimport {\n deleteLearningPathThunk,\n exportLearningPathThunk,\n fetchLearningPathByIdThunk,\n learningPathDetailsSelector,\n learningPathExportingSelector,\n loadingLearningPathSelector,\n publishLearningPathThunk,\n updateLearningPathThunk,\n} from '../store';\nimport {ILearningPathDetails} from 'models/resources/learning-paths';\nimport {filtersFutureYearsEntitiesCollectionSelector, filtersFutureYearsEntitiesSelector} from 'filters-selections';\nimport {ILearningPathViewEditFormBaseValues} from '../components/EditLearningPathDetailsForm/config';\nimport {\n builderSessionItemsCollectionSelector,\n useLearningPathBuilderItemsEntities,\n} from 'admin/resources/learning-paths/views/session-builder';\nimport {mapCreateUpdateLearningPathPayload} from 'admin/resources/learning-paths/utils/forms';\nimport {createLinkForDownload} from 'utils';\n\nexport const useEditLearningPath = () => {\n const dispatch = useAppDispatch();\n const {push} = useNavigate();\n const {builderSessionItemsCollection, hasSessions} = useLearningPathBuilderItemsEntities();\n\n const loading = useSelector(loadingLearningPathSelector) as boolean;\n const learningPathDetails = useSelector(learningPathDetailsSelector) as ILearningPathDetails;\n const sessions = useSelector(builderSessionItemsCollectionSelector);\n const futureProgramYears = useSelector(filtersFutureYearsEntitiesSelector);\n const futureProgramYearsCollection = useSelector(filtersFutureYearsEntitiesCollectionSelector);\n const exporting = useSelector(learningPathExportingSelector);\n\n const fetchLearningPathById: (id: string) => void = useCallback(\n (id) => {\n return dispatch(fetchLearningPathByIdThunk(id));\n },\n [dispatch]\n );\n\n const redirectToViewListOLearningPaths: () => void = useCallback(\n () => push(`${pages.adminPortal.learningPaths.root}`),\n [push]\n );\n\n const updateLearningPath = useCallback(\n (formValues: ILearningPathViewEditFormBaseValues) => {\n const futureProgramYearObj = futureProgramYears[formValues.futureProgramYear];\n const payload = mapCreateUpdateLearningPathPayload(\n {\n ...formValues,\n futureProgramYear: futureProgramYearObj ? futureProgramYearObj.displayText : null,\n },\n builderSessionItemsCollection,\n true\n );\n\n return dispatch(updateLearningPathThunk(payload)).then(unwrapResult);\n },\n [dispatch, builderSessionItemsCollection, futureProgramYears]\n );\n\n const deleteLearningPath: (contentItemId: string) => void = useCallback(\n (contentItemId) => {\n return dispatch(deleteLearningPathThunk(contentItemId)).then(() => redirectToViewListOLearningPaths());\n },\n [dispatch, redirectToViewListOLearningPaths]\n );\n\n const publishLearningPath: (contentItemId: string) => void = useCallback(\n (contentItemId) => {\n return dispatch(publishLearningPathThunk(contentItemId)).then(() => redirectToViewListOLearningPaths());\n },\n [dispatch, redirectToViewListOLearningPaths]\n );\n\n const fetchExportLearningPath: (id: string) => void = useCallback((id) => {\n return dispatch(exportLearningPathThunk(id))\n .then(unwrapResult)\n .then(({blob, fileName}) => {\n const objectUrl = window.URL.createObjectURL(blob);\n createLinkForDownload(objectUrl, fileName);\n // Freeing resources in memory\n window.URL.revokeObjectURL(objectUrl);\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return {\n loading,\n exporting,\n sessions,\n learningPathDetails,\n futureProgramYears,\n futureProgramYearsCollection,\n hasSessions,\n\n publishLearningPath,\n updateLearningPath,\n deleteLearningPath,\n fetchLearningPathById,\n redirectToViewListOLearningPaths,\n fetchExportLearningPath,\n };\n};\n","import {useParams} from 'react-router-dom';\nimport {ILearningPathIdParam} from 'models/resources';\n\nexport const useLearningPathIdParam = () => {\n const urlParams = useParams<ILearningPathIdParam>();\n\n return {learningPathId: urlParams?.id};\n};\n","import React, {Fragment} from 'react';\nimport {LearningPathDetailsFirstCol, LearningPathDetailsSecondCol} from 'admin/resources/learning-paths/components';\n\nexport const DetailsFields = () => {\n return (\n <Fragment>\n <LearningPathDetailsFirstCol />\n <LearningPathDetailsSecondCol />\n </Fragment>\n );\n};\n","import React, {Dispatch, FC, Fragment, SetStateAction, useEffect} from 'react';\nimport {useFormikContext} from 'formik';\nimport {DetailsFields, UserDetails} from '..';\nimport {ILearningPathViewEditFormBaseValues} from '../EditLearningPathDetailsForm/config';\nimport {LearningPathDetails} from 'admin/resources/learning-paths/components';\nimport {Divider} from 'components-lib';\nimport {useLearningPathBuilderItemsEntities} from 'admin/resources/learning-paths/views/session-builder';\n\ninterface IEditLearningPathDetailsProps {\n isDirty: boolean;\n setIsDirtyCallback: Dispatch<SetStateAction<boolean>>;\n}\n\nexport const EditLearningPathDetails: FC<IEditLearningPathDetailsProps> = ({isDirty, setIsDirtyCallback}) => {\n const {dirty, isValid} = useFormikContext<ILearningPathViewEditFormBaseValues>();\n const {isSomeOfSessionsWithEmptyName} = useLearningPathBuilderItemsEntities();\n\n useEffect(() => {\n if ((dirty && isValid && !isDirty) || isSomeOfSessionsWithEmptyName) {\n setIsDirtyCallback(true);\n } else if (!isValid) {\n setIsDirtyCallback(false);\n }\n }, [isDirty, setIsDirtyCallback, dirty, isValid, isSomeOfSessionsWithEmptyName]);\n\n return (\n <Fragment>\n <LearningPathDetails withSubtitle={false}>\n <UserDetails />\n <Divider.Horizontal fullWidth />\n <DetailsFields />\n </LearningPathDetails>\n </Fragment>\n );\n};\n","import * as Yup from 'yup';\nimport {FormNameEnum} from 'enums/form';\nimport {ILearningPathDetailsFormBaseValues, ILearningPathValidationsShape} from 'admin/resources/learning-paths/utils';\nimport {ILearningPathSessionItem} from 'models/resources/learning-paths';\nimport {isEmpty} from 'utils/functions';\nimport {getIsBeforeDate} from 'utils/common';\n\nexport interface ILearningPathViewEditFormBaseValues extends ILearningPathDetailsFormBaseValues {\n [FormNameEnum.id]: string;\n [FormNameEnum.sessions]: ILearningPathSessionItem[];\n}\n\nexport const learningPathViewEditFormBaseValidationSchema = Yup.object().shape({\n ...ILearningPathValidationsShape,\n [FormNameEnum.id]: Yup.string(),\n [FormNameEnum.sessions]: Yup.mixed().test('has-empty-session', 'Sessions should not be empty!', (value) => {\n const hasEmptySession = value.find((session) => isEmpty(session.title));\n\n return !hasEmptySession;\n }),\n [FormNameEnum.expirationDate]: Yup.date()\n .nullable()\n .typeError('Expected date format: (mm/dd/yyyy)')\n .test('is-date-earlier-than-now', 'The selected date should be in the future.', function () {\n const {expirationDate} = this.parent;\n\n // If the datepicker is cleaned up, then validation is true\n if (expirationDate === null) {\n return true;\n }\n\n function isBefore(expirationDate: Date): boolean {\n const dateIsBeforeToday = getIsBeforeDate(expirationDate);\n\n if (dateIsBeforeToday) {\n return false;\n }\n return true;\n }\n\n if (expirationDate instanceof Date) {\n return isBefore(expirationDate);\n }\n }),\n});\n","import React, {FC, Dispatch, SetStateAction, useCallback, useMemo, MutableRefObject} from 'react';\nimport {batch} from 'react-redux';\nimport {Form} from 'forms';\nimport {FormikHelpers, FormikProps, FormikValues} from 'formik';\nimport {IWithChildren} from 'models/common';\nimport {learningPathViewEditFormBaseValidationSchema, ILearningPathViewEditFormBaseValues} from './config';\nimport {useEditLearningPath} from '../../hooks';\nimport {mapEditLearningPathPayload} from '../../utils';\n\ninterface IEditLearningPathDetailsFormProps extends IWithChildren {\n setIsDirtyCallback: Dispatch<SetStateAction<boolean>>;\n formikFormRef: MutableRefObject<FormikProps<FormikValues>>;\n}\n\nexport const EditLearningPathDetailsForm: FC<IEditLearningPathDetailsFormProps> = ({\n children,\n formikFormRef,\n setIsDirtyCallback,\n}) => {\n const {learningPathDetails, futureProgramYearsCollection, updateLearningPath, sessions} = useEditLearningPath();\n\n const submitHandler = useCallback(\n (formValues: ILearningPathViewEditFormBaseValues, {resetForm, setSubmitting}: FormikHelpers<any>) => {\n setIsDirtyCallback(false);\n batch(() => {\n updateLearningPath(formValues);\n resetForm();\n setSubmitting(false);\n });\n },\n [updateLearningPath, setIsDirtyCallback]\n );\n\n const initialValues = useMemo(() => {\n const initialFormVals =\n learningPathDetails &&\n futureProgramYearsCollection &&\n mapEditLearningPathPayload(learningPathDetails, futureProgramYearsCollection, sessions);\n return initialFormVals;\n }, [learningPathDetails, futureProgramYearsCollection, sessions]);\n\n return (\n <Form.Form<ILearningPathViewEditFormBaseValues>\n initialValues={initialValues}\n validationSchema={learningPathViewEditFormBaseValidationSchema}\n submitHandler={submitHandler}\n formikRef={formikFormRef}\n >\n {children}\n </Form.Form>\n );\n};\n","import React, {FC, Fragment, useCallback, useMemo} from 'react';\nimport {Prompt} from 'react-router-dom';\nimport {useBeforeunload} from 'react-beforeunload';\nimport {LearningPathFooter} from 'admin/resources/learning-paths/components';\nimport {ModalDelete} from 'admin/components';\nimport {learningPathMessages} from 'admin/resources/learning-paths/utils';\nimport {useLearningPathBuilderItemsEntities} from 'admin/resources/learning-paths/views/session-builder';\nimport {useModal} from 'hooks';\nimport {USAAndSuperAdminRoles, usePermissions} from 'permissions';\nimport {useEditLearningPath, useLearningPathIdParam} from '../../hooks';\nimport {EntityStatusEnum} from 'enums';\n\ninterface IEditLearningPathFooterProps {\n isDirty: boolean;\n submitFormCallback: () => void;\n}\n\nexport const EditLearningPathFooter: FC<IEditLearningPathFooterProps> = ({isDirty, submitFormCallback}) => {\n const {isSomeOfSessionsWithEmptyName} = useLearningPathBuilderItemsEntities();\n const {learningPathId} = useLearningPathIdParam();\n const {deleteLearningPath, publishLearningPath, loading, learningPathDetails} = useEditLearningPath();\n const {hasPermission} = usePermissions();\n const {isOpen: isModalEditLPOpen, setIsOpen: setIsModalEditLPOpen} = useModal();\n const {isOpen: isModalDeleteLPOpen, setIsOpen: setIsModalDeleteLPOpen} = useModal();\n\n useBeforeunload(() => (isDirty || isSomeOfSessionsWithEmptyName) && learningPathMessages.warning);\n\n const shouldRenderButton = hasPermission(USAAndSuperAdminRoles);\n const canPublishLearningPath = learningPathDetails?.details?.status === EntityStatusEnum.published;\n\n const shouldDisablePublish = learningPathDetails?.details ? canPublishLearningPath : true;\n\n const openModalClickHandler = useCallback(() => setIsModalEditLPOpen(true), [setIsModalEditLPOpen]);\n const openDeleteModalClickHandler = useCallback(() => setIsModalDeleteLPOpen(true), [setIsModalDeleteLPOpen]);\n\n const publishClickHandler = useCallback(() => learningPathId && publishLearningPath(learningPathId), [\n learningPathId,\n publishLearningPath,\n ]);\n\n const confirmHandler = useCallback(() => {\n if (isModalEditLPOpen) {\n return;\n }\n\n if (isModalDeleteLPOpen) {\n return learningPathId && deleteLearningPath(learningPathId);\n }\n }, [isModalEditLPOpen, isModalDeleteLPOpen, learningPathId, deleteLearningPath]);\n\n const modalDelete = useMemo(() => {\n return (\n <ModalDelete\n loading={false}\n title=\"Delete Learning Path\"\n text=\"Are you sure you want to delete this learning path?\"\n cancelButtonText=\"No\"\n confirmButtonText=\"Yes\"\n isOpen={isModalDeleteLPOpen}\n setIsOpen={setIsModalDeleteLPOpen}\n confirmHandler={confirmHandler}\n />\n );\n }, [isModalDeleteLPOpen, setIsModalDeleteLPOpen, confirmHandler]);\n\n return (\n <Fragment>\n <LearningPathFooter\n loading={loading}\n withSaveButton={true}\n withSubmitButton={false}\n withCancelButton={false}\n withDeleteButton={shouldRenderButton}\n withPublishButton={shouldRenderButton}\n disablePublish={shouldDisablePublish}\n disableSave={!isDirty || isSomeOfSessionsWithEmptyName}\n isSomeOfSessionsWithEmptyName={isSomeOfSessionsWithEmptyName}\n openModalClickHandler={openModalClickHandler}\n publishClickHandler={publishClickHandler}\n deleteClickHandler={openDeleteModalClickHandler}\n saveClickHandler={submitFormCallback}\n />\n {modalDelete}\n <Prompt when={isDirty} message={learningPathMessages.warning} />\n </Fragment>\n );\n};\n","import React, {useMemo} from 'react';\nimport {useEditLearningPath} from '../..';\nimport {Status} from 'admin/library/components';\nimport {ResourceHeader} from 'admin';\n\nexport const EditLearningPathHeader = () => {\n const {redirectToViewListOLearningPaths, learningPathDetails} = useEditLearningPath();\n\n const extraHeading = useMemo(() => <Status status={learningPathDetails?.details?.status} />, [\n learningPathDetails.details,\n ]);\n\n return (\n <ResourceHeader\n heading=\"Learning Path\"\n extraHeading={extraHeading}\n subHeading={learningPathDetails?.title}\n withBackButton\n withSubHeading\n backButtonClickHandler={redirectToViewListOLearningPaths}\n />\n );\n};\n","import React from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Container} from 'components-lib';\nimport {DetailsKSAItem} from '..';\nimport {useEditLearningPath} from '../../hooks';\nimport {LearningPathLabelEnum} from 'admin/resources/learning-paths';\n\nexport const KnowledgeSkillAndAbilitiesDetails = () => {\n const classes = useStyles();\n const {learningPathDetails} = useEditLearningPath();\n\n return (\n <Container disableGutters classes={{root: classes.ksasContainer}}>\n <DetailsKSAItem heading={LearningPathLabelEnum.Competencies} list={learningPathDetails?.metadata?.competencies} />\n <DetailsKSAItem\n heading={LearningPathLabelEnum.KnowledgeSkillsAndAbilities}\n list={learningPathDetails?.metadata?.ksAs}\n />\n </Container>\n );\n};\n\nexport const useStyles = makeStyles((theme) => ({\n ksasContainer: {\n padding: `${theme.spacing(3)}px ${theme.spacing(2)}px`,\n borderBottom: `1px solid ${theme.palette.grey[200]}`,\n },\n}));\n","import React, {FC} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Accordion, Bullet, Row, Text} from 'components-lib';\nimport {NoResources} from 'admin/resources/learning-paths/components';\ninterface IDetailsKSAItemProps {\n heading: string;\n list: string[];\n}\n\nexport const DetailsKSAItem: FC<IDetailsKSAItemProps> = ({heading, list}) => {\n const classes = useStyles();\n\n return (\n <Accordion\n heading={\n <Text.Heading as=\"h4\" classes={{root: classes.heading}}>\n {heading}\n </Text.Heading>\n }\n withGrayBackground\n withBorder\n >\n <Row justify=\"flex-start\" classes={{root: classes.row}}>\n {list?.length ? (\n list.map((item, idx: number) => (\n <Row justify=\"flex-start\" classes={{root: classes.container}} key={idx}>\n <Bullet />\n <Text.Paragraph variant=\"body1\">{item}</Text.Paragraph>\n </Row>\n ))\n ) : (\n <NoResources text={`No ${heading}`} />\n )}\n </Row>\n </Accordion>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n heading: {\n paddingLeft: theme.spacing(2),\n color: theme.palette.text.primary,\n fontWeight: 700,\n },\n row: {\n width: '100%',\n margin: theme.spacing(0, 2),\n },\n container: {\n display: 'flex',\n width: '100%',\n },\n}));\n","import React, {useCallback} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {CircularProgress, Icon, Row, Tooltip, Wrapper} from 'components-lib';\nimport {useEditLearningPath, useLearningPathIdParam} from '../../hooks';\nimport {learningPathEditMessages} from '../../utils';\n\nexport const EditLearningPathDetailsHeaderActions = () => {\n const classes = useStyles();\n const {exporting, fetchExportLearningPath} = useEditLearningPath();\n const {learningPathId} = useLearningPathIdParam();\n\n const exportClickHandler = useCallback(() => fetchExportLearningPath(learningPathId), [\n fetchExportLearningPath,\n learningPathId,\n ]);\n\n return (\n <Row justify=\"flex-end\">\n <Tooltip title={learningPathEditMessages.clickToExport}>\n <Icon.Button disabled={exporting} clickHandler={exportClickHandler}>\n {exporting ? (\n <Wrapper className={classes.progress}>\n <CircularProgress size={20} />\n </Wrapper>\n ) : (\n <Icon.ExportXlsIcon />\n )}\n </Icon.Button>\n </Tooltip>\n </Row>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n progress: {\n padding: theme.spacing(0, 1),\n },\n}));\n","import React from 'react';\nimport {Column, Container, Row} from 'components-lib';\nimport {EditLearningPathDetailsHeaderActions} from '../EditLearningPathDetailsHeaderActions/EditLearningPathDetailsHeaderActions';\nimport {Subtitle} from 'admin/components';\nimport {USAAndSuperAdminRoles, usePermissions} from 'permissions';\n\nexport const EditLearningPathDetailsHeader = () => {\n const {hasPermission} = usePermissions();\n const hasSuperAndUSAAdminPermission = hasPermission(USAAndSuperAdminRoles);\n\n return (\n <Row justify=\"flex-start\">\n <Column sm={12} md={12} lg={12} xl={8}>\n <Container disableGutters>\n <Row justify=\"space-between\">\n <Column sm={9} md={9} lg={3} xl={2}>\n <Subtitle withColor={false} withMargin={false} as=\"h3\" color=\"textPrimary\" title=\"Details\" />\n </Column>\n <Column sm={3} md={3} lg={3} xl={2}>\n {hasSuperAndUSAAdminPermission && <EditLearningPathDetailsHeaderActions />}\n </Column>\n </Row>\n </Container>\n </Column>\n </Row>\n );\n};\n","import React, {Fragment, useMemo} from 'react';\nimport {ResourceUserDetails} from 'admin/resources';\nimport {EditLearningPathDetailsHeader} from '../EditLearningPathDetailsHeader/EditLearningPathDetailsHeader';\nimport {useEditLearningPath} from '../../hooks';\nimport {getUserDetails} from '../../utils';\nimport {IBoxListItem} from 'models/resources';\n\nexport const UserDetails = () => {\n const {learningPathDetails} = useEditLearningPath();\n const {createdBy, updatedBy, createdUtc, modifiedUtc, createdByInitials, updatedByInitials} = getUserDetails(\n learningPathDetails?.details\n );\n\n const boxList = useMemo(\n (): IBoxListItem[] => [\n {\n size: 'small',\n label: 'Created By',\n content: createdBy,\n userInitials: createdByInitials,\n },\n {\n label: 'Date Created',\n content: createdUtc,\n },\n {\n size: 'small',\n label: 'Updated by',\n content: updatedBy,\n userInitials: updatedByInitials,\n },\n {\n label: 'Date Last Updated',\n content: modifiedUtc,\n },\n ],\n [createdBy, createdByInitials, createdUtc, updatedBy, updatedByInitials, modifiedUtc]\n );\n\n return (\n <Fragment>\n <EditLearningPathDetailsHeader />\n {learningPathDetails && <ResourceUserDetails list={boxList} />}\n </Fragment>\n );\n};\n","import React, {useCallback, useContext} from 'react';\nimport {PageLayoutHorizontalRows} from 'layout/components';\nimport {\n EditLearningPathDetails,\n EditLearningPathDetailsForm,\n EditLearningPathFooter,\n EditLearningPathHeader,\n KnowledgeSkillAndAbilitiesDetails,\n} from '..';\nimport {FormContext} from 'forms/formik/FormContextProvider';\nimport {LearningPathSessions} from 'admin/resources/learning-paths/components';\n\nexport const LearningPathViewEditContainer = ({loading}) => {\n const {formikFormRef, isDirty, setIsDirty, submitFormikForm} = useContext(FormContext);\n\n const submitFormClickHandler = useCallback(() => formikFormRef?.current && submitFormikForm(), [\n formikFormRef,\n submitFormikForm,\n ]);\n\n return (\n <PageLayoutHorizontalRows\n headerSize=\"large\"\n loading={loading}\n header={<EditLearningPathHeader />}\n contentUp={\n <EditLearningPathDetailsForm formikFormRef={formikFormRef} setIsDirtyCallback={setIsDirty}>\n <EditLearningPathDetails isDirty={isDirty} setIsDirtyCallback={setIsDirty} />\n </EditLearningPathDetailsForm>\n }\n contentDown={<LearningPathSessions />}\n contentMiddle={<KnowledgeSkillAndAbilitiesDetails />}\n footer={<EditLearningPathFooter isDirty={isDirty} submitFormCallback={submitFormClickHandler} />}\n />\n );\n};\n","import React, {useEffect} from 'react';\nimport {LearningPathViewEditContainer} from './components';\nimport {useEditLearningPath, useEditLearningPathStateActions, useLearningPathIdParam} from './hooks';\nimport {FormContextProvider} from 'forms';\n\nexport const LearningPathViewEdit = () => {\n const {learningPathId} = useLearningPathIdParam();\n const {fetchLearningPathById, loading} = useEditLearningPath();\n const {clearLearningPath} = useEditLearningPathStateActions();\n\n useEffect(() => {\n if (learningPathId) {\n fetchLearningPathById(learningPathId);\n }\n return () => {\n clearLearningPath();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [learningPathId]);\n\n return (\n <FormContextProvider>\n <LearningPathViewEditContainer loading={loading} />\n </FormContextProvider>\n );\n};\n","import {useCallback} from 'react';\nimport {useAppDispatch} from 'hooks';\nimport {learningPathEditSliceSitesActions as actions} from '../store';\n\nexport const useEditLearningPathStateActions = () => {\n const dispatch = useAppDispatch();\n\n const clearLearningPath: () => void = useCallback(() => dispatch(actions.clearLearningPath()), [dispatch]);\n\n return {\n clearLearningPath,\n };\n};\n","import {IItemsImport, IItemsImportMapping, IItemsImportPage, IItemsImportStoreState} from 'admin';\nimport {IItemBankPreview} from 'models/library/items-import';\n\nconst itemsImportDefault = {} as IItemsImport;\n\nexport const itemsImportMappingDefault = {\n fieldList: [],\n fileName: null,\n hasRequiredFieldErrors: false,\n itemImportId: null,\n} as IItemsImportMapping;\n\nexport const itemsImportPageDefault = {\n loading: false,\n saving: false,\n downloading: false,\n uploading: false,\n importing: false,\n} as IItemsImportPage;\n\nexport const itemsImportPreviewDefault = {\n loading: false,\n criticalIssueCount: 0,\n downloadingCriticalIssues: false,\n previewRows: [],\n} as IItemBankPreview;\n\nexport const itemsImportInitialState: IItemsImportStoreState = {\n itemsImport: itemsImportDefault,\n templateInstructionalText: null,\n mapping: itemsImportMappingDefault,\n page: itemsImportPageDefault,\n preview: itemsImportPreviewDefault,\n};\n","import {IItemsImportStoreState} from 'admin';\nimport {itemsImportInitialState, itemsImportMappingDefault} from './itemsImport.initialState';\n\nexport const itemsImportReducer = {\n clear(state: IItemsImportStoreState) {\n state.itemsImport = {...itemsImportInitialState.itemsImport};\n },\n\n resetMapping(state: IItemsImportStoreState) {\n state.mapping = {...itemsImportMappingDefault};\n },\n};\n","import {createSlice} from '@reduxjs/toolkit';\nimport {itemsImportInitialState} from './itemsImport.initialState';\nimport {itemsImportReducer} from './itemsImport.reducer';\nimport {itemsImportExtraReducer} from './itemsImportExtra.reducer';\n\nexport const itemsImportSlice = createSlice({\n name: 'itemsImport',\n initialState: itemsImportInitialState,\n reducers: itemsImportReducer,\n extraReducers: itemsImportExtraReducer,\n});\n\nexport const {actions: itemsImportActions} = itemsImportSlice;\n","import * as Yup from 'yup';\nimport {checkIfTypeStartsWithPreOrPostSessionFirstDigit, FormNameEnum} from 'filters-selections';\nimport {audienceStudentId, errorMessages, typeFeedbackId} from 'utils';\n\nexport const createInstrumentValidationSchema = Yup.object().shape({\n [FormNameEnum.instrumentName]: Yup.string().trim().required(errorMessages.instrumentNameRequired),\n [FormNameEnum.pillars]: Yup.number()\n .nullable()\n .when(FormNameEnum.isGeneralInstrument, {\n is: true,\n then: Yup.number().notRequired(),\n otherwise: Yup.number().nullable().required(errorMessages.pillarRequired),\n }),\n [FormNameEnum.instrumentType]: Yup.number()\n .nullable()\n .when(FormNameEnum.isGeneralInstrument, {\n is: true,\n then: Yup.number(),\n otherwise: Yup.number().nullable().required(errorMessages.instrumentTypeRequired),\n })\n .test('instrument-type-test', errorMessages.onlyGeneralAllowed, function (type) {\n const {audience, isGeneralInstrument} = this.parent;\n\n if (!audience || isGeneralInstrument) {\n return true;\n }\n\n return !(audience !== audienceStudentId && type !== typeFeedbackId);\n }),\n [FormNameEnum.instrumentSubType]: Yup.number()\n .nullable()\n .when(FormNameEnum.isGeneralInstrument, {\n is: true,\n then: Yup.number(),\n otherwise: Yup.number().nullable(),\n })\n .test('instrument-sub-type-test', errorMessages.subTypeRequired, function () {\n const {type, subType, isGeneralInstrument} = this.parent;\n const isMasterInstrument = !isGeneralInstrument;\n const hasType = !!type;\n const hasSubType = !!subType;\n\n if (isMasterInstrument) {\n const isPreOrPostSession = hasType && checkIfTypeStartsWithPreOrPostSessionFirstDigit(type?.toString());\n\n if (isPreOrPostSession) {\n return hasSubType;\n }\n }\n return true;\n }),\n [FormNameEnum.audience]: Yup.number()\n .nullable()\n .when(FormNameEnum.isGeneralInstrument, {\n is: true,\n then: Yup.number().notRequired(),\n otherwise: Yup.number().nullable().required(errorMessages.audienceRequired),\n }),\n [FormNameEnum.phase]: Yup.number()\n .nullable()\n .when(FormNameEnum.isGeneralInstrument, {\n is: true,\n then: Yup.number().notRequired(),\n otherwise: Yup.number().nullable().required(errorMessages.phaseRequired),\n }),\n [FormNameEnum.programs]: Yup.array()\n .of(Yup.number())\n .when(FormNameEnum.isGeneralInstrument, {\n is: true,\n then: Yup.array().of(Yup.number()).notRequired(),\n otherwise: Yup.array().of(Yup.number()).required(errorMessages.programRequired),\n }),\n [FormNameEnum.isGeneralInstrument]: Yup.boolean().notRequired(),\n});\n","import React from 'react';\n\nimport {FormNameEnum} from 'filters-selections';\nimport {Form} from 'forms';\nimport {IComponentWithChildren} from 'models';\nimport {usePermissions} from 'permissions';\nimport {checkIfAreaAdmin} from '../../details/utils';\nimport {createInstrumentValidationSchema} from './createInstrumentValidationSchema';\n\nexport interface ICreateInstrumentFormData {\n [FormNameEnum.pillars]: number;\n [FormNameEnum.instrumentName]: string;\n [FormNameEnum.programs]: number[];\n [FormNameEnum.phase]: number;\n [FormNameEnum.instrumentType]: number;\n [FormNameEnum.instrumentSubType]: number;\n [FormNameEnum.audience]: number;\n [FormNameEnum.isGeneralInstrument]: boolean;\n}\n\ninterface ICreateInstrumentFormProps extends IComponentWithChildren {\n submitHandler: (data: ICreateInstrumentFormData, actions: any) => void;\n}\n\nexport function CreateInstrumentForm({children, submitHandler}: ICreateInstrumentFormProps) {\n const {hasPermission} = usePermissions();\n const isAreaAdmin = checkIfAreaAdmin(hasPermission);\n\n const initialValues: ICreateInstrumentFormData = {\n [FormNameEnum.instrumentName]: '',\n [FormNameEnum.phase]: null,\n [FormNameEnum.instrumentType]: null,\n [FormNameEnum.instrumentSubType]: null,\n [FormNameEnum.audience]: null,\n [FormNameEnum.pillars]: null,\n [FormNameEnum.programs]: [],\n [FormNameEnum.isGeneralInstrument]: isAreaAdmin ? true : false,\n };\n\n return (\n <Form.Form<ICreateInstrumentFormData>\n initialValues={initialValues}\n validationSchema={createInstrumentValidationSchema}\n submitHandler={submitHandler}\n >\n {children}\n </Form.Form>\n );\n}\n","import {RolesEnum} from 'permissions/enums';\n\nclass PermissionsManager {\n #activeUserRoles: RolesEnum[];\n\n public getActiveUserRoles() {\n return this.#activeUserRoles;\n }\n\n public setActiveUserRoles(roles: RolesEnum[]) {\n this.#activeUserRoles = roles;\n }\n}\n\nexport const permissionsManager = new PermissionsManager();\n","import React, {memo} from 'react';\nimport {Redirect, Route, Switch} from 'react-router-dom';\nimport {Integrations} from 'admin';\nimport {pages, paths} from 'paths';\nimport {ItemImport} from './items-import';\nimport {Library} from './library';\nimport {Programs} from './programs';\nimport {Resources} from './resources';\n\nexport function AdminPortal() {\n return (\n <Switch>\n <Route exact path={paths.adminPortal.root} render={() => <Redirect to={pages.adminPortal.programs.root} />} />\n <Route path={pages.adminPortal.resources} component={Resources} />\n <Route path={pages.adminPortal.programs.root} component={Programs} />\n <Route path={pages.adminPortal.library} component={Library} />\n <Route path={pages.adminPortal.integrations.root} component={Integrations} />\n <Route path={pages.adminPortal.itemImport.root} component={ItemImport} />\n </Switch>\n );\n}\n\nexport default memo(AdminPortal);\n","import {createSelector} from '@reduxjs/toolkit';\nimport {TStateStore} from 'store';\n\nconst getProgramsState = (state: TStateStore) => state.programs.details;\nconst getLevelOfReportsState = createSelector(getProgramsState, (programReports) => programReports.levelOfReports);\n\nexport const activeEntitySelector = createSelector(getProgramsState, (programs) => programs.activeEntity);\nexport const loadingSelector = createSelector(getProgramsState, (programs) => programs.loading);\n\nexport const levelOfReportsLoadingSelector = createSelector(\n getLevelOfReportsState,\n (levelOfReports) => levelOfReports.loading\n);\n\nexport const selectedIdSelector = createSelector(getLevelOfReportsState, (levelOfReports) => levelOfReports.selectedId);\n\nexport const levelOfReportsMenuItemsSelector = createSelector(\n getLevelOfReportsState,\n (levelOfReports) => levelOfReports.menuItems\n);\n","import {createSelector} from '@reduxjs/toolkit';\nimport {TStateStore} from 'store';\n\nconst getProgramsState = (state: TStateStore) => state.programs.classDetails;\n\nexport const activeEntitySelector = createSelector(getProgramsState, (details) => details.activeEntity);\nexport const loadingSelector = createSelector(getProgramsState, (details) => details.loading);\n","import {createSelector} from '@reduxjs/toolkit';\nimport {TStateStore} from 'store';\n\nconst getProgramsState = (state: TStateStore) => state.programs.classInstruments;\n\nexport const pageSelector = createSelector(getProgramsState, (classInstruments) => classInstruments.page);\nexport const pageLoadingSelector = createSelector(\n getProgramsState,\n (classInstruments) => classInstruments.page.loading\n);\n\nexport const poolSelector = createSelector(getProgramsState, (classInstruments) => classInstruments.pool);\n\nexport const filterSelector = createSelector(getProgramsState, (classInstruments) => classInstruments.filter);\n\nexport const programClassInstrumentsSortOrderSelector = createSelector(\n getProgramsState,\n (classInstruments) => classInstruments.sortOrder\n);\n\nexport const paginationSelector = createSelector(getProgramsState, (classes) => classes.pagination);\n","import {IComponentWithChildren} from 'models';\nimport React from 'react';\nimport {DndProvider} from 'react-dnd';\nimport {HTML5Backend} from 'react-dnd-html5-backend';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface IDragAndDropProviderProps extends IComponentWithChildren {}\n\n/// TODO touch backend for touch devices\nexport function DragAndDropProvider({children}: IDragAndDropProviderProps) {\n return <DndProvider backend={HTML5Backend}>{children}</DndProvider>;\n}\n","import {createSelector} from '@reduxjs/toolkit';\nimport {TBuilderItemBase} from 'models';\nimport {TStateStore} from 'store';\nimport {values} from 'utils';\n\nconst getInstrumentsState = (state: TStateStore) => state.library.instruments;\nconst getBuilderState = (state: TStateStore) => state.library.instruments.builder;\n\nexport const instrumentsPageSelector = createSelector(getInstrumentsState, (instruments) => instruments.page);\nexport const pageLoadingSelector = createSelector(getInstrumentsState, (instruments) => instruments.page.loading);\nexport const savingSelector = createSelector(getInstrumentsState, (instruments) => instruments.page.saving);\nexport const deletingSelector = createSelector(getInstrumentsState, (instruments) => instruments.page.deleting);\nexport const paginationSelector = createSelector(getInstrumentsState, (instruments) => instruments.pagination);\n\nexport const activeTemplateSelector = createSelector(\n getInstrumentsState,\n (instruments) => instruments.templates.entities\n);\n\nexport const surveyForPreviewTemplateSelector = createSelector(\n getInstrumentsState,\n (instruments) => instruments.survey.previewTemplate.entities\n);\n\nexport const builderPoolItemsIdsSelector = createSelector(getBuilderState, (builder) => builder.poolItems.result);\nexport const builderPoolItemsLoadingSelector = createSelector(\n getBuilderState,\n (builder) => builder.builderItems.loading\n);\nexport const builderPoolItemsEntitiesSelector = createSelector(\n getBuilderState,\n (builder) => builder.poolItems.entities.items\n);\nexport const builderPoolItemsEntitiesBaseCollectionSelector = createSelector(\n [builderPoolItemsIdsSelector, builderPoolItemsEntitiesSelector],\n (ids, poolItems): TBuilderItemBase[] => {\n return ids.map((id) => {\n const item = poolItems[id];\n const questionAnswerStackId = item.elements[0] ? item.elements[0].questionAnswerStackId : -1;\n\n return {\n id,\n questionText: item?.text,\n questionType: item?.questionOptionsTypeId,\n questionAnswerStackId,\n };\n });\n }\n);\n\nexport const builderPossiblePretestItemsIdsSelector = createSelector(\n getBuilderState,\n (builder) => builder.pretestItems.result\n);\n\nexport const builderPossiblePretestItemsEntitiesSelector = createSelector(\n getBuilderState,\n (builder) => builder.pretestItems.entities.items\n);\nexport const builderPossiblePretestEntitiesBaseCollectionSelector = createSelector(\n [builderPossiblePretestItemsIdsSelector, builderPossiblePretestItemsEntitiesSelector],\n (ids, pretestItems) => {\n return ids.map((id) => {\n const item = pretestItems[id];\n\n let questionAnswerStackId: any = -1;\n\n if (item.elements.length > 1) {\n questionAnswerStackId = item.elements.map((el) => el.questionAnswerStackId);\n } else if (item.elements.length === 1) {\n questionAnswerStackId = item.elements[0].questionAnswerStackId;\n }\n\n return {\n id,\n questionText: item?.text,\n questionType: item?.questionOptionsTypeId,\n questionAnswerStackId,\n questionStackChoices: item?.elements,\n };\n });\n }\n);\n\nexport const builderItemsIdsSelector = createSelector(getBuilderState, (builder) => builder.builderItems.result);\nexport const builderItemsEntitiesSelector = createSelector(\n getBuilderState,\n (builder) => builder.builderItems.entities.items ?? {}\n);\nexport const builderItemsResultSelector = createSelector(\n getBuilderState,\n (builder) => builder.builderItems.result ?? []\n);\nexport const builderItemsCollectionSelector = createSelector(getBuilderState, (builder) => {\n return builder.builderItems.entities?.items ? values(builder.builderItems.entities?.items) : [];\n});\n\nexport const pagesTotalSelector = createSelector(getBuilderState, (builder) => builder.pagesTotal);\nexport const searchTextSelector = createSelector(getBuilderState, (builder) => builder.searchText);\nexport const instrumentsBuilderFilterSelector = createSelector(getBuilderState, (builder) => builder.filter);\n\nexport const instrumentsAllSelector = createSelector(getInstrumentsState, (instruments) => instruments.templates);\nexport const instrumentsAllFilterSelector = createSelector(getInstrumentsState, (instruments) => instruments.filter);\n\nexport const instrumentsAllSortOrderSelector = createSelector(\n getInstrumentsState,\n (instruments) => instruments.sortOrder\n);\n","export * from './IExtendedSurvey';\n","import {unwrapResult} from '@reduxjs/toolkit';\nimport {useAppDispatch, useQueryParams} from 'hooks';\nimport React, {useCallback, useEffect, useState} from 'react';\nimport {useParams} from 'react-router-dom';\n\nimport {toNumber} from 'utils';\nimport {SurveyTakerContent, ViewError} from './components';\nimport {IExtendedSurvey} from './models';\nimport {getGeneralSurveyThunk, saveGeneralSurveyThunk} from './store';\n\nexport function SurveyTakerGeneralInstrument() {\n const dispatch = useAppDispatch();\n const {instrumentId: instrumentIdRaw} = useParams<{instrumentId: string}>();\n const instrumentId = toNumber(instrumentIdRaw);\n const {aid: areaIdRaw} = useQueryParams();\n const areaId = toNumber(areaIdRaw);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<any>('');\n const [survey, setSurvey] = useState(null);\n const [surveyTaken, setSurveyTaken] = useState<boolean>(false);\n\n useEffect(() => {\n if (instrumentId) {\n dispatch(getGeneralSurveyThunk(instrumentId))\n .then(unwrapResult)\n .then((result: IExtendedSurvey) => {\n if (!result?.pages) {\n setLoading(false);\n setError((result as unknown) as string);\n return;\n }\n const {pages, footerUrl, logo, logoWidth, logoHeight, logoPosition} = result;\n\n setSurvey({\n showCompletedPage: false,\n showPageNumbers: false, // See: https://mentormate.atlassian.net/browse/JADF-559\n pages,\n footerUrl,\n logo,\n logoWidth,\n logoHeight,\n logoPosition,\n } as any); // TODO\n setLoading(false);\n })\n .catch((err: Error) => {\n setError(err.message);\n setLoading(false);\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const saveResultsHandler = useCallback(\n (results: {[id: number]: string}, timeSpent: number) => {\n setLoading(true);\n\n dispatch(saveGeneralSurveyThunk({instrumentId, results, timeSpent, areaId}))\n .then(unwrapResult)\n .then(() => {\n setSurveyTaken(true);\n setLoading(false);\n })\n .catch((err: Error) => {\n setError(err.message);\n setLoading(false);\n });\n },\n [dispatch, instrumentId, areaId]\n );\n\n if (!instrumentId) {\n return <ViewError text=\"Missing data.\" />;\n }\n\n return (\n <SurveyTakerContent\n loading={loading}\n surveyTaken={surveyTaken}\n error={error}\n survey={survey}\n saveResultsHandler={saveResultsHandler}\n />\n );\n}\n","import React, {useCallback, useEffect, useState} from 'react';\nimport {useParams} from 'react-router-dom';\nimport {ISurvey} from 'survey-react';\nimport {unwrapResult} from '@reduxjs/toolkit';\nimport {useAppDispatch} from 'hooks';\nimport {useUserId} from 'user';\nimport {toNumber} from 'utils';\nimport {SurveyTakerContent, ViewError} from './components';\nimport {IExtendedSurvey} from './models';\nimport {getActiveSurveyThunk, saveActiveSurveyThunk} from './store';\n\nexport function SurveyTakerMasterInstrument() {\n const dispatch = useAppDispatch();\n const {programId, instrumentId} = useParams<{programId: string; instrumentId: string}>();\n const {userLoading, userId, userError} = useUserId();\n\n const [loading, setLoading] = useState(userLoading);\n const [error, setError] = useState<any>('');\n const [survey, setSurvey] = useState<ISurvey>(null);\n const [surveySessionId, setSurveySessionId] = useState<number>();\n const [surveyTaken, setSurveyTaken] = useState<boolean>(false);\n\n useEffect(() => {\n if (userError) {\n setError('No user.');\n return;\n }\n\n if (userId && programId && instrumentId) {\n setLoading(true);\n dispatch(getActiveSurveyThunk({userId, programId, instrumentId}))\n .then(unwrapResult)\n .then((result: IExtendedSurvey) => {\n if (!result?.pages) {\n setLoading(false);\n setError((result as unknown) as string);\n return;\n }\n const {pages, footerUrl, logo, logoWidth, logoHeight, logoPosition} = result;\n\n setSurveySessionId(toNumber(pages[0]?.name));\n setSurvey({\n showCompletedPage: false,\n showPageNumbers: false, // See: https://mentormate.atlassian.net/browse/JADF-559\n pages,\n footerUrl,\n logo,\n logoWidth,\n logoHeight,\n logoPosition,\n } as any); // TODO\n\n setLoading(false);\n })\n .catch((err: Error) => {\n setError(err.message);\n setLoading(false);\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dispatch, instrumentId, programId, userError, userId]);\n\n const saveResultsHandler = useCallback(\n (results: {[id: number]: string}) => {\n setLoading(true);\n\n dispatch(saveActiveSurveyThunk({instrumentId: surveySessionId, userId, results}))\n .then(unwrapResult)\n .then(() => {\n setSurveyTaken(true);\n setLoading(false);\n })\n .catch((err: Error) => {\n setError(err.message);\n setLoading(false);\n });\n },\n [dispatch, surveySessionId, userId]\n );\n\n if (!userId || !programId || !instrumentId) {\n return <ViewError text=\"Missing data.\" />;\n }\n\n return (\n <SurveyTakerContent\n loading={loading}\n surveyTaken={surveyTaken}\n survey={survey}\n error={error}\n saveResultsHandler={saveResultsHandler}\n />\n );\n}\n","import React from 'react';\nimport {ISurvey} from 'survey-react';\nimport {SurveyTakerContent} from './components';\n\ninterface ISurveyTakerPreviewProps {\n survey: ISurvey;\n isPreviewWithAnswers?: boolean;\n}\n\nexport function SurveyTakerPreview({survey, isPreviewWithAnswers}: ISurveyTakerPreviewProps) {\n return (\n <SurveyTakerContent\n survey={survey}\n error={false}\n loading={false}\n surveyTaken={false}\n isPreview={!isPreviewWithAnswers}\n isPreviewWithAnswers={isPreviewWithAnswers}\n />\n );\n}\n","export * from './all';\nexport * from './details';\n","import {createSelector} from '@reduxjs/toolkit';\nimport {TStateStore} from 'store';\n\nconst getProgramsState = (state: TStateStore) => state.programs.classes;\n\nexport const pageSelector = createSelector(getProgramsState, (classes) => classes.page);\nexport const pageLoadingSelector = createSelector(getProgramsState, (classes) => classes.page.loading);\n\nexport const poolSelector = createSelector(getProgramsState, (classes) => classes.pool);\n\nexport const filterSelector = createSelector(getProgramsState, (classes) => classes.filter);\nexport const paginationSelector = createSelector(getProgramsState, (classes) => classes.pagination);\nexport const programsClassesSortOrderSelector = createSelector(getProgramsState, (programs) => programs.sortOrder);\n","export * from './instruments';\nexport * from './reports';\nexport * from './paper-assessments';\n","export * from './ProgramClassReportsAndExportsView';\nexport * from './utils';\nexport * from './models';\nexport * from './enums';\n","import React, {Fragment, useCallback, useEffect, useMemo} from 'react';\nimport {Prompt, useParams} from 'react-router-dom';\nimport {makeStyles} from '@material-ui/core';\nimport {useBeforeunload} from 'react-beforeunload';\nimport {IHttpResponse} from 'api';\nimport {pages} from 'paths';\nimport {USAAndSuperAdminRoles, usePermissions} from 'permissions';\nimport {programsMessages, SubtitlePageViewHeader} from 'admin';\nimport {Button, Container, Loading, PageViewHeader, Row, Table, Text} from 'components-lib';\nimport {SidebarBase} from 'components-lib/sidebar/SidebarBase';\nimport {PageLayoutTwoCol, PageLayoutWithFixedAreas} from 'layout';\nimport {ViewExpansionPanel} from '../components';\nimport {LevelReportingMenu} from 'admin/programs/details/components';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {useProgramClass} from '../hooks';\nimport {useProgram, useProgramReports, useProgramReportsStoreActions} from 'admin/programs/details/hooks';\nimport {useAppDispatch, useNavigate} from 'hooks';\nimport {useInstrument} from 'admin/library/instruments/details/hooks';\nimport {IProgramClassReportsQueryParams} from 'admin/programs/details';\nimport {IGetProgramReportResponse, IProgramClassReportParams} from 'models';\nimport {createLinkForDownload, toNumber} from 'utils';\nimport {\n ExportTypesEnum,\n ProgramDetailsViewTypeEnum,\n ReportExportFormatsEnum,\n ReportTypesEnum,\n ReportTypeTermsEnum,\n} from 'admin/programs/details/enums';\nimport {columns, generateReport} from './utils';\nimport {reportMessages} from 'admin/programs/details/utils';\nimport {defaultProgramMenuOptionId} from 'admin/programs/details/store';\n\nexport const ProgramClassReportsAndExportsView = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n const {programId, classId} = useParams<IProgramClassReportParams>();\n const programIdParam = toNumber(programId);\n const classIdParam = toNumber(classId);\n const {push} = useNavigate();\n const {program, fetchProgram} = useProgram(programIdParam);\n const {currentClass, fetchClass} = useProgramClass(classIdParam);\n const {getAreaProgramClassExport, getAreaProgramClassDetailedExport} = useInstrument();\n const {reportTypes, exportTypes, loading, setIsLoading} = useProgramReports();\n const {isProgramLevelAllOption, selectedItem, clearProgramReportsState, selectedId} = useProgramReportsStoreActions();\n const {hasPermission} = usePermissions();\n\n useBeforeunload(() => {\n if (loading) {\n return reportMessages.progress;\n }\n });\n\n const shouldDisableAchievementReports = !isProgramLevelAllOption;\n\n useEffect(() => {\n fetchProgram(true);\n }, [fetchProgram]);\n\n useEffect(() => {\n fetchClass(true);\n }, [fetchClass]);\n\n useEffect(() => {\n return () => {\n clearProgramReportsState();\n };\n }, [clearProgramReportsState]);\n\n const filteredReportTypes = useMemo(() => {\n if (isProgramLevelAllOption) {\n return reportTypes;\n }\n\n return reportTypes.filter(\n (item) => !item.name.toLowerCase().includes(ReportTypeTermsEnum.Achievement.toLowerCase())\n );\n }, [reportTypes, isProgramLevelAllOption]);\n\n // Raw Data Export\n\n const getRawDataExport = useCallback(() => getAreaProgramClassExport(programIdParam, classIdParam, null), [\n classIdParam,\n programIdParam,\n getAreaProgramClassExport,\n ]);\n\n // Raw Data Export (Detailed)\n\n const getDetailedDataExport = useCallback(\n () => getAreaProgramClassDetailedExport(programIdParam, classIdParam, null),\n [classIdParam, programIdParam, getAreaProgramClassDetailedExport]\n );\n\n const getRawExport = useCallback(\n (isRawDataExport: boolean) => {\n if (isRawDataExport) {\n return getRawDataExport();\n } else {\n return getDetailedDataExport();\n }\n },\n [getRawDataExport, getDetailedDataExport]\n );\n\n const reportRows = useMemo(() => {\n const generateReportClickHandler = async (type: ReportTypesEnum, exportFormat: ReportExportFormatsEnum) => {\n setIsLoading(true);\n\n const params: IProgramClassReportsQueryParams = {\n programId: programIdParam,\n programSessionId: classIdParam,\n areaId: null,\n type,\n exportFormat,\n };\n\n if (selectedId > defaultProgramMenuOptionId) {\n params.matchedSurveyTypesId = selectedId;\n }\n\n try {\n const response: IHttpResponse<IGetProgramReportResponse> = await generateReport(type, params);\n\n if (response.ok) {\n const {mimeType, data, fileName} = response.parsedBody;\n createLinkForDownload(`data:${mimeType};base64,${data}`, fileName);\n dispatch(toastNotificationManager.createSuccessToastAction(programsMessages.reportSuccess));\n }\n } catch (err) {\n dispatch(toastNotificationManager.createErrorToastAction(err.statusText || programsMessages.reportError));\n } finally {\n setIsLoading(false);\n }\n };\n\n return filteredReportTypes.map(({name, type}) => ({\n name,\n viewBtn: (\n <>\n <Button.Secondary\n size=\"small\"\n clickHandler={() => generateReportClickHandler(type, ReportExportFormatsEnum.PDF)}\n disabled={loading}\n >\n PDF Report\n </Button.Secondary>\n <Button.Secondary\n size=\"small\"\n clickHandler={() => generateReportClickHandler(type, ReportExportFormatsEnum.CSV)}\n disabled={loading}\n >\n Excel Report\n </Button.Secondary>\n </>\n ),\n }));\n }, [classIdParam, programIdParam, dispatch, loading, filteredReportTypes, setIsLoading, selectedId]);\n\n const exportRows = useMemo(() => {\n const generateExportClickHandler = async (type: ExportTypesEnum) => {\n const isRawDataExport = type === ExportTypesEnum.DataFile;\n\n setIsLoading(true);\n\n return getRawExport(isRawDataExport)\n .then(() => setIsLoading(false))\n .finally(() => setIsLoading(false));\n };\n\n if (!hasPermission(USAAndSuperAdminRoles)) {\n exportTypes.pop();\n }\n\n return exportTypes.map(({name, type}) => ({\n name,\n viewBtn: (\n <Fragment>\n <Button.Secondary\n size=\"small\"\n clickHandler={() => generateExportClickHandler(type)}\n disabled={loading || shouldDisableAchievementReports}\n >\n CSV Export\n </Button.Secondary>\n </Fragment>\n ),\n }));\n }, [loading, exportTypes, setIsLoading, shouldDisableAchievementReports, getRawExport]);\n\n const headerSubheading = useMemo(\n () =>\n program && (\n <SubtitlePageViewHeader>\n {' '}\n / {program?.name} / {currentClass?.name}\n </SubtitlePageViewHeader>\n ),\n [currentClass, program]\n );\n\n const header = useMemo(() => {\n return (\n <PageViewHeader\n heading=\"Programs\"\n subHeading={headerSubheading}\n withBackButton\n backButtonClickHandler={() => push(`${pages.adminPortal.programs.detailsLink}/${programId}`)}\n />\n );\n }, [headerSubheading, programId, push]);\n\n const content = useMemo(() => {\n return (\n <PageLayoutWithFixedAreas header={header} headerSize=\"small\" withSecondaryNavigation={false}>\n {loading ? (\n <Loading />\n ) : (\n <Fragment>\n <Container disableGutters classes={{root: classes.exports}}>\n <Row justify=\"flex-start\">\n <Text.Heading as=\"h3\">Exports</Text.Heading>\n </Row>\n <Container disableGutters classes={{root: classes.exportsTable}}>\n <Text.Heading as=\"h4\">Aggregated program-level data</Text.Heading>\n <Table columns={columns} rows={exportRows} />\n </Container>\n </Container>\n <Row justify=\"space-between\">\n <Text.Heading as=\"h3\">Reports</Text.Heading>\n <LevelReportingMenu programViewType={ProgramDetailsViewTypeEnum.Class} />\n </Row>\n {selectedItem && <Text.Heading as=\"h4\">{selectedItem?.displayText}</Text.Heading>}\n <Table columns={columns} rows={reportRows} />\n </Fragment>\n )}\n <Prompt when={loading} message={reportMessages.progress} />\n </PageLayoutWithFixedAreas>\n );\n }, [header, reportRows, loading, classes.exports, classes.exportsTable, exportRows, selectedItem]);\n\n const sidebar = useMemo(() => {\n return (\n <SidebarBase>\n <ViewExpansionPanel disabled={loading} />\n </SidebarBase>\n );\n }, [loading]);\n\n return <PageLayoutTwoCol withSecondaryNavigation={false} sidebar={sidebar} content={content} />;\n};\n\nconst useStyles = makeStyles((theme) => ({\n exports: {\n borderBottom: `1px solid ${theme.palette.grey[100]}`,\n marginBottom: theme.spacing(3),\n },\n exportsTable: {\n paddingBottom: theme.spacing(2),\n },\n}));\n","export * from './IProgramClassReportsQueryParams';\n","export * from './IReportApi.enum';\n","export * from './DigitalResources/IDigitalResourceFileMetadata';\nexport * from './DigitalResources/IDigitalResources';\nexport * from './Instruments/IBindInstrumentsPage';\nexport * from './Instruments/IBindTemplateMetadata';\nexport * from './IBindBaseEntity';\n\nexport type {IAction} from './IAction';\nexport type {IBindBaseEntity} from './IBindBaseEntity';\nexport type {IBindPageError} from './IBindPageError';\nexport type {IBindPageOfEntities} from './IBindPageOfEntities';\nexport type {IBindStringResponse} from './IBindStringResponse';\nexport type {IBindToastError} from './IBindToastError';\nexport type {IGetPageOfEntities} from './IGetPageOfEntities';\nexport type {IGetSurveyUrl} from './IGetSurveyUrl';\nexport type {IQuestionMetadata} from './IQuestionMetadata';\nexport type {IStringOption} from './IStringOption';\nexport type {IPaginationOptions} from './IPaginationOptions';\nexport type {ISortingOptions} from './ISortingOptions';\nexport type {IBindBaseEntityApiResponse} from './IBindBaseEntityApiResponse';\n","export * from './common';\nexport * from './instruments';\nexport * from './items';\nexport * from './items-import';\nexport * from './integrations';\nexport * from './digitalResources';\n","export * from './IInstrumentItem';\nexport * from './IInstrumentItemsApiResponse';\nexport * from './IUpdateInstrumentMetaDataPayload';\nexport * from './IUpdateInstrumentPayload';\nexport * from './IUpdateInstrumentInfoPayload';\n\n// Models\nexport type {IAnswersMatrixBuilder} from './IAnswersMatrixBuilder';\nexport type {IBindInstrumentsAllPage} from './IBindInstrumentsAllPage';\nexport type {IGetPageOfInstruments} from './IGetPageOfInstruments';\nexport type {IInstrumentDetails} from './IInstrumentDetails';\nexport type {IInstrumentDetailsAndParticipantSummary} from './IInstrumentDetailsAndParticipantSummary';\nexport type {IInstrumentsAllFilter} from './IInstrumentsAllFilter';\nexport type {IInstrumentsBaseFilter} from './IInstrumentsBaseFilter';\nexport type {IInstrumentsAllSortOrder} from './IInstrumentsAllSortOrder';\nexport type {IItemColumn} from './IItemColumn';\nexport type {IParticipantSummary} from './IParticipantSummary';\nexport type {IQuestion} from './IQuestion';\nexport type {IQuestionAnswerStack} from './IQuestionAnswerStack';\nexport type {IQuestionBase} from './IQuestionBase';\nexport type {IQuestionDetails} from './IQuestionDetails';\nexport type {TBuilderItemBase} from './TBuilderItemBase';\nexport type {IQuestionAnswerStackDetails} from './IQuestionAnswerStackDetails';\nexport type {IInstrumentMetadataBaseValue} from './IInstrumentMetadataBaseValue';\nexport type {IInstrumentDropdown} from './IInstrumentDropdown';\nexport type {IFileLogoDetails} from './IFileLogoDetails';\nexport type {IInstrumentDetailsWithLogos} from './IInstrumentDetailsWithLogos';\nexport type {IUpdateDraftInstrumentPayload, IQuestionUpdate} from './IUpdateDraftInstrumentPayload';\n\n// Payload\nexport type {ISaveGeneralSurveyPayload} from './ISaveGeneralSurveyPayload';\nexport type {ICreateQuestionPayload} from './ICreateQuestionPayload';\nexport type {IFetchPoolItemsPayload} from './IFetchPoolItemsPayload';\nexport type {IGetPageOfInstrumentsPayload} from './IGetPageOfInstrumentsPayload';\n\n// Api Response\nexport type {IGetItemsApiResponse} from './IGetItemsApiResponse';\nexport type {TGetQuestionsApiResponse} from './TGetQuestionsApiResponse';\nexport type {IFetchPossiblePretestItemsPayload} from './IFetchPossiblePretestItemsPayload';\nexport type {IGetIPossiblePretestItemsApiResponse} from './IGetIPossiblePretestItemsApiResponse';\nexport type {IGetGeneralInstrumentExportResponse} from './IGetGeneralInstrumentExportResponse';\nexport type {IGetExportBaseResponse} from './IGetExportBaseResponse';\nexport type {IGetAreaProgramClassExportResponse} from './IGetAreaProgramClassExportResponse';\nexport type {ISaveGeneralSurveyApiResponse} from './ISaveGeneralSurveyApiResponse';\nexport type {IUpdateInstrumentApiResponse} from './IUpdateInstrumentApiResponse';\n","export * from './ICreateUpdateItemPayload';\nexport * from './IItemDetails';\n\nexport type {IGetPageOfItems} from './IGetPageOfItems';\nexport type {IBindItemsPage} from './IBindItemsPage';\nexport type {IItemForPreview} from './IItemForPreview';\nexport type {IItemsFilter} from './IItemsFilter';\nexport type {IDeleteItemPayload} from './IDeleteItemPayload';\nexport type {IUpdateItemPayload} from './IUpdateItemPayload';\nexport type {IUpdateItemResponse} from './IUpdateItemResponse';\nexport type {IDefaultAnswerStackPayload} from './IDefaultAnswerStackPayload';\nexport type {ICustomAnswerStackPayload} from './ICustomAnswerStackPayload';\nexport type {IUpdateAnswerStackPayload} from './IUpdateAnswerStackPayload';\nexport type {IItemsAllSortOrder} from './IItemsAllSortOrder';\nexport type {IGetActiveSurveyPayload} from './IGetActiveSurveyPayload';\n","export * from './IAdminToolOptions';\n","export * from './google-sites';\nexport * from './learning-paths';\nexport * from './upload';\nexport * from './files';\nexport * from './common';\n\nexport type {IResourcePagination} from './IResourcePagination';\nexport type {IBaseResourceItem} from './IBaseResourceItem';\n","export * from './IResourcesStoreState';\nexport {resourcesReducer} from './resources.reducer';\n","import React from 'react';\nimport {Files} from 'admin/resources/files';\nimport {NoPermissionsPage} from 'pages';\nimport {pages, paths} from 'paths';\nimport {AdminRoles, USAAndSuperAdminRoles, withRole} from 'permissions';\nimport {Redirect, Route, Switch} from 'react-router-dom';\nimport {ResourcesNavBar} from './components';\nimport {GoogleSites} from './google-sites';\nimport {LearningPaths} from './learning-paths';\nimport {UploadResources} from './upload';\n\nconst AdminPortalGoogleSitesAllEnhanced = withRole(\n USAAndSuperAdminRoles,\n `${paths.adminPortal.root}${paths.noPermission}`\n)(GoogleSites);\n\nconst AdminPortalLearningPathsAllEnhanced = withRole(\n AdminRoles,\n `${paths.adminPortal.root}${paths.noPermission}`\n)(LearningPaths);\n\nexport function Resources() {\n return (\n <>\n <ResourcesNavBar />\n <Switch>\n <Route exact path={pages.adminPortal.resources} render={() => <Redirect to={pages.adminPortal.files.root} />} />\n <Route path={pages.adminPortal.files.root} component={Files} />\n <Route path={pages.adminPortal.learningPaths.root}>\n <AdminPortalLearningPathsAllEnhanced />\n <Route path={`${pages.adminPortal.learningPaths.root}${paths.noPermission}`}>\n <NoPermissionsPage />\n </Route>\n </Route>\n <Route path={pages.adminPortal.googleSites.root}>\n <AdminPortalGoogleSitesAllEnhanced />\n <Route path={`${pages.adminPortal.googleSites.root}${paths.noPermission}`}>\n <NoPermissionsPage />\n </Route>\n </Route>\n <Route path={pages.adminPortal.upload.root} component={UploadResources} />\n </Switch>\n </>\n );\n}\n","export * from './IDigitalResource';\nexport * from './IVerticalDropdownItem';\n","export * from './files.reducer';\n\nexport type {IFilesStoreState} from './IFilesStoreState';\n","import React from 'react';\nimport {Redirect, Route, Switch} from 'react-router-dom';\nimport {pages} from 'paths';\nimport {GoogleSitesViewDetails} from './details';\nimport {GoogleSitesAllView} from './all';\n\nexport const GoogleSites = () => {\n return (\n <Switch>\n <Route\n exact\n path={pages.adminPortal.googleSites.root}\n render={() => <Redirect to={pages.adminPortal.googleSites.all} />}\n />\n <Route path={pages.adminPortal.googleSites.all} component={GoogleSitesAllView} />\n <Route path={pages.adminPortal.googleSites.details} component={GoogleSitesViewDetails} />\n </Switch>\n );\n};\n","import {createSelector} from '@reduxjs/toolkit';\nimport {TStateStore} from 'store';\n\nconst getProgramsState = (state: TStateStore) => state.programs.masterInstruments;\n\nexport const pageSelector = createSelector(getProgramsState, (masterInstruments) => masterInstruments.page);\nexport const pageLoadingSelector = createSelector(\n getProgramsState,\n (masterInstruments) => masterInstruments.page.loading\n);\n\nexport const poolSelector = createSelector(getProgramsState, (masterInstruments) => masterInstruments.pool);\n\nexport const filterSelector = createSelector(getProgramsState, (masterInstruments) => masterInstruments.filter);\nexport const paginationSelector = createSelector(getProgramsState, (masterInstruments) => masterInstruments.pagination);\nexport const orderBySelector = createSelector(getProgramsState, (masterInstruments) => masterInstruments.orderBy);\nexport const programsMasterInstrumentsSortOrderSelector = createSelector(\n getProgramsState,\n (programs) => programs.sortOrder\n);\n","export {useToastNotifications} from './useToastNotification';\n","export * from './IAddToastNotificationActionPayload';\nexport * from './IRemoveToastNotificationActionPayload';\nexport * from './IToastNotification';\n","export * from './mock';\nexport * from './IItemsImportStoreState';\nexport * from './itemsImportExtra.reducer';\nexport * from './itemsImport.selectors';\n","import React from 'react';\nimport {Redirect, Route, Switch} from 'react-router-dom';\nimport {NoPermissionsPage} from 'pages';\nimport {pages, paths} from 'paths';\nimport {AdminRoles, withRole} from 'permissions';\nimport {LibraryNavBar} from './components';\nimport {Instruments} from './instruments';\nimport {Items} from './items';\n\nconst AdminPortalItemsAllEnhanced = withRole(AdminRoles, `${paths.adminPortal.root}${paths.noPermission}`)(Items);\n\nexport function Library() {\n return (\n <>\n <LibraryNavBar />\n <Switch>\n <Route\n exact\n path={pages.adminPortal.library}\n render={() => <Redirect to={pages.adminPortal.instruments.all} />}\n />\n <Route path={pages.adminPortal.instruments.all} component={Instruments} />\n <Route path={pages.adminPortal.items.root}>\n <AdminPortalItemsAllEnhanced />\n <Route path={`${pages.adminPortal.items.root}${paths.noPermission}`}>\n <NoPermissionsPage />\n </Route>\n </Route>\n </Switch>\n </>\n );\n}\n","import {createSelector} from '@reduxjs/toolkit';\nimport {TStateStore} from 'store';\nimport {values} from 'utils';\n\nconst getItemsState = (state: TStateStore) => state.library.items;\n\nexport const itemPageLoadingStatusSelector = createSelector(getItemsState, (items) => items.page);\nexport const itemsForPreviewSelector = createSelector(getItemsState, (items) => items.itemList);\n\nexport const activeItemSelector = createSelector(getItemsState, (items) => items.item);\nexport const publishingStackSelector = createSelector(getItemsState, (items) => items.page.publishingStack);\nexport const savingSelector = createSelector(getItemsState, (items) => items.page.saving);\nexport const deletingSelector = createSelector(getItemsState, (items) => items.page.deleting);\nexport const promotingStackSelector = createSelector(getItemsState, (items) => items.page.promotingStack);\n\nexport const activeItemQuestionsSelector = createSelector(\n getItemsState,\n (items) => items.itemQuestions.entities.questions\n);\n\nexport const activeItemQuestionsEntitiesCollectionSelector = createSelector(getItemsState, (items) =>\n values(items.itemQuestions.entities.questions)\n);\n\nexport const itemsFilterSelector = createSelector(getItemsState, (items) => items.filter);\nexport const itemsSortByColumnsSelector = createSelector(getItemsState, (items) => items.sortByColumns);\nexport const itemSortOrderTypesSelector = createSelector(getItemsState, (items) => items.sortOrderTypes);\nexport const itemSortOrderSelector = createSelector(getItemsState, (items) => items.sortOrder);\n\nexport const paginationSelector = createSelector(getItemsState, (items) => items.pagination);\n","export {libraryReducer} from './library.reducer';\nexport * from './ILibraryStoreState';\n","import {combineReducers} from '@reduxjs/toolkit';\nimport {instrumentsSlice} from '../instruments';\nimport {itemsSlice} from '../items/store';\n\nexport const libraryReducer = combineReducers({\n instruments: instrumentsSlice.reducer,\n items: itemsSlice.reducer,\n});\n","import {createSelector} from '@reduxjs/toolkit';\nimport {TStateStore} from 'store';\n\nconst getProgramsState = (state: TStateStore) => state.programs.all;\n\nexport const pageSelector = createSelector(getProgramsState, (programs) => programs.page);\nexport const pageLoadingSelector = createSelector(getProgramsState, (programs) => programs.page.loading);\n\nexport const programsSelector = createSelector(getProgramsState, (programs) => programs.programs);\n\nexport const filterSelector = createSelector(getProgramsState, (programs) => programs.filter);\nexport const paginationSelector = createSelector(getProgramsState, (programs) => programs.pagination);\n\nexport const programsAllSortOrderSelector = createSelector(getProgramsState, (programs) => programs.sortOrder);\n","export {programsReducer} from './programs.reducer';\nexport * from './IProgramsState';\n","import {combineReducers} from '@reduxjs/toolkit';\n\nimport {programsAllSlice} from '../all/store';\nimport {programDetailsSlice} from '../details/store';\nimport {programClassesSlice} from '../details/classes/all/store';\nimport {programMasterInstrumentsSlice} from '../details/masterInstruments/store';\nimport {programClassDetailsSlice} from '../details/classes/details/store';\nimport {programClassInstrumentsSlice} from '../details/classes/details/instruments/store';\nimport {programClassesPaperAssessmentsSlice} from '../details/classes/details/paper-assessments/store';\n\nexport const programsReducer = combineReducers({\n all: programsAllSlice.reducer,\n details: programDetailsSlice.reducer,\n classes: programClassesSlice.reducer,\n masterInstruments: programMasterInstrumentsSlice.reducer,\n classDetails: programClassDetailsSlice.reducer,\n classInstruments: programClassInstrumentsSlice.reducer,\n paperAssessments: programClassesPaperAssessmentsSlice.reducer,\n});\n","export * from './models';\nexport * from './store';\nexport * from './hooks';\n\nexport {UploadManager} from './UploadManager';\n","import React, {FC, useCallback, useMemo} from 'react';\nimport {useDispatch} from 'react-redux';\nimport {Menu, MenuItem, makeStyles, IconButton} from '@material-ui/core';\nimport classnames from 'classnames';\nimport {useBeforeunload} from 'react-beforeunload';\n\nimport {Button, Icon, Row, Text, Wrapper} from 'components-lib';\nimport {capitalize, UPLOAD_ITEM_HEIGHT, UPLOAD_ITEM_WIDTH, ROUNDED_BY_TWO_DIGITS} from 'utils';\nimport {cancelUpload, IUploadFile, useUploadManager} from 'admin';\nimport {UploadFileStatusEnum} from 'admin/upload/enums';\nimport {calculateLengthText, convertBytesToMegaBytes, uploadMessages} from 'admin/upload/utils';\nimport {useToastNotifications, ToastNotificationTypeEnum} from 'toast-notifications';\nimport {useMenu} from 'hooks';\n\nexport const UploadManager: FC = () => {\n const classes = useStyles();\n const dispatch = useDispatch();\n const {uploadFiles, uploadingText, getFileManagerUploadingStatus} = useUploadManager();\n const {addToastNotification} = useToastNotifications();\n const {anchorEl, setAnchorEl} = useMenu();\n const hasUploadingFiles = !!uploadFiles && uploadFiles.length > 0;\n\n // Prevent closing or refreshing the browser tab in case the user is uploading a resource (alert prompt)\n useBeforeunload(() => {\n const isFileManagerUploading = getFileManagerUploadingStatus(uploadFiles);\n\n if (isFileManagerUploading) {\n return uploadMessages.warning;\n }\n });\n\n const openUploadManager = useCallback(\n (e: React.MouseEvent<HTMLButtonElement>) => {\n setAnchorEl(e.currentTarget);\n },\n [setAnchorEl]\n );\n\n const closeUploadManager = useCallback(() => {\n setAnchorEl(null);\n }, [setAnchorEl]);\n\n const handleCancelation = useCallback(\n (file) => {\n dispatch(cancelUpload(file?.id));\n file?.cancelRequest();\n\n addToastNotification(`File: ${file?.name} ${uploadMessages.abortRequest}`, ToastNotificationTypeEnum.error);\n },\n [dispatch, addToastNotification]\n );\n\n const getIcon = useCallback((file: IUploadFile) => {\n const {status} = file;\n\n switch (status) {\n case UploadFileStatusEnum.Uploading:\n return <Icon.UploadIcon />;\n case UploadFileStatusEnum.Failed:\n return <Icon.FailIcon />;\n case UploadFileStatusEnum.Uploaded:\n return <Icon.CheckIcon />;\n default:\n return <Icon.UploadIcon />;\n }\n }, []);\n\n const missingFiles = useMemo(() => <MenuItem className={classes.noFiles}>No files right now</MenuItem>, [\n classes.noFiles,\n ]);\n\n return (\n <Wrapper className={classes.content}>\n <Row justify=\"flex-start\">\n <Button.Text\n aria-controls=\"upload-manager-menu\"\n startIcon={<Icon.UploadIcon />}\n endIcon={<Icon.ExpandIcon color=\"primary\" />}\n clickHandler={openUploadManager}\n className={classes.button}\n >\n {uploadingText}\n </Button.Text>\n </Row>\n\n <Menu\n id=\"upload-manager-menu\"\n anchorEl={anchorEl}\n keepMounted\n open={Boolean(anchorEl)}\n onClose={closeUploadManager}\n PaperProps={{\n style: {\n maxHeight: UPLOAD_ITEM_HEIGHT * 7,\n width: UPLOAD_ITEM_WIDTH,\n },\n }}\n >\n <div className={classes.heading}>\n <Text.Heading as=\"h4\" classes={{root: classes.title}}>\n {uploadingText}\n </Text.Heading>\n </div>\n\n {!hasUploadingFiles && missingFiles}\n\n {uploadFiles?.map((uploadFile: IUploadFile, idx: number) => {\n const isLong = calculateLengthText(uploadFile?.name);\n\n return (\n <MenuItem key={idx}>\n <div className={classes.menuItem}>\n <div className={classes.menuHeading}>\n <div className={classes.fileNameContainer}>\n {getIcon(uploadFile)}\n <span className={classnames(isLong ? classes.cropText : '', classes.fileName)}>{`${\n uploadFile?.name\n } / ${convertBytesToMegaBytes(uploadFile?.size, ROUNDED_BY_TWO_DIGITS)} MB`}</span>\n </div>\n {!uploadFile?.isCanceledUpload && (\n <IconButton\n edge=\"end\"\n color=\"secondary\"\n aria-label=\"close\"\n onClick={() => handleCancelation(uploadFile)}\n >\n <Icon.CloseIcon />\n </IconButton>\n )}\n </div>\n <span className={classes.uploadingInfo}>{`${capitalize(uploadFile?.status)}... ${\n uploadFile?.percentage\n }%`}</span>\n </div>\n </MenuItem>\n );\n })}\n </Menu>\n </Wrapper>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n title: {\n color: theme.palette.text.primary,\n },\n heading: {\n display: 'flex',\n alignItems: 'center',\n padding: `${theme.spacing(0)}px ${theme.spacing(0)}px ${theme.spacing(2)}px ${theme.spacing(4)}px`,\n borderBottom: `1px solid ${theme.palette.grey[100]}`,\n },\n actions: {\n padding: `${theme.spacing(4)}px ${theme.spacing(0)}px`,\n borderTop: `1px solid ${theme.palette.grey[100]}`,\n },\n content: {\n paddingRight: theme.spacing(3) + theme.spacing(4),\n },\n manuPaperProps: {\n maxHeight: UPLOAD_ITEM_HEIGHT * 7,\n width: UPLOAD_ITEM_WIDTH,\n },\n menuItem: {\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n padding: `${theme.spacing(1)}px ${theme.spacing(3)}px`,\n },\n menuHeading: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n fileNameContainer: {\n display: 'flex',\n alignItems: 'center',\n width: '90%',\n },\n fileName: {\n fontSize: 12,\n fontWeight: 'bold',\n paddingLeft: theme.spacing(2),\n },\n uploadingInfo: {\n fontSize: 12,\n color: theme.palette.grey[700],\n paddingLeft: theme.spacing(4),\n },\n button: {\n color: theme.palette.grey[700],\n padding: 0,\n },\n cropText: {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n width: '90%',\n },\n noFiles: {\n pointerEvents: 'none',\n display: 'flex',\n justifyContent: 'center',\n },\n}));\n","export * from './IStateStore';\n","import {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport {unwrapResult} from '@reduxjs/toolkit';\nimport {useAppDispatch, useNavigate} from 'hooks';\nimport {pages} from 'paths';\nimport {\n pageLoadingSelector,\n fileDetailsSelector,\n fileDownloadingSelector,\n fetchFileByIdThunk,\n deleteFileThunk,\n updateResourcesFileThunk,\n updateScormResourceThunk,\n updateWebLinkResourceThunk,\n downloadFileByIdThunk,\n} from '../store';\nimport {IFileDetails, IGetFileApiResponse, IResourceMetadata} from 'models/resources';\nimport {useFileIdParam} from '.';\nimport {IEditFileMetadataFormBaseValues} from '../components/FilesEditResourceForm/config';\nimport {mapUpdateResourceFilePayload, mapUpdateResourceScormPayload, mapUpdateResourceWebLinkPayload} from '../utils';\nimport {createLinkForDownload} from 'utils';\n\nexport const useFileEdit = () => {\n const {push} = useNavigate();\n const dispatch = useAppDispatch();\n const {fileId} = useFileIdParam();\n\n const loading = useSelector(pageLoadingSelector);\n const fileDownloading = useSelector(fileDownloadingSelector);\n const fileDetails = useSelector(fileDetailsSelector) as IFileDetails;\n const fileMetadata = fileDetails?.metadata as IResourceMetadata;\n\n const fetchFileById: (id: string) => Promise<IGetFileApiResponse> = useCallback(\n (id: string) => dispatch(fetchFileByIdThunk({id, push})),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [dispatch]\n );\n\n const redirectToFilesAllPage: () => void = useCallback(() => {\n push(`${pages.adminPortal.files.root}`);\n }, [push]);\n\n const redirectToEditLearningPathPage: (id: string) => void = useCallback(\n (id) => window.open(`${pages.adminPortal.learningPaths.editLink}/${id}`, '_blank'),\n []\n );\n\n const deleteFile: () => void = useCallback(\n () =>\n dispatch(deleteFileThunk(fileId))\n .then(unwrapResult)\n .then(() => redirectToFilesAllPage()),\n [dispatch, fileId, redirectToFilesAllPage]\n );\n\n const updateFile: (formValues: IEditFileMetadataFormBaseValues) => Promise<IGetFileApiResponse> = useCallback(\n (formValues: IEditFileMetadataFormBaseValues) => {\n const payload = mapUpdateResourceFilePayload(fileId, formValues);\n return dispatch(updateResourcesFileThunk(payload));\n },\n [dispatch, fileId]\n );\n\n const updateScorm: (formValues: IEditFileMetadataFormBaseValues) => Promise<IGetFileApiResponse> = useCallback(\n (formValues: IEditFileMetadataFormBaseValues) => {\n const payload = mapUpdateResourceScormPayload(fileId, formValues);\n return dispatch(updateScormResourceThunk(payload))\n .then(unwrapResult)\n .then(() => {\n // Redirect only if there is a new version of the file\n if (formValues?.file) {\n return redirectToFilesAllPage();\n }\n });\n },\n [dispatch, fileId, redirectToFilesAllPage]\n );\n\n const updateWebLink: (formValues: IEditFileMetadataFormBaseValues) => Promise<IGetFileApiResponse> = useCallback(\n (formValues: IEditFileMetadataFormBaseValues) => {\n const payload = mapUpdateResourceWebLinkPayload(fileId, formValues);\n return dispatch(updateWebLinkResourceThunk(payload));\n },\n [dispatch, fileId]\n );\n\n const updateResource = useCallback(\n (\n formValues: IEditFileMetadataFormBaseValues,\n fileType: {isResource: boolean; isScormPackage: boolean; isWebLink: boolean}\n ) => {\n if (fileType.isResource) {\n return updateFile(formValues);\n }\n\n if (fileType.isScormPackage) {\n return updateScorm(formValues);\n }\n\n if (fileType.isWebLink) {\n return updateWebLink(formValues);\n }\n },\n [updateFile, updateScorm, updateWebLink]\n );\n\n const downloadFileById = useCallback(\n (id: string) =>\n dispatch(downloadFileByIdThunk(id))\n .then(unwrapResult)\n .then(({blob, fileName}) => {\n const objectUrl = window.URL.createObjectURL(blob);\n createLinkForDownload(objectUrl, fileName);\n // Freeing resources in memory\n window.URL.revokeObjectURL(objectUrl);\n // Notify the user\n // dispatch(toastNotificationManager.createSuccessToastAction(fileEditMessages.fileDownload));\n }),\n [dispatch]\n );\n\n return {\n loading,\n fileDownloading,\n fileDetails,\n fileMetadata,\n fetchFileById,\n linkedLearningPaths: fileDetails?.relatedLearningPaths,\n status: fileDetails?.details?.status,\n userDetails: fileDetails?.details,\n\n updateResource,\n updateFile,\n deleteFile,\n redirectToFilesAllPage,\n redirectToEditLearningPathPage,\n downloadFileById,\n };\n};\n","import {useParams} from 'react-router-dom';\n\ninterface IFileIdParam {\n id: string;\n}\n\nexport const useFileIdParam = () => {\n const urlParams = useParams<IFileIdParam>();\n return {fileId: urlParams?.id};\n};\n","import {useCallback, useRef} from 'react';\nimport {ResourceTypeNumEnum} from 'admin/resources/enums';\nimport {useFileEdit} from './useFileEdit';\n\ninterface IGetFileType {\n isResource: boolean;\n isScormPackage: boolean;\n isWebLink: boolean;\n isArchive: boolean;\n isVideo: boolean;\n isAudio: boolean;\n isImage: boolean;\n isPDF: boolean;\n isDocument: boolean;\n isExcel: boolean;\n}\n\nexport const useFileType = () => {\n const typeRef = useRef(null);\n const {fileDetails} = useFileEdit();\n\n const getType: () => IGetFileType = useCallback(() => {\n if (!fileDetails) {\n return {\n isResource: false,\n isScormPackage: false,\n isWebLink: false,\n isArchive: false,\n isVideo: false,\n isAudio: false,\n isImage: false,\n isPDF: false,\n isDocument: false,\n isExcel: false,\n };\n }\n\n // Generic\n const isResource =\n fileDetails?.contentType !== ResourceTypeNumEnum.ScormPackage &&\n fileDetails?.contentType !== ResourceTypeNumEnum.WebLink;\n const isScormPackage = fileDetails?.contentType === ResourceTypeNumEnum.ScormPackage;\n const isWebLink = fileDetails?.contentType === ResourceTypeNumEnum.WebLink;\n\n // Resource - Others\n const isVideo = isResource && fileDetails?.contentType === ResourceTypeNumEnum.Video;\n const isAudio = isResource && fileDetails?.contentType === ResourceTypeNumEnum.Audio;\n const isImage = isResource && fileDetails?.contentType === ResourceTypeNumEnum.Image;\n const isPDF =\n isResource &&\n (fileDetails?.contentType === ResourceTypeNumEnum.PDF ||\n fileDetails?.contentType === ResourceTypeNumEnum.FillablePDF);\n const isExcel = isResource && fileDetails?.contentType === ResourceTypeNumEnum.Excel;\n const isDocument = isResource && fileDetails?.contentType === ResourceTypeNumEnum.Document;\n const isArchive = isResource && fileDetails?.contentType === ResourceTypeNumEnum.Archive;\n\n typeRef.current = {\n isResource,\n isScormPackage,\n isWebLink,\n isArchive,\n isVideo,\n isAudio,\n isImage,\n isPDF,\n isDocument,\n isExcel,\n };\n\n return typeRef.current;\n }, [fileDetails]);\n\n const {\n isResource,\n isScormPackage,\n isWebLink,\n isArchive,\n isVideo,\n isAudio,\n isImage,\n isPDF,\n isDocument,\n isExcel,\n } = getType();\n\n return {\n isResource,\n isScormPackage,\n isWebLink,\n isArchive,\n isVideo,\n isAudio,\n isImage,\n isPDF,\n isDocument,\n isExcel,\n };\n};\n","import {useFileEdit} from './useFileEdit';\n\nexport const useFileEditPermissions = () => {\n const {fileDetails} = useFileEdit();\n return {hasFileEditPermissions: fileDetails?.canEdit ?? false};\n};\n","import React, {useMemo} from 'react';\nimport {ResourceHeader} from 'admin/resources';\nimport {useFileEdit, useFileType} from '../../hooks';\nimport {ResourceTypeHeadingNameEnum} from 'enums';\nimport {Status} from 'admin/library/components';\nimport {getFileStatus} from '../../utils';\n\nexport const FilesEditHeader = () => {\n const {isResource, isScormPackage, isWebLink} = useFileType();\n const {loading} = useFileEdit();\n const {fileDetails, redirectToFilesAllPage, status} = useFileEdit();\n\n const fileProcessingStatus = getFileStatus(fileDetails?.processingDetails?.status, status);\n\n const heading = useMemo(() => {\n if (isResource) {\n return ResourceTypeHeadingNameEnum.File;\n }\n\n if (isScormPackage) {\n return ResourceTypeHeadingNameEnum.ScormPackage;\n }\n\n if (isWebLink) {\n return ResourceTypeHeadingNameEnum.WebLink;\n }\n\n return '';\n }, [isResource, isScormPackage, isWebLink]);\n\n const extraHeading = useMemo(\n () => <Status status={fileProcessingStatus} message={fileDetails?.processingDetails?.errorMessages} />,\n [fileProcessingStatus, fileDetails]\n );\n\n return (\n <ResourceHeader\n heading={!loading && heading}\n subHeading={!loading && fileDetails?.name}\n extraHeading={!loading && extraHeading}\n withBackButton\n withSubHeading\n backButtonClickHandler={redirectToFilesAllPage}\n />\n );\n};\n","import React, {FC, Fragment, useCallback} from 'react';\nimport {ResourceFooterButtons} from 'admin/resources';\nimport {useFileEdit} from '../../hooks';\nimport {useModal} from 'hooks';\nimport {ModalDelete} from 'admin/components';\nimport {useFormikContext} from 'formik';\nimport {IEditFileMetadataFormBaseValues} from '../FilesEditResourceForm/config';\n\nexport const FilesEditFooter: FC = () => {\n const {loading, deleteFile, fileDetails} = useFileEdit();\n const {isOpen: isModalDeleteResourceOpen, setIsOpen: setIsModalDeleteResourceOpen} = useModal();\n\n const {values} = useFormikContext<IEditFileMetadataFormBaseValues>();\n const shouldDisableButtons = !fileDetails?.canEdit;\n const submitButtonText = values?.file ? 'Reupload' : 'Save';\n\n const confirmHandler = useCallback(() => deleteFile(), [deleteFile]);\n const openDeleteModalClickHandler = useCallback(() => setIsModalDeleteResourceOpen(true), [\n setIsModalDeleteResourceOpen,\n ]);\n\n return (\n <Fragment>\n <ResourceFooterButtons\n loading={loading}\n submitButtonText={submitButtonText}\n withSubmitButton\n withDeleteButton\n withCancelButton={false}\n disableSubmit={shouldDisableButtons}\n disableDelete={shouldDisableButtons}\n deleteClickHandler={openDeleteModalClickHandler}\n />\n <ModalDelete\n loading={false}\n title=\"Delete Resource\"\n text=\"Are you sure you want to delete this resource?\"\n cancelButtonText=\"No\"\n confirmButtonText=\"Yes\"\n isOpen={isModalDeleteResourceOpen}\n setIsOpen={setIsModalDeleteResourceOpen}\n confirmHandler={confirmHandler}\n />\n </Fragment>\n );\n};\n","import React, {FC, Fragment} from 'react';\nimport {ResourceDetails} from 'admin/resources';\nimport {FilesEditMetadata, FilesEditUserDetails, FilesEditDetailsHeader} from '..';\n\nexport const FilesEditDetails: FC = () => {\n return (\n <Fragment>\n <ResourceDetails withSubtitle={false} withBorderBottom={false}>\n <FilesEditDetailsHeader />\n <FilesEditUserDetails />\n </ResourceDetails>\n <FilesEditMetadata />\n </Fragment>\n );\n};\n","import React, {Fragment, useMemo} from 'react';\nimport {ResourceUserDetails} from 'admin/resources';\nimport {IBoxListItem} from 'models/resources';\nimport {Column, Divider} from 'components-lib';\nimport {useFileEdit} from '../../hooks';\nimport {getUserDetails} from 'admin/resources/learning-paths/views/edit';\n\nexport const FilesEditUserDetails = () => {\n const {userDetails} = useFileEdit();\n const {\n createdBy,\n updatedBy,\n createdUtc,\n modifiedUtc,\n createdByInitials,\n updatedByInitials,\n emailCreator,\n emailUpdater,\n } = getUserDetails(userDetails);\n\n const userList = useMemo(\n (): IBoxListItem[] => [\n {\n size: 'small',\n label: 'Created By',\n content: createdBy,\n userInitials: createdByInitials,\n },\n {\n label: 'Date Created',\n content: createdUtc,\n },\n {\n size: 'small',\n label: 'Updated by',\n content: updatedBy,\n userInitials: updatedByInitials,\n },\n {\n label: 'Date Last Updated',\n content: modifiedUtc,\n },\n ],\n [createdBy, updatedBy, createdUtc, modifiedUtc, createdByInitials, updatedByInitials]\n );\n\n const emailList = useMemo(\n (): IBoxListItem[] => [\n {\n size: 'small',\n label: 'Email Address',\n content: emailCreator,\n },\n {\n label: '',\n content: '',\n },\n {\n size: 'small',\n label: 'Email Address',\n content: emailUpdater,\n },\n {\n label: '',\n content: '',\n },\n ],\n [emailCreator, emailUpdater]\n );\n\n return (\n <Fragment>\n <ResourceUserDetails list={userList} />\n <ResourceUserDetails list={emailList} />\n <Column sm={12} md={12} lg={12} xl={8}>\n <Divider.Horizontal as=\"div\" fullWidth />\n </Column>\n </Fragment>\n );\n};\n","import React, {useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Subtitle} from 'admin/components';\nimport {Container, Link, Table} from 'components-lib';\nimport {useFileEdit} from '../../hooks';\nimport {getFileEditLearningPathColumns} from '../../utils';\nimport {getDatetimeAMPMinUTC} from 'utils';\nimport {AdminWithoutStaffRoles, usePermissions} from 'permissions';\n\nexport const FilesEditLearningPaths = () => {\n const classes = useStyles();\n const {hasPermission} = usePermissions();\n const {redirectToEditLearningPathPage, linkedLearningPaths} = useFileEdit();\n const hasEditPermissions = hasPermission(AdminWithoutStaffRoles);\n\n const columns = useMemo(() => getFileEditLearningPathColumns(), []);\n\n const rows = useMemo(() => {\n if (!linkedLearningPaths?.length) {\n return [];\n }\n\n return linkedLearningPaths.map(({id, title, createdBy, createdUtc, updatedBy, modifiedUtc}) => ({\n title: hasEditPermissions ? (\n <Link disabled={!title || !hasEditPermissions} clickHandler={() => redirectToEditLearningPathPage(id)}>\n {title}\n </Link>\n ) : (\n title\n ),\n createdBy,\n createdUtc: createdUtc ? getDatetimeAMPMinUTC(createdUtc) : '',\n updatedBy,\n modifiedUtc: modifiedUtc ? getDatetimeAMPMinUTC(modifiedUtc) : '',\n }));\n }, [redirectToEditLearningPathPage, linkedLearningPaths, hasEditPermissions]);\n\n return (\n <Container disableGutters classes={{root: classes.content}}>\n <Subtitle withColor={false} as=\"h3\" color=\"textPrimary\" title=\"Learning Paths\" />\n {rows?.length ? (\n <Table rows={rows} columns={columns} />\n ) : (\n <Container classes={{root: classes.noResultMessage}} disableGutters>\n No related learning paths\n </Container>\n )}\n </Container>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n content: {\n paddingBottom: theme.spacing(5),\n },\n noResultMessage: {\n paddingLeft: theme.spacing(2),\n },\n}));\n","import React, {useMemo} from 'react';\nimport {SelectionEnum} from 'filters-selections';\nimport {UploadTypeEnum} from 'admin/resources/upload/enums';\nimport {getUploadFirstColList, ResourceListColumn} from 'admin';\nimport {Container, Row} from 'components-lib';\nimport {useFileEditPermissions} from '../../hooks';\n\nexport const FilesEditWebLink = () => {\n const {hasFileEditPermissions} = useFileEditPermissions();\n\n const firstCollist = useMemo(\n () => [\n SelectionEnum.WebLinkInput,\n SelectionEnum.DisplayNameInput,\n ...getUploadFirstColList(UploadTypeEnum.WebLink, true),\n SelectionEnum.KeyTermsInput,\n SelectionEnum.AccessibleToStudentsRadioGroup,\n ],\n []\n );\n\n const secondColList = useMemo(\n () => [\n SelectionEnum.BriefDescriptionTextArea,\n SelectionEnum.ProgramMultiSelection,\n SelectionEnum.KnowledgeSkillsAndAbilities,\n SelectionEnum.ExpirationDatePicker,\n SelectionEnum.LearningObjectiveInput,\n ],\n []\n );\n\n return (\n <Container disableGutters>\n <Row justify=\"flex-start\" align=\"flex-start\">\n <ResourceListColumn list={firstCollist} disableAll={!hasFileEditPermissions} />\n <ResourceListColumn list={secondColList} disableAll={!hasFileEditPermissions} />\n </Row>\n </Container>\n );\n};\n","import React, {useMemo} from 'react';\nimport {SelectionEnum} from 'filters-selections';\nimport {UploadTypeEnum} from 'admin/resources/upload/enums';\nimport {getUploadFirstColList, ResourceListColumn} from 'admin';\nimport {Container, Row} from 'components-lib';\nimport {useFileEditPermissions} from '../../hooks';\nimport {useFormikContext} from 'formik';\nimport {IEditFileMetadataFormBaseValues} from '../FilesEditResourceForm/config';\nimport {getEditFileFirstColumnExtendedList} from '../../utils';\n\nexport const FilesEditScorm = () => {\n const {hasFileEditPermissions} = useFileEditPermissions();\n const {values} = useFormikContext<IEditFileMetadataFormBaseValues>();\n\n const originalFirstColList = useMemo(\n () => [\n SelectionEnum.DisplayNameInput,\n ...getUploadFirstColList(UploadTypeEnum.Scorm, true),\n SelectionEnum.KeyTermsInput,\n SelectionEnum.TimeInput,\n SelectionEnum.AccessibleToStudentsRadioGroup,\n SelectionEnum.VersionFileUpload,\n ],\n []\n );\n\n const firstCollist = getEditFileFirstColumnExtendedList(originalFirstColList, values);\n\n const secondColList = useMemo(\n () => [\n SelectionEnum.BriefDescriptionTextArea,\n SelectionEnum.ProgramMultiSelection,\n SelectionEnum.KnowledgeSkillsAndAbilities,\n SelectionEnum.ExpirationDatePicker,\n SelectionEnum.LearningObjectiveInput,\n ],\n []\n );\n\n return (\n <Container disableGutters>\n <Row justify=\"flex-start\" align=\"flex-start\">\n <ResourceListColumn list={firstCollist} disableAll={!hasFileEditPermissions} />\n <ResourceListColumn list={secondColList} disableAll={!hasFileEditPermissions} />\n </Row>\n </Container>\n );\n};\n","import React, {useMemo} from 'react';\nimport {SelectionEnum} from 'filters-selections';\nimport {UploadTypeEnum} from 'admin/resources/upload/enums';\nimport {getUploadFirstColList, ResourceListColumn} from 'admin';\nimport {Container, Row} from 'components-lib';\nimport {useFileEditPermissions} from '../../hooks';\nimport {getEditFileFirstColumnExtendedList} from '../../utils';\nimport {useFormikContext} from 'formik';\nimport {IEditFileMetadataFormBaseValues} from '../FilesEditResourceForm/config';\n\nexport const FilesEditResource = () => {\n const {hasFileEditPermissions} = useFileEditPermissions();\n const {values} = useFormikContext<IEditFileMetadataFormBaseValues>();\n\n const originalFirstColList = useMemo(\n () => [\n SelectionEnum.DisplayNameInput,\n ...getUploadFirstColList(UploadTypeEnum.File, true),\n SelectionEnum.KeyTermsInput,\n SelectionEnum.AccessibleToStudentsRadioGroup,\n SelectionEnum.VersionFileUpload,\n ],\n []\n );\n\n const firstCollist = getEditFileFirstColumnExtendedList(originalFirstColList, values);\n\n const secondColList = useMemo(\n () => [\n SelectionEnum.BriefDescriptionTextArea,\n SelectionEnum.ProgramMultiSelection,\n SelectionEnum.KnowledgeSkillsAndAbilities,\n SelectionEnum.ExpirationDatePicker,\n SelectionEnum.LearningObjectiveInput,\n ],\n []\n );\n\n return (\n <Container disableGutters>\n <Row justify=\"flex-start\" align=\"flex-start\">\n <ResourceListColumn list={firstCollist} disableAll={!hasFileEditPermissions} />\n <ResourceListColumn list={secondColList} disableAll={!hasFileEditPermissions} />\n </Row>\n </Container>\n );\n};\n","import React, {FC} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Column, Container, Divider, Row} from 'components-lib';\nimport {PickFileMetadata} from '..';\n\nexport const FilesEditMetadata: FC = () => {\n const classes = useStyles();\n\n return (\n <Container disableGutters>\n <Row justify=\"flex-start\" align=\"flex-start\" classes={{root: classes.metadata}}>\n <Column sm={12} md={12} lg={12} xl={12}>\n <Container disableGutters>\n <PickFileMetadata />\n <Divider.Horizontal as=\"div\" fullWidth />\n </Container>\n </Column>\n </Row>\n </Container>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n metadata: {\n paddingLeft: theme.spacing(2),\n },\n}));\n","import React, {FC, Fragment, ReactNode, useMemo} from 'react';\nimport {FilesEditResource, FilesEditScorm, FilesEditWebLink} from '..';\nimport {useFileType} from '../../hooks';\n\nexport const PickFileMetadata: FC = () => {\n const {isWebLink, isResource, isScormPackage} = useFileType();\n\n const pickFileTypeMetadata = useMemo(() => {\n let metataComponent: ReactNode = <div />;\n\n if (isResource) {\n metataComponent = <FilesEditResource />;\n }\n\n if (isScormPackage) {\n metataComponent = <FilesEditScorm />;\n }\n\n if (isWebLink) {\n metataComponent = <FilesEditWebLink />;\n }\n return metataComponent;\n }, [isWebLink, isResource, isScormPackage]);\n\n return <Fragment>{pickFileTypeMetadata}</Fragment>;\n};\n","import * as Yup from 'yup';\nimport {FormNameEnum} from 'enums/form';\nimport {errorMessages} from 'utils/constants';\nimport {IFileTypeRecognition, IFileVersion, IInputFile} from 'models';\nimport {getIsBeforeDate} from 'utils/common';\n\nexport const editResourceBaseMetadataValidationsShape = {\n [FormNameEnum.displayName]: Yup.string().required(errorMessages.requiredWithInputName('a Display Name')),\n [FormNameEnum.fileType]: Yup.number().required(errorMessages.requiredWithFieldName('a File Type')),\n [FormNameEnum.gradeLevels]: Yup.array().of(Yup.number()),\n [FormNameEnum.pillars]: Yup.array().of(Yup.number()),\n [FormNameEnum.competencies]: Yup.array().of(Yup.number()),\n [FormNameEnum.languages]: Yup.array().of(Yup.number()).required('You should select at least one language!'),\n [FormNameEnum.keyTerms]: Yup.string().nullable(),\n [FormNameEnum.isAccessibleToStudents]: Yup.string().required(\n errorMessages.requiredWithFieldName('a Accessible to students')\n ),\n [FormNameEnum.briefDescription]: Yup.string().nullable(),\n [FormNameEnum.programs]: Yup.array().of(Yup.number()),\n [FormNameEnum.knowledgeSkillsAndAbilities]: Yup.array().of(Yup.number()),\n [FormNameEnum.expirationDate]: Yup.date()\n .nullable()\n .typeError('Expected date format: (mm/dd/yyyy)')\n .test('is-date-earlier-than-now', 'The selected date should be in the future.', function () {\n const {expirationDate} = this.parent;\n\n // If the datepicker is cleaned up, then validation is true\n if (expirationDate === null) {\n return true;\n }\n\n function isBefore(expirationDate: Date): boolean {\n const dateIsBeforeToday = getIsBeforeDate(expirationDate);\n\n if (dateIsBeforeToday) {\n return false;\n }\n return true;\n }\n\n if (expirationDate instanceof Date) {\n return isBefore(expirationDate);\n }\n }),\n [FormNameEnum.learningObjectives]: Yup.string().nullable(),\n [FormNameEnum.time]: Yup.number()\n .nullable()\n .min(1, 'Time should be a positive number higher than 0!')\n .max(1440, 'Time should be a positive number smaller than 1440!'),\n [FormNameEnum.briefDescription]: Yup.string().nullable(),\n [FormNameEnum.webLink]: Yup.string()\n .nullable()\n .test('is-web-link', errorMessages.requiredWithInputName('a Web Link'), function () {\n const {fileTypeRecognition, webLink} = this.parent;\n\n if (fileTypeRecognition.isWebLink) {\n return !!webLink;\n }\n\n return true;\n })\n .url('Web link must be a valid url!'),\n [FormNameEnum.fileVersion]: Yup.string().nullable(),\n [FormNameEnum.hasUploadPermissions]: Yup.boolean().test(\n 'is-checked',\n 'You should accept upload file permissions!',\n function () {\n const {file, hasUploadPermissions} = this.parent;\n const isHasUploadPermissionsTruthy = hasUploadPermissions === true;\n\n if (file) {\n return isHasUploadPermissionsTruthy;\n }\n\n return true;\n }\n ),\n [FormNameEnum.canEdit]: Yup.boolean(),\n};\nexport interface IEditFileMetadataFormBaseValues {\n [FormNameEnum.fileType]: number;\n [FormNameEnum.displayName]: string;\n [FormNameEnum.gradeLevels]: number[];\n [FormNameEnum.competencies]: number[];\n [FormNameEnum.languages]: number[];\n [FormNameEnum.keyTerms]: string;\n [FormNameEnum.isAccessibleToStudents]: string;\n [FormNameEnum.briefDescription]: string;\n [FormNameEnum.programs]: number[];\n [FormNameEnum.pillars]: number[];\n [FormNameEnum.knowledgeSkillsAndAbilities]: number[];\n [FormNameEnum.expirationDate]: Date | string;\n [FormNameEnum.learningObjectives]: string;\n [FormNameEnum.shouldDisableFileType]: boolean;\n [FormNameEnum.time]?: number;\n [FormNameEnum.webLink]?: string;\n [FormNameEnum.file]?: IInputFile;\n [FormNameEnum.fileVersion]?: string;\n [FormNameEnum.hasUploadPermissions]?: boolean;\n [FormNameEnum.canEdit]?: boolean;\n [FormNameEnum.fileTypeRecognition]?: IFileTypeRecognition;\n [FormNameEnum.versions]?: IFileVersion[];\n}\n\nexport const editFileMetadataValidationSchema = Yup.object().shape({\n ...editResourceBaseMetadataValidationsShape,\n});\n","import React, {FC, useCallback, useMemo} from 'react';\nimport {batch} from 'react-redux';\nimport {FormikHelpers} from 'formik/dist/types';\nimport {Form} from 'forms';\nimport {IWithChildren} from 'models/common';\nimport {useFileEdit, useFileType} from '../../hooks';\nimport {IEditFileMetadataFormBaseValues, editFileMetadataValidationSchema} from './config';\nimport {mapEditFileInitialValues} from '../../utils';\nimport {usePermissions} from 'permissions';\nimport {SuperAndNationalAdminroles} from 'enums/admin-roles';\n\ntype IFilesEditResourceFormProps = IWithChildren;\n\nexport const FilesEditResourceForm: FC<IFilesEditResourceFormProps> = ({children}) => {\n const {fileMetadata, updateResource, fileDetails} = useFileEdit();\n const fileType = useFileType();\n const {hasPermission} = usePermissions();\n\n const hasAdminPermission = hasPermission(SuperAndNationalAdminroles);\n\n const initialValues = useMemo(\n () => mapEditFileInitialValues(fileDetails, fileMetadata, fileType, hasAdminPermission),\n [fileMetadata, fileDetails, fileType, hasAdminPermission]\n );\n\n const submitHandler = useCallback(\n (formValues: IEditFileMetadataFormBaseValues, {resetForm, setSubmitting}: FormikHelpers<any>) => {\n return batch(() => {\n resetForm();\n setSubmitting(false);\n updateResource(formValues, fileType);\n });\n },\n [updateResource, fileType]\n );\n\n return (\n <Form.Form<IEditFileMetadataFormBaseValues>\n initialValues={initialValues}\n validationSchema={editFileMetadataValidationSchema}\n submitHandler={submitHandler}\n >\n {children}\n </Form.Form>\n );\n};\n","import React, {useCallback, useMemo} from 'react';\nimport {Prompt} from 'react-router-dom';\nimport {useBeforeunload} from 'react-beforeunload';\nimport {makeStyles} from '@material-ui/core';\nimport {CircularProgress, CopyToClipboardToolTip, Icon, Row, Tooltip, Wrapper} from 'components-lib';\nimport {useFileEdit, useFileIdParam, useFileType} from '../../hooks';\nimport {openFileInNewWindow} from 'utils';\nimport {fileEditMessages} from '../../utils';\nimport {EntityStatusEnum} from 'enums';\nimport {useToastNotifications} from 'toast-notifications';\n\nexport const FilesDetailsActions = () => {\n const classes = useStyles();\n const {fileId} = useFileIdParam();\n const {isArchive, isWebLink, isScormPackage} = useFileType();\n const {downloadFileById, fileDetails, fileDownloading, status} = useFileEdit();\n const {addToastNotification} = useToastNotifications();\n\n useBeforeunload(() => {\n if (fileDownloading) {\n return fileEditMessages.warningUnsavedChanges;\n }\n });\n\n const isResourceExpired = status === EntityStatusEnum.expired;\n const hasShortUrl = !!fileDetails?.url;\n const hasId = !!fileId;\n const shouldDisableViewResource = isArchive || !hasShortUrl;\n\n const viewLinkClickHandler = useCallback(() => {\n hasShortUrl && openFileInNewWindow(fileDetails?.url);\n addToastNotification(fileEditMessages.openInNewTab);\n }, [fileDetails, hasShortUrl, addToastNotification]);\n\n const downloadClickHandler = useCallback(() => downloadFileById(fileId), [downloadFileById, fileId]);\n\n const getHasNotShortUrl = useCallback(() => {\n if (!hasShortUrl && isScormPackage) {\n return fileEditMessages.scormPackage + fileEditMessages.hasNotShortUrl;\n }\n\n if (!hasShortUrl && !isScormPackage && !isArchive && !isWebLink) {\n return fileEditMessages.file + fileEditMessages.hasNotShortUrl;\n }\n\n return fileEditMessages.webLink + fileEditMessages.hasNotShortUrl;\n }, [hasShortUrl, isScormPackage, isArchive, isWebLink]);\n\n const viewResourceTooltip = useMemo(() => {\n if (isResourceExpired) {\n return fileEditMessages.expiredResource;\n }\n\n if (hasShortUrl && !isArchive) {\n return fileEditMessages.clickToOpen;\n }\n\n if (hasShortUrl && isArchive) {\n return fileEditMessages.cannotOpenArchive;\n }\n\n return getHasNotShortUrl();\n }, [isArchive, hasShortUrl, getHasNotShortUrl, isResourceExpired]);\n\n const copyTooltip = useMemo(() => {\n if (isResourceExpired) {\n return fileEditMessages.expiredResource;\n }\n\n if (hasShortUrl) {\n return fileEditMessages.clickToCopy;\n }\n\n return getHasNotShortUrl();\n }, [hasShortUrl, getHasNotShortUrl, isResourceExpired]);\n\n const copyToClipboardText = !isResourceExpired ? fileDetails?.url : '';\n\n return (\n <Row justify=\"flex-end\">\n <Tooltip title={viewResourceTooltip}>\n <Icon.Button clickHandler={viewLinkClickHandler} disabled={shouldDisableViewResource || isResourceExpired}>\n <Icon.ViewResourceIcon disabled={shouldDisableViewResource || isResourceExpired} />\n </Icon.Button>\n </Tooltip>\n {!isWebLink && (\n <Tooltip title={fileEditMessages.clickToDownload}>\n <Icon.Button disabled={fileDownloading} clickHandler={downloadClickHandler}>\n {fileDownloading ? (\n <Wrapper className={classes.progress}>\n <CircularProgress size={20} />\n </Wrapper>\n ) : (\n <Icon.DownloadIcon disabled={!hasId} />\n )}\n </Icon.Button>\n </Tooltip>\n )}\n\n <CopyToClipboardToolTip\n text={copyToClipboardText}\n title={copyTooltip}\n successNotificationText={fileEditMessages.copied}\n >\n <div>\n <Icon.Button disabled={!hasShortUrl || isResourceExpired}>\n <Icon.CopyLinkSmallIcon disabled={!hasShortUrl || isResourceExpired} />\n </Icon.Button>\n </div>\n </CopyToClipboardToolTip>\n <Prompt when={fileDownloading} message={fileEditMessages.warningUnsavedChanges} />\n </Row>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n progress: {\n padding: theme.spacing(0, 1),\n },\n}));\n","import React from 'react';\nimport {Column, Container, Row} from 'components-lib';\nimport {FilesDetailsActions} from '..';\nimport {Subtitle} from 'admin/components';\n\nexport const FilesEditDetailsHeader = () => {\n return (\n <Row justify=\"flex-start\">\n <Column sm={12} md={12} lg={12} xl={8}>\n <Container disableGutters>\n <Row justify=\"space-between\">\n <Column sm={9} md={9} lg={3} xl={2}>\n <Subtitle withColor={false} withMargin={false} as=\"h3\" color=\"textPrimary\" title=\"Details\" />\n </Column>\n <Column sm={3} md={3} lg={3} xl={2}>\n <FilesDetailsActions />\n </Column>\n </Row>\n </Container>\n </Column>\n </Row>\n );\n};\n","import React, {useEffect} from 'react';\nimport {PageLayoutHorizontalRows} from 'layout';\nimport {\n FilesEditFooter,\n FilesEditHeader,\n FilesEditDetails,\n FilesEditLearningPaths,\n FilesEditResourceForm,\n} from './components';\nimport {useFileEdit, useFileIdParam} from './hooks';\n\nexport const FilesEditView = () => {\n const {loading, fetchFileById} = useFileEdit();\n const {fileId} = useFileIdParam();\n\n useEffect(() => {\n if (fileId) {\n fetchFileById(fileId);\n }\n }, [fetchFileById, fileId]);\n\n return (\n <FilesEditResourceForm>\n <PageLayoutHorizontalRows\n headerSize=\"large\"\n loading={loading}\n header={<FilesEditHeader />}\n contentUp={<FilesEditDetails />}\n contentMiddle={<FilesEditLearningPaths />}\n footer={<FilesEditFooter />}\n />\n </FilesEditResourceForm>\n );\n};\n","import {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport {unwrapResult} from '@reduxjs/toolkit';\nimport {filesAllFiltersEntitiesSelector, filterAccessibleToStudentsEntitiesSelector} from 'filters-selections';\nimport {useAppDispatch, useNavigate} from 'hooks';\nimport {IBaseFileItem, IFilesAllFilter, IFilesAllSortOrder} from 'models/resources';\nimport {pages} from 'paths';\nimport {userAreaSelector} from 'user';\nimport {createLinkForDownload, openFileInNewWindow} from 'utils';\nimport {\n fetchFilesAllPagedThunk,\n fileDetailsSelector,\n filesAllEntitiesCollectionSelector,\n filesAllEntitiesSelector,\n filesAllIdsSelector,\n pageLoadingSelector,\n paginationSelector,\n filesAllSortOrderSelector,\n filesAllFilterSelector,\n downloadFileThunk,\n fileDownloadingSelector,\n downloadingIdSelector,\n} from '../store';\nimport {filesAllMessages, mapFetchFilesAllPayload} from '../utils';\nimport {useToastNotifications} from 'toast-notifications';\n\nexport const useFilesAll = () => {\n const {push} = useNavigate();\n const dispatch = useAppDispatch();\n const {addToastNotification} = useToastNotifications();\n\n const loading = useSelector(pageLoadingSelector) as boolean;\n const filesAllIds = useSelector(filesAllIdsSelector) as string[];\n const filesAllEntities = useSelector(filesAllEntitiesSelector);\n const filesAllEntitiesCollection = useSelector(filesAllEntitiesCollectionSelector) as IBaseFileItem[];\n const file = useSelector(fileDetailsSelector) as IBaseFileItem;\n const sortOrder = useSelector(filesAllSortOrderSelector) as IFilesAllSortOrder;\n const filter = useSelector(filesAllFilterSelector) as IFilesAllFilter;\n const {currentPage, perPage} = useSelector(paginationSelector);\n const filterEntities = useSelector(filesAllFiltersEntitiesSelector);\n const filterAccessibleToStudentsEntities = useSelector(filterAccessibleToStudentsEntitiesSelector);\n const downloadingId = useSelector(downloadingIdSelector);\n const fileDownloading = useSelector(fileDownloadingSelector);\n const userArea = useSelector(userAreaSelector);\n\n const fetchFilesAllPaged: () => void = useCallback(() => {\n const payload = mapFetchFilesAllPayload(sortOrder, currentPage, perPage, filter);\n return dispatch(fetchFilesAllPagedThunk(payload));\n }, [dispatch, currentPage, perPage, sortOrder, filter]);\n\n const downloadFile = useCallback(\n (id: string) =>\n dispatch(downloadFileThunk(id))\n .then(unwrapResult)\n .then(({blob, fileName}) => {\n const objectUrl = window.URL.createObjectURL(blob);\n createLinkForDownload(objectUrl, fileName);\n // Freeing resources in memory\n window.URL.revokeObjectURL(objectUrl);\n }),\n [dispatch]\n );\n\n const openFileInNewTab: (url: string) => void = useCallback(\n (url: string) => {\n openFileInNewWindow(url);\n addToastNotification(filesAllMessages.openInNewTab);\n },\n [addToastNotification]\n );\n\n const redirectToEditFilePage: (id: string) => void = useCallback(\n (id: string) => {\n push(`${pages.adminPortal.files.editLink}/${id}`);\n },\n [push]\n );\n\n const copyClickHandler = useCallback(() => addToastNotification(filesAllMessages.resourceCopied), [\n addToastNotification,\n ]);\n\n return {\n loading,\n file,\n filesAllIds,\n filesAllEntities,\n filesAllEntitiesCollection,\n sortOrder,\n filter,\n filterEntities,\n filterAccessibleToStudentsEntities,\n userArea,\n fileDownloading,\n downloadingId,\n\n fetchFilesAllPaged,\n openFileInNewTab,\n redirectToEditFilePage,\n downloadFile,\n copyClickHandler,\n };\n};\n","import {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport {useAppDispatch} from 'hooks';\nimport {filesActions as actions, paginationSelector} from '../store';\nimport {IFilesAllFilter} from 'models/resources/files';\n\nexport const useFilesAllStoreActions = () => {\n const dispatch = useAppDispatch();\n\n const {currentPage, perPage, totalCount} = useSelector(paginationSelector);\n\n const clearFiles = useCallback(() => dispatch(actions.clear()), [dispatch]);\n\n const clearFile = useCallback(() => dispatch(actions.clearFile()), [dispatch]);\n\n const setCurrentPage = useCallback((newPage: number) => dispatch(actions.setCurrentPage(newPage)), [dispatch]);\n\n const setPerPage = useCallback((perPage: number) => dispatch(actions.setPerPage(perPage)), [dispatch]);\n\n const setFilterFilesAll = useCallback((filter: IFilesAllFilter) => dispatch(actions.setFilterFilesAll(filter)), [\n dispatch,\n ]);\n\n const resetFilterFilesAll = useCallback(() => dispatch(actions.resetFilterFilesAll()), [dispatch]);\n\n return {\n currentPage,\n perPage,\n totalCount,\n setCurrentPage,\n setPerPage,\n clearFiles,\n clearFile,\n setFilterFilesAll,\n resetFilterFilesAll,\n };\n};\n","import React, {forwardRef, Fragment, useCallback} from 'react';\nimport CopyToClipboard from 'react-copy-to-clipboard';\nimport {batch} from 'react-redux';\nimport {IVerticalDropdownItem} from 'admin/resources/files/models/IVerticalDropdownItem';\nimport {MenuItem as MUIMenuItem, makeStyles} from '@material-ui/core';\nimport {IBaseFileItem} from 'models/resources/files';\nimport {useFilesAll} from 'admin/resources/files/views/all/hooks';\nimport {IResourceContentTypeNameEnum} from 'enums/upload';\nimport {Tooltip} from 'components-lib';\nimport {filesAllMessages} from 'admin/resources/files/views/all/utils';\n\ninterface IDropdownItemProps {\n file: IBaseFileItem;\n handleDropdownClose?: () => void;\n clickHandler?: () => void;\n item: IVerticalDropdownItem;\n}\n\nexport const DropdownItem = forwardRef(({item, file, handleDropdownClose}: IDropdownItemProps, ref: any) => {\n const classes = useStyles();\n const {fileDownloading, openFileInNewTab, downloadFile, copyClickHandler} = useFilesAll();\n\n const hasUrl = !!file?.url;\n const isCopyable = item.isCopyLink && hasUrl;\n const isOpenInNewWindow = item.isOpenInNewWindow && hasUrl;\n const isDownloadable = item.isDownload && !!file?.contentItemId;\n const isScormPackage = file?.contentType === IResourceContentTypeNameEnum.ScormResource;\n const shouldShowTooltip = isScormPackage && !hasUrl;\n const tooltipText = shouldShowTooltip ? filesAllMessages.scormHasNotShortUrlMessage : '';\n\n const handleMenuItemClick = useCallback(() => {\n batch(() => {\n handleDropdownClose();\n\n if (item.isCopyLink) {\n return copyClickHandler();\n }\n\n if (item.isOpenInNewWindow) {\n return openFileInNewTab(file?.url);\n }\n\n if (item.isDownload) {\n return downloadFile(file?.contentItemId);\n }\n });\n }, [item, file, handleDropdownClose, openFileInNewTab, copyClickHandler, downloadFile]);\n\n return (\n <Fragment>\n <Tooltip placement=\"left-start\" title={tooltipText}>\n {item.isCopyLink && (\n <CopyToClipboard ref={ref} text={file?.url}>\n <MUIMenuItem\n classes={{root: classes.root}}\n disabled={!isCopyable || item.disabled}\n onClick={handleMenuItemClick}\n >\n {item.text}\n </MUIMenuItem>\n </CopyToClipboard>\n )}\n </Tooltip>\n <Tooltip placement=\"left-start\" title={tooltipText}>\n {item.isOpenInNewWindow && (\n <MUIMenuItem\n classes={{root: classes.root}}\n ref={ref}\n disabled={!isOpenInNewWindow || item.disabled}\n onClick={handleMenuItemClick}\n >\n {item.text}\n </MUIMenuItem>\n )}\n </Tooltip>\n {item.isDownload && (\n <MUIMenuItem\n classes={{root: classes.root}}\n ref={ref}\n disabled={!isDownloadable || item.disabled || fileDownloading}\n onClick={handleMenuItemClick}\n >\n {item.text}\n </MUIMenuItem>\n )}\n </Fragment>\n );\n});\n\nconst useStyles = makeStyles(() => ({\n root: {\n fontWeight: 500,\n },\n}));\n\nDropdownItem.displayName = 'DropdownItem';\n","import React, {FC, useCallback, useMemo, useState} from 'react';\nimport {IconButton, makeStyles, Menu} from '@material-ui/core';\nimport {IVerticalDropdownItem} from 'admin/resources/files';\nimport {Icon, Wrapper} from 'components-lib';\nimport {DropdownItem} from './DropdownItem';\nimport {IBaseFileItem} from 'models/resources/files';\nimport {IResourceContentTypeNameEnum} from 'enums/upload';\ninterface IVerticalDropdownProps {\n className?: string;\n file: IBaseFileItem;\n dropdownItems: IVerticalDropdownItem[];\n shouldDisable: boolean;\n}\n\nexport const VerticalDropdown: FC<IVerticalDropdownProps> = ({className, dropdownItems, shouldDisable, file}) => {\n const classes = useStyles();\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n\n let menuList = [...dropdownItems];\n const isWebLink = file.contentType === IResourceContentTypeNameEnum.WebLinkResource;\n\n if (isWebLink) {\n menuList = menuList.splice(0, 2);\n }\n\n const openMenuClickHandler = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => setAnchorEl(event.currentTarget),\n []\n );\n\n const closeMenuClickHandler = useCallback(() => setAnchorEl(null), []);\n\n const MenuIcon = useMemo(\n () => () => (\n <IconButton disabled={shouldDisable} className={classes.button} onClick={openMenuClickHandler}>\n <Icon.MoreIcon disabled={shouldDisable} />\n </IconButton>\n ),\n [classes, shouldDisable, openMenuClickHandler]\n );\n\n return (\n <Wrapper className={className}>\n <MenuIcon />\n <Menu anchorEl={anchorEl} keepMounted open={Boolean(anchorEl)} onClose={closeMenuClickHandler}>\n {menuList?.map((item: IVerticalDropdownItem, idx: number) => {\n return <DropdownItem key={idx} item={item} file={file} handleDropdownClose={closeMenuClickHandler} />;\n })}\n </Menu>\n </Wrapper>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n button: {\n cursor: 'pointer',\n padding: `${theme.spacing(0)} ${theme.spacing(1)}`,\n },\n}));\n","import React, {FC, useCallback, useMemo} from 'react';\nimport {Dropdown, MenuItem} from 'admin/components';\nimport {pages} from 'paths';\nimport {useNavigate} from 'hooks';\n\ninterface IUploadDropdownProps {\n justify?: 'center' | 'flex-start' | 'flex-end' | 'space-between';\n}\n\nexport interface IUploadDropdownOption {\n name: string;\n clickHandler: () => void;\n}\n\nexport const UploadDropdown: FC<IUploadDropdownProps> = ({justify}) => {\n const {push} = useNavigate();\n\n const redirectToUploadFilePage = useCallback(() => push(`${pages.adminPortal.upload.file}`), [push]);\n const redirectToUploadScormPage = useCallback(() => push(`${pages.adminPortal.upload.scorm}`), [push]);\n const redirectToUploadWebLinkPage = useCallback(() => push(`${pages.adminPortal.upload.webLink}`), [push]);\n\n const uploadItemsListOptions = useMemo(\n () => [\n {\n name: 'File',\n clickHandler: () => redirectToUploadFilePage(),\n },\n {\n name: 'SCORM Package',\n clickHandler: () => redirectToUploadScormPage(),\n },\n {\n name: 'Web Link',\n clickHandler: () => redirectToUploadWebLinkPage(),\n },\n ],\n [redirectToUploadFilePage, redirectToUploadScormPage, redirectToUploadWebLinkPage]\n ) as IUploadDropdownOption[];\n\n return (\n <Dropdown text=\"Upload\" justify={justify} withTextButton={false} withSecondaryButton withRow={false}>\n {() =>\n uploadItemsListOptions.map(({name, clickHandler}: IUploadDropdownOption, index: number) => (\n <MenuItem key={index} clickHandlerCallback={clickHandler}>\n {name}\n </MenuItem>\n ))\n }\n </Dropdown>\n );\n};\n","import React, {useCallback} from 'react';\nimport {useAppDispatch} from 'hooks';\nimport {useFilesAll} from '../../hooks';\nimport {IFilesAllSortOrder} from 'models/resources/files';\nimport {filesActions as actions} from '../../store';\nimport {SortByDropdown} from 'admin/components';\nimport {FilesOrderingAllEnum} from '../../enums';\nimport {SortingOrderEnum} from 'enums';\nimport {getFilesAllMenuItemsList} from '../../utils';\n\nconst filesAllOrderingMap = {\n [FilesOrderingAllEnum.Name]: {\n [SortingOrderEnum.ASC]: 'Name: A-Z',\n [SortingOrderEnum.DESC]: 'Name: Z-A',\n },\n [FilesOrderingAllEnum.Created]: {\n [SortingOrderEnum.ASC]: 'Created: Oldest First',\n [SortingOrderEnum.DESC]: 'Created: Newest First',\n },\n};\n\nexport const FilesViewAllSortBy = () => {\n const dispatch = useAppDispatch();\n const {sortOrder} = useFilesAll();\n\n const handleItemClick = useCallback(\n (sortOrder: IFilesAllSortOrder) => {\n dispatch(actions.setSortOrderFilesAll(sortOrder));\n },\n [dispatch]\n );\n\n return (\n <SortByDropdown\n label=\"Sort By: \"\n handleItemClick={handleItemClick}\n getMenuItemsList={getFilesAllMenuItemsList}\n sortOrder={sortOrder}\n map={filesAllOrderingMap}\n />\n );\n};\n","import React, {ReactNode, useMemo} from 'react';\nimport {PageViewHeader, Tag} from 'components-lib';\nimport {UploadDropdown} from 'admin/resources/files/components/Dropdowns';\nimport {FilesViewAllSortBy} from '../FilesViewAllSortBy/FilesViewAllSortBy';\nimport {useFilesAll, useFilesAllStoreActions} from '../../hooks';\nimport {FilesAllFilterNamesEnum} from '../../enums';\nimport {IFilesAllFilter} from 'models/resources/files';\nimport {filesAllFilterList, filesAllFilterToFilterNameMap} from '../../utils';\nimport {cloneDeep} from 'utils/functions';\nimport {getPublishedByExtendedEntities} from 'filters-selections';\n\nexport const FilesViewAllHeader = () => {\n const {filter, filterEntities, userArea} = useFilesAll();\n const {setFilterFilesAll} = useFilesAllStoreActions();\n\n const publishedByEntities = useMemo(() => getPublishedByExtendedEntities(userArea, filterEntities.publishedBy), [\n userArea,\n filterEntities.publishedBy,\n ]);\n\n const renderSortOrder = useMemo(() => <FilesViewAllSortBy />, []);\n\n const appliedFilters = useMemo(() => {\n const chips: ReactNode[] = [];\n\n const deleteClickHandler = (name: FilesAllFilterNamesEnum) => {\n let value = null as null | undefined | '';\n\n if (name === FilesAllFilterNamesEnum.SEARCH_BY_QUERY) {\n value = '';\n }\n\n const updated: IFilesAllFilter = {\n ...filter,\n [name]: value,\n };\n setFilterFilesAll(updated);\n };\n\n const resetDropdownFilter = (propName: string, id: string | number) => {\n const updated: IFilesAllFilter = cloneDeep(filter);\n updated[propName] = updated[propName].filter((pId: number) => pId !== id);\n setFilterFilesAll(updated);\n };\n\n // string[] filters\n\n filesAllFilterList.forEach((filesAllFilter) => {\n const mappedFilterName = filesAllFilterToFilterNameMap[filesAllFilter];\n const current = filter[mappedFilterName];\n\n if (current instanceof Array && current.length > 0) {\n current.forEach((id) => {\n const currentFilter = filterEntities[mappedFilterName][id];\n const label = currentFilter?.displayText ? currentFilter?.displayText : currentFilter?.name;\n\n !!currentFilter &&\n chips.push(\n <Tag\n withFilterChip\n key={`${mappedFilterName}-${id}`}\n label={label}\n deleteHandler={() => resetDropdownFilter(mappedFilterName, currentFilter.id)}\n />\n );\n });\n }\n });\n\n if (!!filter.query) {\n chips.push(\n <Tag\n withFilterChip\n key={filter.query}\n label={filter.query}\n deleteHandler={() => deleteClickHandler(FilesAllFilterNamesEnum.SEARCH_BY_QUERY)}\n />\n );\n }\n\n if (!!filter.isAccessibleToStudents || filter.isAccessibleToStudents === 0) {\n const isAccessibleToStudentsLabel =\n filterEntities.accessibleToStudents[filter.isAccessibleToStudents].displayText;\n\n chips.push(\n <Tag\n withFilterChip\n key={filter.isAccessibleToStudents}\n label={isAccessibleToStudentsLabel}\n deleteHandler={() => deleteClickHandler(FilesAllFilterNamesEnum.IS_ACCESSIBLE_TO_STUDENTS)}\n />\n );\n }\n\n if (!!filter.publishedBy) {\n const publishedByLabel = publishedByEntities[filter.publishedBy].displayText;\n\n chips.push(\n <Tag\n withFilterChip\n key={filter.publishedBy}\n label={publishedByLabel}\n deleteHandler={() => deleteClickHandler(FilesAllFilterNamesEnum.PUBLISHED_BY)}\n />\n );\n }\n\n return chips;\n }, [filter, setFilterFilesAll, filterEntities, publishedByEntities]);\n\n return <PageViewHeader heading=\"Files\" sort={renderSortOrder} filters={appliedFilters} action={<UploadDropdown />} />;\n};\n","import React from 'react';\n\nimport {PaginationLocal} from 'components-lib';\nimport {useFilesAll, useFilesAllStoreActions} from '../../hooks';\n\nexport const FilesViewAllFooter = () => {\n const {loading} = useFilesAll();\n const {currentPage, perPage, totalCount, setCurrentPage, setPerPage} = useFilesAllStoreActions();\n\n return (\n <PaginationLocal\n onPageChange={setCurrentPage}\n onPerPageChange={setPerPage}\n totalCount={totalCount}\n perPage={perPage}\n currentPage={currentPage}\n disabled={loading}\n />\n );\n};\n","import React, {useEffect, useMemo} from 'react';\nimport {useBeforeunload} from 'react-beforeunload';\nimport {Prompt} from 'react-router-dom';\nimport {makeStyles} from '@material-ui/core';\nimport {PageLayoutWithFixedAreas} from 'layout';\nimport {FilesViewAllHeader} from '../FilesViewAllHeader/FilesViewAllHeader';\nimport {FilesViewAllFooter} from '../FilesViewAllFooter/FilesViewAllFooter';\nimport {Button, CircularProgress, Loading, Row, Table, Wrapper} from 'components-lib';\nimport {VerticalDropdown} from 'admin/resources/files/components/Dropdowns';\nimport {AdminWithoutStaffRoles, USAAndSuperAdminRoles, usePermissions} from 'permissions';\nimport {IColumn} from 'models/library/common';\nimport {IBaseFileItem} from 'models';\nimport {useFilesAll, useFilesAllStoreActions} from '../../hooks';\nimport {FileAllTableColumnsEnum} from '../../enums';\nimport {filesAllMessages, filesDropdownList, getFilteredFilesColumns, mapFilesDropdownList} from '../../utils';\n\nimport {IBaseFileItemStatusEnum} from 'admin/resources/enums';\n\nconst fileColumns: IColumn[] = [\n {id: 'name', label: 'Name'},\n {id: 'type', label: 'Resource Type'},\n {id: 'username', label: 'User Name'},\n {id: 'status', label: 'Status'},\n {id: 'viewGroup', label: '', align: 'right'},\n];\n\nexport const FilesViewAllContent = () => {\n const classes = useStyles();\n const {\n loading,\n filesAllIds,\n filesAllEntities,\n fileDownloading,\n downloadingId,\n fetchFilesAllPaged,\n redirectToEditFilePage,\n } = useFilesAll();\n const {clearFiles} = useFilesAllStoreActions();\n const {hasPermission} = usePermissions();\n\n const shouldFilterColumnsBasedOnUsername = !hasPermission(AdminWithoutStaffRoles);\n const shouldFilterColumnsBasedOnStatus = !hasPermission(USAAndSuperAdminRoles);\n const shouldDisableViewExpiredResource = !hasPermission(USAAndSuperAdminRoles);\n\n useEffect(() => {\n fetchFilesAllPaged();\n\n return () => {\n clearFiles();\n };\n }, [fetchFilesAllPaged, clearFiles]);\n\n useBeforeunload(() => {\n if (fileDownloading) {\n return filesAllMessages.warningUnsavedChanges;\n }\n });\n\n const columns = useMemo(() => {\n let filteredCols = [...fileColumns];\n\n if (shouldFilterColumnsBasedOnUsername) {\n filteredCols = getFilteredFilesColumns(filteredCols, FileAllTableColumnsEnum.UserName);\n }\n\n if (shouldFilterColumnsBasedOnStatus) {\n filteredCols = getFilteredFilesColumns(filteredCols, FileAllTableColumnsEnum.Status);\n }\n\n return filteredCols;\n }, [shouldFilterColumnsBasedOnUsername, shouldFilterColumnsBasedOnStatus]);\n\n const rows = useMemo(() => {\n if (!filesAllIds.length) {\n return [];\n }\n\n return filesAllIds.map((key: string) => {\n const file = filesAllEntities[key] as IBaseFileItem;\n const {title, contentType, contentItemId, username, status} = file;\n\n const isFileExpired = status === IBaseFileItemStatusEnum.Expired;\n const shouldDisableButtons = isFileExpired && shouldDisableViewExpiredResource;\n\n const dropdownItems = mapFilesDropdownList(filesDropdownList, isFileExpired);\n\n return {\n name: title,\n type: contentType,\n username: username ?? '',\n status: status ?? '',\n viewGroup: (\n <Row justify=\"flex-end\">\n <Button.Secondary size=\"small\" clickHandler={() => redirectToEditFilePage(contentItemId)}>\n View\n </Button.Secondary>\n {fileDownloading && downloadingId === contentItemId ? (\n <Wrapper className={classes.progress}>\n <CircularProgress size={20} />\n </Wrapper>\n ) : (\n <VerticalDropdown file={file} dropdownItems={dropdownItems} shouldDisable={shouldDisableButtons} />\n )}\n </Row>\n ),\n };\n });\n }, [\n filesAllIds,\n filesAllEntities,\n redirectToEditFilePage,\n shouldDisableViewExpiredResource,\n downloadingId,\n fileDownloading,\n classes.progress,\n ]);\n\n return (\n <PageLayoutWithFixedAreas header={<FilesViewAllHeader />} footer={<FilesViewAllFooter />}>\n {loading ? <Loading /> : <Table rows={rows} columns={columns} />}\n <Prompt when={fileDownloading} message={filesAllMessages.warningUnsavedChanges} />\n </PageLayoutWithFixedAreas>\n );\n};\n\nconst useStyles = makeStyles(() => ({\n progress: {\n padding: 12,\n },\n}));\n","import * as Yup from 'yup';\nimport {FilesAllFilterNamesEnum} from '../../../enums';\n\nexport interface IFilesAllFiltersFormValues {\n [FilesAllFilterNamesEnum.SEARCH_BY_QUERY]: string;\n [FilesAllFilterNamesEnum.FILE_TYPES]: number[];\n [FilesAllFilterNamesEnum.PROGRAMS]: number[];\n [FilesAllFilterNamesEnum.GRADE_LEVELS]: number[];\n [FilesAllFilterNamesEnum.PILLARS]: number[];\n [FilesAllFilterNamesEnum.COMPETENCIES]: number[];\n [FilesAllFilterNamesEnum.KSAS]: number[];\n [FilesAllFilterNamesEnum.IS_ACCESSIBLE_TO_STUDENTS]: number;\n [FilesAllFilterNamesEnum.PUBLISHED_BY]: number;\n [FilesAllFilterNamesEnum.LANGUAGES]: number[];\n [FilesAllFilterNamesEnum.FILE_STATUSES]: number[];\n}\n\nexport const filesAllSidebarValidationSchema = Yup.object().shape({});\n","import React, {useCallback, useMemo} from 'react';\nimport {Form} from 'forms';\nimport {Filters} from 'components-lib';\nimport {FilesAllFilterNamesEnum} from '../../enums';\nimport {useFilesAll, useFilesAllStoreActions} from '../../hooks';\nimport {filesAllSidebarValidationSchema, IFilesAllFiltersFormValues} from './config';\nimport {IFilesAllFilter} from 'models/resources/files';\nimport {filesAllFilterList, mapFilesAllFilters} from '../../utils';\nimport {FiltersEnum, FiltersList} from 'filters-selections';\nimport {AreaAdminRole, USAAndSuperAdminRoles, usePermissions} from 'permissions';\n\nexport const FilesViewAllSidebar = () => {\n const {filter, loading} = useFilesAll();\n const {setFilterFilesAll, resetFilterFilesAll} = useFilesAllStoreActions();\n const {hasPermission} = usePermissions();\n const hasAreaAdminPermission = hasPermission(AreaAdminRole);\n const hasUSAAndSuperAdminPermission = hasPermission(USAAndSuperAdminRoles);\n\n const shouldRemovePublishedByFilter = !hasAreaAdminPermission || hasUSAAndSuperAdminPermission;\n const shouldRemoveFileStatusesFilter = !hasUSAAndSuperAdminPermission;\n\n const submitHandler = useCallback(\n (formValues: IFilesAllFiltersFormValues) => {\n const filter: IFilesAllFilter = mapFilesAllFilters(formValues);\n setFilterFilesAll(filter);\n },\n [setFilterFilesAll]\n );\n\n const resetHandler = useCallback(() => resetFilterFilesAll(), [resetFilterFilesAll]);\n\n const initialValues = useMemo(\n () => ({\n [FilesAllFilterNamesEnum.SEARCH_BY_QUERY]: filter[FilesAllFilterNamesEnum.SEARCH_BY_QUERY],\n [FilesAllFilterNamesEnum.FILE_TYPES]: filter[FilesAllFilterNamesEnum.FILE_TYPES],\n [FilesAllFilterNamesEnum.PROGRAMS]: filter[FilesAllFilterNamesEnum.PROGRAMS],\n [FilesAllFilterNamesEnum.GRADE_LEVELS]: filter[FilesAllFilterNamesEnum.GRADE_LEVELS],\n [FilesAllFilterNamesEnum.PILLARS]: filter[FilesAllFilterNamesEnum.PILLARS],\n [FilesAllFilterNamesEnum.COMPETENCIES]: filter[FilesAllFilterNamesEnum.COMPETENCIES],\n [FilesAllFilterNamesEnum.KSAS]: filter[FilesAllFilterNamesEnum.KSAS],\n [FilesAllFilterNamesEnum.IS_ACCESSIBLE_TO_STUDENTS]: filter[FilesAllFilterNamesEnum.IS_ACCESSIBLE_TO_STUDENTS],\n [FilesAllFilterNamesEnum.PUBLISHED_BY]: filter[FilesAllFilterNamesEnum.PUBLISHED_BY],\n [FilesAllFilterNamesEnum.LANGUAGES]: filter[FilesAllFilterNamesEnum.LANGUAGES],\n [FilesAllFilterNamesEnum.FILE_STATUSES]: filter[FilesAllFilterNamesEnum.FILE_STATUSES],\n }),\n [filter]\n );\n\n const renderFiltersList = useMemo(() => {\n if (shouldRemovePublishedByFilter && filesAllFilterList.includes(FiltersEnum.PublishedByRadio)) {\n filesAllFilterList.pop();\n }\n\n if (shouldRemoveFileStatusesFilter && filesAllFilterList.includes(FiltersEnum.FileStatusesCheckbox)) {\n filesAllFilterList.pop();\n }\n\n return <FiltersList disableAll={loading} filters={filesAllFilterList} />;\n }, [loading, shouldRemovePublishedByFilter, shouldRemoveFileStatusesFilter]);\n\n return (\n <Form.Form<IFilesAllFiltersFormValues>\n initialValues={initialValues}\n validationSchema={filesAllSidebarValidationSchema}\n submitHandler={submitHandler}\n >\n <Filters.FiltersPanel\n disableAll={loading}\n clearButtonClickHandler={resetHandler}\n searchFieldName={FilesAllFilterNamesEnum.SEARCH_BY_QUERY}\n filters={renderFiltersList}\n />\n </Form.Form>\n );\n};\n","import React from 'react';\nimport {FilesViewAllContent, FilesViewAllSidebar} from './components';\nimport {PageLayoutTwoCol} from 'layout/components';\n\nexport const FilesViewAll = () => (\n <PageLayoutTwoCol sidebar={<FilesViewAllSidebar />} content={<FilesViewAllContent />} />\n);\n","import React from 'react';\nimport {Route, Switch} from 'react-router-dom';\nimport {pages} from 'paths';\nimport {FilesEditView, FilesViewAll} from './views';\n\nexport function Files() {\n return (\n <Switch>\n <Route exact path={pages.adminPortal.files.root} component={FilesViewAll} />\n <Route path={pages.adminPortal.files.edit} component={FilesEditView} />\n </Switch>\n );\n}\n","import React, {FC, Fragment, useEffect, useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Wrapper, Loading} from 'components-lib';\nimport {importItemsMessages, Subtitle} from 'admin';\nimport {useItemsImport} from 'admin/items-import/hooks';\nimport {PreviewEditor} from 'components-lib';\nimport {useBeforeunload} from 'react-beforeunload';\nimport {Prompt} from 'react-router-dom';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface IItemsImportInstructionsProps {}\n\nexport const ItemsImportInstructions: FC<IItemsImportInstructionsProps> = () => {\n const classes = useStyles();\n const {loading, uploading, templateInstructionalText, fetchImportInstructionalText} = useItemsImport();\n\n /**\n * Prevent closing or refreshing the browser tab in case the user is uploading a file\n */\n\n useBeforeunload(() => {\n if (uploading) {\n return importItemsMessages.warning;\n }\n });\n\n useEffect(() => {\n if (!templateInstructionalText) {\n fetchImportInstructionalText();\n }\n }, [templateInstructionalText, fetchImportInstructionalText]);\n\n const contentInstructionText = useMemo(() => {\n if (!templateInstructionalText) {\n return <Wrapper className={classes.content}>No Data</Wrapper>;\n }\n\n return (\n <Wrapper className={classes.content}>\n <PreviewEditor htmlStr={templateInstructionalText} />\n </Wrapper>\n );\n }, [classes.content, templateInstructionalText]);\n\n return (\n <Fragment>\n <Prompt when={uploading} message={importItemsMessages.warning} />\n <Fragment>\n {loading ? (\n <Loading />\n ) : (\n <Wrapper>\n <Subtitle withColor={false} as=\"h3\" color=\"textPrimary\" title=\"Instructions\" />\n <Fragment>{contentInstructionText}</Fragment>\n </Wrapper>\n )}\n </Fragment>\n </Fragment>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n subtitle: {\n color: theme.palette.text.primary,\n },\n paragraph: {\n marginBottom: theme.spacing(3),\n },\n content: {\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2),\n color: theme.palette.text.primary,\n },\n}));\n","import React, {ChangeEvent, FC, Fragment, useCallback, useMemo, useRef} from 'react';\nimport {IconButton, makeStyles} from '@material-ui/core';\nimport {Button, Icon, Wrapper, Link, FileInput, Text} from 'components-lib';\nimport {importItemsMessages, Subtitle, useItemsImport} from 'admin';\nimport {useFormikContext} from 'formik';\nimport {FormNameEnum} from 'enums/form';\nimport {Loading} from 'components-lib';\nimport {heightThreeStepsActivity} from 'utils/layout';\nimport {useBeforeunload} from 'react-beforeunload';\nimport {Prompt} from 'react-router-dom';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface IUploadFileProps {}\n\nexport const UploadFile: FC<IUploadFileProps> = () => {\n const classes = useStyles();\n const fileInputRef = useRef(null);\n const {values, setFieldValue, errors} = useFormikContext();\n const {loading, downloading, downloadTemplate} = useItemsImport();\n\n const file = values[FormNameEnum.templateImportFile];\n const error = errors[FormNameEnum.templateImportFile] as string;\n\n useBeforeunload(() => {\n if (file) {\n return importItemsMessages.warning;\n }\n });\n\n const openFileDialog = useCallback(() => fileInputRef.current.click(), []);\n\n const handleDownloadTemplate = useCallback(() => downloadTemplate(), [downloadTemplate]);\n\n const handleAddFile = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const newFile = event.target.files[0];\n setFieldValue(FormNameEnum.templateImportFile, newFile);\n },\n [setFieldValue]\n );\n const handleDelete = useCallback(() => setFieldValue(FormNameEnum.templateImportFile, null), [setFieldValue]);\n\n const attachmentArea = useMemo(\n () => (\n <Wrapper className={classes.attachmentArea}>\n <Wrapper className={classes.fileIconContainer}>\n <Icon.FileIcon />\n </Wrapper>\n {!error && (\n <Text.Heading classes={{root: classes.fileName}} as=\"h4\" color=\"inherit\">\n {file?.name}\n </Text.Heading>\n )}\n {error && <Text.Error withBottomMargin={false}>{error}</Text.Error>}\n <IconButton disabled={loading} onClick={handleDelete}>\n <Icon.DeleteIcon color={loading ? 'disabled' : 'error'} />\n </IconButton>\n </Wrapper>\n ),\n [classes.fileName, classes.fileIconContainer, classes.attachmentArea, file, error, handleDelete, loading]\n );\n\n const DroppableArea = useMemo(\n () => () => {\n return (\n <Wrapper>\n <Prompt when={file} message={importItemsMessages.itemsImportWarning} />\n {file && <Wrapper>{attachmentArea}</Wrapper>}\n {!file && (\n <Wrapper className={classes.droppableArea}>\n <Icon.FolderIcon disabled={false} />\n <Wrapper className={classes.text}>Drag and drop a file here or</Wrapper>\n <Wrapper className={classes.buttonContainer}>\n {!error && (\n <FileInput\n name={FormNameEnum.templateImportFile}\n inputRef={fileInputRef}\n accept=\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n clickHandler={handleAddFile}\n />\n )}\n\n <Button.Secondary disabled={false} clickHandler={openFileDialog}>\n Browse\n </Button.Secondary>\n </Wrapper>\n <Link clickHandler={handleDownloadTemplate}>Download Template</Link>\n </Wrapper>\n )}\n </Wrapper>\n );\n },\n [\n classes.droppableArea,\n classes.buttonContainer,\n classes.text,\n openFileDialog,\n handleDownloadTemplate,\n handleAddFile,\n attachmentArea,\n file,\n error,\n ]\n );\n\n const content = useMemo(() => {\n return (\n <Fragment>\n <Subtitle withColor={false} as=\"h3\" color=\"textPrimary\" title=\"Upload file\" />\n <Wrapper className={classes.content}>{downloading ? <Loading /> : <DroppableArea />}</Wrapper>\n </Fragment>\n );\n }, [classes.content, DroppableArea, downloading]);\n\n return <Fragment>{content}</Fragment>;\n};\n\nconst useStyles = makeStyles((theme) => ({\n content: () => {\n return {\n height: heightThreeStepsActivity,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n };\n },\n droppableArea: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n flexDirection: 'column',\n },\n buttonContainer: {\n padding: `${theme.spacing(0)}px ${theme.spacing(3)}px ${theme.spacing(3)}px ${theme.spacing(3)}px`,\n },\n text: {\n padding: theme.spacing(1),\n },\n attachmentArea: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n },\n fileIconContainer: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n paddingRight: theme.spacing(1) + theme.spacing(2),\n },\n fileName: {\n maxWidth: 300,\n fontWeight: 700,\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n },\n}));\n","import React, {FC, Fragment, useMemo} from 'react';\nimport {MappingTable} from '..';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface IFileFieldNameProps {}\n\nexport const FileFieldName: FC<IFileFieldNameProps> = () => {\n const content = useMemo(() => <MappingTable />, []);\n\n return <Fragment>{content}</Fragment>;\n};\n","import React, {useMemo} from 'react';\nimport {Table} from 'components-lib';\nimport {columns} from 'admin/items-import/utils';\nimport {useItemsImport} from 'admin';\n\nexport const FilePreviewTable = () => {\n const {itemImportPreviewRows} = useItemsImport();\n\n const rows = useMemo(() => {\n if (!itemImportPreviewRows.length) {\n return [];\n }\n\n return itemImportPreviewRows;\n }, [itemImportPreviewRows]);\n\n return <Table rows={rows} columns={columns} hasRows={!!rows.length} />;\n};\n","import React, {useCallback, useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Button, Wrapper} from 'components-lib';\nimport {useItemsImport} from 'admin';\n\nexport const DownloadIssuesButton = () => {\n const classes = useStyles();\n const {downloadingCriticalIssues, downloadIssues, itemImportCriticalIssueCount} = useItemsImport();\n const buttonText = `Issues (${itemImportCriticalIssueCount})`;\n\n const loadingIndicator = useMemo(() => <Wrapper className={classes.loadingContainer}>Loading...</Wrapper>, [\n classes.loadingContainer,\n ]);\n\n const downloadImportIssuesClickHandler = useCallback(() => downloadIssues(), [downloadIssues]);\n\n return (\n <Button.Secondary\n className={classes.button}\n size=\"small\"\n disabled={downloadingCriticalIssues}\n clickHandler={downloadImportIssuesClickHandler}\n >\n {!downloadingCriticalIssues && buttonText}\n {downloadingCriticalIssues && loadingIndicator}\n </Button.Secondary>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n button: {\n position: 'absolute',\n right: theme.spacing(4),\n top: theme.spacing(6) + (theme.spacing(4) - theme.spacing(2)) - 2,\n },\n loadingContainer: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n flexDirection: 'row',\n },\n}));\n","import React from 'react';\nimport {Column, Row} from 'components-lib';\nimport {ErrorBox} from 'admin/components/ErrorBox/ErrorBox';\nimport {makeStyles} from '@material-ui/core';\n\nexport const IssuesWarningBox = () => {\n const classes = useStyles();\n\n return (\n <Row justify=\"flex-start\" align=\"center\" classes={{root: classes.issuesWarningBox}}>\n <Column sm={1} md={1} lg={2} xl={2}>\n <ErrorBox\n withMarginLeft={false}\n errorMessages=\"There are some issues with the file. Please check them by clicking on Issues and re-upload the file to the system.\"\n />\n </Column>\n </Row>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n issuesWarningBox: {\n paddingTop: theme.spacing(3),\n paddingBottom: theme.spacing(3),\n paddingLeft: theme.spacing(2),\n },\n}));\n","import React, {FC, Fragment, useEffect, useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Prompt} from 'react-router-dom';\nimport {useBeforeunload} from 'react-beforeunload';\nimport {importItemsMessages, useItemsImport} from 'admin/items-import';\nimport {Loading, Wrapper} from 'components-lib';\nimport {Subtitle} from 'admin/components';\nimport {DownloadIssuesButton, FilePreviewTable, IssuesWarningBox} from './components';\nimport {footerHeight, navHeight} from 'utils/layout';\n\nexport const ItemsImportFilePreview: FC = () => {\n const classes = useStyles();\n const {importing, fetchItemBankPreviewTableRows, previewLoading, itemImportCriticalIssueCount} = useItemsImport();\n const shouldRenderDownloadCriticalIssuesButton = itemImportCriticalIssueCount > 0;\n\n useEffect(() => {\n fetchItemBankPreviewTableRows();\n }, [fetchItemBankPreviewTableRows]);\n\n useBeforeunload(() => importItemsMessages.warning);\n\n const LoadingMemoized = useMemo(\n () => () => (\n <Wrapper className={classes.loadingContainer}>\n <Loading />\n </Wrapper>\n ),\n [classes.loadingContainer]\n );\n\n const actionButton = useMemo(\n () => <Fragment>{shouldRenderDownloadCriticalIssuesButton && <DownloadIssuesButton />}</Fragment>,\n [shouldRenderDownloadCriticalIssuesButton]\n );\n\n return (\n <Wrapper className={classes.itemsImportFilePreviewContainer}>\n <Prompt when={true} message={importItemsMessages.itemsImportWarning} />\n {previewLoading ? (\n <LoadingMemoized />\n ) : (\n <Fragment>\n {shouldRenderDownloadCriticalIssuesButton && <IssuesWarningBox />}\n <Subtitle withColor={false} as=\"h3\" color=\"textPrimary\" title=\"File preview\" actions={actionButton} />\n <Prompt when={importing} message={importItemsMessages.itemsImportWarning} />\n <FilePreviewTable />\n </Fragment>\n )}\n </Wrapper>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n loadingContainer: {\n height: `calc(100vh - ${navHeight}px - ${footerHeight}px)`,\n width: '100%',\n },\n itemsImportFilePreviewContainer: {\n paddingRight: theme.spacing(3),\n },\n}));\n","import React, {useCallback} from 'react';\nimport {Button, Column, Modal, Row, Text} from 'components-lib';\nimport {ReactComponent as IllustrationTrash} from 'resources/images/instruments/Illustration_trash.svg';\nimport {useFormikContext} from 'formik';\n\nexport const ModalCancelDataImport = ({isOpen, handleClose, handleCancelDataImport}) => {\n const {resetForm} = useFormikContext();\n\n const closeClickHandler = useCallback(() => {\n handleClose();\n }, [handleClose]);\n\n const cancelClickHandler = useCallback(() => {\n resetForm();\n handleCancelDataImport();\n }, [handleCancelDataImport, resetForm]);\n\n return (\n <Modal isOpen={isOpen} handleClose={handleClose} title=\"Cancel Import Data Confirmation\" size=\"small\">\n <Column>\n <Row align=\"center\">\n <IllustrationTrash />\n <Text.Paragraph align=\"center\" withMargin>\n Are you sure you want to cancel the data import?\n </Text.Paragraph>\n <Text.Paragraph>This action cannot be undone!</Text.Paragraph>\n </Row>\n </Column>\n <>\n <Button.Secondary clickHandler={closeClickHandler} size=\"small\">\n Close\n </Button.Secondary>\n <Button.Primary clickHandler={cancelClickHandler} size=\"small\">\n Cancel\n </Button.Primary>\n </>\n </Modal>\n );\n};\n","import React, {FC} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Wrapper, Button} from 'components-lib';\nimport {Form} from 'forms';\nimport {useFormikContext} from 'formik';\nimport {useItemsImport} from 'admin';\ninterface IContentFooterProps {\n isFirstStep: boolean;\n isSecondStep: boolean;\n isThirdStep: boolean;\n shouldDisableCancelButton: boolean;\n shouldDisableNextButton: boolean;\n shouldDisableImportButton: boolean;\n openModalCancelDataImportHandler: () => void;\n nextClickHandler: (formValues: any, resetForm: any) => void;\n}\n\nexport const ContentFooter: FC<IContentFooterProps> = ({\n isFirstStep,\n isSecondStep,\n isThirdStep,\n shouldDisableCancelButton,\n shouldDisableNextButton,\n shouldDisableImportButton,\n openModalCancelDataImportHandler,\n nextClickHandler,\n}) => {\n const classes = useStyles();\n const {values, resetForm} = useFormikContext();\n const {loading, uploading, previewLoading, hasRequiredFieldErrors} = useItemsImport();\n\n let nextButtonText = 'Next';\n\n if (loading || uploading || previewLoading) {\n nextButtonText = 'Loading';\n }\n\n return (\n <Wrapper className={classes.actionButtons}>\n <Button.Secondary disabled={shouldDisableCancelButton} clickHandler={openModalCancelDataImportHandler}>\n Cancel\n </Button.Secondary>\n {isFirstStep && <Form.ButtonSubmit size=\"large\" text={nextButtonText} disabled={shouldDisableNextButton} />}\n {isSecondStep && (\n <Button.Primary\n size=\"large\"\n disabled={hasRequiredFieldErrors}\n clickHandler={() => nextClickHandler(values, resetForm)}\n >\n Next\n </Button.Primary>\n )}\n {isThirdStep && <Form.ButtonSubmit size=\"large\" text=\"Import Data\" disabled={shouldDisableImportButton} />}\n </Wrapper>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n actionButtons: {\n display: 'flex',\n justifyContent: 'flex-end',\n paddingRight: theme.spacing(2),\n },\n}));\n","import React, {FC} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Wrapper} from 'components-lib';\nimport {ActiveHeader} from '../../../components/ActiveHeader';\n\ninterface IHeaderSubHeadingProps {\n isFirstStep: boolean;\n isSecondStep: boolean;\n isThirdStep: boolean;\n}\n\nexport const HeaderSubHeading: FC<IHeaderSubHeadingProps> = ({isFirstStep, isSecondStep, isThirdStep}) => {\n const classes = useStyles();\n return (\n <Wrapper className={classes.headerSubHeading}>\n {'\\u00a0 /'}\n <ActiveHeader isActive={isFirstStep}>{'\\u00a0 Step 1: Upload file \\u00a0'}</ActiveHeader>\n {'/'}\n <ActiveHeader isActive={isSecondStep}>{'\\u00a0 Step 2: Mapping \\u00a0'}</ActiveHeader>\n {'/'}\n <ActiveHeader isActive={isThirdStep}>{'\\u00a0 Step 3: Preview and Import \\u00a0'}</ActiveHeader>\n </Wrapper>\n );\n};\n\nconst useStyles = makeStyles(() => ({\n headerSubHeading: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'center',\n alignItems: 'center',\n },\n}));\n","import React, {FC, ReactNode, useCallback, useMemo, SyntheticEvent, DragEvent} from 'react';\nimport {ItemsImportFilePreview, ItemsImportInstructions, UploadFile} from '..';\nimport {ActiveStepEnum} from 'enums';\nimport {PageLayoutOneOrTwoEqualCols} from 'layout';\nimport {ActiveStepPage} from 'admin';\nimport {FileFieldName} from '../FileFiledName';\nimport {useFormikContext} from 'formik';\nimport {FormNameEnum} from 'enums/form';\nimport {DraggableArea} from 'components-lib';\nimport {useItemsImport} from 'admin/items-import/hooks';\n\ninterface IItemImportActiveStepPageProps {\n activeStep: ActiveStepEnum;\n header: ReactNode;\n contentFooter: ReactNode;\n}\n\nexport const ItemImportActiveStepPage: FC<IItemImportActiveStepPageProps> = ({activeStep, header, contentFooter}) => {\n const {setFieldValue} = useFormikContext();\n const {uploading} = useItemsImport();\n\n const handleFileDrop = useCallback(\n (event: DragEvent<HTMLDivElement>) => {\n event.stopPropagation();\n event.preventDefault();\n\n const newFile = event.dataTransfer.files[0];\n setFieldValue(FormNameEnum.templateImportFile, newFile);\n },\n [setFieldValue]\n );\n\n const handleDragOver = useCallback((event: SyntheticEvent) => {\n event.stopPropagation();\n event.preventDefault();\n }, []);\n\n const uploadFileWrapper = useMemo(\n () => (\n <DraggableArea onDrop={handleFileDrop} onDragOver={handleDragOver}>\n <UploadFile />\n </DraggableArea>\n ),\n [handleFileDrop, handleDragOver]\n );\n\n const pageLayoutFirst = useMemo(\n () => (\n <PageLayoutOneOrTwoEqualCols\n header={header}\n footer={contentFooter}\n contentLeft={uploadFileWrapper}\n contentRight={<ItemsImportInstructions />}\n loading={uploading}\n />\n ),\n [contentFooter, header, uploadFileWrapper, uploading]\n );\n const pageLayoutSecond = useMemo(\n () => <PageLayoutOneOrTwoEqualCols header={header} content={<FileFieldName />} footer={contentFooter} />,\n [header, contentFooter]\n );\n const pageLayoutThird = useMemo(\n () => <PageLayoutOneOrTwoEqualCols header={header} footer={contentFooter} content={<ItemsImportFilePreview />} />,\n [contentFooter, header]\n );\n\n return (\n <ActiveStepPage\n activeStep={activeStep}\n pageLayoutFirst={pageLayoutFirst}\n pageLayoutSecond={pageLayoutSecond}\n pageLayoutThird={pageLayoutThird}\n />\n );\n};\n","import React, {Fragment, useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {\n FileFieldTableEnum,\n IMappingTableColumn,\n IMappingTableTableRow,\n importItemsMessages,\n ISystemFieldOptionEnum,\n MappingTableLabelEnum,\n useItemsImport,\n} from 'admin/items-import';\nimport {Table as TableLib, Wrapper} from 'components-lib';\nimport {useBeforeunload} from 'react-beforeunload';\nimport {Prompt} from 'react-router-dom';\n\nexport const MappingTable = () => {\n const classes = useStyles();\n const {fieldList} = useItemsImport();\n const emptyList = useMemo(() => [], []);\n\n useBeforeunload(() => importItemsMessages.warning);\n\n const columns: IMappingTableColumn[] = useMemo(\n () => [\n {\n id: FileFieldTableEnum.SystemFieldName,\n label: MappingTableLabelEnum.SystemFieldName,\n align: 'left',\n className: classes.systemFieldNameCell,\n },\n {\n id: FileFieldTableEnum.Option,\n label: MappingTableLabelEnum.RequiredField,\n align: 'left',\n className: classes.requiredFieldCell,\n },\n {\n id: FileFieldTableEnum.FileFieldName,\n label: MappingTableLabelEnum.FileFieldName,\n align: 'left',\n className: classes.fileFieldNameCell,\n hasError: true,\n },\n ],\n [classes]\n );\n\n const rows = useMemo(() => {\n if (!fieldList.length) {\n return emptyList;\n }\n\n return fieldList.map((field) => {\n const {systemFieldName, isRequired, fileFieldName, validationError} = field;\n\n const option = isRequired ? ISystemFieldOptionEnum.Required : ISystemFieldOptionEnum.Optional;\n const systemFieldNameModified = isRequired ? `${systemFieldName}*` : systemFieldName;\n return {\n systemFieldName: systemFieldNameModified,\n option,\n fileFieldName,\n error: validationError ? fileFieldName : '',\n };\n });\n }, [fieldList, emptyList]) as IMappingTableTableRow[];\n\n const hasRows = !!rows.length;\n\n const Table = useMemo(\n () => () =>\n hasRows ? <TableLib rows={rows} columns={columns} withTableHead /> : <Fragment>No results found</Fragment>,\n [hasRows, rows, columns]\n );\n\n return (\n <Wrapper className={classes.tableContainer}>\n <Prompt when={true} message={importItemsMessages.itemsImportWarning} />\n <Table />\n </Wrapper>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n tableContainer: {\n paddingRight: theme.spacing(3),\n },\n systemFieldNameCell: {\n width: '40%',\n },\n requiredFieldCell: {\n width: '10%',\n },\n fileFieldNameCell: {\n width: '50%',\n },\n textError: {\n color: theme.palette.error.main,\n },\n}));\n","import React, {Fragment, useCallback, useMemo} from 'react';\nimport {batch} from 'react-redux';\nimport {FormikHelpers} from 'formik';\nimport {makeStyles} from '@material-ui/core';\nimport {PageViewHeader, Wrapper, Text} from 'components-lib';\nimport {Form} from 'forms';\nimport {IItemsImportFormBaseValues, itemsImportFormBaseValidationSchema, NavigationProgressBar} from 'admin';\nimport {ModalCancelDataImport, ContentFooter, ItemImportActiveStepPage} from '../components';\nimport {useItemsImport} from '../hooks';\nimport {FormNameEnum} from 'enums/form';\nimport {useActiveStep, useModal} from 'hooks';\nimport {ActiveStepEnum} from 'enums/common';\n\nexport const ItemsImportView = () => {\n const classes = useStyles();\n const {activeStep, setActiveStep, isFirstStep, isSecondStep, isThirdStep} = useActiveStep();\n const {isOpen: isModalCancelDataImport, setIsOpen: setIsModalCancelDataImport} = useModal();\n const {\n fileName,\n uploadItemBank,\n resetMappingState,\n previewLoading,\n uploading,\n shouldDisableImport,\n startItemBankImport,\n } = useItemsImport();\n\n const shouldDisableBackButton = isFirstStep;\n const shouldDisableNextButton = isThirdStep;\n const shouldDisableCancelButton = isFirstStep || previewLoading || uploading;\n\n const backButtonClickHandler = useCallback(() => {\n if (activeStep < ActiveStepEnum.Second) {\n return;\n }\n\n if (activeStep === ActiveStepEnum.Second) {\n resetMappingState();\n }\n\n return batch(() => {\n setActiveStep(activeStep - ActiveStepEnum.First);\n });\n }, [activeStep, setActiveStep, resetMappingState]);\n\n const nextClickHandler = useCallback(\n ({templateImportFile}, resetForm, setSubmitting?: (isSubmitting: boolean) => void) => {\n if (activeStep > ActiveStepEnum.Third) {\n return;\n }\n\n if (isFirstStep) {\n uploadItemBank(templateImportFile)\n .then(() => setSubmitting(false))\n .then(() => setActiveStep(activeStep + ActiveStepEnum.First));\n }\n\n if (isSecondStep) {\n setActiveStep(activeStep + ActiveStepEnum.First);\n }\n\n return;\n },\n [activeStep, setActiveStep, isFirstStep, isSecondStep, uploadItemBank]\n );\n\n const closeModalCancelDataImportHandler = useCallback(() => setIsModalCancelDataImport(false), [\n setIsModalCancelDataImport,\n ]);\n\n const openModalCancelDataImportHandler = useCallback(() => setIsModalCancelDataImport(true), [\n setIsModalCancelDataImport,\n ]);\n\n const cancelClickHandler = useCallback(() => {\n if (activeStep < ActiveStepEnum.Second) {\n return;\n }\n\n return batch(() => {\n resetMappingState();\n closeModalCancelDataImportHandler();\n setActiveStep(ActiveStepEnum.First);\n });\n }, [activeStep, setActiveStep, resetMappingState, closeModalCancelDataImportHandler]);\n\n const importDataClickHandler = useCallback(\n (resetForm: () => void) => {\n startItemBankImport(resetForm).then(() => resetMappingState());\n },\n [startItemBankImport, resetMappingState]\n );\n\n const submitHandler = useCallback(\n (formValues, {resetForm, setSubmitting}: FormikHelpers<any>) => {\n if (!isThirdStep) {\n return nextClickHandler(formValues, resetForm, setSubmitting);\n }\n\n if (isThirdStep) {\n return importDataClickHandler(resetForm);\n }\n },\n [isThirdStep, nextClickHandler, importDataClickHandler]\n );\n\n const initialValues = useMemo(\n () => ({\n [FormNameEnum.templateImportFile]: null,\n }),\n []\n );\n\n const contentFooter = useMemo(\n () => (\n <ContentFooter\n isFirstStep={isFirstStep}\n isSecondStep={isSecondStep}\n isThirdStep={isThirdStep}\n shouldDisableNextButton={shouldDisableNextButton}\n shouldDisableCancelButton={shouldDisableCancelButton}\n shouldDisableImportButton={shouldDisableImport}\n openModalCancelDataImportHandler={openModalCancelDataImportHandler}\n nextClickHandler={nextClickHandler}\n />\n ),\n [\n isFirstStep,\n isSecondStep,\n isThirdStep,\n shouldDisableNextButton,\n shouldDisableCancelButton,\n shouldDisableImport,\n openModalCancelDataImportHandler,\n nextClickHandler,\n ]\n );\n\n const extraSubHeading = useMemo(() => {\n return (\n <Wrapper className={classes.extraSubHeading}>\n <Text.Heading classes={{root: classes.fileName}} as=\"h4\" color=\"inherit\">\n {fileName}\n </Text.Heading>\n </Wrapper>\n );\n }, [classes, fileName]);\n\n const subHeading = useMemo(() => {\n return (\n <NavigationProgressBar\n isFirstStep={isFirstStep}\n isSecondStep={isSecondStep}\n isThirdStep={isThirdStep}\n stepOneText=\"Step 1: Upload file\"\n stepTwoText=\"Step 2: Mapping\"\n stepThreeText=\"Step 3: Preview and Import\"\n />\n );\n }, [isFirstStep, isSecondStep, isThirdStep]);\n\n const header = useMemo(() => {\n return (\n <PageViewHeader\n fullFlexWidth\n withColumnPadding={false}\n heading=\"Import Data\"\n headingColor=\"textPrimary\"\n subHeading={subHeading}\n withBackButton\n shouldDisableBackButton={shouldDisableBackButton}\n backButtonClickHandler={backButtonClickHandler}\n extraSubHeading={extraSubHeading}\n />\n );\n }, [subHeading, extraSubHeading, backButtonClickHandler, shouldDisableBackButton]);\n\n return (\n <Fragment>\n <Form.Form<IItemsImportFormBaseValues>\n initialValues={initialValues}\n validationSchema={itemsImportFormBaseValidationSchema}\n submitHandler={submitHandler}\n >\n <ItemImportActiveStepPage activeStep={activeStep} header={header} contentFooter={contentFooter} />\n <ModalCancelDataImport\n isOpen={isModalCancelDataImport}\n handleClose={closeModalCancelDataImportHandler}\n handleCancelDataImport={cancelClickHandler}\n />\n </Form.Form>\n </Fragment>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n extraSubHeading: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'flex-end',\n paddingRight: theme.spacing(4),\n },\n fileName: {\n maxWidth: 350,\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n },\n}));\n","import React, {FC} from 'react';\nimport {Route, Switch} from 'react-router-dom';\nimport {paths, pages} from 'paths';\nimport {ItemsImportView} from './import-view';\nimport {SuperAdminRole, withRole} from 'permissions';\nimport {NoPermissionsPage} from 'pages';\n\nconst ItemsImportViewEnhanced = withRole(\n SuperAdminRole,\n `${paths.adminPortal.root}${paths.noPermission}`\n)(ItemsImportView);\n\nexport const ItemImport: FC = () => {\n return (\n <Switch>\n <Route exact path={pages.adminPortal.itemImport.root}>\n <ItemsImportViewEnhanced />\n <Route path={`${pages.adminPortal.itemImport.root}${paths.noPermission}`}>\n <NoPermissionsPage />\n </Route>\n </Route>\n </Switch>\n );\n};\n","import {IColumn} from 'models';\n\nexport const paperAssessmentsColumns = [\n {id: 'name', label: 'Name'},\n {id: 'uploadedBy', label: 'Uploaded By'},\n {id: 'actions', label: '', align: 'right'},\n] as IColumn[];\n","export const uploadPaperAssessmentMessages = {\n warning:\n 'Are you sure you want to leave this page? You have unsaved changes. If you leave the page, these changes will be lost.',\n};\n","import {SortingOrderEnum} from 'enums';\nimport {ProgramClassPaperAssessmentsOrderingEnum} from 'enums/paper-assessments';\n\nexport const paperAssessmentsOrderingMap = {\n [ProgramClassPaperAssessmentsOrderingEnum.Name]: {\n [SortingOrderEnum.ASC]: 'Name: A-Z',\n [SortingOrderEnum.DESC]: 'Name: Z-A',\n },\n [ProgramClassPaperAssessmentsOrderingEnum.Created]: {\n [SortingOrderEnum.ASC]: 'Created: Oldest First',\n [SortingOrderEnum.DESC]: 'Created: Newest First',\n },\n};\n","import {SortingOrderEnum} from 'enums';\nimport {PaperAssessmentsSortDropdownNameEnum, ProgramClassPaperAssessmentsOrderingEnum} from 'enums/paper-assessments';\nimport {IProgramClassesPaperAssessmentsSortOrder} from 'models';\n\nexport const getPaperAssessmentsMenuItemsList = (\n itemClickHandler: () => void,\n handleItemClick: (handleItemSortObj: IProgramClassesPaperAssessmentsSortOrder) => void\n) => {\n const onClick = (\n itemClickHandler: () => void,\n handleItemClick: (handleItemSortObj: IProgramClassesPaperAssessmentsSortOrder) => void,\n handleItemSortObj: IProgramClassesPaperAssessmentsSortOrder\n ) => {\n return () => {\n itemClickHandler();\n handleItemClick(handleItemSortObj);\n };\n };\n\n return [\n {\n name: PaperAssessmentsSortDropdownNameEnum.NAME_ASC,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: ProgramClassPaperAssessmentsOrderingEnum.Name,\n sort: SortingOrderEnum.ASC,\n }),\n },\n {\n name: PaperAssessmentsSortDropdownNameEnum.NAME_DESC,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: ProgramClassPaperAssessmentsOrderingEnum.Name,\n sort: SortingOrderEnum.DESC,\n }),\n },\n {\n name: PaperAssessmentsSortDropdownNameEnum.CREATED_NEWEST,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: ProgramClassPaperAssessmentsOrderingEnum.Created,\n sort: SortingOrderEnum.DESC,\n }),\n },\n {\n name: PaperAssessmentsSortDropdownNameEnum.CREATED_OLDEST,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: ProgramClassPaperAssessmentsOrderingEnum.Created,\n sort: SortingOrderEnum.ASC,\n }),\n },\n ];\n};\n","import {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport {unwrapResult} from '@reduxjs/toolkit';\nimport {useAppDispatch, useNavigate} from 'hooks';\nimport {pages} from 'paths';\nimport {useClassPaperAssessmentsStoreActions, useProgramClassDetails} from 'admin/programs/details';\nimport {\n pageLoadingSelector,\n paperAssessmentsEntitiesCollectionSelector,\n paperAssessmentsEntitiesSelector,\n paperAssessmentsIdsSelector,\n} from '../store/programClassesPaperAssessments.selectors';\nimport {IUploadPaperAssessmentFormBaseValues} from '../components';\nimport {mapFetchClassPaperAssessmentsPayload, mapUploadPaperAssessmentPayload} from '../utils';\nimport {fetchClassPaperAssessmentsPagedThunk, uploadPaperAssessmentsThunk, paginationSelector} from '../store';\nimport {\n IFetchClassPaperAssessmentRawPayload,\n IProgramClassPaperAssessmentListItem,\n IUploadPaperAssessmentsApiResponse,\n} from 'models';\nimport {openFileInNewWindow} from 'utils';\n\nexport const useClassPaperAssessments = () => {\n const loading = useSelector(pageLoadingSelector);\n const {currentPage, perPage} = useSelector(paginationSelector);\n const paperAssessmentsIds = useSelector(paperAssessmentsIdsSelector);\n const paperAssessmentsEntities = useSelector(paperAssessmentsEntitiesSelector);\n const paperAssessmentsEntitiesCollection = useSelector(\n paperAssessmentsEntitiesCollectionSelector\n ) as IProgramClassPaperAssessmentListItem[];\n\n const {push} = useNavigate();\n const dispatch = useAppDispatch();\n const {sortOrder} = useClassPaperAssessmentsStoreActions();\n const {program, currentClass, programId, classId} = useProgramClassDetails();\n\n const redirectToProgram: () => void = useCallback(\n () => push(`${pages.adminPortal.programs.detailsLink}/${programId}`),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [programId]\n );\n\n const redirectToPaperAssessments: () => void = useCallback(\n () => push(pages.adminPortal.programs.classPaperAssessments),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n\n const uploadPaperAssessment: (\n values: IUploadPaperAssessmentFormBaseValues\n ) => Promise<IUploadPaperAssessmentsApiResponse> = useCallback(\n (values: IUploadPaperAssessmentFormBaseValues) => {\n const payload = mapUploadPaperAssessmentPayload({values, programId, classId});\n return dispatch(uploadPaperAssessmentsThunk(payload)).then(unwrapResult);\n },\n [dispatch, classId, programId]\n );\n\n const downloadPaperAssessment: (url: string) => void = useCallback((url: string) => openFileInNewWindow(url), []);\n\n const fetchClassPaperAssessmentsPaged: () => void = useCallback(() => {\n const data = {\n sortOrder,\n pageNumber: currentPage,\n pageSize: perPage,\n classId,\n programId,\n } as IFetchClassPaperAssessmentRawPayload;\n\n const payload = mapFetchClassPaperAssessmentsPayload(data);\n\n return dispatch(fetchClassPaperAssessmentsPagedThunk(payload));\n }, [dispatch, currentPage, sortOrder, perPage, classId, programId]);\n\n return {\n loading,\n paperAssessmentsIds,\n paperAssessmentsEntities,\n paperAssessmentsEntitiesCollection,\n program,\n currentClass,\n redirectToProgram,\n uploadPaperAssessment,\n downloadPaperAssessment,\n redirectToPaperAssessments,\n fetchClassPaperAssessmentsPaged,\n };\n};\n","import {IUploadPaperAssessmentFormBaseValues} from '../../components';\n\ninterface IMapUploadPaperAssessmentPayload {\n values: IUploadPaperAssessmentFormBaseValues;\n programId: number;\n classId: number;\n}\n\nexport const mapUploadPaperAssessmentPayload = ({\n values,\n programId,\n classId,\n}: IMapUploadPaperAssessmentPayload): FormData => {\n const data = new FormData();\n const {file, description} = values;\n\n data.append('file', file);\n data.append('description', description);\n data.append('programId', programId.toString());\n data.append('programSessionId', classId.toString());\n\n return data;\n};\n","import {SortingOrderEnum} from 'enums';\nimport {IFetchClassPaperAssessmentRawPayload, IGetPageOfPaperAssessmentsPayload} from 'models';\n\nexport const mapFetchClassPaperAssessmentsPayload = ({\n sortOrder,\n pageNumber,\n pageSize,\n classId,\n programId,\n}: IFetchClassPaperAssessmentRawPayload): IGetPageOfPaperAssessmentsPayload => ({\n sortOptions: {\n sortBy: sortOrder.order,\n sortAsc: sortOrder.sort === SortingOrderEnum.ASC,\n },\n pagination: {\n pageNumber,\n pageSize,\n },\n classId,\n programId,\n});\n","import {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport {useModal} from 'hooks';\nimport {useClassPaperAssessments} from '.';\nimport {uploadLoadingSelector} from '../store';\n\nexport const useUploadPaperAssessmentModal = () => {\n const uploadLoading = useSelector(uploadLoadingSelector);\n\n const {isOpen: isUploadModalOpen, setIsOpen: setIsUploadModalOpen} = useModal();\n\n const {uploadPaperAssessment} = useClassPaperAssessments();\n\n const openUploadPaperAssessmentModal: () => void = useCallback(() => setIsUploadModalOpen(true), [\n setIsUploadModalOpen,\n ]);\n\n const closeUploadPaperAssessmentModal: () => void = useCallback(() => setIsUploadModalOpen(false), [\n setIsUploadModalOpen,\n ]);\n\n return {\n uploadLoading,\n isUploadModalOpen,\n setIsUploadModalOpen,\n openUploadPaperAssessmentModal,\n closeUploadPaperAssessmentModal,\n uploadPaperAssessment,\n };\n};\n","import {useParams} from 'react-router';\nimport {toNumber} from 'utils';\nimport {useProgram} from 'admin/programs/details/hooks';\nimport {useProgramClass} from '../../hooks';\n\nexport const useProgramClassDetails = () => {\n const {programId: programIdRaw, classId: classIdRaw} = useParams<{\n programId: string;\n classId: string;\n }>();\n\n const programId = toNumber(programIdRaw);\n const classId = toNumber(classIdRaw);\n\n const {program, fetchProgram} = useProgram(programId);\n const {currentClass, fetchClass} = useProgramClass(classId);\n\n return {program, classId, currentClass, programId, fetchProgram, fetchClass};\n};\n","import {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport {IProgramClassesPaperAssessmentsFilter, IProgramClassesPaperAssessmentsSortOrder} from 'models';\nimport {useAppDispatch} from 'hooks';\nimport {programClassesPaperAssessmentsActions as actions} from '../store/programClassesPaperAssessments.slice';\nimport {\n filterPaperAssessmentsSelector,\n paginationSelector,\n paperAssessmentsSortOrderSelector,\n} from '../store/programClassesPaperAssessments.selectors';\n\nexport const useClassPaperAssessmentsStoreActions = () => {\n const dispatch = useAppDispatch();\n\n const filter = useSelector(filterPaperAssessmentsSelector);\n const sortOrder = useSelector(paperAssessmentsSortOrderSelector);\n const {currentPage, perPage, totalCount} = useSelector(paginationSelector);\n\n const setFilter: (filter: IProgramClassesPaperAssessmentsFilter) => void = useCallback(\n (filter: IProgramClassesPaperAssessmentsFilter) => dispatch(actions.setFilter(filter)),\n [dispatch]\n );\n\n const resetFilter: () => void = useCallback(() => dispatch(actions.resetFilter()), [dispatch]);\n\n const setCurrentPage: (newPage: number) => void = useCallback(\n (newPage: number) => dispatch(actions.setCurrentPage(newPage)),\n [dispatch]\n );\n\n const setPerPage: (perPage: number) => void = useCallback(\n (perPage: number) => dispatch(actions.setPerPage(perPage)),\n [dispatch]\n );\n\n const setSortOrder: (sortOrder: IProgramClassesPaperAssessmentsSortOrder) => void = useCallback(\n (sortOrder: IProgramClassesPaperAssessmentsSortOrder) => dispatch(actions.setSortOrderPaperAssessments(sortOrder)),\n [dispatch]\n );\n\n const clearPaperAssessments: () => void = useCallback(() => dispatch(actions.clear()), [dispatch]);\n\n return {\n setFilter,\n resetFilter,\n filter,\n currentPage,\n perPage,\n totalCount,\n setCurrentPage,\n setPerPage,\n setSortOrder,\n sortOrder,\n clearPaperAssessments,\n };\n};\n","import * as Yup from 'yup';\nimport {IInputFile} from 'models';\nimport {FormNameEnum} from 'enums/form';\nimport {zipMimeType} from 'admin';\n\nexport interface IUploadPaperAssessmentFormBaseValues {\n [FormNameEnum.file]: IInputFile | undefined;\n [FormNameEnum.description]: string;\n}\n\nexport const uploadPaperAssessmentsFormBaseValidationSchema = Yup.object().shape({\n [FormNameEnum.file]: Yup.mixed()\n .nullable()\n .required('You should attach a file!')\n .test('has-zip-extension', 'Only .zip file extension is allowed!', (file: IInputFile) => {\n const hasFile = !!file;\n if (!hasFile) return true;\n return zipMimeType.includes(file.type);\n }),\n [FormNameEnum.description]: Yup.string().max(250, 'Description should be less than 250 characters!'),\n});\n","import React, {Dispatch, SetStateAction, FC, useCallback, useContext, useMemo} from 'react';\nimport {batch} from 'react-redux';\nimport {IWithChildren} from 'models';\nimport {Form} from 'forms';\nimport {\n IUploadPaperAssessmentFormBaseValues,\n uploadPaperAssessmentsFormBaseValidationSchema,\n} from './uploadPaperAssessmentsBaseConfig';\nimport {FormNameEnum} from 'enums/form';\nimport {FormContext} from 'forms/formik/FormContextProvider';\nimport {useClassPaperAssessments, useUploadPaperAssessmentModal} from 'admin/programs/details';\nimport {isFunction} from 'utils/functions';\n\ninterface IUploadPaperAssessmentFormProps extends IWithChildren {\n closeModalClickHandler?: () => void;\n setIsDirtyCallback: Dispatch<SetStateAction<boolean>>;\n}\n\nexport const UploadPaperAssessmentForm: FC<IUploadPaperAssessmentFormProps> = ({\n children,\n closeModalClickHandler,\n setIsDirtyCallback,\n}) => {\n const {formikFormRef} = useContext(FormContext);\n const {uploadPaperAssessment} = useUploadPaperAssessmentModal();\n const {fetchClassPaperAssessmentsPaged} = useClassPaperAssessments();\n\n const initialValues = useMemo(\n () => ({\n [FormNameEnum.file]: null,\n [FormNameEnum.description]: '',\n }),\n []\n );\n\n const submitHandler = useCallback(\n (values) => {\n batch(() => {\n setIsDirtyCallback(false);\n uploadPaperAssessment(values)\n .then(() => isFunction(closeModalClickHandler) && closeModalClickHandler())\n .then(() => fetchClassPaperAssessmentsPaged());\n });\n },\n [uploadPaperAssessment, closeModalClickHandler, setIsDirtyCallback, fetchClassPaperAssessmentsPaged]\n );\n\n return (\n <Form.Form<IUploadPaperAssessmentFormBaseValues>\n initialValues={initialValues}\n validationSchema={uploadPaperAssessmentsFormBaseValidationSchema}\n submitHandler={submitHandler}\n formikRef={formikFormRef}\n >\n {children}\n </Form.Form>\n );\n};\n","import React from 'react';\nimport {ViewExpansionPanel} from '../../../components';\nimport {useClassPaperAssessments} from '../../hooks';\nimport {SidebarBase} from 'components-lib/sidebar/SidebarBase';\n\nexport const SidebarFilters = () => {\n const {loading} = useClassPaperAssessments();\n\n return (\n <SidebarBase>\n <ViewExpansionPanel disabled={loading} />\n </SidebarBase>\n );\n};\n","import React, {Dispatch, FC, SetStateAction, useEffect} from 'react';\nimport {SingleFileUpload} from 'admin/resources/upload/components';\nimport {FormNameEnum} from 'enums/form';\nimport {zipMimeType} from 'admin/resources';\nimport {Row} from 'components-lib';\nimport {useFormikContext} from 'formik';\nimport {IUploadPaperAssessmentFormBaseValues} from '../UploadPaperAssessmentForm/uploadPaperAssessmentsBaseConfig';\n\ninterface IUploadPaperAssessmentDroppableAreaProps {\n isDirty: boolean;\n setIsDirtyCallback: Dispatch<SetStateAction<boolean>>;\n}\n\nexport const UploadPaperAssessmentDroppableArea: FC<IUploadPaperAssessmentDroppableAreaProps> = ({\n isDirty,\n setIsDirtyCallback,\n}) => {\n const {dirty, isValid} = useFormikContext<IUploadPaperAssessmentFormBaseValues>();\n\n useEffect(() => {\n if (dirty && isValid && !isDirty) {\n setIsDirtyCallback(true);\n } else if (!isValid) {\n setIsDirtyCallback(false);\n }\n }, [dirty, isDirty, isValid, setIsDirtyCallback]);\n\n return (\n <Row>\n <SingleFileUpload\n disabled={false}\n fullHeight={false}\n name={FormNameEnum.file}\n accept={zipMimeType}\n fullWidth\n position=\"horizontal\"\n justify=\"flex-start\"\n title=\"Select File\"\n />\n </Row>\n );\n};\n","import React, {Dispatch, FC, SetStateAction} from 'react';\nimport {Box, makeStyles} from '@material-ui/core';\nimport {UploadPaperAssessmentForm} from '../UploadPaperAssessmentForm/UploadPaperAssessmentForm';\nimport {UploadPaperAssessmentDroppableArea} from '../UploadPaperAssessmentDroppableArea/UploadPaperAssessmentDroppableArea';\nimport {FormNameEnum} from 'enums/form';\nimport {Form} from 'forms';\nimport {Column, Container, Label, Loading, Row} from 'components-lib';\n\ninterface IUploadPaperAssessmentContentProps {\n loading: boolean;\n isDirty: boolean;\n setIsDirtyCallback: Dispatch<SetStateAction<boolean>>;\n closeModalClickHandler?: () => void;\n}\n\nexport const UploadPaperAssessmentContent: FC<IUploadPaperAssessmentContentProps> = ({\n loading,\n isDirty,\n setIsDirtyCallback,\n closeModalClickHandler,\n}) => {\n const classes = useStyles();\n\n if (loading) {\n return (\n <Container classes={{root: classes.loadingContainer}}>\n <Loading />\n </Container>\n );\n }\n\n return (\n <UploadPaperAssessmentForm closeModalClickHandler={closeModalClickHandler} setIsDirtyCallback={setIsDirtyCallback}>\n <Box mb={3}>\n <UploadPaperAssessmentDroppableArea isDirty={isDirty} setIsDirtyCallback={setIsDirtyCallback} />\n </Box>\n <Box mb={3}>\n <Row justify=\"flex-start\">\n <Column>\n <Label label=\"Description\" />\n <Form.TextArea name={FormNameEnum.description} placeholder=\"Add Description...\" />\n </Column>\n </Row>\n </Box>\n </UploadPaperAssessmentForm>\n );\n};\n\nconst useStyles = makeStyles(() => ({\n loadingContainer: {\n height: 245,\n },\n}));\n","import React, {FC, useCallback, useContext} from 'react';\nimport {useBeforeunload} from 'react-beforeunload';\nimport {ModalUpload} from 'admin';\nimport {UploadPaperAssessmentContent} from '../UploadPaperAssessmentContent/UploadPaperAssessmentContent';\nimport {FormContext} from 'forms/formik/FormContextProvider';\nimport {IWithModal} from 'models';\nimport {useUploadPaperAssessmentModal} from 'admin/programs/details';\nimport {uploadPaperAssessmentMessages} from '../../utils';\n\ninterface IUploadPaperAssessmentModalProps extends IWithModal {\n closeClickHandler: () => void;\n}\n\nexport const UploadPaperAssessmentModal: FC<IUploadPaperAssessmentModalProps> = ({isOpen, closeClickHandler}) => {\n const {formikFormRef, setIsDirty, isDirty} = useContext(FormContext);\n const {uploadLoading: loading} = useUploadPaperAssessmentModal();\n\n useBeforeunload(() => {\n if (loading) {\n return uploadPaperAssessmentMessages.warning;\n }\n });\n\n const submitFormClickHandler = useCallback(() => formikFormRef?.current?.submitForm(), [formikFormRef]);\n\n return (\n <ModalUpload\n disableBackdropClick\n title=\"Upload Paper Assessment Responses\"\n buttonsSize=\"large\"\n content={\n <UploadPaperAssessmentContent\n loading={loading}\n isDirty={isDirty}\n setIsDirtyCallback={setIsDirty}\n closeModalClickHandler={closeClickHandler}\n />\n }\n isOpen={isOpen}\n disableSubmit={!isDirty || loading}\n confirmHandler={submitFormClickHandler}\n closeHandler={closeClickHandler}\n />\n );\n};\n","import React, {useCallback} from 'react';\nimport {useClassPaperAssessmentsStoreActions} from 'admin/programs/details/classes/details/paper-assessments/hooks';\nimport {SortByDropdown} from 'admin';\nimport {IProgramClassesPaperAssessmentsSortOrder} from 'models';\nimport {getPaperAssessmentsMenuItemsList, paperAssessmentsOrderingMap} from '../../utils';\n\nexport const PaperAssessmentsAllSortBy = () => {\n const {sortOrder, setSortOrder} = useClassPaperAssessmentsStoreActions();\n\n const handleItemClick = useCallback(\n (sortOrder: IProgramClassesPaperAssessmentsSortOrder) => setSortOrder(sortOrder),\n [setSortOrder]\n );\n\n return (\n <SortByDropdown\n label=\"Sort By: \"\n handleItemClick={handleItemClick}\n getMenuItemsList={getPaperAssessmentsMenuItemsList}\n sortOrder={sortOrder}\n map={paperAssessmentsOrderingMap}\n />\n );\n};\n","import React, {FC, Fragment, useMemo} from 'react';\nimport {Button, PageViewHeader, Tooltip} from 'components-lib';\nimport {SubtitlePageViewHeader} from 'admin';\nimport {\n useClassPaperAssessments,\n useUploadPaperAssessmentModal,\n} from 'admin/programs/details/classes/details/paper-assessments/hooks';\nimport {UploadPaperAssessmentModal} from '../UploadPaperAssessmentModal/UploadPaperAssessmentModal';\nimport {PaperAssessmentsAllSortBy} from '../PaperAssessmentsAllSortBy/PaperAssessmentsAllSortBy';\nimport {FormContextProvider} from 'forms';\n\nexport const PaperAssessmentsHeader: FC = () => {\n const {redirectToProgram, program, currentClass} = useClassPaperAssessments();\n const {\n openUploadPaperAssessmentModal,\n isUploadModalOpen,\n closeUploadPaperAssessmentModal,\n } = useUploadPaperAssessmentModal();\n\n const shouldRenderHeader = program && currentClass;\n const subtitle = `${program?.name} / ${currentClass?.name}`;\n\n const headerSubheading = useMemo(\n () => shouldRenderHeader && <SubtitlePageViewHeader> / {subtitle} / Show Paper Assessments</SubtitlePageViewHeader>,\n [subtitle, shouldRenderHeader]\n );\n\n const renderSortOrder = useMemo(() => <PaperAssessmentsAllSortBy />, []);\n\n return (\n <Fragment>\n <PageViewHeader\n heading=\"Programs\"\n subHeading={\n <Tooltip title={subtitle} size=\"large\">\n {headerSubheading}\n </Tooltip>\n }\n withBackButton\n sort={renderSortOrder}\n action={<Button.Secondary clickHandler={openUploadPaperAssessmentModal}>Upload</Button.Secondary>}\n backButtonClickHandler={redirectToProgram}\n />\n {isUploadModalOpen && (\n <FormContextProvider>\n <UploadPaperAssessmentModal isOpen={isUploadModalOpen} closeClickHandler={closeUploadPaperAssessmentModal} />\n </FormContextProvider>\n )}\n </Fragment>\n );\n};\n","import React, {useEffect, useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {PageLayoutTwoCol, PageLayoutWithFixedAreas} from 'layout';\nimport {PaperAssessmentsHeader, SidebarFilters} from './components';\nimport {Button, Icon, Loading, PaginationLocal, Row, Table, Tooltip, Wrapper} from 'components-lib';\nimport {\n useClassPaperAssessments,\n useClassPaperAssessmentsStoreActions,\n useProgramClassDetails,\n useProgramClassDetailsActions,\n} from './hooks';\nimport {paperAssessmentsColumns} from './utils';\nimport {IProgramClassPaperAssessmentListItem} from 'models';\n\nexport const ProgramClassPaperAssessmentsView = () => {\n const classes = useStyles();\n\n const {\n loading,\n downloadPaperAssessment,\n paperAssessmentsIds,\n paperAssessmentsEntities,\n fetchClassPaperAssessmentsPaged,\n } = useClassPaperAssessments();\n\n const {\n clearPaperAssessments,\n totalCount,\n perPage,\n currentPage,\n setPerPage,\n setCurrentPage,\n } = useClassPaperAssessmentsStoreActions();\n const {programId, classId} = useProgramClassDetails();\n\n useProgramClassDetailsActions();\n\n const shouldFetchPaperAssessments = !!programId && !!classId;\n\n useEffect(() => {\n if (shouldFetchPaperAssessments) {\n fetchClassPaperAssessmentsPaged();\n }\n\n return () => {\n clearPaperAssessments();\n };\n }, [clearPaperAssessments, shouldFetchPaperAssessments, fetchClassPaperAssessmentsPaged]);\n\n const rows = useMemo(() => {\n if (!paperAssessmentsIds.length) {\n return [];\n }\n\n return paperAssessmentsIds.map((key: string) => {\n const {description, downloadUrl, title, uploadedBy} = paperAssessmentsEntities[\n key\n ] as IProgramClassPaperAssessmentListItem;\n const descriptionTooltipText = description ?? '';\n const shouldDisableTooltip = !descriptionTooltipText;\n\n return {\n name: (\n <Row justify=\"flex-start\" align=\"center\">\n <Wrapper className={classes.infoText}>\n <Tooltip title={descriptionTooltipText}>\n <Icon.InfoIcon disabled={shouldDisableTooltip} />\n </Tooltip>\n </Wrapper>\n <Wrapper className={classes.paperAssessmentsName}>\n <Tooltip size=\"large\" title={title}>\n {title}\n </Tooltip>\n </Wrapper>\n </Row>\n ),\n uploadedBy: <Row justify=\"flex-start\">{uploadedBy}</Row>,\n actions: (\n <Button.Secondary size=\"small\" clickHandler={() => downloadPaperAssessment(downloadUrl)} disabled={false}>\n Download\n </Button.Secondary>\n ),\n };\n });\n }, [\n classes.infoText,\n downloadPaperAssessment,\n classes.paperAssessmentsName,\n paperAssessmentsEntities,\n paperAssessmentsIds,\n ]);\n\n const footer = useMemo(() => {\n return (\n <PaginationLocal\n onPageChange={setCurrentPage}\n onPerPageChange={setPerPage}\n totalCount={totalCount}\n perPage={perPage}\n currentPage={currentPage}\n disabled={loading}\n />\n );\n }, [currentPage, perPage, setCurrentPage, setPerPage, totalCount, loading]);\n\n const content = useMemo(() => {\n return (\n <PageLayoutWithFixedAreas\n headerSize=\"small\"\n withSecondaryNavigation={false}\n header={<PaperAssessmentsHeader />}\n footer={footer}\n >\n {loading ? <Loading /> : <Table rows={rows} columns={paperAssessmentsColumns} hasRows={!!rows.length} />}\n </PageLayoutWithFixedAreas>\n );\n }, [rows, footer, loading]);\n\n return <PageLayoutTwoCol withSecondaryNavigation={false} sidebar={<SidebarFilters />} content={content} />;\n};\n\nconst useStyles = makeStyles((theme) => ({\n infoText: {\n cursor: 'pointer',\n paddingRight: theme.spacing(2),\n },\n paperAssessmentsName: {\n maxWidth: '30vw',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n },\n\n '@media screen and (max-width: 1400px)': {\n paperAssessmentsName: {\n maxWidth: '25vw',\n },\n },\n\n '@media screen and (max-width: 1280px)': {\n paperAssessmentsName: {\n maxWidth: '20vw',\n },\n },\n}));\n","import {useEffect} from 'react';\nimport {useProgramClassDetails} from './useProgramClassDetails';\n\nexport const useProgramClassDetailsActions = () => {\n const {fetchProgram, fetchClass, program, currentClass} = useProgramClassDetails();\n\n useEffect(() => {\n if (!program) {\n fetchProgram(true);\n }\n }, [fetchProgram, program]);\n\n useEffect(() => {\n if (!currentClass) {\n fetchClass(true);\n }\n }, [fetchClass, currentClass]);\n};\n","import {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\n\nimport {useAppDispatch, useNavigate} from 'hooks';\nimport {pages} from 'paths';\nimport {\n fetchGoogleSitesSourceDetailsThunk,\n googleSiteIntegrationDetailsSelector,\n pageLoadingSelector,\n} from '../../store';\nimport {openFileInNewWindow} from 'utils';\n\nexport const useGoogleSitesDetails = () => {\n const {push} = useNavigate();\n const dispatch = useAppDispatch();\n\n const loading = useSelector(pageLoadingSelector);\n const googleSite = useSelector(googleSiteIntegrationDetailsSelector);\n\n const redirectToViewGoogleSiteDetails = useCallback(\n (id) => {\n push(`${pages.adminPortal.googleSites.detailsLink}/${id}`);\n },\n [push]\n );\n\n const redirecToGoogleSite = useCallback((siteUrl: string) => openFileInNewWindow(siteUrl), []);\n\n const fetchGoogleSiteDetails = useCallback(\n (googleSiteId) => dispatch(fetchGoogleSitesSourceDetailsThunk(googleSiteId)),\n [dispatch]\n );\n\n return {\n loading,\n googleSite,\n\n redirectToViewGoogleSiteDetails,\n redirecToGoogleSite,\n fetchGoogleSiteDetails,\n };\n};\n","import {useParams} from 'react-router-dom';\n\ninterface IGoogleSiteIdParam {\n id: string;\n}\n\nexport const useGoogleSiteIdParam = () => {\n const urlParams = useParams<IGoogleSiteIdParam>();\n const googleSiteId = urlParams?.id;\n return {googleSiteId};\n};\n","import {isEmpty} from 'utils';\nimport {useAppDispatch} from 'hooks';\nimport {IGoogleSiteCopyPayload} from 'models/resources/google-sites';\nimport {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport {\n googleSiteDetailsHistoryItemsCollectionSelector,\n googleSiteDetailsHistoryItemsEntitiesSelector,\n googleSiteDetailsHistoryItemsResultSelector,\n googleSiteDetailsHistoryListLoadingSelector,\n fetchGoogleSitesSourceHistoryThunk,\n fetchGoogleSitesCopySiteThunk,\n googleSiteDetailsHistoryListItemCopyingSelector,\n googleSiteDetailsHistoryListItemCopyIntegrationIdSelector,\n} from './../../store';\nimport {useGoogleSiteIdParam} from './useGoogleSiteIdParam';\n\nexport const useGoogleSiteHistory = () => {\n const dispatch = useAppDispatch();\n const {googleSiteId} = useGoogleSiteIdParam();\n const loadingHistory = useSelector(googleSiteDetailsHistoryListLoadingSelector);\n const copyingGoogleSite = useSelector(googleSiteDetailsHistoryListItemCopyingSelector);\n const copyingHistoryItemIntegrationId = useSelector(googleSiteDetailsHistoryListItemCopyIntegrationIdSelector);\n\n const googleSiteHistoryItemsEntities = useSelector(googleSiteDetailsHistoryItemsEntitiesSelector);\n const googleSiteHistoryItemsResult = useSelector(googleSiteDetailsHistoryItemsResultSelector);\n const googleSiteHistoryItemsEntitiesCollection = useSelector(googleSiteDetailsHistoryItemsCollectionSelector);\n\n const fetchGoogleSitesSourceHistory = useCallback(\n (googleSiteId) => dispatch(fetchGoogleSitesSourceHistoryThunk(googleSiteId)),\n [dispatch]\n );\n\n const fetchGoogleSitesCopySite = useCallback(\n (payload: IGoogleSiteCopyPayload) =>\n dispatch(fetchGoogleSitesCopySiteThunk(payload)).then(() => {\n if (!isEmpty(googleSiteId)) {\n fetchGoogleSitesSourceHistory(googleSiteId);\n }\n }),\n [dispatch, fetchGoogleSitesSourceHistory, googleSiteId]\n );\n\n return {\n loadingHistory,\n copyingGoogleSite,\n copyingHistoryItemIntegrationId,\n googleSiteHistoryItemsEntities,\n googleSiteHistoryItemsResult,\n googleSiteHistoryItemsEntitiesCollection,\n\n fetchGoogleSitesSourceHistory,\n fetchGoogleSitesCopySite,\n };\n};\n","import {useCallback} from 'react';\nimport {useAppDispatch} from 'hooks';\nimport {googleSitesActions as actions} from '../../store';\n\nexport const useGoogleSiteStoreState = () => {\n const dispatch = useAppDispatch();\n\n const clearGoogleSiteState = useCallback(() => dispatch(actions.clear()), [dispatch]);\n\n const clearSortOrderState = useCallback(() => dispatch(actions.clearSortOrder()), [dispatch]);\n\n const clearHistoryState = useCallback(() => dispatch(actions.clearHistory()), [dispatch]);\n\n const clearHistoryCopyIntegrationIdState = useCallback(() => dispatch(actions.clearHistoryCopyIntegrationId()), [\n dispatch,\n ]);\n\n const setCopyIntegrationIdState = useCallback(\n (integrationId: string) => dispatch(actions.setCopyIntegrationId(integrationId)),\n [dispatch]\n );\n\n return {\n clearHistoryState,\n clearGoogleSiteState,\n clearSortOrderState,\n setCopyIntegrationIdState,\n clearHistoryCopyIntegrationIdState,\n };\n};\n","import React, {useCallback, useMemo} from 'react';\nimport {Container, Row, Column, Box} from 'components-lib';\nimport {makeStyles} from '@material-ui/core';\nimport {useGoogleSitesDetails} from 'admin/resources/google-sites/details/hooks';\nimport {getDatetimeAMPMinUTC} from 'utils/common';\nimport {BoxSizeEnum} from 'admin/resources/google-sites/details';\n\nexport const GoogleSitesDetailsContent = () => {\n const classes = useStyles();\n const {\n googleSite: {createdTime, lastModifiedTime, version, editLink, lastModifyingUser, siteOwner},\n redirecToGoogleSite,\n } = useGoogleSitesDetails();\n\n const createdTimeAMPMinUTC = getDatetimeAMPMinUTC(createdTime);\n const lastModifiedTimeAMPMinUTC = getDatetimeAMPMinUTC(lastModifiedTime);\n\n const linkClickHandler = useCallback(() => redirecToGoogleSite(editLink), [redirecToGoogleSite, editLink]);\n\n const firstColList = useMemo(\n () => [\n {\n label: 'Created By',\n content: siteOwner?.displayName,\n avatar: siteOwner?.avatarUrl,\n size: BoxSizeEnum.small,\n },\n {\n label: 'Date Created (UTC)\"',\n content: createdTimeAMPMinUTC,\n },\n {\n label: 'Updated by',\n content: lastModifyingUser?.displayName,\n avatar: lastModifyingUser?.avatarUrl,\n size: BoxSizeEnum.small,\n },\n {\n label: 'Date Last Updated (UTC)',\n content: lastModifiedTimeAMPMinUTC,\n },\n ],\n [\n siteOwner.displayName,\n siteOwner.avatarUrl,\n createdTimeAMPMinUTC,\n lastModifyingUser.displayName,\n lastModifyingUser.avatarUrl,\n lastModifiedTimeAMPMinUTC,\n ]\n );\n\n const firstRow = useMemo(\n () => (\n <Row classes={{root: classes.row}} justify=\"flex-start\" align=\"flex-start\">\n {firstColList.map(({label, content, avatar, size}, idx) => (\n <Column sm={3} md={3} lg={3} xl={3} key={idx}>\n <Box label={label} content={content} avatarUrl={avatar} size={size} />\n </Column>\n ))}\n </Row>\n ),\n [classes.row, firstColList]\n );\n\n const secondColList = useMemo(\n () => [\n {\n label: 'Version',\n content: version.toString(),\n },\n {\n label: 'Google Sites Link',\n content: editLink,\n withLink: true,\n withButtonLink: true,\n linkCallback: linkClickHandler,\n },\n ],\n [version, editLink, linkClickHandler]\n );\n\n const secondRow = useMemo(\n () => (\n <Row classes={{root: classes.row}} justify=\"flex-start\" align=\"flex-start\">\n {secondColList.map(({label, content, withLink, withButtonLink, linkCallback}, idx) => (\n <Column sm={3} md={3} lg={3} xl={3} key={idx}>\n <Box\n label={label}\n content={content}\n withLink={withLink}\n withButtonLink={withButtonLink}\n linkCallback={linkCallback}\n />\n </Column>\n ))}\n </Row>\n ),\n [classes.row, secondColList]\n );\n\n return (\n <Container disableGutters>\n {firstRow}\n {secondRow}\n </Container>\n );\n};\n\nexport const useStyles = makeStyles((theme) => ({\n row: {\n marginBottom: theme.spacing(4) - theme.spacing(2),\n },\n}));\n","import React, {Fragment, useEffect} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Subtitle} from 'admin/components';\nimport {Container, Loading} from 'components-lib';\nimport {GoogleSitesDetailsContent} from './components';\nimport {useGoogleSiteIdParam, useGoogleSitesDetails, useGoogleSiteStoreState} from '../../hooks';\n\nexport const GoogleSitesDetails = () => {\n const {googleSiteId} = useGoogleSiteIdParam();\n const {loading, fetchGoogleSiteDetails} = useGoogleSitesDetails();\n const {clearGoogleSiteState} = useGoogleSiteStoreState();\n\n useEffect(() => {\n if (googleSiteId) {\n fetchGoogleSiteDetails(googleSiteId);\n }\n\n return () => {\n clearGoogleSiteState();\n };\n }, [googleSiteId, fetchGoogleSiteDetails, clearGoogleSiteState]);\n\n const classes = useStyles();\n return (\n <Fragment>\n <Subtitle withColor={false} as=\"h3\" color=\"textPrimary\" title=\"Details\" />\n <Container classes={{root: classes.detailsContent}}>\n {loading ? (\n <Container classes={{root: classes.loadingContainer}}>\n <Loading />\n </Container>\n ) : (\n <GoogleSitesDetailsContent />\n )}\n </Container>\n </Fragment>\n );\n};\n\nexport const useStyles = makeStyles((theme) => ({\n detailsContent: {\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2),\n paddingBottom: theme.spacing(2),\n borderBottom: `1px solid ${theme.palette.grey[200]}`,\n },\n loadingContainer: {\n paddingBottom: theme.spacing(4),\n },\n}));\n","import React from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Checkbox, Wrapper} from 'components-lib';\n\nexport const GoogleSiteAreasCheckbox = () => {\n const classes = useStyles();\n return (\n <Wrapper className={classes.googleSiteAreaCheckbox}>\n <Checkbox checked={false} disabled />\n </Wrapper>\n );\n};\n\nexport const useStyles = makeStyles((theme) => ({\n googleSiteAreaCheckbox: {\n paddingRight: theme.spacing(2),\n },\n}));\n","import React, {useCallback, useEffect} from 'react';\nimport {Form} from 'forms';\nimport {FormNameEnum} from 'filters-selections';\nimport {IWithDisabled} from 'models';\nimport {useFormikContext} from 'formik';\nimport {IGoogleSitesAreasFormValues} from 'admin/resources/google-sites';\n\nexport const GoogleSitesAreasSearch = ({disabled}: IWithDisabled) => {\n const {\n values: {historyList, searchTerm},\n setFieldValue,\n } = useFormikContext<IGoogleSitesAreasFormValues>();\n const hasSearchTerm = searchTerm.length > 0;\n\n const isIncludesTerm = useCallback((searchWord: string, fieldVal: string) => {\n if (searchWord && fieldVal) {\n return fieldVal.toLowerCase().includes(searchWord.toLowerCase());\n }\n return false;\n }, []);\n\n useEffect(() => {\n if (hasSearchTerm) {\n const clonedList = [...historyList];\n const filteredList = clonedList.filter((item) => {\n const hasIncludesTermInName = isIncludesTerm(searchTerm, item?.integrationName);\n const hasIncludesTermInAreaName = isIncludesTerm(searchTerm, item.areaName);\n\n return hasIncludesTermInName || hasIncludesTermInAreaName;\n });\n setFieldValue(FormNameEnum.historyFilteredList, filteredList);\n } else {\n setFieldValue(FormNameEnum.historyFilteredList, historyList);\n }\n }, [historyList, searchTerm, setFieldValue, hasSearchTerm, isIncludesTerm]);\n\n return <Form.Search name={FormNameEnum.searchTerm} disabled={disabled} withIcon />;\n};\n","import React from 'react';\nimport {SortByDropdown} from 'admin/components';\nimport {getSortGoogleSiteDetailsMenuItemsList, googleSiteDetailsOrderingMap} from 'admin/resources/google-sites';\nimport {useGoogleSiteDetailsSortOrder} from 'admin/resources/google-sites/details/hooks';\n\nexport const GoogleSitesAreasSortBy = () => {\n const {sortOrder, handleItemClick} = useGoogleSiteDetailsSortOrder();\n\n return (\n <SortByDropdown\n label=\"Sort By: \"\n handleItemClick={handleItemClick}\n getMenuItemsList={getSortGoogleSiteDetailsMenuItemsList}\n sortOrder={sortOrder}\n map={googleSiteDetailsOrderingMap}\n justify=\"flex-end\"\n />\n );\n};\n","import {useCallback, useEffect} from 'react';\nimport {useSelector} from 'react-redux';\nimport {useFormikContext} from 'formik';\nimport {useAppDispatch} from 'hooks';\nimport {googleSiteDetailsSortOrderSelector, googleSitesActions} from '../../store';\nimport {IGoogleSitesAreasFormValues} from '../utils';\nimport {FormNameEnum} from 'filters-selections';\nimport {IGoogleSiteDetailsSortOrder} from 'models/resources/google-sites';\nimport {orderBy} from 'utils/functions';\n\nexport const useGoogleSiteDetailsSortOrder = () => {\n const dispatch = useAppDispatch();\n const {\n values: {historyFilteredList},\n setFieldValue,\n } = useFormikContext<IGoogleSitesAreasFormValues>();\n const sortOrder = useSelector(googleSiteDetailsSortOrderSelector);\n\n const sortGoogleSitesBy = useCallback(\n (sortOrder: IGoogleSiteDetailsSortOrder) => {\n const sortedList = orderBy(historyFilteredList, sortOrder.order, sortOrder.sort.toLowerCase());\n return setFieldValue(FormNameEnum.historyFilteredList, sortedList);\n },\n [setFieldValue, historyFilteredList]\n );\n\n const handleItemClick = useCallback(\n (sortOrder) => dispatch(googleSitesActions.setSortOrderGoogleSiteDetails(sortOrder)),\n [dispatch]\n );\n\n useEffect(() => {\n sortGoogleSitesBy(sortOrder);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [sortOrder]);\n\n return {sortOrder, handleItemClick};\n};\n","import React, {FC, useCallback, useMemo} from 'react';\nimport {Form} from 'forms';\nimport {IWithChildren} from 'models/common';\nimport {FormNameEnum} from 'filters-selections';\nimport {googleSitesAreasFormValidationSchema, IGoogleSitesAreasFormValues} from 'admin/resources/google-sites/details';\nimport {useGoogleSiteHistory} from 'admin/resources/google-sites/details/hooks';\n\ntype IGoogleSitesAreasFormProps = IWithChildren;\n\nexport const GoogleSitesAreasForm: FC<IGoogleSitesAreasFormProps> = ({children}) => {\n const {googleSiteHistoryItemsEntitiesCollection} = useGoogleSiteHistory();\n\n const submitHandler = useCallback(() => null, []);\n\n const initialValues = useMemo(\n () => ({\n [FormNameEnum.searchTerm]: '',\n [FormNameEnum.historyList]: googleSiteHistoryItemsEntitiesCollection ?? [],\n [FormNameEnum.historyFilteredList]: [],\n }),\n [googleSiteHistoryItemsEntitiesCollection]\n );\n\n return (\n <Form.Form<IGoogleSitesAreasFormValues>\n initialValues={initialValues}\n validationSchema={googleSitesAreasFormValidationSchema}\n submitHandler={submitHandler}\n >\n {children}\n </Form.Form>\n );\n};\n","import React, {Fragment, useCallback, useEffect, useMemo} from 'react';\nimport {batch} from 'react-redux';\nimport {makeStyles} from '@material-ui/core';\nimport {Subtitle} from 'admin/components';\nimport {Button, Container, Loading, CircularProgress, Row} from 'components-lib';\nimport {\n getGoogleSiteTableColumns,\n IGoogleSitesAreasFormValues,\n IGoogleSitesAreasTableColumn,\n} from 'admin/resources/google-sites';\nimport {GoogleSiteAreasTable} from '..';\nimport {\n useGoogleSiteHistory,\n useGoogleSiteIdParam,\n useGoogleSiteStoreState,\n} from 'admin/resources/google-sites/details/hooks';\nimport {getDatetimeAMPMinUTC} from 'utils/common';\nimport {IGoogleSiteCopyPayload} from 'models/resources/google-sites';\nimport {useFormikContext} from 'formik';\n\nexport const GoogleSitesAreas = () => {\n const classes = useStyles();\n const {googleSiteId} = useGoogleSiteIdParam();\n const {\n fetchGoogleSitesSourceHistory,\n fetchGoogleSitesCopySite,\n loadingHistory,\n copyingGoogleSite,\n copyingHistoryItemIntegrationId,\n } = useGoogleSiteHistory();\n const {clearHistoryState, setCopyIntegrationIdState} = useGoogleSiteStoreState();\n const {\n values: {historyFilteredList},\n } = useFormikContext<IGoogleSitesAreasFormValues>();\n\n const columns: IGoogleSitesAreasTableColumn[] = getGoogleSiteTableColumns();\n\n useEffect(() => {\n if (googleSiteId) {\n fetchGoogleSitesSourceHistory(googleSiteId);\n }\n\n return () => {\n clearHistoryState();\n };\n }, [googleSiteId, fetchGoogleSitesSourceHistory, clearHistoryState]);\n\n const copyGoogleSiteClickHandler = useCallback(\n (payload: IGoogleSiteCopyPayload) =>\n batch(() => {\n setCopyIntegrationIdState(payload.integrationId);\n fetchGoogleSitesCopySite(payload);\n }),\n [fetchGoogleSitesCopySite, setCopyIntegrationIdState]\n );\n\n const LoadingMemoized = useMemo(() => () => <Loading halfHeight />, []);\n\n const rows = useMemo(() => {\n if (!historyFilteredList.length) {\n return [];\n }\n\n return historyFilteredList.map(({integrationId, dateLastSent, integrationName, status, areaName}) => {\n const datetimeAMPMinUTC = dateLastSent ? getDatetimeAMPMinUTC(dateLastSent) : '';\n const copyPayload = {integrationId, siteFieldId: googleSiteId} as IGoogleSiteCopyPayload;\n const shouldDisableCopyButton = copyingHistoryItemIntegrationId === integrationId;\n\n return {\n integrationName,\n area: (\n <Container disableGutters>\n <Row align=\"center\" justify=\"flex-start\">\n {/* <GoogleSiteAreasCheckbox /> */}\n {areaName ?? ''}\n </Row>\n </Container>\n ),\n status,\n lastCopiedDate: datetimeAMPMinUTC,\n copyId: integrationId,\n copy: (\n <Row justify=\"center\">\n {shouldDisableCopyButton ? (\n <CircularProgress classes={{root: classes.circularProgress}} />\n ) : (\n <Button.Secondary\n size=\"small\"\n disabled={shouldDisableCopyButton || copyingGoogleSite}\n clickHandler={() => copyGoogleSiteClickHandler(copyPayload)}\n >\n Copy\n </Button.Secondary>\n )}\n </Row>\n ),\n };\n });\n }, [\n classes.circularProgress,\n copyGoogleSiteClickHandler,\n googleSiteId,\n copyingHistoryItemIntegrationId,\n copyingGoogleSite,\n historyFilteredList,\n ]);\n\n return (\n <Fragment>\n <Subtitle withColor={false} as=\"h3\" color=\"textPrimary\" title=\"Areas\" />\n <Container disableGutters classes={{root: classes.root}}>\n {loadingHistory ? <LoadingMemoized /> : <GoogleSiteAreasTable rows={rows} columns={columns} />}\n </Container>\n </Fragment>\n );\n};\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2),\n paddingBottom: theme.spacing(4),\n },\n circularProgress: {\n margin: `${theme.spacing(1) + theme.spacing(2)}px ${theme.spacing(0)}px`,\n marginRight: `${theme.spacing(1) + theme.spacing(2)}px`,\n },\n}));\n","import {Column, Row, Table} from 'components-lib';\nimport React, {Fragment} from 'react';\nimport {GoogleSitesAreasSearch, GoogleSitesAreasSortBy} from '..';\n\nexport const GoogleSiteAreasTable = ({rows, columns}) => {\n return (\n <Fragment>\n <Row justify=\"space-between\">\n <Column sm={4} md={4} lg={3} xl={2}>\n <GoogleSitesAreasSearch />\n </Column>\n <Column sm={4} md={4} lg={3} xl={2}>\n <Row justify=\"flex-end\">\n <Column sm={12} md={12} lg={12} xl={12}>\n <GoogleSitesAreasSortBy />\n </Column>\n </Row>\n </Column>\n </Row>\n <Table rows={rows} columns={columns} hasRows={!!rows.length} />\n </Fragment>\n );\n};\n","import {makeStyles} from '@material-ui/core';\nimport {Container} from 'components-lib';\nimport React from 'react';\nimport {GoogleSitesAreas, GoogleSitesAreasForm} from './components';\n\nexport const GoogleSiteAreasDetails = () => {\n const classes = useStyles();\n\n return (\n <Container disableGutters classes={{root: classes.root}}>\n <GoogleSitesAreasForm>\n <GoogleSitesAreas />\n </GoogleSitesAreasForm>\n </Container>\n );\n};\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n },\n}));\n","import React, {Fragment} from 'react';\nimport {useGoogleSitesDetails} from '../../../hooks';\n\nexport const Subheading = () => {\n const {googleSite} = useGoogleSitesDetails();\n const hasGoogleSiteName = !!googleSite?.name;\n const subHeadingName = `\\u00a0 / ${googleSite.name}`;\n\n return <Fragment> {hasGoogleSiteName && subHeadingName} </Fragment>;\n};\n","import React, {useCallback} from 'react';\nimport {Subheading} from '../Subheading/Subheading';\nimport {PageViewHeader} from 'components-lib';\nimport {useGoogleSites} from '../../../hooks';\n\nexport const Header = () => {\n const {redirectToViewListOfGoogleSites} = useGoogleSites();\n\n const backButtonClickHandler = useCallback(() => redirectToViewListOfGoogleSites(), [\n redirectToViewListOfGoogleSites,\n ]);\n\n return (\n <PageViewHeader\n fullFlexWidth\n withColumnPadding={false}\n heading=\"Google Sites\"\n headingColor=\"textPrimary\"\n subHeading={<Subheading />}\n withBackButton\n shouldDisableBackButton={false}\n backButtonClickHandler={backButtonClickHandler}\n />\n );\n};\n","import {useCallback} from 'react';\nimport {useNavigate} from 'hooks';\nimport {pages} from 'paths';\n\nexport const useGoogleSites = () => {\n const {push} = useNavigate();\n\n const redirectToViewListOfGoogleSites = useCallback(() => {\n push(`${pages.adminPortal.googleSites.all}`);\n }, [push]);\n\n return {\n redirectToViewListOfGoogleSites,\n };\n};\n","import React from 'react';\nimport {PageLayoutHorizontalRows} from 'layout/components/page';\nimport {Wrapper} from 'components-lib';\nimport {GoogleSiteAreasDetails, GoogleSitesDetails, Header} from './components';\n\nexport const GoogleSitesViewDetails = () => {\n return (\n <Wrapper>\n <PageLayoutHorizontalRows\n header={<Header />}\n contentUp={<GoogleSitesDetails />}\n contentDown={<GoogleSiteAreasDetails />}\n />\n </Wrapper>\n );\n};\n","import {SortingOrderEnum} from 'enums';\nimport {InstrumentsOrderingEnum} from '../../enums';\n\nexport const instrumentAllOrderingMap = {\n [InstrumentsOrderingEnum.Name]: {\n [SortingOrderEnum.ASC]: 'Name: A-Z',\n [SortingOrderEnum.DESC]: 'Name: Z-A',\n },\n [InstrumentsOrderingEnum.Created]: {\n [SortingOrderEnum.ASC]: 'Created: Oldest First',\n [SortingOrderEnum.DESC]: 'Created: Newest First',\n },\n};\n","export const instrumentsAllColumns = [\n {id: 'mtIcon', label: ''},\n {id: 'name', label: 'Instrument'},\n {id: 'programsList', label: 'Program'},\n {id: 'audience', label: 'Audience'},\n {id: 'type', label: 'Type'},\n {id: 'phase', label: 'Phase'},\n {id: 'status', label: 'Status'},\n {id: 'actions', label: ''},\n];\n","import {FiltersEnum} from 'filters-selections';\n\nexport const instrumentAllFilterList = [\n FiltersEnum.ProgramMulti,\n FiltersEnum.Pillar,\n FiltersEnum.InstrumentStatus,\n FiltersEnum.Audience,\n FiltersEnum.InstrumentType,\n FiltersEnum.Phase,\n FiltersEnum.InstrumentViewType,\n];\n","import {FiltersEnum} from 'filters-selections';\nimport {InstrumentsFilterNamesEnum} from '../../enums';\n\nexport const instrumentAllFilterToFilterNameMap = {\n [FiltersEnum.ProgramMulti]: InstrumentsFilterNamesEnum.PROGRAMS,\n [FiltersEnum.InstrumentStatus]: InstrumentsFilterNamesEnum.STATUSES,\n [FiltersEnum.Audience]: InstrumentsFilterNamesEnum.AUDIENCES,\n [FiltersEnum.InstrumentType]: InstrumentsFilterNamesEnum.TYPES,\n [FiltersEnum.Phase]: InstrumentsFilterNamesEnum.PHASES,\n [FiltersEnum.Pillar]: InstrumentsFilterNamesEnum.PILLARS,\n [FiltersEnum.InstrumentViewType]: InstrumentsFilterNamesEnum.INSTRUMENT_VIEW_TYPE,\n};\n","import * as Yup from 'yup';\nimport {FormNameEnum} from 'filters-selections';\n\nexport interface IInstrumentsAllFiltersFormValues {\n [FormNameEnum.programs]: number[];\n [FormNameEnum.pillars]: string[];\n [FormNameEnum.audience]: string[];\n [FormNameEnum.phase]: string[];\n [FormNameEnum.instrumentType]: string[];\n [FormNameEnum.instrumentStatus]: string[];\n [FormNameEnum.name]: string;\n [FormNameEnum.instrumentViewType]: number | null;\n}\n\nexport const instrumentsAllFiltersFormValidationSchema = Yup.object().shape({\n [FormNameEnum.programs]: Yup.array(Yup.number()),\n [FormNameEnum.pillar]: Yup.array(Yup.number()),\n [FormNameEnum.audience]: Yup.array(Yup.number()),\n [FormNameEnum.phase]: Yup.array(Yup.number()),\n [FormNameEnum.instrumentType]: Yup.array(Yup.number()),\n [FormNameEnum.instrumentStatus]: Yup.array(Yup.number()),\n [FormNameEnum.name]: Yup.string().nullable(),\n [FormNameEnum.instrumentViewType]: Yup.number().nullable(),\n});\n","import React, {useCallback, useMemo} from 'react';\nimport {useDispatch} from 'react-redux';\nimport {Filters} from 'components-lib';\nimport {FiltersList, FormNameEnum} from 'filters-selections';\nimport {Form} from 'forms';\nimport {IInstrumentsBaseFilter} from 'models';\nimport {InstrumentsFilterNamesEnum} from 'admin/library/instruments/enums';\nimport {instrumentsActions as actions} from 'admin/library/instruments/store';\nimport {useInstruments} from 'admin/library/instruments/hooks';\nimport {IInstrumentsAllFiltersFormValues, instrumentsAllFiltersFormValidationSchema} from './config';\nimport {instrumentAllFilterList} from '../..';\n\nexport function InstrumentsAllFilters() {\n const dispatch = useDispatch();\n const {filter, pageLoading} = useInstruments();\n\n const initialValues: IInstrumentsAllFiltersFormValues = useMemo(() => {\n return {\n [FormNameEnum.programs]: filter[InstrumentsFilterNamesEnum.PROGRAMS],\n [FormNameEnum.pillars]: filter[InstrumentsFilterNamesEnum.PILLARS],\n [FormNameEnum.phase]: filter[InstrumentsFilterNamesEnum.PHASES],\n [FormNameEnum.instrumentStatus]: filter[InstrumentsFilterNamesEnum.STATUSES],\n [FormNameEnum.instrumentType]: filter[InstrumentsFilterNamesEnum.TYPES],\n [FormNameEnum.audience]: filter[InstrumentsFilterNamesEnum.AUDIENCES],\n [FormNameEnum.name]: filter[InstrumentsFilterNamesEnum.SEARCH_BY_NAME],\n [FormNameEnum.instrumentViewType]: filter[InstrumentsFilterNamesEnum.INSTRUMENT_VIEW_TYPE],\n };\n }, [filter]);\n\n const submitHandler = async ({\n programs,\n pillars,\n phase,\n status,\n type,\n audience,\n name,\n instrumentViewType,\n }: IInstrumentsAllFiltersFormValues) => {\n const filter: IInstrumentsBaseFilter = {\n [InstrumentsFilterNamesEnum.SEARCH_BY_NAME]: name.trim().replace(/\\s+/g, ' '), // trim and replace multiple spaces (works on on the actual search, the form is not updated)\n [InstrumentsFilterNamesEnum.PILLARS]: pillars,\n [InstrumentsFilterNamesEnum.PHASES]: phase,\n [InstrumentsFilterNamesEnum.STATUSES]: status,\n [InstrumentsFilterNamesEnum.TYPES]: type,\n [InstrumentsFilterNamesEnum.AUDIENCES]: audience,\n [InstrumentsFilterNamesEnum.PROGRAMS]: programs,\n [InstrumentsFilterNamesEnum.INSTRUMENT_VIEW_TYPE]: instrumentViewType,\n };\n\n dispatch(actions.setFilterInstruments(filter));\n };\n\n const resetHandler = useCallback(() => {\n dispatch(actions.resetFilterInstruments());\n }, [dispatch]);\n\n const renderFiltersList = useMemo(() => <FiltersList disableAll={pageLoading} filters={instrumentAllFilterList} />, [\n pageLoading,\n ]);\n\n return (\n <Form.Form<IInstrumentsAllFiltersFormValues>\n initialValues={initialValues}\n validationSchema={instrumentsAllFiltersFormValidationSchema}\n submitHandler={submitHandler}\n >\n <Filters.FiltersPanel\n clearButtonClickHandler={resetHandler}\n searchFieldName={InstrumentsFilterNamesEnum.SEARCH_BY_NAME}\n filters={renderFiltersList}\n disableAll={pageLoading}\n />\n </Form.Form>\n );\n}\n","import React, {useCallback} from 'react';\nimport {SortByDropdown} from 'admin/components';\nimport {useSelector} from 'react-redux';\nimport {instrumentsAllSortOrderSelector, instrumentsActions as actions} from 'admin/library/instruments/store';\nimport {useAppDispatch} from 'hooks';\nimport {IInstrumentsAllSortOrder} from 'models';\nimport {getSortInstrumentMenuItemsList} from 'admin/library/instruments/utils';\nimport {instrumentAllOrderingMap} from 'admin/library/instruments/all/utils';\n\nexport function InstrumentsAllSortBy() {\n const dispatch = useAppDispatch();\n\n const sortOrder = useSelector(instrumentsAllSortOrderSelector);\n\n const handleItemClick = useCallback(\n (sortOrder: IInstrumentsAllSortOrder) => {\n dispatch(actions.setSortOrderInstrumentsAll(sortOrder));\n },\n [dispatch]\n );\n\n return (\n <SortByDropdown\n label=\"Sort By: \"\n handleItemClick={handleItemClick}\n getMenuItemsList={getSortInstrumentMenuItemsList}\n sortOrder={sortOrder}\n map={instrumentAllOrderingMap}\n />\n );\n}\n","import React, {useCallback, useEffect, useMemo} from 'react';\nimport {useDispatch} from 'react-redux';\nimport {FormNameEnum} from 'filters-selections';\nimport {IInstrumentDetails, IInstrumentDropdown, IInstrumentsAllFilter} from 'models';\nimport {pages} from 'paths';\nimport {getLocationOrigin} from 'utils';\nimport {getInstrumentIcon} from '../utils';\nimport {Button, Loading, PageViewHeader, Table, Tag, PaginationLocal} from 'components-lib';\nimport {InstrumentsAllFilters, InstrumentsAllSortBy} from './components';\nimport {PageLayoutTwoCol, PageLayoutWithFixedAreas} from 'layout';\nimport {ButtonPrimaryWithAdminAndLocalAreaPermissions, ModalCreateNewInstrumentWithForm} from '../components';\nimport {useModal, useNavigate} from 'hooks';\nimport {useUserId} from 'user';\nimport {useInstruments} from '../hooks';\nimport {instrumentsActions as actions} from '../store/instruments.slice';\nimport {InstrumentViewTypeEnum} from 'admin/library/items/enums';\nimport {InstrumentsFilterNamesEnum} from '../enums';\nimport {EntityStatusEnum} from 'enums';\nimport {instrumentAllFilterList, instrumentAllFilterToFilterNameMap, instrumentsAllColumns} from './utils';\n\nconst locationOrigin = getLocationOrigin();\n\nexport function InstrumentsAllView() {\n const dispatch = useDispatch();\n const {push} = useNavigate();\n const {isOpen, setIsOpen} = useModal();\n const {userAreaId} = useUserId();\n const {\n filter,\n filterEntities,\n pageLoading,\n currentPage,\n perPage,\n totalCount,\n instrumentsList,\n fetchInstruments,\n setCurrentPage,\n setPerPage,\n } = useInstruments();\n\n useEffect(() => {\n fetchInstruments();\n }, [fetchInstruments]);\n\n const viewInstrumentDetailsClickHandler = useCallback(\n (id: number) => {\n push(`${pages.adminPortal.instruments.all}/${id}`);\n },\n [push]\n );\n\n const rows = useMemo(() => {\n if (!instrumentsList.result.length) {\n return [];\n }\n\n return instrumentsList.result.map((key: number) => {\n const instrument: IInstrumentDetails = instrumentsList.entities.items[key];\n const {\n isMasterTemplate,\n isGeneralTemplate,\n audience,\n type,\n phase,\n status,\n templateId,\n templateName,\n programs,\n } = instrument;\n\n const icon = getInstrumentIcon(!!isGeneralTemplate, isMasterTemplate);\n const surveyUrl = `${locationOrigin}${pages.surveyGeneral.takerLink}/${templateId}?aid=${userAreaId}`;\n const isDraftTemplate = instrument.status === EntityStatusEnum.draft;\n\n const share = {\n text: 'Share',\n isCopyLink: true,\n copyText: surveyUrl,\n };\n\n const dropdownItems: IInstrumentDropdown[] = [\n {\n text: 'View',\n isCopyLink: false,\n clickHandler: () => viewInstrumentDetailsClickHandler(templateId),\n },\n ];\n\n if (isGeneralTemplate && !isDraftTemplate) {\n dropdownItems.push(share);\n }\n\n return {\n mtIcon: icon,\n id: templateId,\n name: templateName,\n programsList: programs?.map(({name}) => name).join('; '),\n audience: audience?.displayText,\n type: type?.displayText,\n phase: phase?.displayText,\n status: status === EntityStatusEnum.live ? EntityStatusEnum.published : status,\n rowRef: React.createRef(),\n actions: <Button.Dropdown items={dropdownItems} />,\n };\n });\n }, [instrumentsList, viewInstrumentDetailsClickHandler, userAreaId]);\n\n const contentFooter = useMemo(\n () => (\n <PaginationLocal\n onPageChange={setCurrentPage}\n onPerPageChange={setPerPage}\n totalCount={totalCount}\n perPage={perPage}\n currentPage={currentPage}\n disabled={pageLoading}\n />\n ),\n [currentPage, perPage, setCurrentPage, setPerPage, totalCount, pageLoading]\n );\n\n const appliedFilters = useMemo(() => {\n const chips: any[] = [];\n\n const resetDropdownFilter = (propName: string, id: string | number) => {\n const updated: IInstrumentsAllFilter = {...filter};\n\n updated[propName] = updated[propName].filter((pId: number) => pId !== id);\n dispatch(actions.setFilterInstruments(updated));\n };\n\n instrumentAllFilterList.forEach((itemFilter) => {\n const mappedFilterName: InstrumentsFilterNamesEnum = instrumentAllFilterToFilterNameMap[itemFilter];\n const current = filter[mappedFilterName];\n\n if (current instanceof Array && current.length > 0) {\n current.forEach((id) => {\n const currentFilter = filterEntities[mappedFilterName][id];\n\n chips.push(\n <Tag\n withFilterChip\n key={`${mappedFilterName}-${id}`}\n label={currentFilter.name === 'Live' ? 'Published' : currentFilter.name}\n deleteHandler={() => resetDropdownFilter(mappedFilterName, currentFilter.id)}\n />\n );\n });\n }\n });\n\n if (!!filter.name) {\n const deleteSearchFilter = () => {\n const updated = {...filter, [FormNameEnum.name]: ''};\n dispatch(actions.setFilterInstruments(updated));\n };\n chips.push(\n <Tag withFilterChip key={`name-${filter.name}`} label={filter.name} deleteHandler={deleteSearchFilter} />\n );\n }\n\n if (filter.isGeneralTemplate !== null) {\n const deleteHandler = () => {\n const updated = {...filter, [InstrumentsFilterNamesEnum.INSTRUMENT_VIEW_TYPE]: null};\n dispatch(actions.setFilterInstruments(updated));\n };\n\n chips.push(\n <Tag\n withFilterChip\n key={FormNameEnum.instrumentViewType}\n label={InstrumentViewTypeEnum[filter.isGeneralTemplate]}\n deleteHandler={deleteHandler}\n />\n );\n }\n\n return chips;\n }, [dispatch, filter, filterEntities]);\n\n const renderSortOrder = useMemo(() => <InstrumentsAllSortBy />, []);\n\n const contentHeader = useMemo(\n () => (\n <PageViewHeader\n heading=\"Instruments\"\n action={\n <ButtonPrimaryWithAdminAndLocalAreaPermissions clickHandler={() => setIsOpen(true)}>\n New Instrument\n </ButtonPrimaryWithAdminAndLocalAreaPermissions>\n }\n sort={renderSortOrder}\n filters={appliedFilters}\n />\n ),\n [appliedFilters, renderSortOrder, setIsOpen]\n );\n\n const content = useMemo(() => {\n return (\n <PageLayoutWithFixedAreas header={contentHeader} footer={contentFooter}>\n {pageLoading ? (\n <Loading />\n ) : !!rows.length ? (\n <Table rows={rows} columns={instrumentsAllColumns} />\n ) : (\n 'No results found'\n )}\n </PageLayoutWithFixedAreas>\n );\n }, [contentHeader, contentFooter, pageLoading, rows]);\n\n return (\n <>\n <ModalCreateNewInstrumentWithForm isOpen={isOpen} setIsOpen={setIsOpen} />\n <PageLayoutTwoCol sidebar={<InstrumentsAllFilters />} content={content} />\n </>\n );\n}\n","import React, {useCallback, useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\n\nimport {Answers} from 'admin/library/components';\nimport {BuilderItemDragTypeEnum} from 'admin/library/enums';\nimport {IBuilderDragItem} from 'admin/library/models';\nimport {Card, Row, Text} from 'components-lib';\nimport {DropContainer} from 'dragAndDrop';\nimport {IInstrumentItem} from 'models';\nimport {useBuilderDrop, useBuilderItemsEntities} from '../../hooks';\nimport {CardBody} from '../CardItem/CardBody';\nimport {DroppableArea} from '../DroppableArea/DroppableArea';\nimport {MatrixQuestionItem} from '../MatrixQuestionItem/MatrixQuestionItem';\nimport {cloneDeep} from 'utils';\n\ninterface IBuilderMatrixProps {\n id: number;\n position: number;\n applyClickHandler: () => void;\n moveRowHandler: (id: number) => (dragIdx: number, hoverIdx: number) => void;\n deleteRowHandler: (id: number) => (rowIdx: number) => void;\n handleOpenModalLink?: () => void;\n handleOpenInfoLinkModal?: () => void;\n openInfoLinkClickHandler?: () => void;\n setCurrentBuilderItem?: (item: IBuilderDragItem) => void;\n currentBuilderItem?: IBuilderDragItem;\n}\n\nexport function BuilderMatrix({\n id,\n position,\n applyClickHandler,\n moveRowHandler,\n deleteRowHandler,\n handleOpenModalLink,\n setCurrentBuilderItem,\n handleOpenInfoLinkModal,\n}: IBuilderMatrixProps) {\n const classes = useStyles();\n const {builderItemsEntities} = useBuilderItemsEntities();\n const item: IInstrumentItem = builderItemsEntities[id];\n const {drop, isActive} = useBuilderDrop();\n\n const rowsBuilderItems: IBuilderDragItem[] = useMemo(\n () =>\n item.rows\n ? item.rows.map((row) => ({\n questionId: row.questionId,\n questionType: null, // TODO row.questionType\n answerStackId: row.questionAnswerStackId,\n type: BuilderItemDragTypeEnum.builderItem,\n text: row.text,\n position: row.position,\n linkedQuestionAnswerStackId: row.linkedQuestionAnswerStackId,\n }))\n : [],\n [item.rows]\n );\n\n const droppableAreaText = useMemo(\n () => (\n <>\n <Text.Heading as=\"h3\">Drag and Drop child items here</Text.Heading>\n <Text.Caption>(child items must have the same rating scale as the Matrix Header)</Text.Caption>\n </>\n ),\n []\n );\n\n const handleLinkClickHandler = (itemRow: IBuilderDragItem) => {\n const parentItem = cloneDeep(builderItemsEntities[id]);\n parentItem['childQuestionAnswerStackId'] = itemRow.questionId;\n\n setCurrentBuilderItem(parentItem);\n handleOpenModalLink();\n };\n\n const openInfoLinkHandler = useCallback(\n (item) => {\n setCurrentBuilderItem(item);\n handleOpenInfoLinkModal();\n },\n [setCurrentBuilderItem, handleOpenInfoLinkModal]\n );\n\n return (\n <>\n {item && (\n <Card className={classes.root}>\n <CardBody\n id={item.questionAnswerStackId}\n title={item.title}\n type={item.type}\n position={position}\n withApply\n applyClickHandler={applyClickHandler}\n />\n <Row justify=\"flex-start\" classes={{root: classes.answers}}>\n <Answers answers={item.columns} questionId={item.questionId} type={item.type} />\n </Row>\n <DropContainer drop={drop}>\n {!item.rows || !item.rows.length ? (\n <DroppableArea isActive={isActive}>{droppableAreaText}</DroppableArea>\n ) : (\n <>\n <div className={classes.droppableArea}>\n <DroppableArea isActive={isActive}>\n {rowsBuilderItems.map((itemRow: IBuilderDragItem, idx: number) => (\n <MatrixQuestionItem\n key={idx}\n matrixItem={{...itemRow, position: idx}}\n position={idx}\n moveHandler={moveRowHandler(item.questionAnswerStackId)}\n deleteHandler={deleteRowHandler(item.questionAnswerStackId)}\n withLink={!!handleOpenModalLink}\n linkClickHandler={handleLinkClickHandler}\n openInfoLinkClickHandler={() => {\n !!setCurrentBuilderItem && openInfoLinkHandler(itemRow);\n }}\n />\n ))}\n {droppableAreaText}\n </DroppableArea>\n </div>\n </>\n )}\n </DropContainer>\n </Card>\n )}\n </>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(3),\n },\n answers: (isMatrix: boolean) => ({\n marginLeft: isMatrix ? 0 : theme.spacing(4),\n }),\n droppableArea: {\n position: 'relative',\n },\n}));\n","import React, {useEffect, useMemo, Fragment} from 'react';\nimport {useParams} from 'react-router-dom';\nimport {ISurvey} from 'survey-react';\nimport {SurveyTakerPreview} from 'survey-taker';\nimport {toNumber} from 'utils';\nimport {Loading} from 'components-lib';\nimport {useInstrument} from '../details/hooks';\n\nexport function InstrumentPreviewView() {\n const urlParams = useParams<{id: string}>();\n const instrumentId = toNumber(urlParams?.id);\n const {\n surveyForPreviewTemplate,\n fetchInstrumentForPreviewById,\n pageLoading,\n isRoutePreviewWithAnswers,\n } = useInstrument(instrumentId);\n\n useEffect(() => {\n fetchInstrumentForPreviewById(instrumentId);\n }, [fetchInstrumentForPreviewById, instrumentId]);\n\n const survey: ISurvey = useMemo(\n () => ({\n ...surveyForPreviewTemplate,\n showCompletedPage: false,\n mode: 'display',\n }),\n\n [surveyForPreviewTemplate]\n );\n\n return pageLoading ? (\n <Loading fullHeight />\n ) : (\n <Fragment>\n {!!surveyForPreviewTemplate && (\n <SurveyTakerPreview survey={survey} isPreviewWithAnswers={isRoutePreviewWithAnswers} />\n )}\n </Fragment>\n );\n}\n","import React, {useEffect, useMemo} from 'react';\nimport {Loading} from 'components-lib';\nimport {useParams} from 'react-router-dom';\nimport {SurveyTakerPreview} from 'survey-taker';\nimport {toNumber} from 'utils';\nimport {useInstrument} from '../details/hooks';\n\nexport const InstrumentPreviewWithAnswersView = () => {\n const urlParams = useParams<{id: string}>();\n const instrumentId = toNumber(urlParams?.id);\n const {activeTemplate, fetchInstrumentById, pageLoading, isRoutePreviewWithAnswers} = useInstrument(instrumentId);\n\n useEffect(() => {\n if (!activeTemplate?.templateId) {\n fetchInstrumentById(instrumentId);\n }\n }, [activeTemplate, fetchInstrumentById, instrumentId]);\n\n const survey: any = useMemo(\n () => ({\n showCompletedPage: false,\n mode: 'display',\n logo: activeTemplate?.logo,\n logoPosition: activeTemplate?.logoPosition,\n logoWidth: activeTemplate?.logoWidth,\n logoHeight: activeTemplate?.logoHeight,\n footerUrl: activeTemplate?.footer?.url,\n pages: [\n {\n title: activeTemplate?.templateName,\n description: activeTemplate?.description,\n elements: activeTemplate?.elements,\n },\n ],\n }),\n\n [activeTemplate]\n );\n\n return pageLoading ? (\n <Loading fullHeight />\n ) : (\n <SurveyTakerPreview survey={survey} isPreviewWithAnswers={isRoutePreviewWithAnswers} />\n );\n};\n","import React from 'react';\nimport {Route, Switch} from 'react-router-dom';\nimport {DragAndDropProvider} from 'dragAndDrop';\nimport {pages, paths} from 'paths';\nimport {AllRolesWithoutStudent, withRole} from 'permissions';\nimport {InstrumentsAllView} from './all';\nimport {InstrumentBuilderView} from './builder';\nimport {InstrumentDetailsView} from './details';\nimport {AdminRolesWithLocalAreaInstruments} from './enums';\nimport {InstrumentPreviewView} from './preview';\nimport {InstrumentPreviewWithAnswersView} from './previewWithAnswers';\n\nconst InstrumentBuilderViewEnhanced = withRole(\n AdminRolesWithLocalAreaInstruments,\n `${paths.adminPortal.root}${paths.noPermission}`\n)(InstrumentBuilderView);\n\nconst InstrumentPreviewWithAnswersEnhanced = withRole(AllRolesWithoutStudent, '')(InstrumentPreviewWithAnswersView);\n\nexport function Instruments() {\n return (\n <DragAndDropProvider>\n <Switch>\n <Route exact path={pages.adminPortal.instruments.all} component={InstrumentsAllView} />\n <Route path={pages.adminPortal.instruments.preview} component={InstrumentPreviewView} />\n <Route\n path={pages.adminPortal.instruments.previewWithAnswers}\n component={InstrumentPreviewWithAnswersEnhanced}\n />\n <Route path={pages.adminPortal.instruments.build} component={InstrumentBuilderViewEnhanced} />\n <Route path={pages.adminPortal.instruments.details} component={InstrumentDetailsView} />\n </Switch>\n </DragAndDropProvider>\n );\n}\n","import React, {Fragment, ReactNode, useCallback, useEffect, useMemo} from 'react';\nimport {batch} from 'react-redux';\nimport {useParams} from 'react-router-dom';\nimport {\n ActionsBuilderView,\n Builder,\n BuilderInstructionalTextForm,\n MatrixEditExtraHeader,\n ModalInfoLinkItem,\n ModalLinkItems,\n ModalLinkItemsForm,\n PoolItemsList,\n PoolItemsMatrixList,\n SidebarBuilderView,\n} from '../components';\nimport {Column, PageViewHeader, Tag, Loading} from 'components-lib';\nimport {BuilderMatrix} from '../components/BuilderMatrix/BuilderMatrix';\nimport {PageLayoutThreeCol, PageLayoutWithFixedAreas} from 'layout';\nimport {BuilderEditModeEnum} from '../enums';\nimport {InstrumentsFilterNamesEnum} from '../../enums';\nimport {QuestionPropertiesType} from 'enums';\nimport {useModal} from 'hooks';\nimport {useInstrument} from '../../details/hooks';\nimport {useInstrumentItem} from '../../hooks';\nimport {useBuilder, useBuilderEditMode, useBuilderState, usePoolItemsPagination} from '../hooks';\nimport {cloneDeep} from 'utils';\nimport {getChildQuestion, getFilterList, getFilterToFilterNameMap, isMatrixQuestion, mapBuilderFilter} from '../utils';\nimport {IInstrumentsAllFilter} from 'models';\nimport {ISingleBuilderFilter} from '../models';\n\nexport function InstrumentBuilderView() {\n const urlParams = useParams<{id: string}>();\n const {\n builderEditMode,\n setBuilderEditMode,\n isAllTypesMode,\n isEditMatrixMode,\n isEditInstructionalText,\n defaultBuilderEditModeAllTypes,\n } = useBuilderEditMode();\n\n const {\n instrumentId,\n builderItems,\n addBuilderItems,\n moveBuilderItem,\n deleteBuilderItem,\n linkBuilderItem,\n addMatrixRow,\n moveMatrixRow,\n deleteMatrixRow,\n } = useBuilder();\n\n const {\n searchText: search,\n builderFilter,\n builderFilterEntities,\n initialBuilderFilter,\n builderPossiblePretestItems,\n builderPoolBaseItems,\n pageLoading,\n poolItemsLoading,\n\n getPossiblePretestItems,\n getPoolItems,\n getMatrixRelatedPoolItems,\n clearState,\n setSearch,\n setBuilderFilterInstruments,\n clearPoolItems,\n setTemporaryBuilderItems,\n } = useBuilderState();\n\n const {fetchInstrumentById, activeTemplate} = useInstrument(instrumentId);\n const {currentItem: currentBuilderItem, setCurrentItem: setCurrentBuilderItem} = useInstrumentItem();\n const {initialPage, currentPage, setCurrentPage, hasMorePages} = usePoolItemsPagination();\n\n const {isOpen: isModalLinkItemsOpen, setIsOpen: setIsModalLinkItemsOpen} = useModal();\n const handleOpenModalLink = useCallback(() => setIsModalLinkItemsOpen(true), [setIsModalLinkItemsOpen]);\n const handleCloseModalLink = useCallback(() => setIsModalLinkItemsOpen(false), [setIsModalLinkItemsOpen]);\n\n const {isOpen: isInfoLinkItemModalOpen, setIsOpen: setIsInfoLinkItemModalOpen} = useModal();\n const handleOpenInfoLinkModal = useCallback(() => setIsInfoLinkItemModalOpen(true), [setIsInfoLinkItemModalOpen]);\n\n useEffect(() => {\n getPoolItems(initialPage);\n setCurrentPage(initialPage + 1);\n if (!activeTemplate) {\n fetchInstrumentById(instrumentId);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [initialPage, instrumentId]);\n\n useEffect(() => {\n if (!builderPossiblePretestItems.length) {\n getPossiblePretestItems(urlParams.id);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [getPossiblePretestItems, urlParams.id]);\n\n useEffect(() => {\n return () => {\n clearState();\n };\n }, [clearState]);\n\n const unlinkClickHandler = useCallback(() => {\n const isMatrix = isMatrixQuestion(currentBuilderItem?.type);\n const updated = cloneDeep(currentBuilderItem);\n const childQuestion = getChildQuestion(updated, isMatrix);\n\n if (isMatrix) {\n // Check if a child question id exist and update its linkedQuestionAnswerStackId\n if (childQuestion) childQuestion[QuestionPropertiesType.linkedQuestionAnswerStackId] = null;\n } else {\n updated[QuestionPropertiesType.linkedQuestionAnswerStackId] = null;\n }\n\n batch(() => {\n linkBuilderItem(updated);\n handleCloseModalLink();\n });\n }, [currentBuilderItem, linkBuilderItem, handleCloseModalLink]);\n\n const getBuilderPoolItems = useCallback(\n (isEditMatrixMode = false, withInitialItems = false, initialPage, builderFilter, search, actions?) => {\n const text = withInitialItems ? '' : search;\n\n if (isEditMatrixMode) {\n return getMatrixRelatedPoolItems(\n builderEditMode.defaultAnswerStackId,\n initialPage,\n builderFilter,\n text,\n actions?.setSubmitting\n );\n }\n\n return getPoolItems(initialPage, builderFilter, actions?.setSubmitting);\n },\n [builderEditMode, getMatrixRelatedPoolItems, getPoolItems]\n );\n\n const searchSubmitHandler = useCallback(\n (\n {\n search = '',\n areas,\n pillars,\n evaluationType,\n domain,\n programs,\n category,\n learningObjective,\n competency,\n concept,\n administration,\n schoolLevel,\n },\n actions\n ) => {\n const builderFilter = mapBuilderFilter(\n search,\n areas,\n pillars,\n evaluationType,\n domain,\n programs,\n category,\n learningObjective,\n concept,\n competency,\n administration,\n schoolLevel\n );\n\n // This guarantees that the search will always be reset and the infinite scroll will work\n setSearch(search);\n clearPoolItems();\n setBuilderFilterInstruments(builderFilter);\n\n if (search && search.length > 0) {\n return getBuilderPoolItems(isEditMatrixMode, false, initialPage, builderFilter, search, actions);\n }\n\n // Go back to initial items\n getBuilderPoolItems(isEditMatrixMode, true, initialPage, builderFilter, search, actions);\n setCurrentPage(initialPage + 1);\n },\n [\n setSearch,\n setBuilderFilterInstruments,\n clearPoolItems,\n initialPage,\n setCurrentPage,\n isEditMatrixMode,\n getBuilderPoolItems,\n ]\n );\n\n const loadMoreHandler = useCallback(() => {\n isEditMatrixMode\n ? getMatrixRelatedPoolItems(builderEditMode.defaultAnswerStackId, currentPage)\n : !poolItemsLoading && getPoolItems(currentPage);\n\n hasMorePages && setCurrentPage(currentPage + 1);\n }, [\n poolItemsLoading,\n builderEditMode.defaultAnswerStackId,\n currentPage,\n getMatrixRelatedPoolItems,\n getPoolItems,\n hasMorePages,\n isEditMatrixMode,\n setCurrentPage,\n ]);\n\n const sidebar = useMemo(() => <SidebarBuilderView submitHandler={searchSubmitHandler} disableAll={pageLoading} />, [\n searchSubmitHandler,\n pageLoading,\n ]);\n\n const appliedFilters = useMemo(() => {\n const chips: ReactNode[] = [];\n const filterList = getFilterList();\n const filterToFilterNameMap = getFilterToFilterNameMap();\n\n const resetDropdownFilter = (propName: string, id: string | number) => {\n const updated: IInstrumentsAllFilter = {\n ...builderFilter,\n };\n updated[propName] = updated[propName].filter((pId: number) => pId !== id);\n\n batch(() => {\n setBuilderFilterInstruments(updated);\n clearPoolItems();\n });\n\n getBuilderPoolItems(isEditMatrixMode, false, initialPage, updated, search);\n };\n\n filterList.forEach((instrumentFilter) => {\n const mappedFilterName: string = filterToFilterNameMap[instrumentFilter];\n const current: ISingleBuilderFilter = builderFilter[mappedFilterName];\n\n if (current instanceof Array && current.length > 0) {\n current.forEach((id) => {\n const currentFilter = builderFilterEntities[mappedFilterName][id];\n\n chips.push(\n <Tag\n withFilterChip\n key={`key-${currentFilter.id}-${currentFilter.name}}`}\n label={currentFilter.name}\n deleteHandler={() => resetDropdownFilter(mappedFilterName, currentFilter.id)}\n withLeftMargin={false}\n />\n );\n });\n }\n\n if (typeof current === 'string' && !!current) {\n const deleteStringFilter = () => {\n const updated = {...builderFilter, [mappedFilterName]: ''};\n\n if (mappedFilterName === InstrumentsFilterNamesEnum.SEARCH) {\n setSearch('');\n }\n setBuilderFilterInstruments(updated);\n\n isEditMatrixMode\n ? getMatrixRelatedPoolItems(builderEditMode.defaultAnswerStackId, initialPage, updated, search)\n : getPoolItems(initialPage, updated);\n };\n\n chips.push(\n <Tag\n withFilterChip\n key={builderFilter[mappedFilterName]}\n label={current}\n deleteHandler={deleteStringFilter}\n withLeftMargin={false}\n />\n );\n }\n });\n\n return chips;\n }, [\n search,\n initialPage,\n builderFilter,\n builderFilterEntities,\n builderEditMode,\n isEditMatrixMode,\n clearPoolItems,\n getBuilderPoolItems,\n getMatrixRelatedPoolItems,\n getPoolItems,\n setBuilderFilterInstruments,\n setSearch,\n ]);\n\n const header = useMemo(\n () => (\n <Column>\n <PageViewHeader heading=\"Items\" filters={appliedFilters} withDivider={false} />\n {isEditMatrixMode && <MatrixEditExtraHeader id={builderEditMode.questionAnswerStackId} />}\n </Column>\n ),\n [builderEditMode.questionAnswerStackId, isEditMatrixMode, appliedFilters]\n );\n\n const contentMiddle = useMemo(() => {\n const morePages = (!search || search.length === 0) && hasMorePages;\n\n return (\n <Fragment>\n {pageLoading ? (\n <Loading />\n ) : (\n <PageLayoutWithFixedAreas headerSize=\"large\" header={header}>\n {isAllTypesMode && (\n <PoolItemsList\n hasMorePages={morePages}\n loading={poolItemsLoading || pageLoading}\n builderItems={builderItems}\n builderItemsBase={builderPoolBaseItems}\n dropHandler={addBuilderItems}\n loadMoreHandler={loadMoreHandler}\n />\n )}\n {isEditMatrixMode && (\n <PoolItemsMatrixList\n parentQuestionId={builderEditMode.questionAnswerStackId}\n hasMorePages={morePages}\n loading={poolItemsLoading || pageLoading}\n builderItemsBase={builderPoolBaseItems}\n loadMoreHandler={loadMoreHandler}\n dropHandler={addMatrixRow(builderEditMode.questionAnswerStackId)}\n />\n )}\n </PageLayoutWithFixedAreas>\n )}\n </Fragment>\n );\n }, [\n addBuilderItems,\n addMatrixRow,\n builderEditMode.questionAnswerStackId,\n builderItems,\n builderPoolBaseItems,\n hasMorePages,\n header,\n loadMoreHandler,\n poolItemsLoading,\n search,\n isAllTypesMode,\n isEditMatrixMode,\n pageLoading,\n ]);\n\n const contentEndHeader = useMemo(\n () => (\n <PageViewHeader\n action={\n <ActionsBuilderView\n isEditMatrixMode={isEditMatrixMode}\n isEditInstructionalText={isEditInstructionalText}\n setBuilderEditMode={setBuilderEditMode}\n loading={pageLoading}\n />\n }\n />\n ),\n [isEditMatrixMode, isEditInstructionalText, setBuilderEditMode, pageLoading]\n );\n\n const editClickHandler = useCallback(\n (questionAnswerStackId: number, defaultAnswerStackId: number, position: number) => {\n // Set temporary builder item list\n setTemporaryBuilderItems();\n\n setBuilderEditMode({\n questionAnswerStackId,\n defaultAnswerStackId,\n position,\n mode: BuilderEditModeEnum.matrix,\n });\n\n // This guarantees that the search and builder filter will always be reset in edit matrix mode\n setSearch('');\n clearPoolItems();\n setBuilderFilterInstruments(initialBuilderFilter);\n\n getMatrixRelatedPoolItems(defaultAnswerStackId, initialPage);\n },\n [\n getMatrixRelatedPoolItems,\n initialPage,\n setBuilderEditMode,\n clearPoolItems,\n setBuilderFilterInstruments,\n setSearch,\n initialBuilderFilter,\n setTemporaryBuilderItems,\n ]\n );\n\n const editInstructionalTextClickHandler = useCallback(\n (questionAnswerStackId: number, defaultAnswerStackId: number, position: number) => {\n setBuilderEditMode({\n questionAnswerStackId,\n defaultAnswerStackId,\n position,\n mode: BuilderEditModeEnum.instructionalText,\n });\n },\n [setBuilderEditMode]\n );\n\n const applyClickHandler = useCallback(() => {\n setSearch('');\n clearPoolItems();\n setBuilderFilterInstruments(initialBuilderFilter);\n getPoolItems(initialPage, initialBuilderFilter);\n\n setBuilderEditMode(defaultBuilderEditModeAllTypes);\n }, [\n defaultBuilderEditModeAllTypes,\n setSearch,\n getPoolItems,\n setBuilderEditMode,\n initialPage,\n clearPoolItems,\n initialBuilderFilter,\n setBuilderFilterInstruments,\n ]);\n\n const applyInstructionalTextClickHandler = useCallback(() => setBuilderEditMode(defaultBuilderEditModeAllTypes), [\n setBuilderEditMode,\n defaultBuilderEditModeAllTypes,\n ]);\n\n const contentEndBuilder = useMemo(() => {\n return (\n <Fragment>\n {isEditMatrixMode && (\n <BuilderMatrix\n id={builderEditMode.questionAnswerStackId}\n position={builderEditMode.position}\n applyClickHandler={applyClickHandler}\n moveRowHandler={moveMatrixRow}\n deleteRowHandler={deleteMatrixRow}\n setCurrentBuilderItem={setCurrentBuilderItem}\n handleOpenModalLink={handleOpenModalLink}\n handleOpenInfoLinkModal={handleOpenInfoLinkModal}\n />\n )}\n {isAllTypesMode && (\n <Builder\n pageLoading={pageLoading}\n activeTemplate={activeTemplate}\n items={builderItems}\n editClickHandler={editClickHandler}\n editInstructionalTextClickHandler={editInstructionalTextClickHandler}\n moveBuilderItemHandler={moveBuilderItem}\n deleteBuilderItemHandler={deleteBuilderItem}\n setCurrentBuilderItem={setCurrentBuilderItem}\n handleOpenModalLink={handleOpenModalLink}\n handleOpenInfoLinkModal={handleOpenInfoLinkModal}\n />\n )}\n {isEditInstructionalText && (\n <BuilderInstructionalTextForm\n id={builderEditMode.questionAnswerStackId}\n position={builderEditMode.position}\n applyClickHandler={applyInstructionalTextClickHandler}\n />\n )}\n </Fragment>\n );\n }, [\n pageLoading,\n activeTemplate,\n applyClickHandler,\n builderEditMode.position,\n builderEditMode.questionAnswerStackId,\n builderItems,\n deleteBuilderItem,\n deleteMatrixRow,\n editClickHandler,\n isEditMatrixMode,\n isAllTypesMode,\n isEditInstructionalText,\n moveBuilderItem,\n moveMatrixRow,\n handleOpenModalLink,\n handleOpenInfoLinkModal,\n setCurrentBuilderItem,\n editInstructionalTextClickHandler,\n applyInstructionalTextClickHandler,\n ]);\n\n const contentEnd = useMemo(\n () => (\n <PageLayoutWithFixedAreas headerSize=\"large\" header={contentEndHeader}>\n {pageLoading ? <Loading halfHeight /> : contentEndBuilder}\n </PageLayoutWithFixedAreas>\n ),\n [contentEndBuilder, contentEndHeader, pageLoading]\n );\n\n return (\n <>\n <PageLayoutThreeCol sidebar={sidebar} contentMiddle={contentMiddle} contentEnd={contentEnd} />\n <ModalLinkItemsForm\n currentBuilderItem={currentBuilderItem}\n linkBuilderItemHandler={linkBuilderItem}\n handleClose={handleCloseModalLink}\n >\n <ModalLinkItems\n isOpen={isModalLinkItemsOpen}\n setIsOpen={setIsModalLinkItemsOpen}\n unlinkHandler={unlinkClickHandler}\n />\n </ModalLinkItemsForm>\n <ModalInfoLinkItem\n linkedQuestionAnswerStackId={currentBuilderItem?.linkedQuestionAnswerStackId}\n isOpen={isInfoLinkItemModalOpen}\n setIsOpen={setIsInfoLinkItemModalOpen}\n />\n </>\n );\n}\n","import {FiltersEnum} from 'filters-selections/enums';\n\nexport const classInstrumentFilterList = [\n FiltersEnum.InstrumentStatus,\n FiltersEnum.Audience,\n FiltersEnum.InstrumentType,\n FiltersEnum.Phase,\n FiltersEnum.Pillar,\n];\n","import * as Yup from 'yup';\nimport {FormNameEnum} from 'filters-selections';\n\nexport const sidebarFiltersValidationSchema = Yup.object().shape({\n [FormNameEnum.search]: Yup.string(),\n [FormNameEnum.instrumentStatus]: Yup.array(Yup.number()),\n [FormNameEnum.audience]: Yup.array(Yup.number()),\n [FormNameEnum.instrumentType]: Yup.array().of(Yup.number()),\n [FormNameEnum.phase]: Yup.array().of(Yup.number()),\n [FormNameEnum.pillar]: Yup.array(Yup.number()),\n [FormNameEnum.instrumentViewType]: Yup.number().nullable(),\n});\n","import {SortingOrderEnum} from 'enums';\nimport {ProgramClassInstrumentsOrderingEnum} from '../../enums';\n\nexport const programClassInstrumentsOrderingMap = {\n [ProgramClassInstrumentsOrderingEnum.Name]: {\n [SortingOrderEnum.ASC]: 'Name: A-Z',\n [SortingOrderEnum.DESC]: 'Name: Z-A',\n },\n [ProgramClassInstrumentsOrderingEnum.Type]: {\n [SortingOrderEnum.ASC]: 'Type: Pre-Post',\n [SortingOrderEnum.DESC]: 'Type: Post-Pre',\n },\n};\n","import {SortingOrderEnum} from 'enums';\nimport {IProgramClassInstrumentsSortOrder} from 'models/programs';\nimport {ProgramClassInstrumentsDropdownNameEnum, ProgramClassInstrumentsOrderingEnum} from '../../enums';\n\nexport const getProgramClassInstrumentsMenuItemsList = (\n itemClickHandler: () => void,\n handleItemClick: (handleItemSortObj: IProgramClassInstrumentsSortOrder) => void\n) => {\n const onClick = (\n itemClickHandler: () => void,\n handleItemClick: (handleItemSortObj: IProgramClassInstrumentsSortOrder) => void,\n handleItemSortObj: IProgramClassInstrumentsSortOrder\n ) => {\n return () => {\n itemClickHandler();\n handleItemClick(handleItemSortObj);\n };\n };\n\n return [\n {\n name: ProgramClassInstrumentsDropdownNameEnum.Name_ASC,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: ProgramClassInstrumentsOrderingEnum.Name,\n sort: SortingOrderEnum.ASC,\n }),\n },\n {\n name: ProgramClassInstrumentsDropdownNameEnum.Name_DESC,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: ProgramClassInstrumentsOrderingEnum.Name,\n sort: SortingOrderEnum.DESC,\n }),\n },\n {\n name: ProgramClassInstrumentsDropdownNameEnum.Type_PRE_POST,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: ProgramClassInstrumentsOrderingEnum.Type,\n sort: SortingOrderEnum.ASC,\n }),\n },\n {\n name: ProgramClassInstrumentsDropdownNameEnum.Type_POST_PRE,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: ProgramClassInstrumentsOrderingEnum.Type,\n sort: SortingOrderEnum.DESC,\n }),\n },\n ];\n};\n","import {useSelector} from 'react-redux';\nimport {\n poolSelector,\n fetchProgramClassInstrumentsThunk,\n pageLoadingSelector,\n filterSelector,\n paginationSelector,\n programClassInstrumentsSortOrderSelector,\n} from '../store';\nimport {useCallback} from 'react';\nimport {useAppDispatch} from 'hooks';\n\nimport {programClassInstrumentsActions as actions} from '../store/programClassInstruments.slice';\nimport {IProgramClassInstrumentsFilter, IProgramClassInstrumentsSortOrder} from 'models';\nimport {filtersProgramClassInstrumentsEntitiesSelector} from 'filters-selections';\nimport {getIsAscSortOrder, getSortingOptions} from 'utils';\n\nexport function useProgramClassInstruments(classId: number) {\n const dispatch = useAppDispatch();\n const loading = useSelector(pageLoadingSelector);\n const instruments = useSelector(poolSelector);\n const filter = useSelector(filterSelector);\n const filterEntities = useSelector(filtersProgramClassInstrumentsEntitiesSelector);\n const sortOrder = useSelector(programClassInstrumentsSortOrderSelector);\n\n const {currentPage, perPage, totalCount} = useSelector(paginationSelector);\n\n const setCurrentPage = useCallback((newPage: number) => dispatch(actions.setCurrentPage(newPage)), [dispatch]);\n const setPerPage = useCallback((perPage: number) => dispatch(actions.setPerPage(perPage)), [dispatch]);\n\n const fetchClassInstruments = useCallback(() => {\n const sortAsc = getIsAscSortOrder(sortOrder?.sort);\n const sortOptions = getSortingOptions(sortOrder?.order, sortAsc);\n\n return dispatch(\n fetchProgramClassInstrumentsThunk({\n filter,\n classId,\n sortOptions,\n pagination: {\n pageNumber: currentPage,\n pageSize: perPage,\n },\n })\n );\n }, [dispatch, filter, classId, currentPage, perPage, sortOrder.sort, sortOrder.order]);\n\n const setFilter = useCallback((filter: IProgramClassInstrumentsFilter) => dispatch(actions.setFilter(filter)), [\n dispatch,\n ]);\n const resetFilter = useCallback(() => dispatch(actions.resetFilter()), [dispatch]);\n const setSortOrder = useCallback(\n (sortOrder: IProgramClassInstrumentsSortOrder) => dispatch(actions.setSortOrder(sortOrder)),\n [dispatch]\n );\n\n return {\n loading,\n filter,\n instruments,\n filterEntities,\n fetchClassInstruments,\n setFilter,\n resetFilter,\n setSortOrder,\n setCurrentPage,\n setPerPage,\n totalCount,\n perPage,\n currentPage,\n };\n}\n","import React, {useCallback, useMemo} from 'react';\nimport {useParams} from 'react-router-dom';\nimport {Filters} from 'components-lib';\nimport {FiltersList, FormNameEnum} from 'filters-selections';\nimport {Form} from 'forms';\nimport {AdminRoles, usePermissions} from 'permissions';\nimport {toNumber} from 'utils';\nimport {ViewExpansionPanel} from '../../../components';\nimport {FilterBackendNamesEnum} from '../../enums';\nimport {useProgramClassInstruments} from '../../hooks';\nimport {classInstrumentFilterList, sidebarFiltersValidationSchema} from '../../utils';\n\ninterface IFilterForm {\n [FormNameEnum.search]: string;\n [FormNameEnum.instrumentStatus]: number[];\n [FormNameEnum.audience]?: number[];\n [FormNameEnum.instrumentType]?: number[];\n [FormNameEnum.phase]?: number[];\n [FormNameEnum.pillar]: number[];\n [FormNameEnum.instrumentViewType]: number | null;\n}\n\nexport function SidebarFilters() {\n const {programId} = useParams<{programId: string}>();\n const {loading, filter, setFilter, resetFilter} = useProgramClassInstruments(toNumber(programId));\n const {hasPermission} = usePermissions();\n const shouldRenderFilters = hasPermission(AdminRoles);\n\n const initialValues: IFilterForm = useMemo(\n () => ({\n [FormNameEnum.search]: filter.name,\n [FormNameEnum.instrumentStatus]: filter.statuses,\n [FormNameEnum.audience]: filter.audiences,\n [FormNameEnum.instrumentType]: filter.types,\n [FormNameEnum.phase]: filter.phases,\n [FormNameEnum.pillar]: filter.pillars,\n [FormNameEnum.instrumentViewType]: filter.isGeneralTemplate,\n }),\n [filter]\n );\n\n const renderFiltersList = useMemo(() => {\n return (\n <>\n <ViewExpansionPanel disabled={loading} />\n {shouldRenderFilters && <FiltersList filters={classInstrumentFilterList} disableAll={loading} />}\n </>\n );\n }, [loading, shouldRenderFilters]);\n\n const submitHandler = useCallback(\n (values: IFilterForm) => {\n return setFilter({\n [FilterBackendNamesEnum.SEARCH_BY_NAME]: values.search,\n [FilterBackendNamesEnum.INSTRUMENT_STATUSES]: values.status,\n [FilterBackendNamesEnum.AUDIENCES]: values.audience,\n [FilterBackendNamesEnum.TYPES]: values.type,\n [FilterBackendNamesEnum.PHASES]: values.phase,\n [FilterBackendNamesEnum.PILLARS]: values.pillar,\n [FilterBackendNamesEnum.INSTRUMENT_VIEW_TYPE]: values.instrumentViewType,\n });\n },\n [setFilter]\n );\n\n return (\n <Form.Form<IFilterForm>\n initialValues={initialValues}\n validationSchema={sidebarFiltersValidationSchema}\n submitHandler={submitHandler}\n >\n <Filters.FiltersPanel\n clearButtonClickHandler={resetFilter}\n searchFieldName={'search'}\n filters={renderFiltersList}\n disableAll={loading}\n />\n </Form.Form>\n );\n}\n","import {FormControlLabel, makeStyles, Radio, RadioGroup} from '@material-ui/core';\nimport {Column, Text} from 'components-lib';\nimport {ProgramsSectionNavigatorEnum} from 'enums';\nimport {useNavigate} from 'hooks';\nimport {pages} from 'paths';\nimport React, {useCallback} from 'react';\nimport {useParams, useRouteMatch} from 'react-router-dom';\nimport {toNumber} from 'utils';\n\nconst options = [\n {label: 'Show Classes', value: ProgramsSectionNavigatorEnum.CLASSES},\n {label: 'Show Master Instruments', value: ProgramsSectionNavigatorEnum.MASTER_INSTRUMENTS},\n {label: 'Show Reports', value: ProgramsSectionNavigatorEnum.REPORTS},\n {label: 'Show Exports', value: ProgramsSectionNavigatorEnum.EXPORTS},\n];\n\nconst pathToViewMap = {\n [pages.adminPortal.programs.details]: ProgramsSectionNavigatorEnum.CLASSES,\n [pages.adminPortal.programs.masterInstruments]: ProgramsSectionNavigatorEnum.MASTER_INSTRUMENTS,\n [pages.adminPortal.programs.reports]: ProgramsSectionNavigatorEnum.REPORTS,\n [pages.adminPortal.programs.exports]: ProgramsSectionNavigatorEnum.EXPORTS,\n};\n\nconst viewToLinkMap = {\n [ProgramsSectionNavigatorEnum.CLASSES]: pages.adminPortal.programs.detailsLink,\n [ProgramsSectionNavigatorEnum.MASTER_INSTRUMENTS]: pages.adminPortal.programs.masterInstrumentsLink,\n [ProgramsSectionNavigatorEnum.REPORTS]: pages.adminPortal.programs.reportsLink,\n [ProgramsSectionNavigatorEnum.EXPORTS]: pages.adminPortal.programs.exportsLink,\n};\n\nexport function ViewExpansionPanel() {\n const {programId} = useParams<{programId: string}>();\n const {push} = useNavigate();\n const {path} = useRouteMatch();\n const classes = useStyles();\n\n const onChange = useCallback((_event: any, value: any) => push(`${viewToLinkMap[toNumber(value)]}/${programId}`), [\n programId,\n push,\n ]);\n\n return (\n <Column className={classes.root}>\n <Text.Heading as=\"h4\">View</Text.Heading>\n <RadioGroup aria-label=\"choose_view\" name=\"choose_view\" value={pathToViewMap[path]} onChange={onChange}>\n {options.map((option: any, i: number) => (\n <FormControlLabel value={option.value} control={<Radio color=\"primary\" />} label={option.label} key={i} />\n ))}\n </RadioGroup>\n </Column>\n );\n}\n\nconst useStyles = makeStyles({\n root: {\n paddingLeft: 10,\n },\n});\n","import React, {FC, useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport {SortByDropdown} from 'admin/components';\nimport {useAppDispatch} from 'hooks';\nimport {programClassInstrumentsSortOrderSelector, programClassInstrumentsActions as actions} from '../../store';\nimport {IProgramClassInstrumentsSortOrder} from 'models/programs';\nimport {getProgramClassInstrumentsMenuItemsList, programClassInstrumentsOrderingMap} from 'admin/programs/details';\n\nexport const ProgramsClassInstrumentsSortBy: FC = () => {\n const dispatch = useAppDispatch();\n const sortOrder = useSelector(programClassInstrumentsSortOrderSelector);\n\n const handleItemClick = useCallback(\n (sortOrder: IProgramClassInstrumentsSortOrder) => {\n dispatch(actions.setSortOrderProgramClasseInstruments(sortOrder));\n },\n [dispatch]\n );\n\n return (\n <SortByDropdown\n label=\"Sort By: \"\n handleItemClick={handleItemClick}\n getMenuItemsList={getProgramClassInstrumentsMenuItemsList}\n sortOrder={sortOrder}\n map={programClassInstrumentsOrderingMap}\n />\n );\n};\n","import React, {useCallback, useEffect, useMemo} from 'react';\nimport {useParams} from 'react-router-dom';\nimport {Tooltip} from '@material-ui/core';\nimport {unwrapResult} from '@reduxjs/toolkit';\nimport {SubtitlePageViewHeader} from 'admin/components';\nimport {InstrumentStatusNamesEnum} from 'admin/library/instruments/enums';\nimport {duplicateInstrumentThunk} from 'admin/library/instruments/store';\nimport {InstrumentViewTypeEnum} from 'admin/library/items/enums';\nimport {useProgram} from 'admin/programs/details/hooks';\nimport {Button, Icon, Loading, PageViewHeader, PaginationLocal, Table, Tag} from 'components-lib';\nimport {useAppDispatch, useNavigate} from 'hooks';\nimport {PageLayoutTwoCol, PageLayoutWithFixedAreas} from 'layout';\nimport {IBindBaseEntity, IBindBaseEnumEntity, IProgramClassInstrumentBase} from 'models';\nimport {pages} from 'paths';\nimport {AdminWithoutStaffRoles, AllRolesWithoutStudent, usePermissions} from 'permissions';\nimport {cloneDeep, getLocationOrigin, MIN_INSTRUMENT_NAME_LENGTH, toNumber} from 'utils';\nimport {useProgramClass} from '../hooks';\nimport {ProgramsClassInstrumentsSortBy, SidebarFilters} from './components';\nimport {FilterBackendNamesEnum} from './enums';\nimport {useProgramClassInstruments} from './hooks';\n\nconst locationOrigin = getLocationOrigin();\n\nexport function ProgramClassInstrumentsView() {\n const dispatch = useAppDispatch();\n const {push} = useNavigate();\n const {hasPermission} = usePermissions();\n const hasAdminPermission = hasPermission(AdminWithoutStaffRoles);\n const hasAllRolesWithoutStudentPermission = hasPermission(AllRolesWithoutStudent);\n\n const {programId: programIdRaw, classId: classIdRaw} = useParams<{\n programId: string;\n classId: string;\n }>();\n\n const programId = toNumber(programIdRaw);\n const classId = toNumber(classIdRaw);\n\n const {program, fetchProgram} = useProgram(programId);\n\n const {currentClass, fetchClass} = useProgramClass(classId);\n\n const {\n loading,\n instruments,\n filter,\n filterEntities,\n fetchClassInstruments,\n setFilter,\n setCurrentPage,\n setPerPage,\n totalCount,\n perPage,\n currentPage,\n } = useProgramClassInstruments(classId);\n\n useEffect(() => {\n fetchProgram(true);\n }, [fetchProgram]);\n\n useEffect(() => {\n fetchClass(true);\n }, [fetchClass]);\n\n useEffect(() => {\n fetchClassInstruments();\n }, [fetchClassInstruments]);\n\n const viewInstrumentDetails = useCallback(\n (id: number) => {\n push(`${pages.adminPortal.instruments.detailsRoot}/${id}`, {\n prevPath: window.location.pathname,\n });\n },\n [push]\n );\n\n const duplicateMasterTemplate = useCallback(\n (id: number) =>\n dispatch(\n duplicateInstrumentThunk({\n instrumentId: id,\n programSessionId: classId,\n })\n )\n .then(unwrapResult)\n .then((newId: number) => {\n push(`${pages.adminPortal.instruments.detailsRoot}/${newId}`, {\n prevPath: window.location.pathname,\n });\n }),\n [dispatch, classId, push]\n );\n\n const rows = useMemo(() => {\n return instruments.result.map((key: string) => {\n const instrument: IProgramClassInstrumentBase = instruments.entities.byId[key];\n const surveyUrl = `${locationOrigin}${pages.survey.takerLink}/${programId}/${instrument?.id}`;\n const surveyGeneralUrl = `${locationOrigin}${pages.surveyGeneral.takerLink}/${instrument?.id}`;\n const isMasterTemplate = !instrument?.parentId;\n const isDraftTemplate = instrument?.status === InstrumentStatusNamesEnum.DRAFT;\n let dropdownItems = [];\n\n const masterTemplateDropdownItems = [\n {\n text: 'View',\n isCopyLink: false,\n clickHandler: () => viewInstrumentDetails(instrument.id),\n },\n {\n text: 'Share',\n isCopyLink: true,\n copyText: surveyUrl,\n },\n ];\n\n const otherDropdownItems = [\n {\n text: 'View',\n isCopyLink: false,\n clickHandler: () => viewInstrumentDetails(instrument.id),\n },\n {\n text: 'Direct Link',\n isCopyLink: true,\n copyText: surveyGeneralUrl,\n },\n ];\n\n if (isMasterTemplate) {\n dropdownItems = masterTemplateDropdownItems;\n\n if (hasAdminPermission) {\n const additionalDropdownItems = [\n {\n text: 'Duplicate',\n isCopyLink: false,\n clickHandler: () => duplicateMasterTemplate(instrument.id),\n },\n ];\n\n dropdownItems = [...dropdownItems, ...additionalDropdownItems];\n }\n } else {\n dropdownItems = otherDropdownItems;\n\n if (hasAllRolesWithoutStudentPermission) {\n const additionalDropdownItems = [\n {\n text: 'Print',\n isCopyLink: false,\n clickHandler: () =>\n window.open(`${pages.adminPortal.instruments.printPreviewLink}/${instrument.id}`, '_blank'),\n },\n ];\n\n dropdownItems = [...dropdownItems, ...additionalDropdownItems];\n }\n }\n\n if (isDraftTemplate) {\n dropdownItems = dropdownItems.splice(0, 1);\n }\n\n return {\n code: instrument?.id,\n mtIcon: isMasterTemplate ? <Icon.MasterTemplateIcon /> : '',\n name: (\n <Tooltip\n disableHoverListener={instrument?.name?.length < MIN_INSTRUMENT_NAME_LENGTH}\n title={instrument?.name}\n >\n <span>{instrument?.name}</span>\n </Tooltip>\n ),\n audience: instrument?.audience,\n surveyType: instrument?.surveyType,\n phase: instrument?.phase,\n status: instrument?.status,\n viewBtn: <Button.Dropdown items={dropdownItems} />,\n };\n });\n }, [\n instruments.result,\n instruments.entities.byId,\n programId,\n hasAdminPermission,\n hasAllRolesWithoutStudentPermission,\n viewInstrumentDetails,\n duplicateMasterTemplate,\n ]);\n\n const headerSubheading = useMemo(\n () =>\n program && (\n <SubtitlePageViewHeader>\n {' '}\n / {program?.name} / {currentClass?.name}\n </SubtitlePageViewHeader>\n ),\n [currentClass, program]\n );\n\n const headerSortOrder = useMemo(() => <ProgramsClassInstrumentsSortBy />, []);\n\n const filters = useMemo(() => {\n const chips: any[] = [];\n\n const deleteHandler = (key: string, item: number | string | null) => {\n const updated = cloneDeep(filter);\n\n if (item === null) {\n updated[key] = item;\n } else {\n const idx = filter[key].indexOf(item);\n\n if (idx > -1) {\n updated[key].splice(idx, 1);\n }\n }\n\n setFilter(updated);\n };\n\n if (!!filter.name) {\n chips.push(\n <Tag\n withFilterChip\n key={filter.name}\n label={filter.name}\n deleteHandler={() => setFilter({...filter, name: ''})}\n />\n );\n }\n\n if (!!filter.audiences) {\n filter.audiences.forEach((id) => {\n const option: IBindBaseEntity = filterEntities.audiences[id];\n option &&\n chips.push(<Tag withFilterChip label={option.name} deleteHandler={() => deleteHandler('audiences', id)} />);\n });\n }\n\n if (!!filter.phases) {\n filter.phases.forEach((id) => {\n const option: IBindBaseEntity = filterEntities.phases[id];\n option &&\n chips.push(<Tag withFilterChip label={option.name} deleteHandler={() => deleteHandler('phases', id)} />);\n });\n }\n\n if (!!filter.types) {\n filter.types.forEach((id) => {\n const option: IBindBaseEnumEntity = filterEntities.types[id];\n option &&\n chips.push(\n <Tag withFilterChip label={option.displayText} deleteHandler={() => deleteHandler('types', id)} />\n );\n });\n }\n\n if (!!filter.statuses) {\n filter.statuses.forEach((id) => {\n const option: IBindBaseEnumEntity = filterEntities.statuses[id];\n option &&\n chips.push(\n <Tag withFilterChip label={option.displayText} deleteHandler={() => deleteHandler('statuses', id)} />\n );\n });\n }\n\n if (!!filter.pillars) {\n filter.pillars.forEach((id) => {\n const option: IBindBaseEnumEntity = filterEntities.pillars[id];\n option &&\n chips.push(<Tag withFilterChip label={option.name} deleteHandler={() => deleteHandler('pillars', id)} />);\n });\n }\n\n if (filter.isGeneralTemplate !== null) {\n chips.push(\n <Tag\n withFilterChip\n key={FilterBackendNamesEnum.INSTRUMENT_VIEW_TYPE}\n label={InstrumentViewTypeEnum[filter.isGeneralTemplate]}\n deleteHandler={() => deleteHandler('isGeneralTemplate', null)}\n />\n );\n }\n\n return chips;\n }, [\n filter,\n filterEntities.audiences,\n filterEntities.phases,\n filterEntities.types,\n filterEntities.statuses,\n filterEntities.pillars,\n setFilter,\n ]);\n\n const header = useMemo(() => {\n return (\n <PageViewHeader\n heading=\"Programs\"\n subHeading={headerSubheading}\n filters={filters}\n sort={headerSortOrder}\n withBackButton\n backButtonClickHandler={() => push(`${pages.adminPortal.programs.detailsLink}/${programId}`)}\n />\n );\n }, [headerSubheading, filters, push, programId, headerSortOrder]);\n\n const footer = useMemo(() => {\n return (\n <PaginationLocal\n onPageChange={setCurrentPage}\n onPerPageChange={setPerPage}\n totalCount={totalCount}\n perPage={perPage}\n currentPage={currentPage}\n disabled={loading}\n />\n );\n }, [currentPage, perPage, setCurrentPage, setPerPage, totalCount, loading]);\n\n const sidebar = useMemo(() => {\n return <SidebarFilters />;\n }, []);\n\n const content = useMemo(() => {\n return (\n <PageLayoutWithFixedAreas withSecondaryNavigation={false} header={header} footer={footer}>\n {loading ? <Loading /> : !!rows.length ? <Table rows={rows} columns={columns} /> : 'No results found'}\n </PageLayoutWithFixedAreas>\n );\n }, [header, loading, rows, footer]);\n\n return <PageLayoutTwoCol withSecondaryNavigation={false} sidebar={sidebar} content={content} />;\n}\n\nconst columns: any[] = [\n {id: 'mtIcon', label: ''},\n {id: 'name', label: 'Instrument'},\n {id: 'audience', label: 'Audience'},\n {id: 'surveyType', label: 'Type'},\n {id: 'phase', label: 'Phase'},\n {id: 'status', label: 'Status'},\n {id: 'viewBtn', label: '', align: 'center'},\n];\n","import {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport {useAppDispatch, useNavigate} from 'hooks';\nimport {\n programsSelector,\n filterSelector,\n paginationSelector,\n fetchProgramsPagedThunk,\n pageLoadingSelector,\n programsAllSortOrderSelector,\n programsAllActions as actions,\n} from '../store';\n\nimport {IProgramsAllFilter} from 'models';\nimport {\n filtersEntitiesCollectionSelector,\n filtersEntitiesSelector,\n filtersYearsEntitiesCollectionSelector,\n} from 'filters-selections';\nimport {pages} from 'paths';\nimport {mapProgramsPayload} from '../utils';\n\nexport const usePrograms = () => {\n const dispatch = useAppDispatch();\n const {push} = useNavigate();\n const loading = useSelector(pageLoadingSelector) as boolean;\n const filter = useSelector(filterSelector);\n const programs = useSelector(programsSelector);\n const {currentPage, perPage, totalCount} = useSelector(paginationSelector);\n const filterEntities = useSelector(filtersEntitiesSelector);\n const filterEntitiesCollection = useSelector(filtersEntitiesCollectionSelector);\n const yearsCollection = useSelector(filtersYearsEntitiesCollectionSelector);\n const sortOrder = useSelector(programsAllSortOrderSelector);\n\n const fetchPrograms: () => void = useCallback(() => {\n const payload = mapProgramsPayload({\n filter,\n currentPage,\n perPage,\n sortOrder,\n programYearsCollection: yearsCollection,\n });\n\n return dispatch(fetchProgramsPagedThunk(payload));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentPage, filter, perPage, sortOrder]);\n\n const setFilter: (filter: IProgramsAllFilter) => void = useCallback(\n (filter: IProgramsAllFilter) => dispatch(actions.setFilter(filter)),\n [dispatch]\n );\n const resetFilter: () => void = useCallback(() => dispatch(actions.resetFilter()), [dispatch]);\n\n const setCurrentPage = useCallback((newPage: number) => dispatch(actions.setCurrentPage(newPage)), [dispatch]);\n\n const setPerPage = useCallback((perPage: number) => dispatch(actions.setPerPage(perPage)), [dispatch]);\n\n const redirectToProgramDetails: (id: string) => void = useCallback(\n (id) => push(`${pages.adminPortal.programs.detailsLink}/${id}`),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n\n return {\n loading,\n filter,\n programs,\n currentPage,\n perPage,\n totalCount,\n filterEntities,\n filterEntitiesCollection,\n yearsCollection,\n\n fetchPrograms,\n setCurrentPage,\n setPerPage,\n setFilter,\n resetFilter,\n redirectToProgramDetails,\n };\n};\n","import {getProgramYearsCollectionString} from 'admin/programs/details';\nimport {SortingOrderEnum} from 'enums';\nimport {IFetchProgramsAllFilters, ISortingOptions} from 'models';\n\nexport const mapProgramsPayload = ({\n filter,\n currentPage,\n perPage,\n sortOrder: {order, sort},\n programYearsCollection,\n}: IFetchProgramsAllFilters) => {\n const sortAsc = sort === SortingOrderEnum.ASC;\n const sortOptions = {sortBy: order, sortAsc} as ISortingOptions;\n\n const filterProgramYears = filter.programYearsFilter.length\n ? getProgramYearsCollectionString(programYearsCollection, filter.programYearsFilter)\n : [];\n\n const updatedFilter = {...filter, programYearsFilter: [...filterProgramYears]};\n\n return {\n sortOptions,\n pagination: {\n page: currentPage,\n itemsPerPage: perPage,\n },\n filter: updatedFilter,\n };\n};\n","import * as Yup from 'yup';\nimport {FormNameEnum} from 'filters-selections';\nexport interface IProgramsAllSidebarFiltersForm {\n [FormNameEnum.gradeLevels]: number[];\n [FormNameEnum.programYears]: number[];\n [FormNameEnum.search]: string;\n}\n\nexport const filtersFormValidationSchema = Yup.object().shape({\n [FormNameEnum.gradeLevels]: Yup.array().of(Yup.number()),\n [FormNameEnum.programYears]: Yup.array().of(Yup.string()),\n [FormNameEnum.search]: Yup.string(),\n});\n","import React, {useCallback, useMemo} from 'react';\nimport {Filters} from 'components-lib';\nimport {FiltersEnum, FiltersList, FormNameEnum} from 'filters-selections';\nimport {Form} from 'forms';\nimport {usePrograms} from 'admin/programs/all/hooks';\nimport {filtersFormValidationSchema, IProgramsAllSidebarFiltersForm} from './config';\nimport {mapProgramsAllPayload} from '../../utils';\n\nexport const ProgramsAllSidebarFilters = () => {\n const {\n loading,\n filter,\n setFilter,\n resetFilter,\n filterEntities: {years},\n } = usePrograms();\n\n const initialValues: IProgramsAllSidebarFiltersForm = useMemo(\n () => ({\n [FormNameEnum.gradeLevels]: filter.gradeLevelsFilter,\n [FormNameEnum.programYears]: filter.programYearsFilter,\n [FormNameEnum.search]: filter.searchByName,\n }),\n [filter]\n );\n\n const renderFiltersList = useMemo(() => {\n const filters = [FiltersEnum.ProgramYearMulti, FiltersEnum.GradeLevel];\n return <FiltersList filters={filters} disableAll={loading} />;\n }, [loading]);\n\n const submitClickHandler = useCallback(\n (newFilter: IProgramsAllSidebarFiltersForm) => {\n const payload = mapProgramsAllPayload(filter, newFilter, years.entities.years);\n\n setFilter(payload);\n },\n [filter, setFilter, years]\n );\n\n return (\n <Form.Form<IProgramsAllSidebarFiltersForm>\n initialValues={initialValues}\n validationSchema={filtersFormValidationSchema}\n submitHandler={submitClickHandler}\n >\n <Filters.FiltersPanel\n clearButtonClickHandler={resetFilter}\n searchFieldName=\"search\"\n filters={renderFiltersList}\n disableAll={loading}\n />\n </Form.Form>\n );\n};\n","import {IBindBaseEnumEntity, IProgramsAllFilter} from 'models';\nimport {IProgramsAllSidebarFiltersForm} from '../../components/SidebarFilters/config';\n\nexport const mapProgramsAllPayload = (\n filter: IProgramsAllFilter,\n {gradeLevels, programYears, search}: IProgramsAllSidebarFiltersForm,\n years: {[id: number]: IBindBaseEnumEntity}\n) => {\n const programYearsFilter = programYears.map((yearId) => {\n const id = years[yearId].id;\n return id;\n });\n\n return {\n ...filter,\n gradeLevelsFilter: gradeLevels,\n programYearsFilter,\n searchByName: search,\n };\n};\n","import React, {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\n\nimport {useAppDispatch} from 'hooks';\nimport {programsAllActions as actions, programsAllSortOrderSelector} from 'admin/programs/all/store';\nimport {getProgramsMenuItemsList, programsOrderingMap, SortByDropdown} from 'admin';\nimport {IProgramsAllSortOrder} from 'models/programs';\n\nexport const ProgramsAllSortBy = () => {\n const dispatch = useAppDispatch();\n const sortOrder = useSelector(programsAllSortOrderSelector);\n\n const handleItemClick = useCallback(\n (sortOrder: IProgramsAllSortOrder) => {\n dispatch(actions.setSortOrderProgramsAll(sortOrder));\n },\n [dispatch]\n );\n\n return (\n <SortByDropdown\n label=\"Sort By: \"\n handleItemClick={handleItemClick}\n getMenuItemsList={getProgramsMenuItemsList}\n sortOrder={sortOrder}\n map={programsOrderingMap}\n />\n );\n};\n","import React, {useMemo, useEffect} from 'react';\nimport {PageViewHeader, PaginationLocal, Table, Button, Loading, Tag} from 'components-lib';\nimport {PageLayoutWithFixedAreas, PageLayoutTwoCol} from 'layout';\nimport {ProgramsAllSidebarFilters, ProgramsAllSortBy} from './components';\nimport {usePrograms} from './hooks';\nimport {IBindBaseEnumEntity, IProgramBase} from 'models';\nimport {cloneDeep} from 'utils';\n\nexport const ProgramsAllView = () => {\n const {\n loading,\n filter,\n filterEntities,\n filterEntitiesCollection,\n programs,\n totalCount,\n perPage,\n currentPage,\n setFilter,\n fetchPrograms,\n setCurrentPage,\n setPerPage,\n redirectToProgramDetails,\n } = usePrograms();\n\n useEffect(() => {\n fetchPrograms();\n }, [fetchPrograms]);\n\n const renderSortOrder = useMemo(() => <ProgramsAllSortBy />, []);\n\n const filters = useMemo(() => {\n const chips: any[] = [];\n\n const deleteHandler = (prop: string, item: number | string) => {\n const updated = cloneDeep(filter);\n const idx = filter[prop].indexOf(item);\n\n if (idx > -1) {\n updated[prop].splice(idx, 1);\n }\n\n setFilter(updated);\n };\n\n if (!!filter.searchByName) {\n chips.push(\n <Tag\n withFilterChip\n key={filter.searchByName}\n label={filter.searchByName}\n deleteHandler={() => setFilter({...filter, searchByName: ''})}\n />\n );\n }\n\n if (!!filter.programYearsFilter && filter.programYearsFilter.length > 0) {\n filter.programYearsFilter.forEach((yearId) => {\n const programYear: IBindBaseEnumEntity = filterEntitiesCollection.years.find(\n (programYear) => programYear.id === yearId\n );\n\n return chips.push(\n <Tag\n withFilterChip\n key={yearId}\n label={programYear.displayText}\n deleteHandler={() => deleteHandler('programYearsFilter', yearId)}\n />\n );\n });\n }\n\n if (!!filter.gradeLevelsFilter && filter.gradeLevelsFilter.length > 0) {\n filter.gradeLevelsFilter.forEach((id) => {\n const level = filterEntities.gradeLevels[id];\n chips.push(\n <Tag\n withFilterChip\n key={level.id}\n label={level.name}\n deleteHandler={() => deleteHandler('gradeLevelsFilter', id)}\n />\n );\n });\n }\n\n return chips;\n }, [filter, filterEntities.gradeLevels, filterEntitiesCollection.years, setFilter]);\n\n const header = useMemo(() => {\n return <PageViewHeader heading=\"Programs\" sort={renderSortOrder} filters={filters} />;\n }, [renderSortOrder, filters]);\n\n const rows = useMemo(() => {\n if (!programs.result.length) {\n return [];\n }\n\n return programs.result.map((id) => {\n const program: IProgramBase = programs.entities.byId[id];\n\n return {\n code: program.id,\n name: program.name,\n year: program.year?.replace('-', ' - '),\n gradeLevels: program.gradeLevels?.join(';'),\n viewBtn: (\n <Button.Secondary size=\"small\" clickHandler={() => redirectToProgramDetails(id)}>\n View\n </Button.Secondary>\n ),\n };\n });\n }, [programs.entities, programs.result, redirectToProgramDetails]);\n\n const footer = useMemo(() => {\n return (\n <PaginationLocal\n onPageChange={setCurrentPage}\n onPerPageChange={setPerPage}\n totalCount={totalCount}\n perPage={perPage}\n currentPage={currentPage}\n disabled={loading}\n />\n );\n }, [currentPage, perPage, setCurrentPage, setPerPage, totalCount, loading]);\n\n const content = useMemo(() => {\n return (\n <PageLayoutWithFixedAreas withSecondaryNavigation={false} header={header} footer={footer}>\n {loading ? <Loading /> : !!rows.length ? <Table rows={rows} columns={columns} /> : 'No results found'}\n </PageLayoutWithFixedAreas>\n );\n }, [footer, header, loading, rows]);\n\n const sidebar = useMemo(() => <ProgramsAllSidebarFilters />, []);\n\n return <PageLayoutTwoCol withSecondaryNavigation={false} sidebar={sidebar} content={content} />;\n};\n\nconst columns: any[] = [\n {id: 'name', label: 'Program', className: 'programs-name-col'},\n {id: 'year', label: 'Program Year', className: 'programs-year-col'},\n {id: 'gradeLevels', label: 'Grade Level', className: 'programs-grade-level-col'},\n {id: 'viewBtn', label: '', align: 'right', className: 'btn-col'},\n];\n","import React from 'react';\nimport {Route, Switch} from 'react-router-dom';\nimport {pages} from 'paths';\nimport {ProgramsAllView} from './all';\nimport {\n ProgramClassesView,\n ProgramClassInstrumentsView,\n ProgramClassReportsAndExportsView,\n ProgramMasterInstrumentsView,\n ProgramReportsAndExportsView,\n ProgramClassPaperAssessmentsView,\n} from './details';\n\nexport function Programs() {\n return (\n <Switch>\n <Route exact path={pages.adminPortal.programs.root} component={ProgramsAllView} />\n <Route path={pages.adminPortal.programs.details} component={ProgramClassesView} />\n <Route path={pages.adminPortal.programs.reports} component={ProgramReportsAndExportsView} />\n <Route path={pages.adminPortal.programs.masterInstruments} component={ProgramMasterInstrumentsView} />\n <Route path={pages.adminPortal.programs.class} component={ProgramClassInstrumentsView} />\n <Route path={pages.adminPortal.programs.classReports} component={ProgramClassReportsAndExportsView} />\n <Route path={pages.adminPortal.programs.classPaperAssessments} component={ProgramClassPaperAssessmentsView} />\n </Switch>\n );\n}\n","import * as Yup from 'yup';\nimport {FormNameEnum} from 'filters-selections';\nexport interface IProgramClassesFilterSidebarForm {\n [FormNameEnum.programYears]: number[];\n [FormNameEnum.educators]: number[];\n [FormNameEnum.districts]: string[];\n [FormNameEnum.schoolNames]: number[];\n [FormNameEnum.areas]: number[];\n [FormNameEnum.startDate]: Date | null;\n [FormNameEnum.endDate]: Date | null;\n [FormNameEnum.search]: string;\n [FormNameEnum.onlyVirtualClass]: boolean | null;\n}\n\nexport const sidebarProgramClassesValidationSchema = Yup.object().shape({\n [FormNameEnum.programYears]: Yup.array().of(Yup.number()),\n [FormNameEnum.educators]: Yup.array().of(Yup.number()),\n [FormNameEnum.districts]: Yup.array().of(Yup.string()),\n [FormNameEnum.schoolNames]: Yup.array().of(Yup.number()),\n [FormNameEnum.areas]: Yup.array().of(Yup.number()),\n [FormNameEnum.startDate]: Yup.date().nullable().default(undefined),\n [FormNameEnum.endDate]: Yup.date()\n .nullable()\n .default(undefined)\n .test('is-end-date-earlier-than-start-date', 'The start date should be before the end date!', function () {\n const {endDate, startDate} = this.parent;\n\n if (startDate instanceof Date && endDate instanceof Date && !!endDate) {\n return isBefore(startDate, endDate);\n }\n\n return true;\n }),\n [FormNameEnum.search]: Yup.string(),\n});\n\nfunction isBefore(startDate: Date, endDate: Date): boolean {\n if (startDate > endDate) {\n return false;\n }\n return true;\n}\n","import {IBindBaseEnumEntity} from 'models';\n\nexport const getProgramYearsCollectionString = (\n programYearsCollection: IBindBaseEnumEntity[],\n programYearsFilter: number[]\n) => {\n const filteredProgramYears = programYearsCollection.filter((programYear) =>\n programYearsFilter.includes(programYear.id)\n );\n const programYearNames = filteredProgramYears.map((programYear) => programYear.displayText);\n return programYearNames;\n};\n","import {SortingOrderEnum} from 'enums';\nimport {ProgramsClassesOrderingEnum} from '../enums/ProgramsClassesOrdering.enum';\n\nexport const programClassesOrderingMap = {\n [ProgramsClassesOrderingEnum.Class]: {\n [SortingOrderEnum.ASC]: 'Class: A-Z',\n [SortingOrderEnum.DESC]: 'Class: Z-A',\n },\n [ProgramsClassesOrderingEnum.BCRMClassNumber]: {\n [SortingOrderEnum.ASC]: 'BCRM Class Number: A-Z',\n [SortingOrderEnum.DESC]: 'BCRM Class Number: Z-A',\n },\n [ProgramsClassesOrderingEnum.SchoolName]: {\n [SortingOrderEnum.ASC]: 'School Name: A-Z',\n [SortingOrderEnum.DESC]: 'School Name: Z-A',\n },\n [ProgramsClassesOrderingEnum.NumberOfStudents]: {\n [SortingOrderEnum.ASC]: 'Number of Students: Asc',\n [SortingOrderEnum.DESC]: 'Number of Students: Desc',\n },\n};\n","import {SortingOrderEnum} from 'enums';\nimport {IProgramClassesSortOrder} from 'models';\nimport {ProgramClassesDropdownNameEnum, ProgramsClassesOrderingEnum} from 'admin/programs/details';\n\nexport const getProgramClassesMenuItemsList = (\n itemClickHandler: () => void,\n handleItemClick: (handleItemSortObj: IProgramClassesSortOrder) => void\n) => {\n const onClick = (\n itemClickHandler: () => void,\n handleItemClick: (handleItemSortObj: IProgramClassesSortOrder) => void,\n handleItemSortObj: IProgramClassesSortOrder\n ) => {\n return () => {\n itemClickHandler();\n handleItemClick(handleItemSortObj);\n };\n };\n\n return [\n {\n name: ProgramClassesDropdownNameEnum.Class_ASC,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: ProgramsClassesOrderingEnum.Class,\n sort: SortingOrderEnum.ASC,\n }),\n },\n {\n name: ProgramClassesDropdownNameEnum.Class_DESC,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: ProgramsClassesOrderingEnum.Class,\n sort: SortingOrderEnum.DESC,\n }),\n },\n {\n name: ProgramClassesDropdownNameEnum.BCRMClassNumber_ASC,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: ProgramsClassesOrderingEnum.BCRMClassNumber,\n sort: SortingOrderEnum.ASC,\n }),\n },\n {\n name: ProgramClassesDropdownNameEnum.BCRMClassNumber_DESC,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: ProgramsClassesOrderingEnum.BCRMClassNumber,\n sort: SortingOrderEnum.DESC,\n }),\n },\n {\n name: ProgramClassesDropdownNameEnum.SchoolName_ASC,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: ProgramsClassesOrderingEnum.SchoolName,\n sort: SortingOrderEnum.ASC,\n }),\n },\n {\n name: ProgramClassesDropdownNameEnum.SchoolName_DESC,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: ProgramsClassesOrderingEnum.SchoolName,\n sort: SortingOrderEnum.DESC,\n }),\n },\n {\n name: ProgramClassesDropdownNameEnum.NumberOfStudents_ASC,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: ProgramsClassesOrderingEnum.NumberOfStudents,\n sort: SortingOrderEnum.ASC,\n }),\n },\n {\n name: ProgramClassesDropdownNameEnum.NumberOfStudents_DESC,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: ProgramsClassesOrderingEnum.NumberOfStudents,\n sort: SortingOrderEnum.DESC,\n }),\n },\n ];\n};\n","import {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport {useAppDispatch} from 'hooks';\nimport {\n poolSelector,\n paginationSelector,\n fetchProgramClassesPagedThunk,\n pageLoadingSelector,\n filterSelector,\n programsClassesSortOrderSelector,\n} from '../store';\nimport {programClassesActions as actions} from '../store/programClasses.slice';\nimport {IProgramClassesFilter} from 'models';\nimport {fetchProgramClassesFiltersThunk} from 'filters-selections/store/thunks/programs/fetchProgramClassesFilters.thunk';\nimport {filtersClassEntitiesCollectionSelector, filtersClassEntitiesSelector} from 'filters-selections';\nimport {mapProgramClassesPayload} from '../utils';\n\nexport const useProgramClasses = (programId: number) => {\n const dispatch = useAppDispatch();\n const loading = useSelector(pageLoadingSelector) as boolean;\n const programClasses = useSelector(poolSelector);\n const filter = useSelector(filterSelector) as IProgramClassesFilter;\n const filterEntities = useSelector(filtersClassEntitiesSelector);\n const filterEntitiesCollection = useSelector(filtersClassEntitiesCollectionSelector);\n const {currentPage, perPage, totalCount} = useSelector(paginationSelector);\n const sortOrder = useSelector(programsClassesSortOrderSelector);\n\n const fetchProgramClasses: () => void = useCallback(() => {\n const payload = mapProgramClassesPayload({\n programId,\n filter,\n currentPage,\n perPage,\n sortOrder,\n programYearsCollection: filterEntitiesCollection.programYears,\n });\n\n return dispatch(fetchProgramClassesPagedThunk(payload));\n }, [currentPage, dispatch, filter, perPage, programId, sortOrder, filterEntitiesCollection.programYears]);\n\n const setFilter: (filter: IProgramClassesFilter) => void = useCallback(\n (filter: IProgramClassesFilter) => dispatch(actions.setFilter(filter)),\n [dispatch]\n );\n\n const resetFilter: () => void = useCallback(() => dispatch(actions.resetFilter()), [dispatch]);\n\n const setCurrentPage: (newPage: number) => void = useCallback(\n (newPage: number) => dispatch(actions.setCurrentPage(newPage)),\n [dispatch]\n );\n\n const setPerPage: (perPage: number) => void = useCallback(\n (perPage: number) => dispatch(actions.setPerPage(perPage)),\n [dispatch]\n );\n\n const fetchFilterEntities: () => void = useCallback(() => dispatch(fetchProgramClassesFiltersThunk(programId)), [\n dispatch,\n programId,\n ]);\n\n return {\n loading,\n filter,\n programClasses,\n currentPage,\n perPage,\n totalCount,\n filterEntities,\n filterEntitiesCollection,\n fetchFilterEntities,\n fetchProgramClasses,\n setCurrentPage,\n setPerPage,\n setFilter,\n resetFilter,\n };\n};\n","import {IFetchProgramClassesAllFilters} from 'models';\nimport {getIsAscSortOrder, getSortingOptions} from 'utils';\nimport {getProgramYearsCollectionString} from './getProgramYearsCollectionString';\n\nexport const mapProgramClassesPayload = ({\n programId,\n filter,\n currentPage,\n perPage,\n sortOrder,\n programYearsCollection,\n}: IFetchProgramClassesAllFilters) => {\n const sortAsc = getIsAscSortOrder(sortOrder?.sort);\n const sortOptions = getSortingOptions(sortOrder?.order, sortAsc);\n\n const filterProgramYears = filter.programYearsFilter.length\n ? getProgramYearsCollectionString(programYearsCollection, filter.programYearsFilter)\n : [];\n\n const updatedFilter = {...filter, programYearsFilter: [...filterProgramYears]};\n\n return {\n programId,\n filter: updatedFilter,\n pagination: {\n page: currentPage,\n itemsPerPage: perPage,\n },\n sortOptions,\n };\n};\n","import React, {useCallback, useMemo} from 'react';\nimport {useParams} from 'react-router-dom';\nimport {ViewExpansionPanel} from 'admin/programs/details/components';\nimport {Filters} from 'components-lib';\nimport {FiltersEnum, FiltersList, FormNameEnum} from 'filters-selections';\nimport {Form} from 'forms';\nimport {AdminRoles, RolesEnum, usePermissions} from 'permissions';\nimport {toNumber} from 'utils';\nimport {useProgramClasses} from '../../hooks';\nimport {sidebarProgramClassesValidationSchema, IProgramClassesFilterSidebarForm} from '../../utils/schema';\n\nexport function ProgramClassesAllSidebarFilters() {\n const {programId} = useParams<{programId: string}>();\n const {filter, setFilter, resetFilter, loading} = useProgramClasses(toNumber(programId));\n const {hasPermission} = usePermissions();\n\n const initialValues: IProgramClassesFilterSidebarForm = useMemo(\n () => ({\n [FormNameEnum.search]: filter.searchByName,\n [FormNameEnum.programYears]: filter.programYearsFilter,\n [FormNameEnum.educators]: filter.educatorsFilter,\n [FormNameEnum.districts]: filter.districtsFilter,\n [FormNameEnum.schoolNames]: filter.schoolNamesFilter,\n [FormNameEnum.areas]: filter.areasFilter,\n [FormNameEnum.startDate]: filter.startDate,\n [FormNameEnum.endDate]: filter.endDate,\n [FormNameEnum.onlyVirtualClass]: filter.onlyVirtualClasses,\n }),\n [filter]\n );\n\n const renderFiltersList = useMemo(() => {\n const shouldRenderAreaFilter = hasPermission([RolesEnum.SuperAdmin, RolesEnum.USAAdmin]);\n const shouldRenderFilters = hasPermission(AdminRoles);\n\n const filters = [\n FiltersEnum.ProgramYearMulti,\n FiltersEnum.SchoolNameMulti,\n // No Districts - Removed temporary, please see: https://mentormate.atlassian.net/browse/JADF-1598\n // FiltersEnum.Districts,\n FiltersEnum.FromToDate,\n FiltersEnum.Educators,\n FiltersEnum.ClassesOnlyVirtual,\n ];\n\n if (shouldRenderAreaFilter) {\n filters.splice(1, 0, FiltersEnum.AreasMultiAutocompleteExternalData);\n }\n\n return (\n <>\n <ViewExpansionPanel disabled={loading} />\n {shouldRenderFilters && <FiltersList filters={filters} disableAll={loading} />}\n </>\n );\n }, [hasPermission, loading]);\n\n const submitHandler = useCallback(\n (formValues: IProgramClassesFilterSidebarForm) => {\n return setFilter({\n ...filter,\n searchByName: formValues.search,\n educatorsFilter: formValues.educators,\n areasFilter: formValues.areas,\n schoolNamesFilter: formValues.schoolNames,\n districtsFilter: formValues.districts,\n startDate: formValues.startDate,\n endDate: formValues.endDate,\n programYearsFilter: formValues.programYears,\n onlyVirtualClasses: formValues.onlyVirtualClasses,\n });\n },\n [filter, setFilter]\n );\n\n return (\n <Form.Form<IProgramClassesFilterSidebarForm>\n initialValues={initialValues}\n validationSchema={sidebarProgramClassesValidationSchema}\n submitHandler={submitHandler}\n >\n <Filters.FiltersPanel\n clearButtonClickHandler={resetFilter}\n searchFieldName={'search'}\n filters={renderFiltersList}\n disableAll={loading}\n />\n </Form.Form>\n );\n}\n","import React, {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\n\nimport {useAppDispatch} from 'hooks';\nimport {SortByDropdown} from 'admin';\nimport {programsClassesSortOrderSelector, programClassesActions as actions} from '../../store';\nimport {IProgramClassesSortOrder} from 'models/programs';\nimport {getProgramClassesMenuItemsList, programClassesOrderingMap} from 'admin/programs/details';\n\nexport const ProgramsClassesSortBy = () => {\n const dispatch = useAppDispatch();\n const sortOrder = useSelector(programsClassesSortOrderSelector);\n\n const handleItemClick = useCallback(\n (sortOrder: IProgramClassesSortOrder) => {\n dispatch(actions.setSortOrderProgramClasses(sortOrder));\n },\n [dispatch]\n );\n\n return (\n <SortByDropdown\n label=\"Sort By: \"\n handleItemClick={handleItemClick}\n getMenuItemsList={getProgramClassesMenuItemsList}\n sortOrder={sortOrder}\n map={programClassesOrderingMap}\n />\n );\n};\n","import React, {useCallback, useEffect, useMemo} from 'react';\nimport moment from 'moment';\nimport Moment from 'react-moment';\nimport {useParams} from 'react-router-dom';\nimport {makeStyles} from '@material-ui/core';\nimport {SubtitlePageViewHeader} from 'admin/components';\nimport {Button, Icon, Loading, PageViewHeader, PaginationLocal, Row, Table, Tag, Wrapper} from 'components-lib';\nimport {ProgramsClassesSortBy, ProgramClassesAllSidebarFilters} from './components';\nimport {PageLayoutTwoCol, PageLayoutWithFixedAreas} from 'layout';\nimport {FormNameEnum} from 'filters-selections';\nimport {useNavigate} from 'hooks';\nimport {IBindBaseEntity, IBindBaseEnumEntity, IColumn, IProgramClassBase} from 'models';\nimport {pages} from 'paths';\nimport {cloneDeep, dateFormat, toNumber} from 'utils';\nimport {ClassTypes} from '../../enums';\nimport {useProgram} from '../../hooks';\nimport {useProgramClasses} from './hooks';\n\nexport const ProgramClassesView = () => {\n const classes = useStyles();\n const {push} = useNavigate();\n const {programId} = useParams<{programId: string}>();\n const {program, fetchProgram} = useProgram(toNumber(programId));\n const {\n loading,\n programClasses,\n filter,\n filterEntitiesCollection,\n totalCount,\n perPage,\n currentPage,\n fetchProgramClasses,\n fetchFilterEntities,\n setFilter,\n setCurrentPage,\n setPerPage,\n } = useProgramClasses(toNumber(programId));\n\n useEffect(() => {\n fetchProgram(true);\n }, [fetchProgram]);\n\n useEffect(() => {\n fetchFilterEntities();\n }, [fetchFilterEntities]);\n\n useEffect(() => {\n fetchProgramClasses();\n }, [fetchProgramClasses]);\n\n const showViewGroup = useCallback(\n (id: number, isVirtualClass: boolean, virtualClassUrl: string) => {\n const hasVirtualClassUrl = !!virtualClassUrl;\n\n const toolTipText = !hasVirtualClassUrl\n ? 'It might take some time to see the virtual class link. Please try again later.'\n : '';\n\n return (\n <Wrapper className={isVirtualClass ? classes.viewGroup : ''}>\n <Button.Secondary\n size=\"small\"\n clickHandler={() => push(`${pages.adminPortal.programs.classLink}/${programId}/${id}`)}\n >\n View\n </Button.Secondary>\n {isVirtualClass && (\n <Button.CopyLink\n title={!hasVirtualClassUrl ? toolTipText : 'Copy Link'}\n text={virtualClassUrl}\n disabled={!hasVirtualClassUrl}\n />\n )}\n </Wrapper>\n );\n },\n [programId, push, classes]\n );\n\n const rows = useMemo(() => {\n return programClasses.result.map((id) => {\n const entry: IProgramClassBase = programClasses.entities.byId[id];\n const educatorsNames = entry?.educators.map((educator) => <div key={educator?.id}>{educator?.name}</div>);\n const actionButtons = showViewGroup(entry.id, entry.isVirtualClass, entry.virtualClassUrl);\n\n const virtualClassIcon = entry.isVirtualClass ? (\n <Row justify=\"center\" align=\"center\">\n <Icon.VirtualClassIcon />\n </Row>\n ) : (\n ''\n );\n\n return {\n code: entry.id,\n mtIcon: virtualClassIcon,\n virtualUrl: entry.virtualClassUrl,\n name: entry.name,\n bcrmClassNumber: entry.bcrmClassNumber,\n bcrmProgramYear: entry.bcrmProgramYear?.replace('-', ' - '),\n educatorsNames,\n schoolName: entry.schoolName,\n studentCount: entry.studentCount,\n startDate: entry.endDate ? <Moment>{entry.startDate}</Moment> : '',\n endDate: entry.endDate ? <Moment>{entry.endDate}</Moment> : '',\n viewBtn: actionButtons,\n };\n });\n }, [programClasses.entities.byId, programClasses.result, showViewGroup]);\n\n const headerSubheading = useMemo(\n () => program && <SubtitlePageViewHeader> / {program?.name}</SubtitlePageViewHeader>,\n [program]\n );\n\n const renderSortOrder = useMemo(() => <ProgramsClassesSortBy />, []);\n\n const appliedFilters = useMemo(() => {\n const chips: any[] = [];\n\n const deleteHandler = (prop: string, item: number | string) => {\n const updated = cloneDeep(filter);\n const idx = filter[prop].indexOf(item);\n\n if (idx > -1) {\n updated[prop].splice(idx, 1);\n }\n\n setFilter(updated);\n };\n\n if (!!filter.searchByName) {\n chips.push(\n <Tag\n withFilterChip\n key={filter.searchByName}\n label={filter.searchByName}\n deleteHandler={() => setFilter({...filter, searchByName: ''})}\n />\n );\n }\n\n if (!!filter.educatorsFilter.length) {\n filter.educatorsFilter.forEach((id) => {\n const option: IBindBaseEntity = filterEntitiesCollection.educators.find((e) => e.id === id);\n option &&\n chips.push(\n <Tag withFilterChip label={option.name} deleteHandler={() => deleteHandler('educatorsFilter', id)} />\n );\n });\n }\n\n if (!!filter.programYearsFilter && filter.programYearsFilter.length > 0) {\n filter.programYearsFilter.forEach((yearId) => {\n const programYear: IBindBaseEnumEntity = filterEntitiesCollection.programYears.find(\n (programYear) => programYear.id === yearId\n );\n\n return chips.push(\n <Tag\n withFilterChip\n key={yearId}\n label={programYear.displayText}\n deleteHandler={() => deleteHandler('programYearsFilter', yearId)}\n />\n );\n });\n }\n\n if (!!filter.areasFilter.length) {\n filter.areasFilter.forEach((id) => {\n const option: IBindBaseEntity = filterEntitiesCollection.areas.find((e) => e.id === id);\n option &&\n chips.push(<Tag withFilterChip label={option.name} deleteHandler={() => deleteHandler('areasFilter', id)} />);\n });\n }\n\n if (!!filter.schoolNamesFilter.length) {\n filter.schoolNamesFilter.forEach((id) => {\n const option: IBindBaseEntity = filterEntitiesCollection.schoolNames.find((e) => e.id === id);\n option &&\n chips.push(\n <Tag withFilterChip label={option.name} deleteHandler={() => deleteHandler('schoolNamesFilter', id)} />\n );\n });\n }\n\n if (!!filter.districtsFilter.length) {\n filter.districtsFilter.forEach((id) =>\n chips.push(<Tag withFilterChip label={id} deleteHandler={() => deleteHandler('districtsFilter', id)} />)\n );\n }\n\n if (!!filter.startDate) {\n chips.push(\n <Tag\n withFilterChip\n key=\"startDate\"\n label={moment(filter.startDate).format(dateFormat)}\n deleteHandler={() => setFilter({...filter, startDate: null})}\n />\n );\n }\n\n if (!!filter.endDate) {\n chips.push(\n <Tag\n withFilterChip\n key=\"endDate\"\n label={moment(filter.endDate).format(dateFormat)}\n deleteHandler={() => setFilter({...filter, endDate: null})}\n />\n );\n }\n\n if (filter.onlyVirtualClasses !== null) {\n const deleteClassHandler = () => {\n const updated = {...filter, [FormNameEnum.onlyVirtualClass]: null};\n setFilter(updated);\n };\n\n chips.push(\n <Tag\n withFilterChip\n key={FormNameEnum.onlyVirtualClass}\n label={ClassTypes[filter.onlyVirtualClasses.toString()]}\n deleteHandler={deleteClassHandler}\n />\n );\n }\n\n return chips;\n }, [filter, setFilter, filterEntitiesCollection]);\n\n const header = useMemo(\n () => (\n <PageViewHeader\n heading=\"Programs\"\n subHeading={headerSubheading}\n sort={renderSortOrder}\n filters={appliedFilters}\n withBackButton\n backButtonClickHandler={() => push(pages.adminPortal.programs.root)}\n />\n ),\n [headerSubheading, renderSortOrder, appliedFilters, push]\n );\n\n const footer = useMemo(\n () => (\n <PaginationLocal\n onPageChange={setCurrentPage}\n onPerPageChange={setPerPage}\n totalCount={totalCount}\n perPage={perPage}\n currentPage={currentPage}\n disabled={loading}\n />\n ),\n [currentPage, perPage, setCurrentPage, setPerPage, totalCount, loading]\n );\n\n const sidebar = useMemo(() => <ProgramClassesAllSidebarFilters />, []);\n\n const content = useMemo(() => {\n return (\n <PageLayoutWithFixedAreas withSecondaryNavigation={false} header={header} footer={footer}>\n {loading ? <Loading /> : !!rows.length ? <Table rows={rows} columns={columns} /> : 'No results found'}\n </PageLayoutWithFixedAreas>\n );\n }, [footer, header, loading, rows]);\n\n return <PageLayoutTwoCol withSecondaryNavigation={false} sidebar={sidebar} content={content} />;\n};\n\nconst useStyles = makeStyles((theme) => ({\n viewGroup: {\n display: 'flex',\n justifyContent: 'flex-end',\n alignItems: 'center',\n flexDirection: 'row',\n },\n btnSpacer: {\n marginLeft: theme.spacing(5),\n },\n btnRightSpacer: {\n marginRight: theme.spacing(4),\n },\n}));\n\nconst columns: IColumn[] = [\n {id: 'mtIcon', label: '', className: 'insrt-icon-col'},\n {id: 'name', label: 'Class'},\n {id: 'bcrmClassNumber', label: 'BCRM Class Number'},\n {id: 'bcrmProgramYear', label: 'BCRM Program Year'},\n {id: 'educatorsNames', label: 'Educator'},\n {id: 'schoolName', label: 'School Name'},\n {id: 'studentCount', label: 'Number of Students'},\n {id: 'startDate', label: 'Start Date'},\n {id: 'endDate', label: 'End Date'},\n {id: 'viewBtn', label: '', align: 'left', className: 'btn-col'},\n];\n","import {SortingOrderEnum} from 'enums';\nimport {ProgramsMasterInstrumentsOrderingEnum} from '../enums';\n\nexport const programMasterInstrumentsOrderingMap = {\n [ProgramsMasterInstrumentsOrderingEnum.Name]: {\n [SortingOrderEnum.ASC]: 'Name: A-Z',\n [SortingOrderEnum.DESC]: 'Name: Z-A',\n },\n [ProgramsMasterInstrumentsOrderingEnum.Type]: {\n [SortingOrderEnum.ASC]: 'Type: Pre-Post',\n [SortingOrderEnum.DESC]: 'Type: Post-Pre',\n },\n};\n","import {SortingOrderEnum} from 'enums';\nimport {IProgramsMasterInstrumentsSortOrder} from 'models';\nimport {ProgramMasterInstrumentsDropdownNameEnum, ProgramsMasterInstrumentsOrderingEnum} from '../enums';\n\nexport const getProgramMasterInstrumentsMenuItemsList = (\n itemClickHandler: () => void,\n handleItemClick: (handleItemSortObj: IProgramsMasterInstrumentsSortOrder) => void\n) => {\n const onClick = (\n itemClickHandler: () => void,\n handleItemClick: (handleItemSortObj: IProgramsMasterInstrumentsSortOrder) => void,\n handleItemSortObj: IProgramsMasterInstrumentsSortOrder\n ) => {\n return () => {\n itemClickHandler();\n handleItemClick(handleItemSortObj);\n };\n };\n\n return [\n {\n name: ProgramMasterInstrumentsDropdownNameEnum.Name_ASC,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: ProgramsMasterInstrumentsOrderingEnum.Name,\n sort: SortingOrderEnum.ASC,\n }),\n },\n {\n name: ProgramMasterInstrumentsDropdownNameEnum.Name_DESC,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: ProgramsMasterInstrumentsOrderingEnum.Name,\n sort: SortingOrderEnum.DESC,\n }),\n },\n {\n name: ProgramMasterInstrumentsDropdownNameEnum.Type_PRE_POST,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: ProgramsMasterInstrumentsOrderingEnum.Type,\n sort: SortingOrderEnum.ASC,\n }),\n },\n {\n name: ProgramMasterInstrumentsDropdownNameEnum.Type_POST_PRE,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: ProgramsMasterInstrumentsOrderingEnum.Type,\n sort: SortingOrderEnum.DESC,\n }),\n },\n ];\n};\n","import {useSelector} from 'react-redux';\nimport {\n poolSelector,\n paginationSelector,\n fetchProgramMasterInstrumentsPagedThunk,\n pageLoadingSelector,\n filterSelector,\n orderBySelector,\n programsMasterInstrumentsSortOrderSelector,\n} from '../store';\nimport {useCallback} from 'react';\nimport {useAppDispatch} from 'hooks';\n\nimport {programMasterInstrumentsActions as actions} from '../store/programMasterInstruments.slice';\nimport {IProgramMasterInstrumentsFilter} from 'models';\nimport {filtersMasterInstrumentsEntitiesSelector} from 'filters-selections';\nimport {getIsAscSortOrder, getSortingOptions} from 'utils/common';\n\nexport function useProgramMasterInstruments(programId: number) {\n const dispatch = useAppDispatch();\n const loading = useSelector(pageLoadingSelector);\n const instruments = useSelector(poolSelector);\n const filter = useSelector(filterSelector);\n const filterEntities = useSelector(filtersMasterInstrumentsEntitiesSelector);\n const orderBy = useSelector(orderBySelector);\n const {currentPage, perPage, totalCount} = useSelector(paginationSelector);\n const sortOrder = useSelector(programsMasterInstrumentsSortOrderSelector);\n\n const fetchInstruments = useCallback(() => {\n const sortAsc = getIsAscSortOrder(sortOrder?.sort);\n const sortOptions = getSortingOptions(sortOrder?.order, sortAsc);\n\n return dispatch(\n fetchProgramMasterInstrumentsPagedThunk({\n filter: {...filter, programs: [programId]},\n pagination: {\n pageNumber: currentPage - 1,\n pageSize: perPage,\n },\n sortOptions,\n })\n );\n }, [currentPage, dispatch, filter, perPage, programId, sortOrder]);\n\n const setFilter = useCallback((filter: IProgramMasterInstrumentsFilter) => dispatch(actions.setFilter(filter)), [\n dispatch,\n ]);\n const resetFilter = useCallback(() => dispatch(actions.resetFilter()), [dispatch]);\n const setCurrentPage = useCallback((newPage: number) => dispatch(actions.setCurrentPage(newPage)), [dispatch]);\n const setPerPage = useCallback((perPage: number) => dispatch(actions.setPerPage(perPage)), [dispatch]);\n\n return {\n loading,\n filter,\n instruments,\n currentPage,\n perPage,\n totalCount,\n filterEntities,\n orderBy,\n fetchInstruments,\n setCurrentPage,\n setPerPage,\n setFilter,\n resetFilter,\n };\n}\n","import {ViewExpansionPanel} from 'admin/programs/details/components';\nimport {Filters} from 'components-lib';\nimport {FiltersEnum, FiltersList, FormNameEnum} from 'filters-selections';\nimport {Form} from 'forms';\nimport React, {useMemo} from 'react';\nimport {useParams} from 'react-router-dom';\nimport {toNumber} from 'utils';\nimport * as Yup from 'yup';\nimport {FilterBackendNamesEnum} from '../../enums';\nimport {useProgramMasterInstruments} from '../../hooks';\n\ninterface IFilterForm {\n [FormNameEnum.search]: string;\n [FormNameEnum.audience]: number[];\n [FormNameEnum.phase]: number[];\n [FormNameEnum.instrumentStatus]: number[];\n}\n\nconst validationSchema = Yup.object().shape({\n [FormNameEnum.search]: Yup.string(),\n [FormNameEnum.educators]: Yup.array().of(Yup.number()),\n [FormNameEnum.phase]: Yup.array().of(Yup.number()),\n [FormNameEnum.instrumentStatus]: Yup.array().of(Yup.number()),\n});\n\nexport function SidebarFilters() {\n const {programId} = useParams<{programId: string}>();\n const {loading, filter, setFilter, resetFilter} = useProgramMasterInstruments(toNumber(programId));\n\n const initialValues: IFilterForm = useMemo(\n () => ({\n [FormNameEnum.search]: filter.name,\n [FormNameEnum.audience]: filter.audiences,\n [FormNameEnum.phase]: filter.phases,\n [FormNameEnum.instrumentStatus]: filter.statuses,\n }),\n [filter]\n );\n\n const renderFiltersList = useMemo(() => {\n const filters = [FiltersEnum.Audience, FiltersEnum.Phase, FiltersEnum.InstrumentStatus];\n\n return (\n <>\n <ViewExpansionPanel disabled={loading} />\n <FiltersList filters={filters} disableAll={loading} />\n </>\n );\n }, [loading]);\n\n return (\n <Form.Form<IFilterForm>\n initialValues={initialValues}\n validationSchema={validationSchema}\n submitHandler={(f: IFilterForm) =>\n setFilter({\n [FilterBackendNamesEnum.SEARCH_BY_NAME]: f.search,\n [FilterBackendNamesEnum.AUDIENCES]: f.audience,\n [FilterBackendNamesEnum.PHASES]: f.phase,\n [FilterBackendNamesEnum.STATUSES]: f.status,\n })\n }\n >\n <Filters.FiltersPanel\n clearButtonClickHandler={resetFilter}\n searchFieldName={'search'}\n filters={renderFiltersList}\n disableAll={loading}\n />\n </Form.Form>\n );\n}\n","import React, {useCallback} from 'react';\nimport {useAppDispatch} from 'hooks';\nimport {useSelector} from 'react-redux';\nimport {IProgramsMasterInstrumentsSortOrder} from 'models/programs';\nimport {programsMasterInstrumentsSortOrderSelector, programMasterInstrumentsActions as actions} from '../../store';\nimport {SortByDropdown} from 'admin';\nimport {getProgramMasterInstrumentsMenuItemsList, programMasterInstrumentsOrderingMap} from '../../utils';\n\nexport const ProgramsMasterInstrumentsSortBy = () => {\n const dispatch = useAppDispatch();\n const sortOrder = useSelector(programsMasterInstrumentsSortOrderSelector);\n\n const handleItemClick = useCallback(\n (sortOrder: IProgramsMasterInstrumentsSortOrder) => {\n dispatch(actions.setSortOrderProgramClasses(sortOrder));\n },\n [dispatch]\n );\n\n return (\n <SortByDropdown\n label=\"Sort By: \"\n handleItemClick={handleItemClick}\n getMenuItemsList={getProgramMasterInstrumentsMenuItemsList}\n sortOrder={sortOrder}\n map={programMasterInstrumentsOrderingMap}\n />\n );\n};\n","import React, {useEffect, useMemo} from 'react';\nimport {useParams} from 'react-router-dom';\nimport {SubtitlePageViewHeader} from 'admin/components';\nimport {Button, Icon, Loading, PageViewHeader, PaginationLocal, Table, Tag} from 'components-lib';\nimport {ProgramsMasterInstrumentsSortBy, SidebarFilters} from './components';\nimport {PageLayoutTwoCol, PageLayoutWithFixedAreas} from 'layout';\nimport {IBindBaseEntity, IProgramMasterInstrumentBase} from 'models';\nimport {pages} from 'paths';\nimport {useUserId} from 'user';\nimport {cloneDeep, getLocationOrigin, toNumber} from 'utils';\nimport {useProgram} from '../hooks';\nimport {useNavigate} from 'hooks';\nimport {useProgramMasterInstruments} from './hooks';\n\nexport function ProgramMasterInstrumentsView() {\n const {push} = useNavigate();\n const {programId} = useParams<{programId: string}>();\n const {userId, userError} = useUserId();\n const locationOrigin = getLocationOrigin();\n\n const {program, fetchProgram} = useProgram(toNumber(programId));\n const {\n loading,\n instruments,\n filter,\n filterEntities,\n totalCount,\n perPage,\n currentPage,\n fetchInstruments,\n setFilter,\n setCurrentPage,\n setPerPage,\n } = useProgramMasterInstruments(toNumber(programId));\n\n useEffect(() => {\n fetchProgram(true);\n }, [fetchProgram]);\n\n useEffect(() => {\n fetchInstruments();\n }, [fetchInstruments]);\n\n const rows = useMemo(() => {\n const clickHandler = (instrumentId: number) => {\n if (!userError) {\n push(`${pages.survey.takerLink}/${userId}/${programId}/${instrumentId}`, {\n prevPath: window.location.pathname,\n });\n }\n };\n return instruments.result.map((id) => {\n const instrument: IProgramMasterInstrumentBase = instruments.entities.byId[id];\n\n const dropdownItems = [\n {\n text: 'View',\n isCopyLink: false,\n clickHandler: () =>\n push(`${pages.adminPortal.instruments.detailsRoot}/${instrument.id}`, {\n prevPath: window.location.pathname,\n }),\n },\n {\n text: 'Share',\n isCopyLink: true,\n copyText: `${locationOrigin}${pages.survey.takerLink}/${programId}/${instrument.id}`,\n },\n ];\n return {\n code: instrument.id,\n mtIcon: <Icon.MasterTemplateIcon />,\n name: instrument.name,\n audience: instrument.audience ? instrument.audience.displayText : '',\n type: instrument.type ? instrument.type.displayText : '',\n phase: instrument.phase ? instrument.phase.displayText : '',\n status: instrument.status === 'Live' ? 'Published' : instrument.status, // TODO enum\n viewBtn: <Button.Dropdown items={dropdownItems} />,\n survey: (\n <Button.Secondary size=\"small\" clickHandler={() => clickHandler(instrument.id)}>\n Survey\n </Button.Secondary>\n ),\n };\n });\n }, [instruments.entities.byId, instruments.result, locationOrigin, programId, push, userError, userId]);\n\n const headerSubheading = useMemo(\n () => program && <SubtitlePageViewHeader> / {program?.name}</SubtitlePageViewHeader>,\n [program]\n );\n\n const headerSortOrder = useMemo(() => <ProgramsMasterInstrumentsSortBy />, []);\n\n const filters = useMemo(() => {\n const chips: any[] = [];\n\n const deleteHandler = (key: string, item: number | string) => {\n const updated = cloneDeep(filter);\n const idx = filter[key].indexOf(item);\n\n if (idx > -1) {\n updated[key].splice(idx, 1);\n setFilter(updated);\n }\n };\n\n if (!!filter.name) {\n chips.push(\n <Tag\n withFilterChip\n key={filter.name}\n label={filter.name}\n deleteHandler={() => setFilter({...filter, name: ''})}\n />\n );\n }\n\n if (!!filter.audiences) {\n filter.audiences.forEach((id) => {\n const option: IBindBaseEntity = filterEntities.audiences[id];\n option &&\n chips.push(<Tag withFilterChip label={option.name} deleteHandler={() => deleteHandler('audiences', id)} />);\n });\n }\n\n if (!!filter.phases) {\n filter.phases.forEach((id) => {\n const option: IBindBaseEntity = filterEntities.phases[id];\n option &&\n chips.push(<Tag withFilterChip label={option.name} deleteHandler={() => deleteHandler('phases', id)} />);\n });\n }\n\n return chips;\n }, [filter, filterEntities.audiences, filterEntities.phases, setFilter]);\n\n const header = useMemo(() => {\n return (\n <PageViewHeader\n heading=\"Programs\"\n subHeading={headerSubheading}\n sort={headerSortOrder}\n filters={filters}\n withBackButton\n backButtonClickHandler={() => push(pages.adminPortal.programs.root)}\n />\n );\n }, [headerSubheading, filters, push, headerSortOrder]);\n\n const footer = useMemo(() => {\n return (\n <PaginationLocal\n onPageChange={setCurrentPage}\n onPerPageChange={setPerPage}\n totalCount={totalCount}\n perPage={perPage}\n currentPage={currentPage}\n disabled={loading}\n />\n );\n }, [currentPage, perPage, setCurrentPage, setPerPage, totalCount, loading]);\n\n const sidebar = useMemo(() => {\n return <SidebarFilters />;\n }, []);\n\n const content = useMemo(() => {\n return (\n <PageLayoutWithFixedAreas withSecondaryNavigation={false} header={header} footer={footer}>\n {loading ? <Loading /> : !!rows.length ? <Table rows={rows} columns={columns} /> : 'No results found'}\n </PageLayoutWithFixedAreas>\n );\n }, [footer, header, loading, rows]);\n\n return <PageLayoutTwoCol withSecondaryNavigation={false} sidebar={sidebar} content={content} />;\n}\n\nconst columns: any[] = [\n {id: 'mtIcon', label: '', className: 'insrt-icon-col'},\n {id: 'name', label: 'Instrument'},\n {id: 'audience', label: 'Audience'},\n {id: 'type', label: 'Type'},\n {id: 'phase', label: 'Phase'},\n {id: 'status', label: 'Status'},\n {id: 'viewBtn', label: '', align: 'center', className: 'btn-col'},\n];\n","import {SortingOrderEnum} from 'enums';\nimport {GoogleSitesDetailOrderingEnum} from '../../enums';\n\nexport const googleSiteDetailsOrderingMap = {\n [GoogleSitesDetailOrderingEnum.AreaName]: {\n [SortingOrderEnum.ASC]: 'Area Name: A-Z',\n [SortingOrderEnum.DESC]: 'Area Name: Z-A',\n },\n [GoogleSitesDetailOrderingEnum.LastCopiedDate]: {\n [SortingOrderEnum.ASC]: 'Last Copied Date: Asc',\n [SortingOrderEnum.DESC]: 'Last Copied Date: Desc',\n },\n};\n","import {GoogleSiteDetailsNameEnum, GoogleSitesDetailOrderingEnum} from 'admin/resources/google-sites';\nimport {SortingOrderEnum} from 'enums';\nimport {IGoogleSiteDetailsSortOrder} from 'models';\n\nexport const getSortGoogleSiteDetailsMenuItemsList = (\n itemClickHandler: () => void,\n handleItemClick: (handleItemSortObj: IGoogleSiteDetailsSortOrder) => void\n) => {\n const onClick = (\n itemClickHandler: () => void,\n handleItemClick: (handleItemSortObj: IGoogleSiteDetailsSortOrder) => void,\n handleItemSortObj: IGoogleSiteDetailsSortOrder\n ) => {\n return () => {\n itemClickHandler();\n handleItemClick(handleItemSortObj);\n };\n };\n\n return [\n {\n name: GoogleSiteDetailsNameEnum.AREA_NAME_ASC,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: GoogleSitesDetailOrderingEnum.AreaName,\n sort: SortingOrderEnum.ASC,\n }),\n },\n {\n name: GoogleSiteDetailsNameEnum.AREA_NAME_DESC,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: GoogleSitesDetailOrderingEnum.AreaName,\n sort: SortingOrderEnum.DESC,\n }),\n },\n {\n name: GoogleSiteDetailsNameEnum.LAST_COPIED_DATE_ASC,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: GoogleSitesDetailOrderingEnum.LastCopiedDate,\n sort: SortingOrderEnum.ASC,\n }),\n },\n {\n name: GoogleSiteDetailsNameEnum.LAST_COPIED_DATE_DESC,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: GoogleSitesDetailOrderingEnum.LastCopiedDate,\n sort: SortingOrderEnum.DESC,\n }),\n },\n ];\n};\n","import * as Yup from 'yup';\nimport {FormNameEnum} from 'filters-selections';\n\nexport interface IGoogleSitesAreasFormValues {\n [FormNameEnum.searchTerm]: string;\n [FormNameEnum.historyList]: any[];\n [FormNameEnum.historyFilteredList]: any[];\n}\n\nexport const googleSitesAreasFormValidationSchema = Yup.object().shape({\n [FormNameEnum.searchTerm]: Yup.string().nullable(),\n});\n","import {IGoogleSitesAreasTableEnum} from '../enums';\nimport {IGoogleSitesAreasTableColumn} from '../models';\n\nexport const getGoogleSiteTableColumns = (): IGoogleSitesAreasTableColumn[] => [\n {id: IGoogleSitesAreasTableEnum.Name, label: 'Name', align: 'left'},\n {id: IGoogleSitesAreasTableEnum.Area, label: 'Area', align: 'left'},\n {id: IGoogleSitesAreasTableEnum.Status, label: 'Status', align: 'left'},\n {id: IGoogleSitesAreasTableEnum.LastCopiedDate, label: 'Last Copied Date (UTC)', align: 'left'},\n {id: IGoogleSitesAreasTableEnum.Copy, label: '', align: 'right'},\n];\n","import {EntitiesPerPageEnum, SortingOrderEnum} from 'enums';\nimport {IProgramsAllFilter} from 'models';\n\nimport {IProgramsAllState} from './IProgramsAllState';\nimport {FilterNamesEnum, ProgramsAllOrderingEnum} from '../enums';\n\nconst filterDefault: IProgramsAllFilter = {\n [FilterNamesEnum.SEARCH_BY_NAME]: '',\n [FilterNamesEnum.PROGRAMS]: [],\n [FilterNamesEnum.GRADE_LEVELS]: [],\n [FilterNamesEnum.YEARS]: [],\n [FilterNamesEnum.ORDER_BY]: 'ProgramName',\n [FilterNamesEnum.ORDER_ASC]: true,\n};\n\nexport const programsAllInitialState: IProgramsAllState = {\n programs: {\n result: [],\n entities: {byId: {}},\n },\n filter: filterDefault,\n page: {\n loading: false,\n },\n sortOrder: {\n order: ProgramsAllOrderingEnum.ProgramYear,\n sort: SortingOrderEnum.DESC,\n },\n pagination: {\n currentPage: 1,\n totalCount: 0,\n perPage: EntitiesPerPageEnum.FIFTY,\n },\n};\n","import {IActionFulfilled, IProgramsAllFilter, IProgramsAllSortOrder} from 'models';\nimport {cloneDeep} from 'utils';\n\nimport {IProgramsAllState} from './IProgramsAllState';\nimport {programsAllInitialState} from './programsAll.initialState';\n\nexport const programsAllReducer = {\n setFilter: (state: IProgramsAllState, action: IActionFulfilled<null, IProgramsAllFilter>) => {\n state.filter = action.payload;\n resetPagination(state);\n },\n\n resetFilter: (state: IProgramsAllState) => {\n state.filter = cloneDeep(programsAllInitialState.filter);\n resetPagination(state);\n },\n\n setCurrentPage: (state: IProgramsAllState, action: IActionFulfilled<null, number>) => {\n state.pagination.currentPage = action.payload;\n },\n\n setPerPage: (state: IProgramsAllState, action: IActionFulfilled<null, number>) => {\n state.pagination.perPage = action.payload;\n resetPagination(state);\n },\n\n setSortOrderProgramsAll: (state: IProgramsAllState, action: IActionFulfilled<null, IProgramsAllSortOrder>) => {\n state.sortOrder = action.payload;\n resetPagination(state);\n },\n};\n\nconst resetPagination = (state: IProgramsAllState) => {\n state.pagination.currentPage = programsAllInitialState.pagination.currentPage;\n state.pagination.totalCount = programsAllInitialState.pagination.totalCount;\n};\n","import {schema as Schema} from 'normalizr';\n\nexport const programsListEntity = new Schema.Entity('byId', {}, {idAttribute: 'id'});\nexport const programsListSchema = new Schema.Array(programsListEntity);\n","import {IActionFulfilled, IGetPageOfProgramsResponse} from 'models';\nimport {normalize} from 'normalizr';\nimport {isObject} from 'utils';\nimport {IProgramsAllState} from './IProgramsAllState';\nimport {programsListSchema} from './normalizationSchemas';\nimport {fetchProgramsPagedThunk} from './thunks';\n\nexport const programsAllExtraReducer = {\n //fetchProgramsPagedThunk\n [fetchProgramsPagedThunk.fulfilled]: (\n state: IProgramsAllState,\n action: IActionFulfilled<null, IGetPageOfProgramsResponse>\n ) => {\n if (isObject(action.payload)) {\n state.programs = normalize(action.payload.programs, programsListSchema);\n state.pagination.totalCount = action.payload.totalCount;\n }\n\n state.page.loading = false;\n },\n [fetchProgramsPagedThunk.pending]: (state: IProgramsAllState) => {\n state.page.loading = true;\n },\n [fetchProgramsPagedThunk.rejected]: (state: IProgramsAllState) => {\n state.page.loading = false;\n },\n};\n","import {createSlice} from '@reduxjs/toolkit';\nimport {programsAllInitialState} from './programsAll.initialState';\nimport {programsAllReducer} from './programsAll.reducer';\nimport {programsAllExtraReducer} from './programsAllExtra.reducer';\n\nexport const programsAllSlice = createSlice({\n name: 'programs',\n initialState: programsAllInitialState,\n reducers: programsAllReducer,\n extraReducers: programsAllExtraReducer,\n});\n\nexport const {actions: programsAllActions} = programsAllSlice;\n","import {Icon} from 'components-lib';\nimport React from 'react';\nimport {ToastNotificationTypeEnum} from '../../enums';\n\ninterface IToastIconProps {\n type: ToastNotificationTypeEnum;\n}\n\nexport function ToastIcon({type}: IToastIconProps) {\n const iconsMap = {\n [ToastNotificationTypeEnum.info]: Icon.InfoIcon,\n [ToastNotificationTypeEnum.success]: Icon.CheckIcon,\n [ToastNotificationTypeEnum.warning]: Icon.WarningIcon,\n [ToastNotificationTypeEnum.error]: Icon.ErrorIcon,\n };\n\n let IconComponent = iconsMap[type];\n if (!IconComponent) {\n IconComponent = iconsMap[ToastNotificationTypeEnum.info];\n }\n\n return <IconComponent />;\n}\n","import {makeStyles} from '@material-ui/core';\nimport {Button, Icon, Text} from 'components-lib';\nimport React, {SyntheticEvent} from 'react';\nimport {errorMessages, isString} from 'utils';\nimport {ToastNotificationTypeEnum} from '../../enums';\nimport {ToastIcon} from '../ToastIcon/ToastIcon';\n\ninterface INotificationProps {\n type: ToastNotificationTypeEnum;\n message: string;\n closeHandler: (ev: SyntheticEvent) => void;\n}\n\nexport function Notification({type, message, closeHandler}: INotificationProps) {\n const classes = useStyles();\n return (\n <div className={classes.root} title={message}>\n <div className={classes.iconContainer}>\n <ToastIcon type={type} />\n </div>\n <Text.Paragraph>{!isString(message) ? errorMessages.defaultErrorMessage : sliceMessage(message)}</Text.Paragraph>\n <div className={classes.closeIcon}>\n <Button.Icon clickHandler={closeHandler}>\n <Icon.CloseIcon />\n </Button.Icon>\n </div>\n </div>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n width: 'auto',\n minWidth: 320,\n maxWidth: 420,\n maxHeight: 66,\n marginBottom: theme.spacing(2),\n borderRadius: 2,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: theme.palette.grey[200],\n backgroundColor: theme.palette.common.white,\n },\n iconContainer: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n width: 66,\n height: 66,\n },\n closeIcon: {\n marginLeft: 'auto',\n marginRight: theme.spacing(3),\n },\n}));\n\nconst maxChar = 80;\n\nfunction sliceMessage(message: string) {\n const sliced = message.slice(0, maxChar);\n const shouldRenderDots = message.length > maxChar;\n return `${sliced} ${shouldRenderDots ? '...' : ''}`;\n}\n","import {makeStyles} from '@material-ui/core';\nimport React, {useCallback, useRef} from 'react';\nimport {useToastNotifications} from '../../hooks/useToastNotification';\nimport {Notification} from '../Notification/Notification';\n\nexport function ToastNotification() {\n const classes = useStyles();\n const {current: scheduled} = useRef({});\n const {removeToastNotification, notifications, ids} = useToastNotifications();\n\n const updateSchedule = useCallback(\n (id) => {\n if (scheduled[id]) {\n delete scheduled[id];\n return;\n }\n\n scheduled[id] = true;\n },\n [scheduled]\n );\n\n const isScheduled = useCallback(\n (id) => {\n return scheduled[id];\n },\n [scheduled]\n );\n\n const close = useCallback(\n (id) => () => {\n updateSchedule(id);\n removeToastNotification(id);\n },\n [updateSchedule, removeToastNotification]\n );\n\n const autoClose = useCallback(\n (id, duration) => {\n setTimeout(() => {\n if (ids.includes(id)) {\n removeToastNotification(id);\n }\n\n updateSchedule(id);\n }, duration);\n },\n [removeToastNotification, ids, updateSchedule]\n );\n\n const renderNotifications = useCallback(() => {\n if (!notifications || !notifications.length) return null;\n\n return notifications.map(({id, duration, message, type}) => {\n if (!isScheduled(id)) {\n updateSchedule(id);\n autoClose(id, duration);\n }\n return <Notification key={id} type={type} message={message} closeHandler={close(id)} />;\n });\n }, [notifications, updateSchedule, autoClose, close, isScheduled]);\n\n return <div className={classes.container}>{renderNotifications()}</div>;\n}\n\nconst useStyles = makeStyles({\n container: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n position: 'fixed',\n bottom: 82,\n right: 32,\n zIndex: 1301,\n },\n});\n","export const programsMessages = {\n reportSuccess: 'The report was generated successfully.',\n reportError: 'Unknown error occurred.',\n exportSuccess: 'The export was generated successfully.',\n exportError: 'Unknown error occurred.',\n};\n","import {SortingOrderEnum} from 'enums';\n\nimport {IProgramsAllSortOrder} from 'models';\nimport {ProgramDropdownNameEnum, ProgramsAllOrderingEnum} from '../all/enums';\n\nexport const getProgramsMenuItemsList = (\n itemClickHandler: () => void,\n handleItemClick: (handleItemSortObj: IProgramsAllSortOrder) => void\n) => {\n const onClick = (\n itemClickHandler: () => void,\n handleItemClick: (handleItemSortObj: IProgramsAllSortOrder) => void,\n handleItemSortObj: IProgramsAllSortOrder\n ) => {\n return () => {\n itemClickHandler();\n handleItemClick(handleItemSortObj);\n };\n };\n\n return [\n {\n name: ProgramDropdownNameEnum.NAME_ASC,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: ProgramsAllOrderingEnum.Name,\n sort: SortingOrderEnum.ASC,\n }),\n },\n {\n name: ProgramDropdownNameEnum.NAME_DESC,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: ProgramsAllOrderingEnum.Name,\n sort: SortingOrderEnum.DESC,\n }),\n },\n {\n name: ProgramDropdownNameEnum.CREATED_NEWEST,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: ProgramsAllOrderingEnum.ProgramYear,\n sort: SortingOrderEnum.DESC,\n }),\n },\n {\n name: ProgramDropdownNameEnum.CREATED_OLDEST,\n clickHandler: onClick(itemClickHandler, handleItemClick, {\n order: ProgramsAllOrderingEnum.ProgramYear,\n sort: SortingOrderEnum.ASC,\n }),\n },\n ];\n};\n","import {SortingOrderEnum} from 'enums';\nimport {ProgramsAllOrderingEnum} from '../all/enums';\n\nexport const programsOrderingMap = {\n [ProgramsAllOrderingEnum.Name]: {\n [SortingOrderEnum.ASC]: 'Name: A-Z',\n [SortingOrderEnum.DESC]: 'Name: Z-A',\n },\n [ProgramsAllOrderingEnum.ProgramYear]: {\n [SortingOrderEnum.ASC]: 'Program Year: Oldest First',\n [SortingOrderEnum.DESC]: 'Program Year: Newest First',\n },\n};\n","import {FormControlLabel, makeStyles, Radio, RadioGroup} from '@material-ui/core';\nimport {Column, Text} from 'components-lib';\nimport {useAppDispatch} from 'hooks';\nimport React, {useCallback, useEffect, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {filtersAreasEntitiesCollectionSelector, fetchAreasThunk} from 'filters-selections';\nimport {IBindBaseEntity, IWithDisabled} from 'models';\nimport {toNumber} from 'utils';\nimport {useSortOrder} from '../../hooks';\nimport {SortingOrderEnum} from 'enums';\n\ninterface IProps extends IWithDisabled {\n selectedArea: number;\n onSelectArea: React.Dispatch<number>;\n withAllAreas?: boolean;\n}\n\nexport function AreaSelect({selectedArea, onSelectArea, disabled, withAllAreas = true}: IProps) {\n const NAME_FIELD = 'name';\n const ALL_AREAS = 'All areas';\n const NEGATIVE_ID = -1;\n\n const dispatch = useAppDispatch();\n const classes = useStyles();\n const {sortBy} = useSortOrder();\n const areas: IBindBaseEntity[] = useSelector(filtersAreasEntitiesCollectionSelector);\n\n const allAreasOption = useMemo(() => ({id: NEGATIVE_ID, name: ALL_AREAS}), [NEGATIVE_ID]);\n const sortedOptions = sortBy(areas, NAME_FIELD, SortingOrderEnum.ASC);\n let extendedAreas = useMemo(() => [...sortedOptions], [sortedOptions]);\n\n if (withAllAreas) {\n extendedAreas = [allAreasOption, ...extendedAreas];\n }\n\n const onChange = useCallback(\n (_, value: string) => {\n onSelectArea(toNumber(value));\n },\n [onSelectArea]\n );\n\n useEffect(() => {\n dispatch(fetchAreasThunk());\n }, [dispatch]);\n\n return (\n <Column className={classes.root}>\n <Text.Heading as=\"h4\">JA Area</Text.Heading>\n <RadioGroup aria-label=\"choose_area\" name=\"choose_area\" value={selectedArea} onChange={onChange}>\n {!!areas.length ? (\n extendedAreas.map((area) => (\n <FormControlLabel\n value={area.id}\n control={<Radio color=\"primary\" />}\n label={area.name}\n key={area.name}\n disabled={disabled}\n />\n ))\n ) : (\n <Text.Caption>No Areas</Text.Caption>\n )}\n </RadioGroup>\n </Column>\n );\n}\n\nconst useStyles = makeStyles({\n root: {\n paddingLeft: 10,\n },\n});\n","import React, {Fragment, useCallback, useEffect, useMemo} from 'react';\nimport {Prompt, useParams} from 'react-router-dom';\nimport {makeStyles} from '@material-ui/core';\nimport {useBeforeunload} from 'react-beforeunload';\nimport {IHttpResponse} from 'api';\nimport {USAAndSuperAdminRoles, usePermissions} from 'permissions';\nimport {useAppDispatch, useNavigate} from 'hooks';\nimport {useInstrument} from 'admin/library/instruments/details/hooks';\nimport {useProgram, useProgramReports, useProgramReportsStoreActions} from '../hooks';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {pages} from 'paths';\nimport {Button, Container, Loading, PageViewHeader, Row, Table, Text} from 'components-lib';\nimport {SidebarBase} from 'components-lib/sidebar/SidebarBase';\nimport {programsMessages, SubtitlePageViewHeader} from 'admin';\nimport {PageLayoutTwoCol, PageLayoutWithFixedAreas} from 'layout';\nimport {LevelReportingMenu, ViewExpansionPanel} from '../components';\nimport {AreaSelect} from '../components/AreaSelect';\nimport {IGetProgramReportResponse} from 'models';\nimport {ALL_AREAS_INDEX, createLinkForDownload, toNumber} from 'utils';\nimport {columns, generateReport, IProgramClassReportsQueryParams} from '..';\nimport {ExportTypesEnum, ReportExportFormatsEnum, ReportTypesEnum, ReportTypeTermsEnum} from '../enums';\nimport {reportMessages} from '../utils';\nimport {defaultProgramMenuOptionId} from '../store/programDetails.initialState';\n\ntype IProgramReportsQueryParams = IProgramClassReportsQueryParams;\n\nexport const ProgramReportsAndExportsView = () => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n const {reportTypes, exportTypes, loading, setIsLoading, selectedAreaId, setSelectedAreaId} = useProgramReports();\n const {isProgramLevelAllOption, selectedItem, selectedId, clearProgramReportsState} = useProgramReportsStoreActions();\n const {programId} = useParams<{programId: string}>();\n const programIdParam = toNumber(programId);\n const {hasPermission} = usePermissions();\n const {push} = useNavigate();\n const {program, fetchProgram} = useProgram(programIdParam);\n const {getAreaProgramClassExport, getAreaProgramClassDetailedExport} = useInstrument();\n\n useBeforeunload(() => {\n if (loading) {\n return reportMessages.progress;\n }\n });\n\n const shouldDisableAchievementReports = !isProgramLevelAllOption;\n\n useEffect(() => {\n fetchProgram(true);\n }, [fetchProgram]);\n\n useEffect(() => {\n return () => {\n clearProgramReportsState();\n };\n }, [clearProgramReportsState]);\n\n const filteredReportTypes = useMemo(() => {\n if (isProgramLevelAllOption) {\n return reportTypes;\n }\n\n return reportTypes.filter(\n (item) => !item.name.toLowerCase().includes(ReportTypeTermsEnum.Achievement.toLowerCase())\n );\n }, [reportTypes, isProgramLevelAllOption]);\n\n const reportRows = useMemo(() => {\n const generateReportClickHandler = async (type: ReportTypesEnum, exportFormat: ReportExportFormatsEnum) => {\n setIsLoading(true);\n\n const params: IProgramReportsQueryParams = {\n programId: programIdParam,\n type,\n exportFormat,\n };\n\n if (selectedAreaId > ALL_AREAS_INDEX) {\n params.areaId = selectedAreaId;\n }\n\n if (selectedId > defaultProgramMenuOptionId) {\n params.matchedSurveyTypesId = selectedId;\n }\n\n try {\n const response: IHttpResponse<IGetProgramReportResponse> = await generateReport(type, params);\n\n if (response.ok) {\n const {mimeType, data, fileName} = response.parsedBody;\n createLinkForDownload(`data:${mimeType};base64,${data}`, fileName);\n dispatch(toastNotificationManager.createSuccessToastAction(programsMessages.reportSuccess));\n }\n } catch (err) {\n dispatch(toastNotificationManager.createErrorToastAction(err.statusText || programsMessages.reportError));\n } finally {\n setIsLoading(false);\n }\n };\n\n return filteredReportTypes.map(({name, type}) => ({\n name,\n viewBtn: (\n <Fragment>\n <Button.Secondary\n size=\"small\"\n clickHandler={() => generateReportClickHandler(type, ReportExportFormatsEnum.PDF)}\n disabled={loading}\n >\n PDF Report\n </Button.Secondary>\n <Button.Secondary\n size=\"small\"\n clickHandler={() => generateReportClickHandler(type, ReportExportFormatsEnum.CSV)}\n disabled={loading}\n >\n Excel Report\n </Button.Secondary>\n </Fragment>\n ),\n }));\n }, [dispatch, loading, programIdParam, selectedAreaId, filteredReportTypes, setIsLoading, selectedId]);\n\n // Raw Data Export\n\n const getRawDataExportForParticularArea = useCallback(\n () => getAreaProgramClassExport(programIdParam, null, selectedAreaId),\n [getAreaProgramClassExport, programIdParam, selectedAreaId]\n );\n\n const getDetailedDataExportForParticularArea = useCallback(\n () => getAreaProgramClassDetailedExport(programIdParam, null, selectedAreaId),\n [getAreaProgramClassDetailedExport, programIdParam, selectedAreaId]\n );\n\n const getRawExportForParticularArea = useCallback(\n (isRawDataExport: boolean) => {\n if (isRawDataExport) {\n return getRawDataExportForParticularArea();\n } else {\n return getDetailedDataExportForParticularArea();\n }\n },\n [getDetailedDataExportForParticularArea, getRawDataExportForParticularArea]\n );\n\n // Raw Data Export (Detailed)\n\n const getRawDataExportForAllAreas = useCallback(() => getAreaProgramClassExport(programIdParam, null, null), [\n getAreaProgramClassExport,\n programIdParam,\n ]);\n\n const getDetailedDataExportForAllAreas = useCallback(\n () => getAreaProgramClassDetailedExport(programIdParam, null, null),\n [getAreaProgramClassDetailedExport, programIdParam]\n );\n\n const getRawExportForAllAreas = useCallback(\n (isRawDataExport: boolean) => {\n if (isRawDataExport) {\n return getRawDataExportForAllAreas();\n } else {\n return getDetailedDataExportForAllAreas();\n }\n },\n [getRawDataExportForAllAreas, getDetailedDataExportForAllAreas]\n );\n\n const exportRows = useMemo(() => {\n const generateExportClickHandler = async (type: ExportTypesEnum) => {\n const isRawDataExport = type === ExportTypesEnum.DataFile;\n\n setIsLoading(true);\n\n if (selectedAreaId > ALL_AREAS_INDEX) {\n getRawExportForParticularArea(isRawDataExport)\n .then(() => setIsLoading(false))\n .finally(() => setIsLoading(false));\n } else {\n getRawExportForAllAreas(isRawDataExport)\n .then(() => setIsLoading(false))\n .finally(() => setIsLoading(false));\n }\n };\n\n if (!hasPermission(USAAndSuperAdminRoles)) {\n exportTypes.pop();\n }\n\n return exportTypes.map(({name, type}) => ({\n name,\n viewBtn: (\n <Fragment>\n <Button.Secondary\n size=\"small\"\n clickHandler={() => generateExportClickHandler(type)}\n disabled={loading || shouldDisableAchievementReports}\n >\n CSV Export\n </Button.Secondary>\n </Fragment>\n ),\n }));\n }, [\n loading,\n exportTypes,\n shouldDisableAchievementReports,\n setIsLoading,\n selectedAreaId,\n getRawExportForAllAreas,\n getRawExportForParticularArea,\n ]);\n\n const headerSubheading = useMemo(\n () => program && <SubtitlePageViewHeader> / {program?.name}</SubtitlePageViewHeader>,\n [program]\n );\n\n const header = useMemo(() => {\n return (\n <PageViewHeader\n heading=\"Programs\"\n subHeading={headerSubheading}\n withBackButton\n backButtonClickHandler={() => push(`${pages.adminPortal.programs.root}`)}\n />\n );\n }, [headerSubheading, push]);\n\n const sidebar = useMemo(() => {\n const shouldRenderAreaFilter = hasPermission(USAAndSuperAdminRoles);\n\n return (\n <SidebarBase>\n <ViewExpansionPanel disabled={loading} />\n {!!shouldRenderAreaFilter && (\n <AreaSelect selectedArea={selectedAreaId} onSelectArea={setSelectedAreaId} disabled={loading} />\n )}\n </SidebarBase>\n );\n }, [hasPermission, loading, selectedAreaId, setSelectedAreaId]);\n\n const content = useMemo(() => {\n return (\n <PageLayoutWithFixedAreas header={header} headerSize=\"small\" withSecondaryNavigation={false}>\n {loading ? (\n <Loading />\n ) : (\n <Fragment>\n <Container disableGutters classes={{root: classes.exports}}>\n <Row justify=\"flex-start\">\n <Text.Heading as=\"h3\">Exports</Text.Heading>\n </Row>\n <Container disableGutters classes={{root: classes.exportsTable}}>\n <Text.Heading as=\"h4\">Aggregated program-level data</Text.Heading>\n <Table columns={columns} rows={exportRows} />\n </Container>\n </Container>\n <Row justify=\"space-between\">\n <Text.Heading as=\"h3\">Reports</Text.Heading>\n <LevelReportingMenu />\n </Row>\n {selectedItem && <Text.Heading as=\"h4\">{selectedItem?.displayText}</Text.Heading>}\n <Table columns={columns} rows={reportRows} />\n </Fragment>\n )}\n <Prompt when={loading} message={reportMessages.progress} />\n </PageLayoutWithFixedAreas>\n );\n }, [classes.exports, classes.exportsTable, header, reportRows, exportRows, loading, selectedItem]);\n\n return <PageLayoutTwoCol withSecondaryNavigation={false} sidebar={sidebar} content={content} />;\n};\n\nconst useStyles = makeStyles((theme) => ({\n exports: {\n borderBottom: `1px solid ${theme.palette.grey[100]}`,\n marginBottom: theme.spacing(3),\n },\n exportsTable: {\n paddingBottom: theme.spacing(2),\n },\n}));\n","import {IProgramClassDetailsState} from './IProgramClassDetailsState';\n\nexport const programClassDetailsInitialState: IProgramClassDetailsState = {\n loading: false,\n};\n","import {IProgramClassDetailsState} from './IProgramClassDetailsState';\nimport {programClassDetailsInitialState} from './programClassDetails.initialState';\n\nexport const programClassDetailsReducer = {\n resetActiveEntry: (state: IProgramClassDetailsState) => {\n state.activeEntity = programClassDetailsInitialState.activeEntity;\n },\n};\n","import {IActionFulfilled, IProgramClassBase} from 'models';\nimport {IProgramClassDetailsState} from './IProgramClassDetailsState';\nimport {fetchProgramClassThunk} from './thunks';\n\nexport const programClassDetailsExtraReducer = {\n //fetchProgramClassThunk\n [fetchProgramClassThunk.fulfilled]: (\n state: IProgramClassDetailsState,\n action: IActionFulfilled<null, IProgramClassBase>\n ) => {\n if (action.payload?.id) {\n state.activeEntity = {...action.payload};\n }\n\n state.loading = false;\n },\n [fetchProgramClassThunk.pending]: (state: IProgramClassDetailsState) => {\n state.loading = true;\n },\n [fetchProgramClassThunk.rejected]: (state: IProgramClassDetailsState) => {\n state.loading = false;\n },\n};\n","import {createSlice} from '@reduxjs/toolkit';\nimport {programClassDetailsInitialState} from './programClassDetails.initialState';\nimport {programClassDetailsReducer} from './programClassDetails.reducer';\nimport {programClassDetailsExtraReducer} from './programClassDetailsExtra.reducer';\n\nexport const programClassDetailsSlice = createSlice({\n name: 'programClassDetails',\n initialState: programClassDetailsInitialState,\n reducers: programClassDetailsReducer,\n extraReducers: programClassDetailsExtraReducer,\n});\n\nexport const {actions: programClassDetailsActions} = programClassDetailsSlice;\n","import {DragLayerMonitor, useDrag} from 'react-dnd';\n\nexport const useItemDrag = (itemDrag: any, dragging = true) => {\n const [{isDragging}, drag] = useDrag({\n item: itemDrag,\n collect: (monitor: DragLayerMonitor) => ({\n isDragging: monitor.isDragging(),\n }),\n canDrag: () => {\n return dragging;\n },\n });\n\n return {drag, isDragging};\n};\n","import {DropTargetMonitor, useDrop, XYCoord} from 'react-dnd';\nimport {BuilderItemDragTypeEnum} from 'admin/library/enums';\n\ninterface IDragItem {\n index: number;\n id: string;\n type: BuilderItemDragTypeEnum;\n}\n\nexport const useItemDrop = (\n moveCallback: (dragIndex: number, hoverIndex: number) => void,\n accept: BuilderItemDragTypeEnum,\n ref: any,\n index: number\n) => {\n const [{handlerId}, drop] = useDrop({\n accept,\n collect(monitor) {\n return {\n handlerId: monitor.getHandlerId(),\n };\n },\n hover(item: IDragItem, monitor: DropTargetMonitor) {\n if (!ref.current) {\n return;\n }\n\n const dragIndex = item.index;\n const hoverIndex = index;\n\n // Don't replace items with themselves\n if (dragIndex === hoverIndex) {\n return;\n }\n\n // Determine rectangle on screen\n const hoverBoundingRect = ref.current?.getBoundingClientRect();\n\n // Get vertical middle\n const hoverMiddleY = (hoverBoundingRect.bottom - hoverBoundingRect.top) / 2;\n\n // Determine mouse position\n const clientOffset = monitor.getClientOffset();\n\n // Get pixels to the top\n const hoverClientY = (clientOffset as XYCoord).y - hoverBoundingRect.top;\n\n // Only perform the move when the mouse has crossed half of the items height\n // When dragging downwards, only move when the cursor is below 50%\n // When dragging upwards, only move when the cursor is above 50%\n\n // Dragging downwards\n if (dragIndex < hoverIndex && hoverClientY < hoverMiddleY) {\n return;\n }\n\n // Dragging upwards\n if (dragIndex > hoverIndex && hoverClientY > hoverMiddleY) {\n return;\n }\n\n // Time to actually perform the action\n moveCallback(dragIndex, hoverIndex);\n\n // Note: we're mutating the monitor item here!\n // Generally it's better to avoid mutations,\n // but it's good here for the sake of performance\n // to avoid expensive index searches.\n item.index = hoverIndex;\n },\n });\n\n return {drop, handlerId};\n};\n","import React, {Ref} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {Identifier} from 'dnd-core';\nimport {IComponentWithChildren} from 'models';\ninterface IDragItemProps extends IComponentWithChildren {\n drag: Ref<any>;\n handlerId?: Identifier;\n}\n\nexport function DragItem({children, drag, handlerId}: IDragItemProps) {\n const classes = useStyles();\n return (\n <div ref={drag} data-handler-id={handlerId} className={classes.root}>\n {children}\n </div>\n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n marginBottom: theme.spacing(2),\n },\n}));\n","import {makeStyles} from '@material-ui/core';\nimport {IComponentWithChildren} from 'models';\nimport React, {Ref} from 'react';\n\ninterface IDropContainerProps extends IComponentWithChildren {\n drop: Ref<any>;\n}\n\nexport function DropContainer({children, drop}: IDropContainerProps) {\n const classes = useStyles();\n return (\n <div ref={drop} className={classes.root}>\n {children}\n </div>\n );\n}\n\nconst useStyles = makeStyles(() => ({\n root: {\n width: '100%',\n height: '100%',\n },\n}));\n","import {IActionFulfilled} from 'models';\nimport {IProgramDetailsState} from './IProgramDetailsState';\nimport {programDetailsInitialState} from './programDetails.initialState';\n\nexport const programDetailsReducer = {\n resetActiveEntry: (state: IProgramDetailsState) => {\n state.activeEntity = programDetailsInitialState.activeEntity;\n },\n\n clearLevelOfReports(state: IProgramDetailsState) {\n state.levelOfReports = {...programDetailsInitialState.levelOfReports};\n },\n\n setSelectedId: (state: IProgramDetailsState, action: IActionFulfilled<null, number>) => {\n state.levelOfReports.selectedId = action.payload;\n },\n};\n","import {IActionFulfilled, IGetLevelsOfReportingApiResponse, IProgramBase} from 'models';\nimport {IProgramDetailsState} from './IProgramDetailsState';\nimport {fetchLevelsOfReportingListThunk, fetchProgramThunk} from './thunks';\n\nexport const programDetailsExtraReducer = {\n //fetchProgramThunk\n [fetchProgramThunk.fulfilled]: (state: IProgramDetailsState, action: IActionFulfilled<null, IProgramBase>) => {\n if (action.payload?.id) {\n state.activeEntity = {...action.payload};\n }\n\n state.loading = false;\n },\n [fetchProgramThunk.pending]: (state: IProgramDetailsState) => {\n state.loading = true;\n },\n [fetchProgramThunk.rejected]: (state: IProgramDetailsState) => {\n state.loading = false;\n },\n\n // fetchLevelsOfReportingListThunk\n [fetchLevelsOfReportingListThunk.fulfilled]: (\n state: IProgramDetailsState,\n action: IActionFulfilled<null, IGetLevelsOfReportingApiResponse>\n ) => {\n if (action.payload) {\n const {data} = action.payload;\n state.levelOfReports.menuItems = [...data];\n }\n\n state.levelOfReports.loading = false;\n },\n [fetchLevelsOfReportingListThunk.pending]: (state: IProgramDetailsState) => {\n state.levelOfReports.loading = true;\n },\n [fetchLevelsOfReportingListThunk.rejected]: (state: IProgramDetailsState) => {\n state.levelOfReports.loading = false;\n },\n};\n","import {createSlice} from '@reduxjs/toolkit';\nimport {programDetailsInitialState} from './programDetails.initialState';\nimport {programDetailsReducer} from './programDetails.reducer';\nimport {programDetailsExtraReducer} from './programDetailsExtra.reducer';\n\nexport const programDetailsSlice = createSlice({\n name: 'programDetails',\n initialState: programDetailsInitialState,\n reducers: programDetailsReducer,\n extraReducers: programDetailsExtraReducer,\n});\n\nexport const {actions: programDetailsActions} = programDetailsSlice;\n","import {reduxBatch} from '@manaflair/redux-batch';\nimport {configureStore, getDefaultMiddleware} from '@reduxjs/toolkit';\nimport {config} from 'config';\nimport logger from 'redux-logger';\nimport {loadUser} from 'redux-oidc';\nimport {saveAuthToken} from './middleware/saveAuthToken';\nimport {rootReducer} from './reducers';\nimport {authenticationManager} from '../user';\n\nconst userManager = authenticationManager.getUserManager();\n\nconst middleware = [\n ...getDefaultMiddleware({\n serializableCheck: false,\n }),\n saveAuthToken,\n];\n\nif (!config.isProduction) {\n middleware.push(logger);\n}\n\nexport const store = configureStore({\n middleware,\n reducer: rootReducer,\n devTools: !config.isProduction,\n enhancers: [reduxBatch],\n});\n\n// Fix: 'getUser', please see: https://github.com/maxmantz/redux-oidc/issues/99\n\nloadUser(store, userManager);\n\nexport type TAppDispatch = typeof store.dispatch;\n","import {setToken} from 'utils';\n\nexport const saveAuthToken = () => (next: any) => (action: any) => {\n // TODO do we need this?\n if (action.type === 'redux-oidc/USER_FOUND') {\n setToken(action.payload.access_token);\n }\n\n return next(action);\n};\n","import React, {ComponentType} from 'react';\nimport {useNavigate} from 'hooks';\nimport {RolesEnum} from 'permissions/enums';\nimport {usePermissions} from 'permissions/hooks';\nimport {hasRequiredPermissions} from 'permissions/utils';\nimport {isObject} from 'utils';\n\nexport const withRole = <P extends unknown>(requiredRoles: RolesEnum[] | RolesEnum, redirectRoute: string) => (\n WrappedComponent: ComponentType<P>\n): any => {\n const WithRole = ({...rest}: any) => {\n const {permissionsLoading, userRoles} = usePermissions();\n const {push} = useNavigate();\n\n if (permissionsLoading) return null;\n\n if (!isObject(requiredRoles) && requiredRoles === RolesEnum.All) {\n return <WrappedComponent {...(rest as P)} />;\n }\n\n const shouldGrantAccess = hasRequiredPermissions(userRoles, requiredRoles as RolesEnum[]);\n if (!shouldGrantAccess) {\n redirectRoute && push(redirectRoute);\n return null;\n }\n\n return <WrappedComponent {...(rest as P)} />;\n };\n\n return WithRole;\n};\n","import {useCallback} from 'react';\nimport {ISurvey} from 'survey-react';\n\nimport {IAnswer} from 'models';\nimport {QuestionAnswersTypeEnum} from 'enums';\nimport {ISurveyItem} from 'admin/library/models';\nimport {QuestionColumnCellEnum} from 'admin/library/enums';\n\nexport function useSurvey() {\n const getCorrectAnswers = useCallback(\n (answers: IAnswer[]) => answers.filter((answer: IAnswer) => answer.isCorrect === true),\n []\n );\n\n const getAnswersField = useCallback(\n (isMatrixType: boolean, {columns, choices}: any) => (isMatrixType ? columns : choices),\n []\n );\n\n const setMatrixDefaultValue = (answers: string[], rows: string[]) => {\n return rows.reduce((map, obj) => {\n map[obj] = {\n col: answers,\n };\n\n return map;\n }, {});\n };\n\n const getSurveyPagesLength = (survey: ISurvey) => survey.pages.length;\n\n const checkIfSurveyHasSinglePage = (surveyPagesLen: number) => surveyPagesLen > 0 && surveyPagesLen < 2;\n\n const updateDropdownMatrixQuestion = useCallback(\n (matrix: ISurveyItem, correctAnswers: string[], rowValues: string[]) => {\n const columnName = 'col';\n\n matrix.type = QuestionAnswersTypeEnum.matrixdropdown;\n matrix.defaultValue = setMatrixDefaultValue(correctAnswers, rowValues);\n matrix.columns = [\n {\n name: columnName,\n cellType: QuestionColumnCellEnum.checkbox,\n showInMultipleColumns: true,\n choices: matrix.columns,\n },\n ];\n },\n []\n );\n\n const calculatePageColCount = (answersLen: number) => (answersLen >= 4 ? 4 : 1);\n\n const updateQuestionItem = useCallback(\n (elements: any) =>\n elements.map((pageElement: any) => {\n const isRadioGroup = pageElement.type.startsWith(QuestionAnswersTypeEnum.radioGroup) as boolean;\n const isDropdown = pageElement.type.startsWith(QuestionAnswersTypeEnum.dropdown) as boolean;\n const isMatrix = pageElement.type.startsWith(QuestionAnswersTypeEnum.matrix) as boolean;\n const answersField = getAnswersField(isMatrix, pageElement) as IAnswer[];\n const answers = answersField && getCorrectAnswers(answersField);\n const correctAnswers = answers && (answers.map((answer: IAnswer) => answer.value) as string[]);\n const rowValues = pageElement?.rows?.map((row: IAnswer) => row.value) as string[];\n\n if (!answers) return pageElement;\n\n if (!isMatrix) {\n if (isRadioGroup || isDropdown) {\n pageElement.type = QuestionAnswersTypeEnum.checkbox;\n\n if (isDropdown) {\n pageElement.colCount = calculatePageColCount(pageElement.choices.length);\n }\n pageElement.defaultValue = correctAnswers;\n }\n\n if (!isRadioGroup) {\n pageElement.defaultValue = correctAnswers;\n }\n }\n\n if (isMatrix) {\n pageElement = updateDropdownMatrixQuestion(pageElement, correctAnswers, rowValues);\n }\n\n return pageElement;\n }),\n [getCorrectAnswers, getAnswersField, updateDropdownMatrixQuestion]\n );\n\n const setDefaultAnswersForPreview = useCallback(\n (survey: ISurvey, isSinglePage: boolean) => {\n const singlePage = survey.pages[0];\n\n if (!isSinglePage) {\n return survey.pages.forEach((page: any) => updateQuestionItem(page.elements));\n }\n return updateQuestionItem(singlePage.elements);\n },\n\n [updateQuestionItem]\n );\n\n const getFooterLogo = useCallback((survey, isSinglePage: boolean) => {\n if (isSinglePage) {\n return survey.footerUrl;\n }\n }, []);\n\n const calculateInputChars = useCallback((currentElement, maxCharsLength: number) => {\n const div = document.createElement('div');\n div.style.textAlign = 'right';\n div.style.marginRight = '8px';\n div.style.marginTop = '8px';\n currentElement.parentNode.append(div);\n\n const calculateMaxCharsHandler = function () {\n const currLength = currentElement.value.length;\n div.innerText = 'Characters: ' + currLength + ' / ' + maxCharsLength;\n };\n calculateMaxCharsHandler();\n currentElement.onkeyup = calculateMaxCharsHandler;\n }, []);\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const appendMaxCharsToTextField = useCallback((options, _) => {\n if (options.question.getType() !== 'text') return;\n\n const HTMLCollection = options.htmlElement.getElementsByClassName('input-field');\n /**\n * For each question there will be single item in HTMLCollection\n */\n const element = HTMLCollection[0];\n const maxLength = element?.maxLength;\n\n if (!!maxLength && maxLength > -1) {\n calculateInputChars(element, maxLength);\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return {\n setDefaultAnswersForPreview,\n getSurveyPagesLength,\n checkIfSurveyHasSinglePage,\n getFooterLogo,\n appendMaxCharsToTextField,\n };\n}\n","import {getFilesNotificationManager, IUploadFile} from 'admin';\nimport {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport {UploadFileStatusEnum} from '../enums';\nimport {getUploadingFileNumber} from '../utils';\n\nexport const useUploadManager = () => {\n const uploadFiles = useSelector(getFilesNotificationManager);\n const uploadingFilesNum = getUploadingFileNumber(uploadFiles, UploadFileStatusEnum.Uploading);\n const uploadingText = `Uploading files (${uploadingFilesNum} of ${uploadFiles?.length})`;\n const getFileManagerUploadingStatus = useCallback(\n (files) => files?.some((file: IUploadFile) => file.status === UploadFileStatusEnum.Uploading),\n []\n );\n\n return {\n uploadFiles,\n uploadingText,\n uploadingFilesNum,\n getFileManagerUploadingStatus,\n };\n};\n","import {combineReducers} from '@reduxjs/toolkit';\nimport {learningPathsAllSlice} from '../views/all/store';\nimport {learningPathsCreateSlice} from '../views/create/store';\nimport {learningPathEditSlice} from '../views/edit/store';\nimport {sessionBuilderSlice} from '../views/session-builder/store';\n\nexport const learningPathsReducer = combineReducers({\n all: learningPathsAllSlice.reducer,\n create: learningPathsCreateSlice.reducer,\n edit: learningPathEditSlice.reducer,\n sessionBuilder: sessionBuilderSlice.reducer,\n});\n","import {combineReducers} from 'redux';\nimport {uploadSlice} from '../upload/store/upload.slice';\nimport {filesReducer} from './../files/store/files.reducer';\nimport {googleSitesSlice} from '../google-sites/store/googleSites.slice';\nimport {learningPathsReducer} from '../learning-paths/store/learningPaths.reducer';\n\nexport const resourcesReducer = combineReducers({\n files: filesReducer,\n googleSites: googleSitesSlice.reducer,\n upload: uploadSlice.reducer,\n learningPaths: learningPathsReducer,\n});\n","module.exports = __webpack_public_path__ + \"static/media/Logo.6c4a308e.svg\";","export {Files} from './Files';\nexport * from './models';\nexport * from './store';\n","module.exports = __webpack_public_path__ + \"static/media/OpenSans-Regular.3ed9575d.ttf\";","module.exports = __webpack_public_path__ + \"static/media/OpenSans-SemiBold.ba5cde21.ttf\";","export * from './common';\nexport * from './interfaces';\nexport * from './library';\nexport * from './permissions';\nexport * from './programs';\nexport * from './user';\nexport * from './integrations';\nexport * from './navigation';\nexport * from './resources';\nexport * from './filters-selections';\n","export enum PaperNodeTypeEnum {\n radioGroup = 'radiogroup',\n checkbox = 'checkbox',\n matrix = 'matrix',\n dropdown = 'dropdown',\n text = 'text',\n rating = 'rating',\n headline = 'headline',\n studentInfo = 'studentInfo',\n participantsTable = 'participantsTable',\n html = 'html',\n}\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z\"\n});\n\nvar SvgCheckbox = function SvgCheckbox(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n height: 20,\n width: 20,\n viewBox: \"0 0 24 24\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgCheckbox, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/checkbox.20b527eb.svg\";\nexport { ForwardRef as ReactComponent };","import React, {useEffect, useRef} from 'react';\nimport {makeStyles} from '@material-ui/core';\n\nimport {PreviewEditor} from 'components-lib';\nimport {PaperNodeTypeEnum} from '../../enums/PaperNodeTypeEnum';\nimport {IPaperQuestion} from '../../models/IPaperQuestion';\nimport {ReactComponent as SVGCheckbox} from '../../resources/checkbox.svg';\n\ninterface IPaperSurveyBaseItemProps {\n text: string;\n htmlStr?: string;\n id: string;\n choices: Array<any>;\n afterMount?: (questionInfo: IPaperQuestion) => void;\n withId?: boolean;\n}\n\nconst PaperSurveyBaseItem = ({text, htmlStr, id, choices, afterMount, withId = !!id}: IPaperSurveyBaseItemProps) => {\n const classes = useStyles({withId});\n const ref2 = useRef(null);\n\n useEffect(() => {\n if (!afterMount) return;\n afterMount({\n type: PaperNodeTypeEnum.checkbox,\n heights: {\n total: ref2?.current.clientHeight,\n headerArea: 0,\n textArea: 0,\n questionAreas: [0],\n },\n id: id,\n text: text,\n choices: choices,\n htmlStr: htmlStr,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const questionTextRow = (\n <tr className={classes.textRow}>\n <td className={classes.leftQuestionIdCell}>{!!id && id}</td>\n <td className={classes.questionTextCell}>{<PreviewEditor htmlStr={htmlStr} />}</td>\n </tr>\n );\n\n const answerRows = choices.map((item) => {\n const choiceId = `${item.value}`;\n\n return (\n <tr key={id}>\n <td className={classes.answerIdCell}>{choiceId}</td>\n <td>\n <div className={classes.answerWrapper}>\n <div>\n <SVGCheckbox className={classes.svgCheckbox} />\n </div>\n <div>{item.text}</div>\n </div>\n </td>\n </tr>\n );\n });\n\n return (\n <div className={classes.root} ref={ref2}>\n <table className={classes.table}>\n <tbody>\n {questionTextRow}\n {!!id && choices?.length && answerRows}\n </tbody>\n </table>\n </div>\n );\n};\n\nconst useStyles = makeStyles(() => ({\n root: {\n padding: '0.75em 0',\n pageBreakInside: 'avoid',\n },\n table: {\n width: '100%',\n textAlign: 'left',\n borderCollapse: 'collapse',\n },\n textRow: {\n borderBottom: 'solid lightgray 1px',\n minHeight: '10.5em',\n },\n questionTextCell: {\n fontWeight: 'bold',\n paddingLeft: '0.5em',\n },\n leftQuestionIdCell: ({withId}: Pick<IPaperSurveyBaseItemProps, 'withId'>) => {\n const styles: any = {\n minWidth: '5%',\n width: '6%',\n verticalAlign: 'middle',\n fontWeight: 'normal',\n fontSize: '75%',\n textAlign: 'left',\n borderRight: 'solid lightgray 1px',\n };\n\n if (withId) {\n return {\n ...styles,\n padding: '0em',\n '&:before': {\n content: '\"#\"',\n },\n '&:after': {\n content: '\"#\"',\n },\n };\n }\n\n return styles;\n },\n svgCheckbox: {\n verticalAlign: 'middle',\n fill: 'gray',\n opacity: 0.8,\n margin: '0 4px',\n },\n answerIdCell: {\n '&:before': {\n content: '\"*\"',\n },\n '&:after': {\n content: '\"*\"',\n },\n minWidth: '5%',\n width: '6%',\n verticalAlign: 'middle',\n paddingRight: '1em',\n fontWeight: 'normal',\n fontSize: '75%',\n textAlign: 'left',\n borderRight: 'solid lightgray 1px',\n },\n answerWrapper: {\n display: 'flex',\n alignItems: 'center',\n },\n}));\n\nexport default PaperSurveyBaseItem;\n","import React, {FC} from 'react';\nimport {IPaperQuestion} from '../../models/IPaperQuestion';\nimport PaperSurveBaseItem from '../PaperSurveyBaseItem/PaperSurveyBaseItem';\n\ninterface IInstructionalTextForQuestionProps {\n html: string;\n afterMount: (questionInfo: IPaperQuestion) => void;\n}\n\nexport const InstructionalTextForQuestion: FC<IInstructionalTextForQuestionProps> = ({html, afterMount}) => {\n return <PaperSurveBaseItem withId={false} text={''} htmlStr={html} id={''} choices={[]} afterMount={afterMount} />;\n};\n","import React, {FC} from 'react';\nimport {IPaperQuestion} from '../../models/IPaperQuestion';\nimport PaperSurveyBaseItem from '../PaperSurveyBaseItem/PaperSurveyBaseItem';\n\ninterface IQuestionProps {\n text: string;\n htmlStr?: string;\n id: string;\n choices: Array<any>;\n afterMount?: (questionInfo: IPaperQuestion) => void;\n withId?: boolean;\n}\n\nexport const Question: FC<IQuestionProps> = ({text, htmlStr, id, choices, afterMount}) => {\n return <PaperSurveyBaseItem withId text={text} htmlStr={htmlStr} id={id} choices={choices} afterMount={afterMount} />;\n};\n","/* eslint-disable react/display-name */\nimport {makeStyles} from '@material-ui/core';\nimport React, {ReactNode, useEffect, useRef} from 'react';\nimport {PaperNodeTypeEnum} from '../../enums/PaperNodeTypeEnum';\nimport {IPaperQuestion} from '../../models/IPaperQuestion';\nimport {ReactComponent as SVGCheckbox} from '../../resources/checkbox.svg';\n\ninterface IProps {\n text?: string;\n id: string;\n columns?: Array<any>;\n rows?: Array<any>;\n afterMount?: (questionInfo: IPaperQuestion) => void;\n}\n\nconst MatrixQuestion = ({text, id, columns, rows, afterMount}: IProps) => {\n const classes = useStyles();\n const mainRef = useRef(null);\n const textRowRef = useRef(null);\n const headerRowRefs = useRef([]);\n const questionRowRefs = useRef([]);\n\n useEffect(() => {\n if (!afterMount) return;\n afterMount({\n type: PaperNodeTypeEnum.matrix,\n heights: {\n total: mainRef?.current.clientHeight,\n textArea: textRowRef?.current.clientHeight,\n headerArea: headerRowRefs?.current.reduce((height, element) => element.clientHeight + height, 0),\n questionAreas: questionRowRefs?.current.map((element) => element.clientHeight),\n },\n text: text,\n id: id,\n columns: columns,\n rows: rows,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const MatrixQuestionTextCell = ({children = undefined, colSpan = undefined}) => (\n <td className={classes.matrixQuestionText} colSpan={colSpan}>\n {children}\n </td>\n );\n const MatrixQuestionLeftId = ({children = undefined}) => <td className={classes.matrixQuestionLeftId}>{children}</td>;\n const MatrixQuestionTopRow = ({children = undefined}) => (\n <tr ref={(ref) => (textRowRef.current = ref)} className={classes.matrixQuestionTopRow}>\n {children}\n </tr>\n );\n\n const MatrixAnswerLeftIdCell = ({children = undefined}) => <td className={classes.matrixAnswerLeftId}>{children}</td>;\n\n const MatrixQuestionRow = ({children = undefined}) => (\n <tr ref={(ref) => questionRowRefs.current.push(ref)} className={classes.matrixQuestionRow}>\n {children}\n </tr>\n );\n const MatrixQuestionCell = ({children = undefined}) => <td className={classes.matrixQuestionCell}>{children}</td>;\n\n const MatrixHeaderRow = ({children = undefined}) => (\n <tr ref={(ref) => headerRowRefs.current.push(ref)} className={classes.matrixHeaderRow}>\n {children}\n </tr>\n );\n const MatrixScaleIDCell = ({children = undefined}) => <td className={classes.matrixScaleIdCell}>{children}</td>;\n const MatrixEmptyIDCell = ({children = undefined}) => <td className={classes.matrixEmptyIdCell}>{children}</td>;\n const MatrixScaleTextCell = ({children = undefined}) => <td className={classes.matrixScaleTextCell}>{children}</td>;\n const MatrixScaleCheckboxCell = ({children = undefined}) => (\n <td className={classes.matrixScaleCheckboxCell}>{children}</td>\n );\n\n const colspan = columns?.length + 1;\n\n const topRow =\n text && text.length > 0 ? (\n <MatrixQuestionTopRow>\n <MatrixQuestionLeftId>{id}</MatrixQuestionLeftId>\n <MatrixQuestionTextCell colSpan={colspan}>{text}</MatrixQuestionTextCell>\n </MatrixQuestionTopRow>\n ) : null;\n\n // create header\n const headerIdCells = columns?.map((col) => {\n return <MatrixScaleIDCell key={col.value}>{col.value}</MatrixScaleIDCell>;\n });\n\n const headerTextCols = columns?.map((col) => {\n return <MatrixScaleTextCell key={col.value}>{col.text}</MatrixScaleTextCell>;\n });\n\n const headerRows = (\n <>\n <MatrixHeaderRow>\n <MatrixEmptyIDCell></MatrixEmptyIDCell> {/* placeholder for the left id column */}\n <MatrixScaleTextCell></MatrixScaleTextCell> {/* placeholder for the answer column */}\n {headerIdCells}\n </MatrixHeaderRow>\n <MatrixHeaderRow>\n <MatrixEmptyIDCell></MatrixEmptyIDCell> {/* placeholder for the left id column */}\n <MatrixScaleTextCell></MatrixScaleTextCell> {/* For the answer column */}\n {headerTextCols}\n </MatrixHeaderRow>\n </>\n );\n\n // create answers\n const answerRows = rows?.map((row) => {\n const tds = new Array<ReactNode>();\n // eslint-disable-next-line array-callback-return\n columns?.map((col) => {\n tds.push(\n <MatrixScaleCheckboxCell key={col.value}>\n <SVGCheckbox className={classes.svgCheckbox} />\n </MatrixScaleCheckboxCell>\n );\n });\n\n return (\n <MatrixQuestionRow key={row.questionId}>\n <MatrixAnswerLeftIdCell>{row.questionId}</MatrixAnswerLeftIdCell>\n <MatrixQuestionCell>{row.text}</MatrixQuestionCell>\n {tds}\n </MatrixQuestionRow>\n );\n });\n\n return (\n <div className={classes.matrixQuestionRoot} ref={mainRef}>\n <table className={classes.matrixQuestionTable}>\n <tbody>\n {topRow}\n {headerRows}\n {answerRows}\n </tbody>\n </table>\n </div>\n );\n};\n\nconst useStyles = makeStyles(() => ({\n matrixQuestionRoot: {\n padding: '0.75em 0',\n pageBreakInside: 'avoid',\n },\n matrixQuestionTable: {\n width: '100%',\n textAlign: 'left',\n borderCollapse: 'collapse',\n },\n matrixQuestionText: {\n fontWeight: 'bold',\n textAlign: 'left',\n paddingLeft: '0.5em',\n },\n matrixQuestionLeftId: {\n minWidth: '5%',\n width: '6%',\n '&:before': {\n content: '\"#\"',\n },\n '&:after': {\n content: '\"#\"',\n },\n verticalAlign: 'middle',\n paddingRight: '1em',\n fontWeight: 'normal',\n fontSize: '75%',\n textAlign: 'right',\n borderRight: 'solid lightgray 1px',\n },\n matrixQuestionTopRow: {\n borderBottom: 'solid lightgray 1px',\n minHeight: '2.5em',\n },\n matrixAnswerLeftId: {\n '&:before': {\n content: '\"*\"',\n },\n '&:after': {\n content: '\"*\"',\n },\n verticalAlign: 'middle',\n paddingRight: '1em',\n fontWeight: 'normal',\n fontSize: '75%',\n textAlign: 'right',\n borderRight: 'solid lightgray 1px',\n },\n matrixQuestionRow: {\n height: '3em',\n '&:nth-child(even)': {\n backgroundColor: 'whitesmoke',\n },\n },\n matrixQuestionCell: {\n verticalAlign: 'middle',\n textAlign: 'left',\n width: '50%',\n padding: '0.25em 0.5em',\n },\n matrixHeaderRow: {\n border: 'solid lightgray 1px',\n },\n matrixScaleIdCell: {\n '&:before': {\n content: '\"+\"',\n },\n '&:after': {\n content: '\"+\"',\n },\n fontWeight: 'normal',\n fontSize: '75%',\n textAlign: 'center',\n border: 'solid lightgray 1px',\n },\n matrixEmptyIdCell: {\n border: 'none',\n },\n matrixScaleTextCell: {\n border: 'solid lightgray 1px',\n verticalAlign: 'bottom',\n textAlign: 'center',\n padding: '0.25em',\n },\n matrixScaleCheckboxCell: {\n verticalAlign: 'middle',\n textAlign: 'center',\n },\n svgCheckbox: {\n fill: 'gray',\n opacity: 0.8,\n verticalAlign: 'middle',\n },\n}));\n\nexport default MatrixQuestion;\n","import React, {useEffect, useRef} from 'react';\nimport {makeStyles} from '@material-ui/core/styles';\nimport classnames from 'classnames';\nimport TableMui from '@material-ui/core/Table';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableHead from '@material-ui/core/TableHead';\nimport TableRow from '@material-ui/core/TableRow';\nimport {IColumn, IParticipantSummary} from 'models';\nimport {IPaperQuestion} from '../../models/IPaperQuestion';\nimport {PaperNodeTypeEnum} from '../../enums/PaperNodeTypeEnum';\ninterface IParticipantsTableProps {\n participants: IParticipantSummary[];\n afterMount?: (questionInfo: IPaperQuestion) => void;\n}\n\nconst ParticipantsTable = ({participants, afterMount}: IParticipantsTableProps) => {\n const mainRef = useRef(null);\n const headerAreaRef = useRef(null);\n const rowRefs = useRef([]);\n const {fixedTable, header, cell, tableBody} = useStyles();\n const rows = participants;\n\n useEffect(() => {\n if (!afterMount) return;\n afterMount({\n type: PaperNodeTypeEnum.participantsTable,\n heights: {\n total: mainRef?.current.clientHeight,\n textArea: 0, // no text area\n headerArea: headerAreaRef?.current.clientHeight,\n questionAreas: rowRefs?.current.map((element) => element.clientHeight),\n },\n text: '',\n id: 'n/a',\n rows: participants,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const table = (\n <TableMui aria-label=\"table\" className={classnames('simple-table', fixedTable)} innerRef={mainRef}>\n <TableHead innerRef={headerAreaRef}>\n <TableRow>\n {columns.map((column) => (\n <TableCell key={column.id} align={'center'} className={classnames(header, cell)}>\n {column.label}\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n {rows && (\n <TableBody className={tableBody}>\n {rows?.map((row: any, idx: number) => {\n return (\n <TableRow role=\"checkbox\" tabIndex={-1} key={idx} innerRef={(ref) => rowRefs.current.push(ref)}>\n {columns.map((column) => {\n const value = row[column.id];\n return (\n <TableCell key={column.id} align={column.align} className={classnames(cell)}>\n {column.format && typeof value === 'number' ? column.format(value) : value}\n </TableCell>\n );\n })}\n </TableRow>\n );\n })}\n </TableBody>\n )}\n </TableMui>\n );\n return table;\n};\n\nconst useStyles = makeStyles((theme) => ({\n fixedTable: {\n tableLayout: 'fixed',\n },\n cell: {\n border: 0,\n overflowWrap: 'break-word',\n },\n header: {\n color: theme.palette.grey[700],\n fontWeight: 600,\n backgroundColor: theme.palette.common.white,\n },\n tableBody: {\n '& tr:nth-child(even)': {\n backgroundColor: theme.palette.grey[50],\n },\n },\n}));\n\nconst columns: IColumn[] = [\n {id: 'userId', label: 'ID', align: 'center'},\n {id: 'firstName', label: 'First name', align: 'center'},\n {id: 'surname', label: 'Surname', align: 'center'},\n {id: 'email', label: 'E-Mail', align: 'center'},\n {id: 'sessionTemplateIdentifier', label: 'Identifier', align: 'center'},\n];\n\nexport default ParticipantsTable;\n","import {makeStyles} from '@material-ui/core';\nimport React, {useEffect, useRef} from 'react';\nimport {PaperNodeTypeEnum} from '../../enums/PaperNodeTypeEnum';\nimport {IPaperQuestion} from '../../models/IPaperQuestion';\n\ninterface IProps {\n text: string;\n afterMount?: (questionInfo: IPaperQuestion) => void;\n}\n\nconst SurveyHeadline = ({text, afterMount}: IProps) => {\n const classes = useStyles();\n const ref = useRef(null);\n\n useEffect(() => {\n if (!afterMount) return;\n afterMount({\n type: PaperNodeTypeEnum.headline,\n heights: {\n total: ref?.current.clientHeight,\n headerArea: 0,\n textArea: 0,\n questionAreas: [0],\n },\n id: 'NA',\n text: text,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <div className={classes.surveyHeadline} ref={ref}>\n {text}\n </div>\n );\n};\n\nconst useStyles = makeStyles(() => ({\n surveyHeadline: {\n width: '100%',\n textAlign: 'center',\n fontSize: '3em',\n fontWeight: 'bold',\n pageBreakInside: 'avoid',\n },\n}));\n\nexport default SurveyHeadline;\n","import {makeStyles} from '@material-ui/core';\nimport React, {ReactNode} from 'react';\n\ninterface IProps {\n children: ReactNode;\n header?: ReactNode;\n footer?: ReactNode;\n}\n\n// eslint-disable-next-line react/display-name\nconst SurveyPage = React.forwardRef(({header, footer, children}: IProps, ref: any) => {\n const classes = useStyles();\n\n return (\n <div className={classes.surveyPage}>\n <div className={classes.surveyPageContainer}>\n <div className={classes.surveyPageHeader}>{header}</div>\n <div className={classes.surveyPageContent} ref={ref}>\n {children}\n </div>\n <div className={classes.surveyPageHeader}>{footer}</div>\n </div>\n </div>\n );\n});\n\nconst useStyles = makeStyles(() => ({\n surveyPage: {\n border: 'solid black 1px',\n paddingTop: '128%' /* 1:1.3125 ('letter' paper format) */,\n position: 'relative',\n pageBreakInside: 'avoid',\n margin: '16px 0',\n '@media print': {\n border: 'none',\n margin: 0,\n },\n },\n surveyPageContainer: {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n display: 'flex',\n flexFlow: 'column',\n },\n surveyPageContent: {\n width: '100%',\n flexGrow: 1,\n overflow: 'hidden',\n },\n surveyPageHeader: {\n width: '100%',\n },\n surveyPageFooter: {\n width: '100%',\n },\n}));\n\nexport default SurveyPage;\n","import React from 'react';\nimport MatrixQuestion from '../components/MatrixQuestion/MatrixQuestion';\nimport {IPaperQuestion} from '../models/IPaperQuestion';\nimport {IPaperNodeSplitResult} from '../models/IPaperNodeSplitResult';\nimport {PaperNodeTypeEnum} from '../enums/PaperNodeTypeEnum';\nimport ParticipantsTable from '../components/ParticipantsTable/ParticipantsTable';\n\n// reeturns [{matrix: <Matrix>, isItUsingTotalHeight}]\nexport const splitPaperNode = (\n filledHeightOnCurrentPage: number,\n availableHeightPerPage: number,\n paperNode: IPaperQuestion\n): IPaperNodeSplitResult[] => {\n const questions: IPaperNodeSplitResult[] = [];\n\n let currentPageHeight = filledHeightOnCurrentPage;\n\n const {heights, rows} = paperNode;\n const nextHeight = currentPageHeight + heights.total;\n\n if (nextHeight < availableHeightPerPage) {\n questions.push({\n node: createSplitNode(paperNode, 0, rows.length), // <MatrixQuestion text={text} id={id.toString()} rows={rows} columns={columns} />,\n height: heights.total,\n });\n currentPageHeight += heights.total;\n } else {\n // SPLIT MATRIX\n const questionAreasTotalHeight = heights.questionAreas.reduce((height, rowHeight) => (height += rowHeight), 0);\n const paddingHeight = heights.total - (heights.textArea + heights.headerArea + questionAreasTotalHeight); // correction for paddings\n\n let startRowIndex = 0;\n let rowIndex = 0;\n let newHeight = currentPageHeight + heights.textArea + heights.headerArea + paddingHeight;\n\n while (rowIndex < rows.length) {\n // check how much you can fit into the remaining height\n newHeight += heights.questionAreas[rowIndex];\n\n // add a part of matrix to current page and move to the next\n if (newHeight > availableHeightPerPage) {\n // when the header + 1 row can't fit, move to next page and reset height\n if (startRowIndex === rowIndex) {\n currentPageHeight = 0; // reset page height\n newHeight = calcHeightOfSplit(paperNode, startRowIndex, rowIndex + 1, paddingHeight);\n continue;\n }\n\n questions.push({\n node: createSplitNode(paperNode, startRowIndex, rowIndex),\n height: calcHeightOfSplit(paperNode, startRowIndex, rowIndex, paddingHeight),\n });\n\n currentPageHeight = 0; // reset page height\n startRowIndex = rowIndex; // move start row index next\n\n // reset page height to the height of the header's size plus the first row plus the padding\n newHeight = calcHeightOfSplit(paperNode, startRowIndex, rowIndex + 1, paddingHeight);\n }\n\n rowIndex++;\n }\n // all rows checked but the height has not reached the page height\n if (startRowIndex <= rowIndex) {\n questions.push({\n node: createSplitNode(paperNode, startRowIndex, rowIndex),\n height: calcHeightOfSplit(paperNode, startRowIndex, rowIndex + 1, paddingHeight),\n });\n }\n }\n\n return questions;\n};\n\nconst calcHeightOfSplit = (obj: IPaperQuestion, startRowIndex: number, endRowIndex: number, paddingHeight: number) => {\n const {heights} = obj;\n const rowsHeight = heights.questionAreas\n .slice(startRowIndex, endRowIndex)\n .reduce((height, rowHeight) => (height += rowHeight), 0);\n\n return heights.textArea + heights.headerArea + rowsHeight + paddingHeight;\n};\n\n// return partial node\nconst createSplitNode = (fullNode: IPaperQuestion, startRowIndex: number, endRowIndex: number) => {\n const {type, id, text, rows, columns} = fullNode;\n switch (type) {\n case PaperNodeTypeEnum.matrix:\n return (\n <MatrixQuestion\n key={id}\n text={text}\n id={id.toString()}\n rows={rows.slice(startRowIndex, endRowIndex)}\n columns={columns}\n />\n );\n case PaperNodeTypeEnum.participantsTable:\n return <ParticipantsTable key={id.toString()} participants={rows.slice(startRowIndex, endRowIndex)} />;\n }\n};\n","import React, {ReactNode} from 'react';\nimport PaperSurveyBaseItem from '../components/PaperSurveyBaseItem/PaperSurveyBaseItem';\nimport SurveyHeadline from '../components/SurveyHeadline/SurveyHeadline';\nimport {PaperNodeTypeEnum} from '../enums/PaperNodeTypeEnum';\nimport {IPaperQuestion} from '../models/IPaperQuestion';\nimport {splitPaperNode} from '../utils/splitPaperNode';\n\nexport const createSurveyPages = (objects: IPaperQuestion[], pageContentHeight: number) => {\n const pages: any[] = [];\n const questions: ReactNode[] = [];\n\n let currentPageHeight = 0;\n objects.forEach((obj, index) => {\n const {heights, id, text, type, choices, htmlStr} = obj;\n const nextHeight = currentPageHeight + heights.total;\n\n switch (type) {\n case PaperNodeTypeEnum.checkbox:\n case PaperNodeTypeEnum.radioGroup:\n if (nextHeight < pageContentHeight) {\n questions.push(\n <PaperSurveyBaseItem key={index} text={text} htmlStr={htmlStr} id={id.toString()} choices={choices} />\n );\n currentPageHeight += heights.total;\n } else {\n pages.push({questions: [...questions]});\n questions.length = 0; // empty questions array\n\n currentPageHeight = heights.total; // reset current height to the height of the question\n\n // add the question to the new page\n questions.push(\n <PaperSurveyBaseItem key={index} text={text} htmlStr={htmlStr} id={id.toString()} choices={choices} />\n );\n }\n break;\n case PaperNodeTypeEnum.matrix:\n case PaperNodeTypeEnum.participantsTable:\n const splitResult = splitPaperNode(currentPageHeight, pageContentHeight, obj);\n splitResult.forEach(({node, height}) => {\n const nextHeight = currentPageHeight + height;\n if (nextHeight < pageContentHeight) {\n questions.push(node);\n currentPageHeight += height;\n } else {\n pages.push({questions: [...questions]});\n questions.length = 0; // empty questions array\n\n currentPageHeight = height; // reset current height to the height of the question\n\n // add the question to the new page\n questions.push(node);\n }\n });\n break;\n case PaperNodeTypeEnum.headline:\n if (nextHeight < pageContentHeight) {\n questions.push(<SurveyHeadline key={index} text={text} />);\n currentPageHeight += heights.total;\n } else {\n pages.push({questions: [...questions]});\n questions.length = 0; // empty questions array\n\n // start creating new page\n questions.push(<SurveyHeadline key={index} text={text} />);\n currentPageHeight = heights.total; // reset height to height of current question\n }\n break;\n }\n });\n\n // for the cases where the last questions all fitted on the page.\n if (questions.length > 0) {\n pages.push({questions: [...questions]});\n }\n return pages;\n};\n","import React, {FC, ReactNode, useCallback, useMemo, useRef, useState, useEffect} from 'react';\nimport {makeStyles} from '@material-ui/core';\nimport {IParticipantSummary} from 'models';\nimport {PaperNodeTypeEnum} from '../../enums/PaperNodeTypeEnum';\nimport {IPaperQuestion} from '../../models/IPaperQuestion';\nimport {InstructionalTextForQuestion} from '../InstructionalTextForQuestion/InstructionalTextForQuestion';\nimport {Question} from '../Question/Question';\nimport MatrixQuestion from '../MatrixQuestion/MatrixQuestion';\nimport ParticipantsTable from '../ParticipantsTable/ParticipantsTable';\nimport SurveyHeadline from '../SurveyHeadline/SurveyHeadline';\nimport SurveyPage from '../SurveyPage/SurveyPage';\nimport {createSurveyPages} from '../../utils/createSurveyPages';\n\ninterface IProps {\n elements: Array<any>;\n headline?: string;\n header?: ReactNode;\n footer?: ReactNode;\n participantList?: IParticipantSummary[];\n pageNumbers?: boolean;\n}\n\nconst SurveyForPrint: FC<IProps> = ({elements, header, footer, headline = undefined, pageNumbers = false}) => {\n const [pages, setPages] = useState<Array<any>>([]);\n const objects = useRef<IPaperQuestion[]>([]);\n const measurePageRef = useRef<any>(null);\n\n const classes = useStyles();\n\n const afterQuestionMounted = useCallback((obj: IPaperQuestion) => {\n objects.current.push(obj);\n }, []);\n\n // add headline\n if (headline) {\n elements = [{type: PaperNodeTypeEnum.headline, title: headline}].concat(elements);\n }\n\n const qs = useMemo(\n () =>\n elements.map((el, index) => {\n const {type, questionId, title, html, choices, rows, columns, participantList} = el;\n switch (type) {\n case PaperNodeTypeEnum.checkbox:\n case PaperNodeTypeEnum.radioGroup:\n case PaperNodeTypeEnum.dropdown:\n case PaperNodeTypeEnum.rating:\n return (\n <Question\n key={`${index}-${questionId}`}\n text={title}\n htmlStr={html}\n id={questionId}\n choices={choices}\n afterMount={afterQuestionMounted}\n />\n );\n case PaperNodeTypeEnum.matrix:\n return (\n <MatrixQuestion\n key={`${index}-${questionId}`}\n text={title}\n id={questionId}\n rows={rows}\n columns={columns}\n afterMount={afterQuestionMounted}\n />\n );\n case PaperNodeTypeEnum.html:\n return (\n <InstructionalTextForQuestion\n key={`${index}-${questionId}`}\n html={html}\n afterMount={afterQuestionMounted}\n />\n );\n case PaperNodeTypeEnum.headline:\n return <SurveyHeadline text={title} afterMount={afterQuestionMounted} key={index} />;\n case PaperNodeTypeEnum.participantsTable:\n return <ParticipantsTable key={index} participants={participantList} afterMount={afterQuestionMounted} />;\n }\n throw new Error('Unknown question type');\n }),\n [elements, afterQuestionMounted]\n );\n\n useEffect(() => {\n // Build new questions here. In theory they should be the same size.\n if (!measurePageRef || !measurePageRef.current) return;\n setPages(createSurveyPages(objects.current, measurePageRef.current.clientHeight));\n }, []);\n\n const initialPage = (\n <SurveyPage ref={measurePageRef} header={header} footer={footer}>\n {qs}\n </SurveyPage>\n );\n\n const pagesToRender = pages.map((page, index) => {\n const extendedFooter = pageNumbers ? (\n <>\n <div>{footer}</div>\n <div className={classes.pageNumbers}>{index + 1}</div>\n </>\n ) : (\n footer\n );\n\n return (\n <SurveyPage key={index} header={header} footer={extendedFooter}>\n {page.questions}\n </SurveyPage>\n );\n });\n\n return <>{pagesToRender.length > 0 ? pagesToRender : initialPage}</>;\n};\n\nconst useStyles = makeStyles(() => ({\n pageNumbers: {\n textAlign: 'end',\n fontWeight: 'bold',\n padding: '0 8px',\n },\n}));\n\nexport default SurveyForPrint;\n","import React, {FC} from 'react';\nimport {Text} from 'components-lib';\ninterface IFooterTextProps {\n footerText: string;\n}\n\nexport const FooterText: FC<IFooterTextProps> = ({footerText}) => {\n return <Text.Paragraph>{footerText}</Text.Paragraph>;\n};\n","import React, {FC, Fragment} from 'react';\nimport {makeStyles} from '@material-ui/core';\n\nimport {Text} from 'components-lib';\n\ninterface IFooterLogoProps {\n footerUrl: string;\n}\n\nexport const FooterLogo: FC<IFooterLogoProps> = ({footerUrl}) => {\n const classes = useStyles();\n\n return (\n <Fragment>\n {!footerUrl ? (\n <Text.Caption>Loading...</Text.Caption>\n ) : (\n <img src={footerUrl} className={classes.footerLogo} alt=\"Footer logo\" loading=\"lazy\" />\n )}\n </Fragment>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n textAlign: 'center',\n },\n footerLogo: {\n height: '60px',\n color: theme.palette.grey[700],\n marginBottom: theme.spacing(2),\n },\n}));\n","import {makeStyles} from '@material-ui/core';\nimport React, {FC} from 'react';\n\nimport {FooterText} from './FooterText';\nimport {FooterLogo} from './FooterLogo';\n\ninterface IFooterProps {\n footerText: string;\n footerUrl: string;\n}\n\nconst Footer: FC<IFooterProps> = ({footerText, footerUrl}) => {\n const classes = useStyles();\n\n return (\n <div className={classes.root}>\n <FooterLogo footerUrl={footerUrl} />\n <FooterText footerText={footerText} />\n </div>\n );\n};\n\nconst useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n },\n}));\n\nexport default Footer;\n","import React, {FC} from 'react';\nimport {makeStyles} from '@material-ui/core';\n\nimport {Text} from 'components-lib';\ninterface IHeaderLogo {\n headerUrl?: string;\n}\n\nconst HeaderLogo: FC<IHeaderLogo> = ({headerUrl}) => {\n const classes = useStyles();\n\n return (\n <div className={classes.root}>\n {!headerUrl ? (\n <Text.Caption>Loading...</Text.Caption>\n ) : (\n <img src={headerUrl} className={classes.headerLogo} alt=\"Header logo\" loading=\"lazy\" />\n )}\n </div>\n );\n};\n\nconst useStyles = makeStyles(() => ({\n root: {\n textAlign: 'center',\n },\n headerLogo: {\n height: '60px',\n },\n}));\n\nexport default HeaderLogo;\n","import React, {FC, useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core';\n\ninterface IInstructionalTextProps {\n instructionText: string;\n}\n\nexport const InstructionalText: FC<IInstructionalTextProps> = ({instructionText}) => {\n const classes = useStyles();\n\n const Marker = useMemo(() => () => <span className={classes.marker}>X</span>, [classes]);\n const InstructionText = useMemo(() => () => <span>{instructionText}</span>, [instructionText]);\n\n const DefaultText = useMemo(\n () => () => (\n <div>\n Please mark an <Marker /> in the box next to your answer choice like this:{' '}\n <span className={classes.ballotBoxWithX}>☒</span>\n </div>\n ),\n [Marker, classes]\n );\n\n return (\n <div className={classes.root}>\n <DefaultText />\n {instructionText && <InstructionText />}\n </div>\n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n textAlign: 'center',\n padding: `${theme.spacing(3)}px ${theme.spacing(0)}px`,\n },\n marker: {\n fontWeight: 'bold',\n },\n ballotBoxWithX: {\n fontSize: '1.75em',\n },\n}));\n","import React, {useEffect, useMemo, useState} from 'react';\nimport {useHistory, useParams} from 'react-router-dom';\nimport {makeStyles} from '@material-ui/core';\n\nimport {toNumber} from 'utils';\nimport {pages as UIPages} from 'paths';\nimport {instrumentsApi} from 'api';\nimport {toastNotificationManager} from 'toast-notifications';\nimport {useAppDispatch} from 'hooks';\nimport {IInstrumentDetailsAndParticipantSummary} from 'models';\nimport {PaperNodeTypeEnum} from './enums/PaperNodeTypeEnum';\n\nimport {Button} from 'components-lib';\nimport SurveyForPrint from './components/SurveyForPrint/SurveyForPrint';\nimport Footer from './components/Footer/Footer';\nimport HeaderLogo from './components/Header/HeaderLogo';\nimport {InstructionalText} from './components/InstructionalText/InstructionalText';\n\nexport function InstrumentPrintPreviewView() {\n const [instrumentData, setInstrumentData] = useState<IInstrumentDetailsAndParticipantSummary>(null);\n\n const urlParams = useParams<{id: string}>();\n const instrumentId = toNumber(urlParams?.id);\n const dispatch = useAppDispatch();\n const history = useHistory();\n const classes = useStyles();\n\n const header = useMemo(\n () => (\n <>\n <HeaderLogo headerUrl={instrumentData?.templateData?.header?.url} />\n <InstructionalText instructionText={instrumentData?.templateData?.instructionText} />\n </>\n ),\n [instrumentData]\n );\n\n useEffect(() => {\n const fetchInstrumentData = async () => {\n try {\n const {parsedBody: instrumentData} = await instrumentsApi.getInstrumentItemsAndParticipantsById(instrumentId);\n if (instrumentData) {\n setInstrumentData(instrumentData);\n }\n } catch (err) {\n dispatch(toastNotificationManager.createErrorToastAction(err.parsedBody));\n }\n };\n\n fetchInstrumentData();\n }, [instrumentId, dispatch]);\n\n // temporarily override body and html styling\n const htmlElement = document.getElementsByTagName('html')[0];\n htmlElement.classList.add(classes.htmlOverride);\n document.body.classList.add(classes.bodyOverride);\n useEffect(() => {\n return () => {\n htmlElement.classList.remove(classes.htmlOverride);\n document.body.classList.remove(classes.bodyOverride);\n };\n }, [htmlElement.classList, classes.bodyOverride, classes.htmlOverride]);\n\n const printButtonHandler = () => {\n window.print();\n };\n\n const backToTemplateHandler = () => {\n history.push(`${UIPages.adminPortal.instruments.detailsRoot}/${instrumentId}`);\n };\n\n let surveysPerId: any[];\n if (instrumentData?.participantSummary) {\n surveysPerId = instrumentData?.participantSummary.map((participant) => {\n // TODO: 'JAEVALNUM' is hardcoded but should come from the backend\n const footer = (\n <Footer\n footerUrl={instrumentData?.templateData?.footer?.url}\n footerText={`JAEVALNUM ${participant.sessionTemplateIdentifier}`}\n />\n );\n\n return (\n <SurveyForPrint\n key={participant.userId}\n elements={instrumentData.templateData.elements}\n headline={instrumentData.templateData.templateName}\n participantList={instrumentData?.participantSummary}\n header={header}\n footer={footer}\n />\n );\n });\n }\n\n // add participant list pages\n if (surveysPerId?.length > 0) {\n const summaryElement = {\n type: PaperNodeTypeEnum.participantsTable,\n participantList: instrumentData?.participantSummary,\n };\n const summary = (\n <SurveyForPrint\n key={'participant-list'}\n elements={[summaryElement]}\n participantList={instrumentData?.participantSummary}\n header={header}\n headline={'Participant List'}\n />\n );\n surveysPerId.push(summary);\n }\n\n return (\n <>\n <div className={classes.noPrint}>\n <Button.Primary clickHandler={backToTemplateHandler}>Back</Button.Primary>\n <Button.Primary clickHandler={printButtonHandler}>Print</Button.Primary>\n </div>\n {instrumentData?.templateData ? surveysPerId : <div className={classes.noPrint}>Loading...</div>}\n </>\n );\n}\n\nconst useStyles = makeStyles(() => ({\n noPrint: {\n '@media print': {\n display: 'none',\n },\n textAlign: 'center',\n },\n htmlOverride: {\n height: 'auto',\n overflow: 'auto',\n },\n bodyOverride: {\n width: '800px', // fixed width to ensure proper scaling and positioning of questions and pages\n height: 'auto',\n margin: 'auto',\n overflow: 'auto',\n background: 'white',\n color: 'black',\n },\n}));\n","import React, {useMemo} from 'react';\nimport {Redirect, Route, Switch} from 'react-router-dom';\nimport {AdminPortal, AdminPortalNavigation} from 'admin';\nimport {InstrumentPrintPreviewView} from 'admin/library/instruments/printPreview';\nimport {Layout} from 'layout';\nimport {ErrorPage, NoPermissionsPage} from 'pages';\nimport {pages, paths} from 'paths';\nimport {AllRolesWithoutStudent, withRole} from 'permissions';\nimport {SurveyTakerMasterInstrument} from 'survey-taker';\n\nconst AdminPortalEnhanced = withRole(\n AllRolesWithoutStudent,\n `${paths.adminPortal.root}${paths.noPermission}`\n)(AdminPortal);\n\nexport function Routes() {\n const navigation = useMemo(() => <AdminPortalNavigation />, []);\n\n return (\n <>\n <Switch>\n <Route exact path={paths.root} render={() => <Redirect to={paths.adminPortal.root} />} />\n <Route path={pages.adminPortal.instruments.printPreview} component={InstrumentPrintPreviewView} />\n <Route path={paths.adminPortal.root}>\n <Layout navigation={navigation}>\n <AdminPortalEnhanced />\n <Route path={`${paths.adminPortal.root}${paths.noPermission}`}>\n <NoPermissionsPage />\n </Route>\n </Layout>\n </Route>\n <Route exact path={pages.survey.taker}>\n <Layout navigation={navigation}>\n <SurveyTakerMasterInstrument />\n </Layout>\n </Route>\n <Route path={pages.survey.takerLink}>\n <Layout navigation={navigation}>\n <Route path={`${pages.survey.takerLink}${paths.noPermission}`}>\n <NoPermissionsPage />\n </Route>\n </Layout>\n </Route>\n {/* we want to redirect explicitly because the react-router history and react-oidc history are out of sync in some situations */}\n <Route path={pages.authentication.callback} exact render={() => <Redirect to={window.location.pathname} />} />\n <Route exact path={paths.error} component={ErrorPage} />\n <Route exact path={paths.noPermission} component={NoPermissionsPage} />\n <Route component={ErrorPage} />\n </Switch>\n </>\n );\n}\n","import React, {Component} from 'react';\n\nclass ErrorBoundary extends Component {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n componentDidCatch(error: Error) {\n console.log(error);\n }\n\n static getDerivedStateFromError() {\n return <div>The system has found an unrecoverable error.</div>;\n }\n\n render() {\n return this.props.children;\n }\n}\n\nexport {ErrorBoundary};\n","import React, {useEffect, useMemo} from 'react';\nimport {BrowserRouter, Route, Switch} from 'react-router-dom';\nimport {Oidc, OidcSecure} from '@axa-fr/react-oidc-redux';\nimport CssBaseline from '@material-ui/core/CssBaseline';\nimport {GlobalCss} from 'styles';\nimport {Loading} from 'components-lib';\nimport {Layout} from 'layout';\nimport {AuthFailedPage, FileNotFoundPage} from 'pages';\nimport {pages} from 'paths';\nimport {usePermissions} from 'permissions';\nimport {Routes} from 'routes';\nimport {store} from 'store';\nimport {SurveyTakerGeneralInstrument} from 'survey-taker';\nimport {ToastNotification} from 'toast-notifications';\nimport {useUser, useUserId} from 'user';\nimport {config} from './config';\nimport {UserStore} from './utils';\nimport {ErrorBoundary} from './shared/components';\n\nconst {oidc} = config;\nconst LoadingComponent = () => <Loading />;\n\nfunction App() {\n useUser();\n const {userLoading} = useUserId();\n const {fetchUserRole, permissionsLoading, permissionsRequestTriggered} = usePermissions();\n const LoadingMemoized = useMemo(() => () => <Loading fullHeight />, []);\n\n useEffect(() => {\n !userLoading && !permissionsRequestTriggered && fetchUserRole();\n }, [userLoading, fetchUserRole, permissionsRequestTriggered]);\n\n const shouldRenderRoutes = !permissionsLoading && !userLoading;\n\n return (\n <ErrorBoundary>\n <BrowserRouter>\n <CssBaseline />\n <GlobalCss />\n <ToastNotification />\n <Switch>\n <Route exact path={pages.surveyGeneral.taker}>\n <Layout navigation={null} withActions={false}>\n <SurveyTakerGeneralInstrument />\n </Layout>\n </Route>\n <Route exact path={pages.fileNotFound.root}>\n <Layout navigation={null} withActions={false}>\n <FileNotFoundPage />\n </Layout>\n </Route>\n <Oidc\n isEnabled\n store={store}\n notAuthorized={AuthFailedPage}\n notAuthenticated={AuthFailedPage}\n sessionLostComponent={LoadingComponent}\n callbackComponentOverride={LoadingMemoized}\n configuration={oidc}\n UserStore={UserStore}\n >\n <OidcSecure isEnabled authenticating={LoadingMemoized}>\n {shouldRenderRoutes ? <Routes /> : <LoadingMemoized />}\n </OidcSecure>\n </Oidc>\n </Switch>\n </BrowserRouter>\n </ErrorBoundary>\n );\n}\n\nexport default App;\n","import {StylesProvider, ThemeProvider} from '@material-ui/core';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport Moment from 'react-moment';\nimport {Provider} from 'react-redux';\nimport 'resources/fonts/OpenSans-Regular.ttf';\nimport 'resources/fonts/OpenSans-SemiBold.ttf';\nimport {store} from 'store';\nimport {muiTheme} from 'styles';\nimport {dateFormat} from 'utils';\nimport App from './App';\n\nMoment.globalFormat = dateFormat;\n\nReactDOM.render(\n <React.StrictMode>\n <Provider store={store}>\n <StylesProvider injectFirst>\n <ThemeProvider theme={muiTheme}>\n <App />\n </ThemeProvider>\n </StylesProvider>\n </Provider>\n </React.StrictMode>,\n document.getElementById('root')\n);\n"],"sourceRoot":""}