@clickview/lite 0.0.13 → 0.0.14-dev.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["file://C:/ClickView Projects/@clickview/packages/lite/webpack/universalModuleDefinition","file://C:/ClickView Projects/@clickview/packages/lite/webpack/bootstrap","file://C:/ClickView Projects/@clickview/node_modules/copy-to-clipboard/index.js","file://C:/ClickView Projects/@clickview/node_modules/papaparse/papaparse.min.js","file://C:/ClickView Projects/@clickview/node_modules/react-copy-to-clipboard/lib/Component.js","file://C:/ClickView Projects/@clickview/node_modules/react-copy-to-clipboard/lib/index.js","file://C:/ClickView Projects/@clickview/node_modules/toggle-selection/index.js","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/classrooms/LiteClassroomsApplication.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/classrooms/components/classroom-activities-list/ClassroomActivitiesList.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/classrooms/components/classroom-activities-list/empty-state/ClassroomActivitiesListEmptyState.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/classrooms/components/classroom-details-form/ClassroomDetailsForm.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/classrooms/components/classroom-group-details-form/ClassroomGroupDetailsForm.tsx","webpack://@clickview/lite/./src/apps/classrooms/components/classroom-group-details-form/classroom-group-details-form.scss?365a","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/classrooms/components/classroom-group-dropdown/ClassroomGroupDropdown.tsx","webpack://@clickview/lite/./src/apps/classrooms/components/classroom-group-dropdown/classroom-group-dropdown.scss?366d","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/classrooms/components/classroom-group/ClassroomGroup.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/classrooms/components/classroom-item/ClassroomItem.tsx","webpack://@clickview/lite/./src/apps/classrooms/components/classroom-item/classroom-item.scss?e321","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/classrooms/components/classroom-star/ClassroomStar.tsx","webpack://@clickview/lite/./src/apps/classrooms/components/classroom-star/classroom-star.scss?33b5","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/classrooms/components/classroom-students-list/ClassroomStudentItem.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/classrooms/components/classroom-students-list/ClassroomStudentsList.tsx","webpack://@clickview/lite/./src/apps/classrooms/components/classroom-students-list/classroom-students-list.scss?e5ff","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/classrooms/components/classroom-students-list/empty-state/ClassroomStudentsListEmptyState.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/classrooms/components/colour-picker/ColourPicker.tsx","webpack://@clickview/lite/./src/apps/classrooms/components/colour-picker/colour-picker.scss?adf9","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/classrooms/components/edit-classroom-details/EditClassroomDetails.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/classrooms/components/edit-classroom-group-details/EditClassroomGroupDetails.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/classrooms/components/manage-classroom-group-item/ManageClassroomGroupItem.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/classrooms/components/manage-classroom-groups/ManageClassroomGroups.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/classrooms/components/manage-classroom-student-item/ManageClassroomStudentItem.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/classrooms/components/manage-classroom-students/ManageClassroomStudents.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/classrooms/components/manage-classroom-students/empty-state/ManageClassroomStudentsEmptyState.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/classrooms/components/tile-actions/TileActions.tsx","webpack://@clickview/lite/./src/apps/classrooms/components/tile-actions/tile-actions.scss?72c1","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/classrooms/enums/GroupColour.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/classrooms/flight-requests/ClassroomRequests.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/classrooms/utils/GroupHelper.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/classrooms/validation/ClassroomGroupValidationSchema.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/classrooms/validation/ClassroomValidationSchema.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/classrooms/views/add-students-to-classroom/AddStudentsToClassroomView.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/classrooms/views/classroom/ClassroomView.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/classrooms/views/classrooms/ClassroomsView.tsx","webpack://@clickview/lite/./src/apps/classrooms/views/classrooms/classrooms.scss?50d3","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/classrooms/views/classrooms/empty-state/ClassroomsEmptyState.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/classrooms/views/create-classroom-group/CreateClassroomGroupView.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/classrooms/views/create-classroom/CreateClassroomView.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/classrooms/views/delete-classroom-group/DeleteClassroomGroupView.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/classrooms/views/delete-classroom/DeleteClassroomView.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/classrooms/views/edit-classroom-group/EditClassroomGroupView.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/classrooms/views/edit-classroom/EditClassroomView.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/classrooms/views/manage-classroom/ManageClassroomView.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/classrooms/views/remove-students-from-classroom/RemoveStudentsFromClassroomView.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/content-updates/LiteContentUpdatesApplication.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/content-updates/utils/LiteContentUpdateAppLinks.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/content-updates/utils/index.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/dashboard/LiteDashboardApplication.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/default/LiteDefaultApplication.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/default/views/dev-error/LiteDevErrorView.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/default/views/error/LiteErrorView.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/default/views/index.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/default/views/mock-testing/MockRequests.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/default/views/mock-testing/MockView.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/default/views/not-found/LiteNotFoundView.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/embed/LiteEmbedApplication.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/embed/views/embed/EmbedView.tsx","webpack://@clickview/lite/./src/apps/embed/views/embed/embed.scss?911d","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/embed/views/index.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/notifications/LiteNotificationsApplication.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/notifications/constants/NotificationsAppVariables.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/playlists/LitePlaylistsApplication.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/search/LiteSearchApplication.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/search/components/filter-actions/FilterActions.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/search/components/filter-button/FilterButton.tsx","webpack://@clickview/lite/./src/apps/search/components/filter-button/filter-button.scss?2197","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/search/components/filter-types/checkbox-filter/CheckboxFilter.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/search/components/filter-types/dropdown-filter/DropdownFilter.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/search/components/filter-types/index.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/search/components/filter-types/more-filters/MoreFilters.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/search/components/filter-types/radio-filter/RadioFilter.tsx","webpack://@clickview/lite/./src/apps/search/components/filter-types/radio-filter/radio-filter.scss?30e5","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/search/components/filter-types/radio-filter/year-level/YearLevelRadioFilter.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/search/components/filter-types/switch-filter/SwitchFilter.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/search/components/index.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/search/components/reset-button/ResetButton.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/search/components/scoped-search-bar/ScopedSearchBar.tsx","webpack://@clickview/lite/./src/apps/search/components/scoped-search-bar/scoped-search-bar.scss?fbfd","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/search/components/search-filters/PartialSearchFilters.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/search/components/search-filters/SearchFilters.tsx","webpack://@clickview/lite/./src/apps/search/components/search-filters/search-filters.scss?d75c","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/search/constants/SearchAppVariables.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/search/flight-requests/SearchRequests.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/search/flight-requests/index.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/search/reducers/FilterReducer.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/search/reducers/index.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/search/utils/FilterHelper.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/search/utils/SearchHelper.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/search/utils/index.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/search/views/index.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/search/views/search-results/PartialSearchResultsView.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/search/views/search-results/SearchResultsView.tsx","webpack://@clickview/lite/./src/apps/search/views/search-results/search-results.scss?62c5","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/subjects/LiteSubjectApplication.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/upload/LiteUploadApplication.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/upload/components/upload-file-select/UploadFileSelect.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/upload/components/uploading-item/UploadingItem.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/upload/hooks/useGetUploadingItems.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/upload/services/CombineUploadsService.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/upload/services/FlightVideoUploadDataService.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/upload/services/VideoUploadService.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/upload/services/index.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/upload/views/cancel-upload/CancelUploadView.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/upload/views/edit-upload/EditUploadView.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/upload/views/my-uploads/DismissibleAlert.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/upload/views/my-uploads/MyUploadsView.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/user-manager/LiteUserManagerApplication.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/user-manager/components/bulk-upload-file-select/BulkUploadFileSelect.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/user-manager/components/delete-uploaded-student-popup/DeleteUploadedStudentPopup.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/user-manager/components/delete-uploaded-teacher-popup/DeleteUploadedTeacherPopup.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/user-manager/components/edit-student-details/EditStudentDetails.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/user-manager/components/edit-teacher-details/EditTeacherDetails.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/user-manager/components/edit-uploaded-user-popup/EditUploadedUserPopup.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/user-manager/components/index.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/user-manager/components/manage-users-list/ManageUsersList.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/user-manager/components/manage-users-list/partial-loading/PartialManageUsersList.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/user-manager/components/manage-users-list/students/ManageStudentItem.tsx","webpack://@clickview/lite/./src/apps/user-manager/components/manage-users-list/students/manage-student-item.scss?3fb1","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/user-manager/components/manage-users-list/teachers/ManageTeacherItem.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/user-manager/components/student-review-table/StudentReviewRow.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/user-manager/components/student-review-table/StudentReviewTable.tsx","webpack://@clickview/lite/./src/apps/user-manager/components/student-review-table/student-review-table.scss?be0f","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/user-manager/components/teacher-review-table/TeacherReviewRow.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/user-manager/components/teacher-review-table/TeacherReviewTable.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/user-manager/components/user-details-form/UserDetailsForm.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/user-manager/components/year-level-select/YearLevelSelect.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/user-manager/enums/index.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/user-manager/enums/mocks/MockUserType.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/user-manager/flight-requests/SchoolUserRequests.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/user-manager/flight-requests/YearLevelRequests.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/user-manager/reducers/UserUploadReducer.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/user-manager/validation/index.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/user-manager/validation/user-validation/UserValidationSchema.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/user-manager/views/create-student/CreateStudentView.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/user-manager/views/create-teacher/CreateTeacherView.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/user-manager/views/edit-student/EditStudentView.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/user-manager/views/edit-teacher/EditTeacherView.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/user-manager/views/remove-user/RemoveUserView.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/user-manager/views/school-student-manager/SchoolStudentManagerView.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/user-manager/views/school-student-manager/empty-state/SchoolStudentManagerEmptyState.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/user-manager/views/school-teacher-manager/SchoolTeacherManagerView.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/user-manager/views/school-teacher-manager/empty-state/SchoolTeacherManagerEmptyState.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/user-manager/views/student-upload-review/StudentUploadReviewView.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/apps/user-manager/views/teacher-upload-review/TeacherUploadReviewView.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/index.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/components/avatar/Avatar.tsx","webpack://@clickview/lite/./src/shared/components/avatar/avatar.scss?8d2f","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/components/clips/ClipItem.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/components/clips/Clips.tsx","webpack://@clickview/lite/./src/shared/components/clips/clips.scss?2a14","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/components/floating-player/FloatingPlayer.tsx","webpack://@clickview/lite/./src/shared/components/floating-player/floating-player.scss?45d5","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/components/immersive-reader/ImmersiveReader.tsx","webpack://@clickview/lite/./src/shared/components/immersive-reader/immersive-reader.scss?5e79","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/components/index.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/components/interactives/InteractiveItem.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/components/interactives/Interactives.tsx","webpack://@clickview/lite/./src/shared/components/interactives/interactives.scss?2fc5","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/components/pill-tab-selector/PillTabSelector.tsx","webpack://@clickview/lite/./src/shared/components/pill-tab-selector/pill-tab-selector.scss?9a90","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/components/play-page/Badges.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/components/play-page/Buttons.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/components/play-page/PlayPage.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/components/play-page/VideoTitle.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/components/resources/Resources.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/components/share/copy-embed-html/CopyEmbedHtml.tsx","webpack://@clickview/lite/./src/shared/components/share/copy-embed-html/copy-embed-html.scss?d4b1","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/components/share/sharee-item/ShareeItem.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/components/share/tokenized-typeahead/InputSelection.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/components/share/tokenized-typeahead/TokenizedTypeahead.tsx","webpack://@clickview/lite/./src/shared/components/share/tokenized-typeahead/tokenized-typeahead.scss?e9fc","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/components/synopsis/Synopsis.tsx","webpack://@clickview/lite/./src/shared/components/synopsis/synopsis.scss?97e6","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/components/toggle-switch/ToggleSwitch.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/components/user-options/UserOptions.tsx","webpack://@clickview/lite/./src/shared/components/user-options/user-options.scss?42b3","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/components/video-details/VideoDetails.tsx","webpack://@clickview/lite/./src/shared/components/video-details/video-details.scss?391b","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/components/video-info-button/VideoInfoButton.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/components/web-player/WebPlayer.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/constants/LiteActions.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/constants/LiteLayoutRegions.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/constants/LiteLayouts.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/constants/LiteRadioChannels.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/constants/RadioChannels.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/constants/Services.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/constants/WithStatements.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/constants/index.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/contexts/index.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/contexts/player/PlayerContext.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/errors/index.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/errors/not-found/LiteNotFoundError.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/flight-requests/AudienceRequests.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/flight-requests/SeriesRequests.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/flight-requests/ShareRequests.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/flight-requests/VideoRequests.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/flight-requests/index.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/hooks/index.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/hooks/useBulkCheckboxManager.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/hooks/useNavLock.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/hooks/useVideoMixin.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/hooks/useWindowListeners.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/layouts/embed-layout/EmbedLayout.hbs","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/layouts/embed-layout/EmbedLayoutComponent.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/layouts/embed-layout/EmbedLayoutView.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/layouts/index.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/layouts/teacher-layout/TeacherLayout.hbs","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/layouts/teacher-layout/TeacherLayoutComponent.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/layouts/teacher-layout/TeacherLayoutView.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/layouts/teacher-layout/drag-mask/DragMask.tsx","webpack://@clickview/lite/./src/shared/layouts/teacher-layout/drag-mask/drag-mask.scss?5197","webpack://@clickview/lite/./src/shared/layouts/teacher-layout/teacher-layout.scss?a910","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/services/FlightLibraryDataService.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/services/FlightSeriesDataService.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/services/FlightVideoDataService.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/services/index.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/utils/DialogHelper.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/utils/LiteAppLinkUtils.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/utils/index.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/views/edit-video/EditVideoView.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/views/favorite-videos/FavoriteVideosView.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/views/header/HeaderView.tsx","webpack://@clickview/lite/./src/shared/views/header/header.scss?b5af","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/views/index.ts","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/views/left-nav/CollapsedLeftNav.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/views/left-nav/ExpandedLeftNav.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/views/left-nav/LeftNavItem.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/views/left-nav/LeftNavView.tsx","webpack://@clickview/lite/./src/shared/views/left-nav/left-nav.scss?4792","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/views/left-nav/partial-loading/PartialLeftNavItem.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/views/play-shared/PlaySharedView.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/views/play/PlayView.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/views/series/SeriesView.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/views/share/ShareView.tsx","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/views/share/main-view/MainShareView.tsx","webpack://@clickview/lite/./src/shared/views/share/main-view/main-share.scss?bb9c","file://C:/ClickView Projects/@clickview/packages/lite/src/shared/views/share/settings-view/ShareSettingsView.tsx","webpack://@clickview/lite/./src/shared/views/share/settings-view/share-settings.scss?9755","file://C:/ClickView Projects/@clickview/packages/lite/src/styles/index.ts","webpack://@clickview/lite/./src/styles/theme-overrides.scss?012e","file://C:/ClickView Projects/@clickview/packages/lite/external \"@clickview/common\"","file://C:/ClickView Projects/@clickview/packages/lite/external \"@clickview/dashboard\"","file://C:/ClickView Projects/@clickview/packages/lite/external \"@clickview/playlists\"","file://C:/ClickView Projects/@clickview/packages/lite/external \"@clickview/shared\"","file://C:/ClickView Projects/@clickview/packages/lite/external \"ImmersiveReader\"","file://C:/ClickView Projects/@clickview/packages/lite/external \"Backbone\"","file://C:/ClickView Projects/@clickview/packages/lite/external \"Formik\"","file://C:/ClickView Projects/@clickview/packages/lite/external \"Handlebars\"","file://C:/ClickView Projects/@clickview/packages/lite/external \"marked\"","file://C:/ClickView Projects/@clickview/packages/lite/external \"React\"","file://C:/ClickView Projects/@clickview/packages/lite/external \"ReactBootstrap\"","file://C:/ClickView Projects/@clickview/packages/lite/external \"ReactCustomScrollbars\"","file://C:/ClickView Projects/@clickview/packages/lite/external \"ReactDOM\"","file://C:/ClickView Projects/@clickview/packages/lite/external \"reactDropzone\"","file://C:/ClickView Projects/@clickview/packages/lite/external \"ReactIntersectionObserver\"","file://C:/ClickView Projects/@clickview/packages/lite/external \"ReactRedux\"","file://C:/ClickView Projects/@clickview/packages/lite/external \"Yup\""],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;QCVA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;AClFa;;AAEb,sBAAsB,mBAAO,CAAC,sEAAkB;;AAEhD;AACA;AACA;AACA;AACA;;AAEA,2CAA2C,IAAI;;AAE/C;AACA;AACA,4BAA4B,UAAU;AACtC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA,SAAS,OAAO;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;AChHA;AACA;AACA;AACA;AACA;AA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","file":"bundle.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@clickview/common\"), require(\"@clickview/dashboard\"), require(\"@clickview/playlists\"), require(\"@clickview/shared\"), require(\"marked\"), require(\"React\"), require(\"reactDropzone\"), require(\"ReactCustomScrollbars\"), require(\"ReactBootstrap\"), require(\"ImmersiveReader\"), require(\"Backbone\"), require(\"Handlebars\"), require(\"ReactDOM\"), require(\"ReactRedux\"), require(\"ReactIntersectionObserver\"), require(\"Formik\"), require(\"Yup\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"@clickview/common\", \"@clickview/dashboard\", \"@clickview/playlists\", \"@clickview/shared\", \"marked\", \"React\", \"reactDropzone\", \"ReactCustomScrollbars\", \"ReactBootstrap\", \"ImmersiveReader\", \"Backbone\", \"Handlebars\", \"ReactDOM\", \"ReactRedux\", \"ReactIntersectionObserver\", \"Formik\", \"Yup\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"@clickview/lite\"] = factory(require(\"@clickview/common\"), require(\"@clickview/dashboard\"), require(\"@clickview/playlists\"), require(\"@clickview/shared\"), require(\"marked\"), require(\"React\"), require(\"reactDropzone\"), require(\"ReactCustomScrollbars\"), require(\"ReactBootstrap\"), require(\"ImmersiveReader\"), require(\"Backbone\"), require(\"Handlebars\"), require(\"ReactDOM\"), require(\"ReactRedux\"), require(\"ReactIntersectionObserver\"), require(\"Formik\"), require(\"Yup\"));\n\telse\n\t\troot[\"@clickview/lite\"] = factory(root[\"@clickview/common\"], root[\"@clickview/dashboard\"], root[\"@clickview/playlists\"], root[\"@clickview/shared\"], root[\"marked\"], root[\"React\"], root[\"reactDropzone\"], root[\"ReactCustomScrollbars\"], root[\"ReactBootstrap\"], root[\"ImmersiveReader\"], root[\"Backbone\"], root[\"Handlebars\"], root[\"ReactDOM\"], root[\"ReactRedux\"], root[\"ReactIntersectionObserver\"], root[\"Formik\"], root[\"Yup\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE__clickview_common__, __WEBPACK_EXTERNAL_MODULE__clickview_dashboard__, __WEBPACK_EXTERNAL_MODULE__clickview_playlists__, __WEBPACK_EXTERNAL_MODULE__clickview_shared__, __WEBPACK_EXTERNAL_MODULE_marked__, __WEBPACK_EXTERNAL_MODULE_react__, __WEBPACK_EXTERNAL_MODULE_react_dropzone__, __WEBPACK_EXTERNAL_MODULE_react_custom_scrollbars__, __WEBPACK_EXTERNAL_MODULE_react_bootstrap__, __WEBPACK_EXTERNAL_MODULE__microsoft_immersive_reader_sdk__, __WEBPACK_EXTERNAL_MODULE_backbone__, __WEBPACK_EXTERNAL_MODULE_handlebars__, __WEBPACK_EXTERNAL_MODULE_react_dom__, __WEBPACK_EXTERNAL_MODULE_react_redux__, __WEBPACK_EXTERNAL_MODULE_react_intersection_observer__, __WEBPACK_EXTERNAL_MODULE_formik__, __WEBPACK_EXTERNAL_MODULE_yup__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/index.ts\");\n","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","/* @license\nPapa Parse\nv5.2.0\nhttps://github.com/mholt/PapaParse\nLicense: MIT\n*/\n!function(e,t){\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof module&&\"undefined\"!=typeof exports?module.exports=t():e.Papa=t()}(this,function s(){\"use strict\";var f=\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:void 0!==f?f:{};var n=!f.document&&!!f.postMessage,o=n&&/blob:/i.test((f.location||{}).protocol),a={},h=0,b={parse:function(e,t){var i=(t=t||{}).dynamicTyping||!1;U(i)&&(t.dynamicTypingFunction=i,i={});if(t.dynamicTyping=i,t.transform=!!U(t.transform)&&t.transform,t.worker&&b.WORKERS_SUPPORTED){var r=function(){if(!b.WORKERS_SUPPORTED)return!1;var e=(i=f.URL||f.webkitURL||null,r=s.toString(),b.BLOB_URL||(b.BLOB_URL=i.createObjectURL(new Blob([\"(\",r,\")();\"],{type:\"text/javascript\"})))),t=new f.Worker(e);var i,r;return t.onmessage=_,t.id=h++,a[t.id]=t}();return r.userStep=t.step,r.userChunk=t.chunk,r.userComplete=t.complete,r.userError=t.error,t.step=U(t.step),t.chunk=U(t.chunk),t.complete=U(t.complete),t.error=U(t.error),delete t.worker,void r.postMessage({input:e,config:t,workerId:r.id})}var n=null;b.NODE_STREAM_INPUT,\"string\"==typeof e?n=t.download?new l(t):new p(t):!0===e.readable&&U(e.read)&&U(e.on)?n=new g(t):(f.File&&e instanceof File||e instanceof Object)&&(n=new c(t));return n.stream(e)},unparse:function(e,t){var n=!1,_=!0,m=\",\",v=\"\\r\\n\",s='\"',a=s+s,i=!1,r=null;!function(){if(\"object\"!=typeof t)return;\"string\"!=typeof t.delimiter||b.BAD_DELIMITERS.filter(function(e){return-1!==t.delimiter.indexOf(e)}).length||(m=t.delimiter);(\"boolean\"==typeof t.quotes||\"function\"==typeof t.quotes||Array.isArray(t.quotes))&&(n=t.quotes);\"boolean\"!=typeof t.skipEmptyLines&&\"string\"!=typeof t.skipEmptyLines||(i=t.skipEmptyLines);\"string\"==typeof t.newline&&(v=t.newline);\"string\"==typeof t.quoteChar&&(s=t.quoteChar);\"boolean\"==typeof t.header&&(_=t.header);if(Array.isArray(t.columns)){if(0===t.columns.length)throw new Error(\"Option columns is empty\");r=t.columns}void 0!==t.escapeChar&&(a=t.escapeChar+s)}();var o=new RegExp(q(s),\"g\");\"string\"==typeof e&&(e=JSON.parse(e));if(Array.isArray(e)){if(!e.length||Array.isArray(e[0]))return u(null,e,i);if(\"object\"==typeof e[0])return u(r||h(e[0]),e,i)}else if(\"object\"==typeof e)return\"string\"==typeof e.data&&(e.data=JSON.parse(e.data)),Array.isArray(e.data)&&(e.fields||(e.fields=e.meta&&e.meta.fields),e.fields||(e.fields=Array.isArray(e.data[0])?e.fields:h(e.data[0])),Array.isArray(e.data[0])||\"object\"==typeof e.data[0]||(e.data=[e.data])),u(e.fields||[],e.data||[],i);throw new Error(\"Unable to serialize unrecognized input\");function h(e){if(\"object\"!=typeof e)return[];var t=[];for(var i in e)t.push(i);return t}function u(e,t,i){var r=\"\";\"string\"==typeof e&&(e=JSON.parse(e)),\"string\"==typeof t&&(t=JSON.parse(t));var n=Array.isArray(e)&&0<e.length,s=!Array.isArray(t[0]);if(n&&_){for(var a=0;a<e.length;a++)0<a&&(r+=m),r+=y(e[a],a);0<t.length&&(r+=v)}for(var o=0;o<t.length;o++){var h=n?e.length:t[o].length,u=!1,f=n?0===Object.keys(t[o]).length:0===t[o].length;if(i&&!n&&(u=\"greedy\"===i?\"\"===t[o].join(\"\").trim():1===t[o].length&&0===t[o][0].length),\"greedy\"===i&&n){for(var d=[],l=0;l<h;l++){var c=s?e[l]:l;d.push(t[o][c])}u=\"\"===d.join(\"\").trim()}if(!u){for(var p=0;p<h;p++){0<p&&!f&&(r+=m);var g=n&&s?e[p]:p;r+=y(t[o][g],p)}o<t.length-1&&(!i||0<h&&!f)&&(r+=v)}}return r}function y(e,t){if(null==e)return\"\";if(e.constructor===Date)return JSON.stringify(e).slice(1,25);var i=e.toString().replace(o,a),r=\"boolean\"==typeof n&&n||\"function\"==typeof n&&n(e,t)||Array.isArray(n)&&n[t]||function(e,t){for(var i=0;i<t.length;i++)if(-1<e.indexOf(t[i]))return!0;return!1}(i,b.BAD_DELIMITERS)||-1<i.indexOf(m)||\" \"===i.charAt(0)||\" \"===i.charAt(i.length-1);return r?s+i+s:i}}};if(b.RECORD_SEP=String.fromCharCode(30),b.UNIT_SEP=String.fromCharCode(31),b.BYTE_ORDER_MARK=\"\\ufeff\",b.BAD_DELIMITERS=[\"\\r\",\"\\n\",'\"',b.BYTE_ORDER_MARK],b.WORKERS_SUPPORTED=!n&&!!f.Worker,b.NODE_STREAM_INPUT=1,b.LocalChunkSize=10485760,b.RemoteChunkSize=5242880,b.DefaultDelimiter=\",\",b.Parser=w,b.ParserHandle=i,b.NetworkStreamer=l,b.FileStreamer=c,b.StringStreamer=p,b.ReadableStreamStreamer=g,f.jQuery){var d=f.jQuery;d.fn.parse=function(o){var i=o.config||{},h=[];return this.each(function(e){if(!(\"INPUT\"===d(this).prop(\"tagName\").toUpperCase()&&\"file\"===d(this).attr(\"type\").toLowerCase()&&f.FileReader)||!this.files||0===this.files.length)return!0;for(var t=0;t<this.files.length;t++)h.push({file:this.files[t],inputElem:this,instanceConfig:d.extend({},i)})}),e(),this;function e(){if(0!==h.length){var e,t,i,r,n=h[0];if(U(o.before)){var s=o.before(n.file,n.inputElem);if(\"object\"==typeof s){if(\"abort\"===s.action)return e=\"AbortError\",t=n.file,i=n.inputElem,r=s.reason,void(U(o.error)&&o.error({name:e},t,i,r));if(\"skip\"===s.action)return void u();\"object\"==typeof s.config&&(n.instanceConfig=d.extend(n.instanceConfig,s.config))}else if(\"skip\"===s)return void u()}var a=n.instanceConfig.complete;n.instanceConfig.complete=function(e){U(a)&&a(e,n.file,n.inputElem),u()},b.parse(n.file,n.instanceConfig)}else U(o.complete)&&o.complete()}function u(){h.splice(0,1),e()}}}function u(e){this._handle=null,this._finished=!1,this._completed=!1,this._halted=!1,this._input=null,this._baseIndex=0,this._partialLine=\"\",this._rowCount=0,this._start=0,this._nextChunk=null,this.isFirstChunk=!0,this._completeResults={data:[],errors:[],meta:{}},function(e){var t=E(e);t.chunkSize=parseInt(t.chunkSize),e.step||e.chunk||(t.chunkSize=null);this._handle=new i(t),(this._handle.streamer=this)._config=t}.call(this,e),this.parseChunk=function(e,t){if(this.isFirstChunk&&U(this._config.beforeFirstChunk)){var i=this._config.beforeFirstChunk(e);void 0!==i&&(e=i)}this.isFirstChunk=!1,this._halted=!1;var r=this._partialLine+e;this._partialLine=\"\";var n=this._handle.parse(r,this._baseIndex,!this._finished);if(!this._handle.paused()&&!this._handle.aborted()){var s=n.meta.cursor;this._finished||(this._partialLine=r.substring(s-this._baseIndex),this._baseIndex=s),n&&n.data&&(this._rowCount+=n.data.length);var a=this._finished||this._config.preview&&this._rowCount>=this._config.preview;if(o)f.postMessage({results:n,workerId:b.WORKER_ID,finished:a});else if(U(this._config.chunk)&&!t){if(this._config.chunk(n,this._handle),this._handle.paused()||this._handle.aborted())return void(this._halted=!0);n=void 0,this._completeResults=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(n.data),this._completeResults.errors=this._completeResults.errors.concat(n.errors),this._completeResults.meta=n.meta),this._completed||!a||!U(this._config.complete)||n&&n.meta.aborted||(this._config.complete(this._completeResults,this._input),this._completed=!0),a||n&&n.meta.paused||this._nextChunk(),n}this._halted=!0},this._sendError=function(e){U(this._config.error)?this._config.error(e):o&&this._config.error&&f.postMessage({workerId:b.WORKER_ID,error:e,finished:!1})}}function l(e){var r;(e=e||{}).chunkSize||(e.chunkSize=b.RemoteChunkSize),u.call(this,e),this._nextChunk=n?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(e){this._input=e,this._nextChunk()},this._readChunk=function(){if(this._finished)this._chunkLoaded();else{if(r=new XMLHttpRequest,this._config.withCredentials&&(r.withCredentials=this._config.withCredentials),n||(r.onload=y(this._chunkLoaded,this),r.onerror=y(this._chunkError,this)),r.open(this._config.downloadRequestBody?\"POST\":\"GET\",this._input,!n),this._config.downloadRequestHeaders){var e=this._config.downloadRequestHeaders;for(var t in e)r.setRequestHeader(t,e[t])}if(this._config.chunkSize){var i=this._start+this._config.chunkSize-1;r.setRequestHeader(\"Range\",\"bytes=\"+this._start+\"-\"+i)}try{r.send(this._config.downloadRequestBody)}catch(e){this._chunkError(e.message)}n&&0===r.status&&this._chunkError()}},this._chunkLoaded=function(){4===r.readyState&&(r.status<200||400<=r.status?this._chunkError():(this._start+=this._config.chunkSize?this._config.chunkSize:r.responseText.length,this._finished=!this._config.chunkSize||this._start>=function(e){var t=e.getResponseHeader(\"Content-Range\");if(null===t)return-1;return parseInt(t.substring(t.lastIndexOf(\"/\")+1))}(r),this.parseChunk(r.responseText)))},this._chunkError=function(e){var t=r.statusText||e;this._sendError(new Error(t))}}function c(e){var r,n;(e=e||{}).chunkSize||(e.chunkSize=b.LocalChunkSize),u.call(this,e);var s=\"undefined\"!=typeof FileReader;this.stream=function(e){this._input=e,n=e.slice||e.webkitSlice||e.mozSlice,s?((r=new FileReader).onload=y(this._chunkLoaded,this),r.onerror=y(this._chunkError,this)):r=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount<this._config.preview)||this._readChunk()},this._readChunk=function(){var e=this._input;if(this._config.chunkSize){var t=Math.min(this._start+this._config.chunkSize,this._input.size);e=n.call(e,this._start,t)}var i=r.readAsText(e,this._config.encoding);s||this._chunkLoaded({target:{result:i}})},this._chunkLoaded=function(e){this._start+=this._config.chunkSize,this._finished=!this._config.chunkSize||this._start>=this._input.size,this.parseChunk(e.target.result)},this._chunkError=function(){this._sendError(r.error)}}function p(e){var i;u.call(this,e=e||{}),this.stream=function(e){return i=e,this._nextChunk()},this._nextChunk=function(){if(!this._finished){var e,t=this._config.chunkSize;return t?(e=i.substring(0,t),i=i.substring(t)):(e=i,i=\"\"),this._finished=!i,this.parseChunk(e)}}}function g(e){u.call(this,e=e||{});var t=[],i=!0,r=!1;this.pause=function(){u.prototype.pause.apply(this,arguments),this._input.pause()},this.resume=function(){u.prototype.resume.apply(this,arguments),this._input.resume()},this.stream=function(e){this._input=e,this._input.on(\"data\",this._streamData),this._input.on(\"end\",this._streamEnd),this._input.on(\"error\",this._streamError)},this._checkIsFinished=function(){r&&1===t.length&&(this._finished=!0)},this._nextChunk=function(){this._checkIsFinished(),t.length?this.parseChunk(t.shift()):i=!0},this._streamData=y(function(e){try{t.push(\"string\"==typeof e?e:e.toString(this._config.encoding)),i&&(i=!1,this._checkIsFinished(),this.parseChunk(t.shift()))}catch(e){this._streamError(e)}},this),this._streamError=y(function(e){this._streamCleanUp(),this._sendError(e)},this),this._streamEnd=y(function(){this._streamCleanUp(),r=!0,this._streamData(\"\")},this),this._streamCleanUp=y(function(){this._input.removeListener(\"data\",this._streamData),this._input.removeListener(\"end\",this._streamEnd),this._input.removeListener(\"error\",this._streamError)},this)}function i(m){var a,o,h,r=Math.pow(2,53),n=-r,s=/^\\s*-?(\\d+\\.?|\\.\\d+|\\d+\\.\\d+)(e[-+]?\\d+)?\\s*$/,u=/(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))/,t=this,i=0,f=0,d=!1,e=!1,l=[],c={data:[],errors:[],meta:{}};if(U(m.step)){var p=m.step;m.step=function(e){if(c=e,_())g();else{if(g(),0===c.data.length)return;i+=e.data.length,m.preview&&i>m.preview?o.abort():(c.data=c.data[0],p(c,t))}}}function v(e){return\"greedy\"===m.skipEmptyLines?\"\"===e.join(\"\").trim():1===e.length&&0===e[0].length}function g(){if(c&&h&&(k(\"Delimiter\",\"UndetectableDelimiter\",\"Unable to auto-detect delimiting character; defaulted to '\"+b.DefaultDelimiter+\"'\"),h=!1),m.skipEmptyLines)for(var e=0;e<c.data.length;e++)v(c.data[e])&&c.data.splice(e--,1);return _()&&function(){if(!c)return;function e(e){U(m.transformHeader)&&(e=m.transformHeader(e)),l.push(e)}if(Array.isArray(c.data[0])){for(var t=0;_()&&t<c.data.length;t++)c.data[t].forEach(e);c.data.splice(0,1)}else c.data.forEach(e)}(),function(){if(!c||!m.header&&!m.dynamicTyping&&!m.transform)return c;function e(e,t){var i,r=m.header?{}:[];for(i=0;i<e.length;i++){var n=i,s=e[i];m.header&&(n=i>=l.length?\"__parsed_extra\":l[i]),m.transform&&(s=m.transform(s,n)),s=y(n,s),\"__parsed_extra\"===n?(r[n]=r[n]||[],r[n].push(s)):r[n]=s}return m.header&&(i>l.length?k(\"FieldMismatch\",\"TooManyFields\",\"Too many fields: expected \"+l.length+\" fields but parsed \"+i,f+t):i<l.length&&k(\"FieldMismatch\",\"TooFewFields\",\"Too few fields: expected \"+l.length+\" fields but parsed \"+i,f+t)),r}var t=1;!c.data.length||Array.isArray(c.data[0])?(c.data=c.data.map(e),t=c.data.length):c.data=e(c.data,0);m.header&&c.meta&&(c.meta.fields=l);return f+=t,c}()}function _(){return m.header&&0===l.length}function y(e,t){return i=e,m.dynamicTypingFunction&&void 0===m.dynamicTyping[i]&&(m.dynamicTyping[i]=m.dynamicTypingFunction(i)),!0===(m.dynamicTyping[i]||m.dynamicTyping)?\"true\"===t||\"TRUE\"===t||\"false\"!==t&&\"FALSE\"!==t&&(function(e){if(s.test(e)){var t=parseFloat(e);if(n<t&&t<r)return!0}return!1}(t)?parseFloat(t):u.test(t)?new Date(t):\"\"===t?null:t):t;var i}function k(e,t,i,r){var n={type:e,code:t,message:i};void 0!==r&&(n.row=r),c.errors.push(n)}this.parse=function(e,t,i){var r=m.quoteChar||'\"';if(m.newline||(m.newline=function(e,t){e=e.substring(0,1048576);var i=new RegExp(q(t)+\"([^]*?)\"+q(t),\"gm\"),r=(e=e.replace(i,\"\")).split(\"\\r\"),n=e.split(\"\\n\"),s=1<n.length&&n[0].length<r[0].length;if(1===r.length||s)return\"\\n\";for(var a=0,o=0;o<r.length;o++)\"\\n\"===r[o][0]&&a++;return a>=r.length/2?\"\\r\\n\":\"\\r\"}(e,r)),h=!1,m.delimiter)U(m.delimiter)&&(m.delimiter=m.delimiter(e),c.meta.delimiter=m.delimiter);else{var n=function(e,t,i,r,n){var s,a,o,h;n=n||[\",\",\"\\t\",\"|\",\";\",b.RECORD_SEP,b.UNIT_SEP];for(var u=0;u<n.length;u++){var f=n[u],d=0,l=0,c=0;o=void 0;for(var p=new w({comments:r,delimiter:f,newline:t,preview:10}).parse(e),g=0;g<p.data.length;g++)if(i&&v(p.data[g]))c++;else{var _=p.data[g].length;l+=_,void 0!==o?0<_&&(d+=Math.abs(_-o),o=_):o=_}0<p.data.length&&(l/=p.data.length-c),(void 0===a||d<=a)&&(void 0===h||h<l)&&1.99<l&&(a=d,s=f,h=l)}return{successful:!!(m.delimiter=s),bestDelimiter:s}}(e,m.newline,m.skipEmptyLines,m.comments,m.delimitersToGuess);n.successful?m.delimiter=n.bestDelimiter:(h=!0,m.delimiter=b.DefaultDelimiter),c.meta.delimiter=m.delimiter}var s=E(m);return m.preview&&m.header&&s.preview++,a=e,o=new w(s),c=o.parse(a,t,i),g(),d?{meta:{paused:!0}}:c||{meta:{paused:!1}}},this.paused=function(){return d},this.pause=function(){d=!0,o.abort(),a=U(m.chunk)?\"\":a.substring(o.getCharIndex())},this.resume=function(){t.streamer._halted?(d=!1,t.streamer.parseChunk(a,!0)):setTimeout(t.resume,3)},this.aborted=function(){return e},this.abort=function(){e=!0,o.abort(),c.meta.aborted=!0,U(m.complete)&&m.complete(c),a=\"\"}}function q(e){return e.replace(/[.*+?^${}()|[\\]\\\\]/g,\"\\\\$&\")}function w(e){var O,D=(e=e||{}).delimiter,I=e.newline,T=e.comments,A=e.step,L=e.preview,F=e.fastMode,z=O=void 0===e.quoteChar?'\"':e.quoteChar;if(void 0!==e.escapeChar&&(z=e.escapeChar),(\"string\"!=typeof D||-1<b.BAD_DELIMITERS.indexOf(D))&&(D=\",\"),T===D)throw new Error(\"Comment character same as delimiter\");!0===T?T=\"#\":(\"string\"!=typeof T||-1<b.BAD_DELIMITERS.indexOf(T))&&(T=!1),\"\\n\"!==I&&\"\\r\"!==I&&\"\\r\\n\"!==I&&(I=\"\\n\");var M=0,j=!1;this.parse=function(a,t,i){if(\"string\"!=typeof a)throw new Error(\"Input must be a string\");var r=a.length,e=D.length,n=I.length,s=T.length,o=U(A),h=[],u=[],f=[],d=M=0;if(!a)return R();if(F||!1!==F&&-1===a.indexOf(O)){for(var l=a.split(I),c=0;c<l.length;c++){if(f=l[c],M+=f.length,c!==l.length-1)M+=I.length;else if(i)return R();if(!T||f.substring(0,s)!==T){if(o){if(h=[],b(f.split(D)),S(),j)return R()}else b(f.split(D));if(L&&L<=c)return h=h.slice(0,L),R(!0)}}return R()}for(var p=a.indexOf(D,M),g=a.indexOf(I,M),_=new RegExp(q(z)+q(O),\"g\"),m=a.indexOf(O,M);;)if(a[M]!==O)if(T&&0===f.length&&a.substring(M,M+s)===T){if(-1===g)return R();M=g+n,g=a.indexOf(I,M),p=a.indexOf(D,M)}else{if(-1!==p&&(p<g||-1===g)){if(!(p<m)){f.push(a.substring(M,p)),M=p+e,p=a.indexOf(D,M);continue}var v=x(p,m,g);if(v&&void 0!==v.nextDelim){p=v.nextDelim,m=v.quoteSearch,f.push(a.substring(M,p)),M=p+e,p=a.indexOf(D,M);continue}}if(-1===g)break;if(f.push(a.substring(M,g)),C(g+n),o&&(S(),j))return R();if(L&&h.length>=L)return R(!0)}else for(m=M,M++;;){if(-1===(m=a.indexOf(O,m+1)))return i||u.push({type:\"Quotes\",code:\"MissingQuotes\",message:\"Quoted field unterminated\",row:h.length,index:M}),E();if(m===r-1)return E(a.substring(M,m).replace(_,O));if(O!==z||a[m+1]!==z){if(O===z||0===m||a[m-1]!==z){-1!==p&&p<m+1&&(p=a.indexOf(D,m+1)),-1!==g&&g<m+1&&(g=a.indexOf(I,m+1));var y=w(-1===g?p:Math.min(p,g));if(a[m+1+y]===D){f.push(a.substring(M,m).replace(_,O)),a[M=m+1+y+e]!==O&&(m=a.indexOf(O,M)),p=a.indexOf(D,M),g=a.indexOf(I,M);break}var k=w(g);if(a.substring(m+1+k,m+1+k+n)===I){if(f.push(a.substring(M,m).replace(_,O)),C(m+1+k+n),p=a.indexOf(D,M),m=a.indexOf(O,M),o&&(S(),j))return R();if(L&&h.length>=L)return R(!0);break}u.push({type:\"Quotes\",code:\"InvalidQuotes\",message:\"Trailing quote on quoted field is malformed\",row:h.length,index:M}),m++}}else m++}return E();function b(e){h.push(e),d=M}function w(e){var t=0;if(-1!==e){var i=a.substring(m+1,e);i&&\"\"===i.trim()&&(t=i.length)}return t}function E(e){return i||(void 0===e&&(e=a.substring(M)),f.push(e),M=r,b(f),o&&S()),R()}function C(e){M=e,b(f),f=[],g=a.indexOf(I,M)}function R(e){return{data:h,errors:u,meta:{delimiter:D,linebreak:I,aborted:j,truncated:!!e,cursor:d+(t||0)}}}function S(){A(R()),h=[],u=[]}function x(e,t,i){var r={nextDelim:void 0,quoteSearch:void 0},n=a.indexOf(O,t+1);if(t<e&&e<n&&(n<i||-1===i)){var s=a.indexOf(D,n);if(-1===s)return r;n<s&&(n=a.indexOf(O,n+1)),r=x(s,n,i)}else r={nextDelim:e,quoteSearch:t};return r}},this.abort=function(){j=!0},this.getCharIndex=function(){return M}}function _(e){var t=e.data,i=a[t.workerId],r=!1;if(t.error)i.userError(t.error,t.file);else if(t.results&&t.results.data){var n={abort:function(){r=!0,m(t.workerId,{data:[],errors:[],meta:{aborted:!0}})},pause:v,resume:v};if(U(i.userStep)){for(var s=0;s<t.results.data.length&&(i.userStep({data:t.results.data[s],errors:t.results.errors,meta:t.results.meta},n),!r);s++);delete t.results}else U(i.userChunk)&&(i.userChunk(t.results,n,t.file),delete t.results)}t.finished&&!r&&m(t.workerId,t.results)}function m(e,t){var i=a[e];U(i.userComplete)&&i.userComplete(t),i.terminate(),delete a[e]}function v(){throw new Error(\"Not implemented.\")}function E(e){if(\"object\"!=typeof e||null===e)return e;var t=Array.isArray(e)?[]:{};for(var i in e)t[i]=E(e[i]);return t}function y(e,t){return function(){e.apply(t,arguments)}}function U(e){return\"function\"==typeof e}return o&&(f.onmessage=function(e){var t=e.data;void 0===b.WORKER_ID&&t&&(b.WORKER_ID=t.workerId);if(\"string\"==typeof t.input)f.postMessage({workerId:b.WORKER_ID,results:b.parse(t.input,t.config),finished:!0});else if(f.File&&t.input instanceof File||t.input instanceof Object){var i=b.parse(t.input,t.config);i&&f.postMessage({workerId:b.WORKER_ID,results:i,finished:!0})}}),(l.prototype=Object.create(u.prototype)).constructor=l,(c.prototype=Object.create(u.prototype)).constructor=c,(p.prototype=Object.create(p.prototype)).constructor=p,(g.prototype=Object.create(u.prototype)).constructor=g,b});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CopyToClipboard = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _copyToClipboard = _interopRequireDefault(require(\"copy-to-clipboard\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\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\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CopyToClipboard =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(CopyToClipboard, _React$PureComponent);\n\n function CopyToClipboard() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, CopyToClipboard);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(CopyToClipboard)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n var _this$props = _this.props,\n text = _this$props.text,\n onCopy = _this$props.onCopy,\n children = _this$props.children,\n options = _this$props.options;\n\n var elem = _react[\"default\"].Children.only(children);\n\n var result = (0, _copyToClipboard[\"default\"])(text, options);\n\n if (onCopy) {\n onCopy(text, result);\n } // Bypass onClick if it was present\n\n\n if (elem && elem.props && typeof elem.props.onClick === 'function') {\n elem.props.onClick(event);\n }\n });\n\n return _this;\n }\n\n _createClass(CopyToClipboard, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n _text = _this$props2.text,\n _onCopy = _this$props2.onCopy,\n _options = _this$props2.options,\n children = _this$props2.children,\n props = _objectWithoutProperties(_this$props2, [\"text\", \"onCopy\", \"options\", \"children\"]);\n\n var elem = _react[\"default\"].Children.only(children);\n\n return _react[\"default\"].cloneElement(elem, _objectSpread({}, props, {\n onClick: this.onClick\n }));\n }\n }]);\n\n return CopyToClipboard;\n}(_react[\"default\"].PureComponent);\n\nexports.CopyToClipboard = CopyToClipboard;\n\n_defineProperty(CopyToClipboard, \"defaultProps\", {\n onCopy: undefined,\n options: undefined\n});","\"use strict\";\n\nvar _require = require('./Component'),\n CopyToClipboard = _require.CopyToClipboard;\n\nCopyToClipboard.CopyToClipboard = CopyToClipboard;\nmodule.exports = CopyToClipboard;","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n","import React from 'react';\r\n\r\nimport { Core, ReactApplication, HashObject } from '@clickview/common';\r\nimport { LayoutRegions } from '@clickview/shared';\r\n\r\nimport { AppChannels, Layouts } from 'shared/constants';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts';\r\n\r\nimport { ClassroomsView } from 'apps/classrooms/views/classrooms/ClassroomsView';\r\nimport { CreateClassroomView } from 'apps/classrooms/views/create-classroom/CreateClassroomView';\r\nimport { ClassroomView } from 'apps/classrooms/views/classroom/ClassroomView';\r\nimport { EditClassroomView } from 'apps/classrooms/views/edit-classroom/EditClassroomView';\r\nimport { DeleteClassroomView } from 'apps/classrooms/views/delete-classroom/DeleteClassroomView';\r\nimport { ManageClassroomView, ClassroomManagerTabs } from 'apps/classrooms/views/manage-classroom/ManageClassroomView';\r\nimport { RemoveStudentsFromClassroomView } from 'apps/classrooms/views/remove-students-from-classroom/RemoveStudentsFromClassroomView';\r\nimport { AddStudentsToClassroomView } from 'apps/classrooms/views/add-students-to-classroom/AddStudentsToClassroomView';\r\nimport { CreateClassroomGroupView } from 'apps/classrooms/views/create-classroom-group/CreateClassroomGroupView';\r\nimport { EditClassroomGroupView } from 'apps/classrooms/views/edit-classroom-group/EditClassroomGroupView';\r\nimport { DeleteClassroomGroupView } from 'apps/classrooms/views/delete-classroom-group/DeleteClassroomGroupView';\r\n\r\nclass ClassroomsAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.CLASSROOMS;\r\n }\r\n\r\n protected get appRoutes(): HashObject {\r\n return {\r\n 'classrooms(/)': 'index',\r\n 'classrooms/:id': 'classroom',\r\n 'classrooms/:id/manage': 'manageClassroom'\r\n };\r\n }\r\n\r\n protected get appLinks(): string[] {\r\n return [\r\n 'newClassroom',\r\n 'editClassroom',\r\n 'deleteClassroom',\r\n 'addStudents',\r\n 'removeStudents',\r\n 'newGroup',\r\n 'editGroup',\r\n 'deleteGroup'\r\n ];\r\n }\r\n}\r\n\r\nexport class ClassroomsApplication extends ReactApplication {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Classrooms Application';\r\n }\r\n\r\n public static get router(): any {\r\n return ClassroomsAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.CLASSROOMS;\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true,\r\n alertRegion: LayoutRegions.ALERT\r\n }\r\n };\r\n }\r\n\r\n public index(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <ClassroomsView />);\r\n }\r\n\r\n public classroom(id: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <ClassroomView id={id} />);\r\n }\r\n\r\n public manageClassroom(id: string, params: HashObject<ClassroomManagerTabs>): void {\r\n let tab: ClassroomManagerTabs = params.tab;\r\n\r\n if (![ 'students', 'groups' ].includes(tab))\r\n tab = 'students';\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT, <ManageClassroomView id={id} activeTab={tab} />);\r\n }\r\n\r\n public newClassroom(): void {\r\n this.layout.showChildView(LayoutRegions.POPUP, <CreateClassroomView closePopup={() => this.layout.closePopup()} />);\r\n }\r\n\r\n public editClassroom(id: string): void {\r\n this.layout.showChildView(LayoutRegions.POPUP, (\r\n <EditClassroomView id={id} closePopup={() => this.layout.closePopup()} />));\r\n }\r\n\r\n public deleteClassroom(id: string): void {\r\n this.layout.showChildView(LayoutRegions.POPUP, (\r\n <DeleteClassroomView id={id} closePopup={() => this.layout.closePopup()} />));\r\n }\r\n\r\n public addStudents(classroomId: string): void {\r\n this.layout.showChildView(LayoutRegions.POPUP, (\r\n <AddStudentsToClassroomView classroomId={classroomId} closePopup={() => this.layout.closePopup()} />\r\n ));\r\n }\r\n\r\n public removeStudents(classroomId: string, params: HashObject): void {\r\n const studentIds = params.studentIds;\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP, (\r\n <RemoveStudentsFromClassroomView\r\n classroomId={classroomId}\r\n studentIds={studentIds}\r\n closePopup={() => this.layout.closePopup()}\r\n />\r\n ));\r\n }\r\n\r\n public newGroup(classroomId: string, params: HashObject): void {\r\n const { addStudents = []} = params;\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP, (\r\n <CreateClassroomGroupView\r\n classroomId={classroomId}\r\n studentIds={addStudents}\r\n closePopup={() => this.layout.closePopup()}\r\n />\r\n ));\r\n }\r\n\r\n public editGroup(classroomId: string, groupId: string): void {\r\n this.layout.showChildView(LayoutRegions.POPUP, (\r\n <EditClassroomGroupView classroomId={classroomId} groupId={groupId} closePopup={() => this.layout.closePopup()} />\r\n ));\r\n }\r\n\r\n public deleteGroup(classroomId: string, groupId: string): void {\r\n this.layout.showChildView(LayoutRegions.POPUP, (\r\n <DeleteClassroomGroupView\r\n classroomId={classroomId}\r\n groupId={groupId}\r\n closePopup={() => this.layout.closePopup()}\r\n />\r\n ));\r\n }\r\n}","import React from 'react';\r\n\r\ninterface ClassroomActivitiesListProps {}\r\n\r\n// TODO: Wire this up to.. something\r\nexport function ClassroomActivitiesList(props: ClassroomActivitiesListProps): JSX.Element {\r\n return (\r\n <div className='d-flex justify-content-around py-3'>\r\n <div className='text-center'>\r\n {/* TODO: Work out colours for each of these blocks */}\r\n <p className='h1'>4</p>\r\n <p className='h6 font-weight-normal'>Activities in progress</p>\r\n </div>\r\n\r\n <div className='text-center'>\r\n <p className='h1'>13</p>\r\n <p className='h6 font-weight-normal'>Student reviews required</p>\r\n </div>\r\n\r\n <div className='text-center'>\r\n <p className='h1'>5</p>\r\n <p className='h6 font-weight-normal'>Class completed actitivies</p>\r\n </div>\r\n </div>\r\n );\r\n}","import React from 'react';\r\n\r\nimport { Text } from '@clickview/shared';\r\n\r\nimport { VideoInfoButton } from 'shared/components/video-info-button/VideoInfoButton';\r\n\r\nconst namespace = 'classrooms.classroomActivitiesList';\r\n\r\ninterface ClassroomActivitiesListEmptyStateProps {}\r\n\r\nexport function ClassroomActivitiesListEmptyState(props: ClassroomActivitiesListEmptyStateProps): JSX.Element {\r\n return (\r\n <div className='text-center'>\r\n <p><Text namespace={namespace} phrase='noActivities' /></p>\r\n <VideoInfoButton>\r\n <Text namespace={namespace} phrase='howToStart' />\r\n </VideoInfoButton>\r\n </div>\r\n );\r\n}","import React from 'react';\r\nimport { Form } from 'formik';\r\n\r\nimport { LanguageService } from '@clickview/common';\r\nimport { useFormikContextWrapper, FormField, Text, FormButtons } from '@clickview/shared';\r\n\r\nimport { EditClassroomRequest } from 'apps/classrooms/interfaces/EditClassroomRequest';\r\n\r\nconst namespace = 'classrooms.classroomDetailsForm';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\ninterface ClassroomDetailsFormProps {\r\n onClickCancel: () => void;\r\n isNew: boolean;\r\n}\r\n\r\nexport function ClassroomDetailsForm(props: ClassroomDetailsFormProps): JSX.Element {\r\n const formikProps = useFormikContextWrapper<EditClassroomRequest>();\r\n\r\n return (\r\n <Form>\r\n <FormField\r\n label={getPhrase('nameLabel')}\r\n type='text'\r\n name='name'\r\n id='name'\r\n placeholder={getPhrase('namePlaceholder')}\r\n autoFocus\r\n value={formikProps.values.name}\r\n />\r\n\r\n <div className='btn-container d-flex justify-content-end'>\r\n <button type='button' className='btn btn-link mr-2' onClick={props.onClickCancel}>\r\n <Text namespace={namespace} phrase='cancel' />\r\n </button>\r\n <FormButtons isNew={props.isNew} />\r\n </div>\r\n </Form>\r\n );\r\n}","import React from 'react';\r\nimport { Form } from 'formik';\r\n\r\nimport { LanguageService } from '@clickview/common';\r\nimport { Text, useFormikContextWrapper, FormField, FormButtons } from '@clickview/shared';\r\n\r\nimport { MockClassroomGroup } from 'shared/interfaces/mocks';\r\n\r\nimport { ColourPicker } from 'apps/classrooms/components/colour-picker/ColourPicker';\r\n\r\nimport styles from './classroom-group-details-form.scss';\r\n\r\nconst namespace = 'classrooms.classroomGroupDetailsForm';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\ninterface ClassroomGroupDetailsFormProps {\r\n isNew: boolean;\r\n onClickCancel: () => void;\r\n}\r\n\r\nexport function ClassroomGroupDetailsForm(props: ClassroomGroupDetailsFormProps): JSX.Element {\r\n const formikProps = useFormikContextWrapper<MockClassroomGroup>();\r\n\r\n return (\r\n <>\r\n <div>\r\n <h2 className='w-50 d-inline-block h6'><Text namespace={namespace} phrase='nameLabel' /></h2>\r\n <h2 className='d-inline-block h6'><Text namespace={namespace} phrase='colourLabel' /></h2>\r\n </div>\r\n\r\n <Form>\r\n <div className='pb-3 d-flex'>\r\n <div className='w-50'>\r\n <FormField\r\n type='text'\r\n name='name'\r\n id='name'\r\n className={`${styles.groupNameInput}`}\r\n placeholder={getPhrase('groupNamePlaceholder')}\r\n autoFocus\r\n value={formikProps.values.name}\r\n />\r\n </div>\r\n <div className='form-group'>\r\n <ColourPicker\r\n onSelect={c => formikProps.setFieldValue('colour', c)}\r\n selection={formikProps.values.colour}\r\n id={`${props.isNew ? 'create' : 'edit'}-classroom-group`}\r\n />\r\n </div>\r\n </div>\r\n\r\n <div className='btn-container d-flex justify-content-end'>\r\n <button type='button' className='btn btn-link mr-2' onClick={props.onClickCancel}>\r\n <Text namespace={namespace} phrase='cancel' />\r\n </button>\r\n <FormButtons isNew={props.isNew} />\r\n </div>\r\n </Form>\r\n </>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"groupNameInput\":\"cv--groupNameInput--3hGvq\"};","import React from 'react';\r\nimport { Dropdown } from 'react-bootstrap';\r\n\r\nimport { HashObject } from '@clickview/common';\r\nimport { Checkbox, AppLink, Text, SvgContainer, cvSvgLibrary } from '@clickview/shared';\r\n\r\nimport { MockClassroomGroup } from 'shared/interfaces/mocks';\r\nimport { useBulkCheckboxManager } from 'shared/hooks/useBulkCheckboxManager';\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { ClassroomGroup } from 'apps/classrooms/components/classroom-group/ClassroomGroup';\r\nimport { MockClassroom } from 'apps/user-manager/interfaces';\r\n\r\nimport styles from './classroom-group-dropdown.scss';\r\n\r\nconst namespace = 'classrooms.classroomGroupDropdown';\r\n\r\nconst getNewGroupAppLink = (id: string, studentIds: string[]) => ({\r\n application: AppChannels.CLASSROOMS,\r\n action: Actions.Classrooms.NEW_GROUP,\r\n args: [id],\r\n params: {\r\n addStudents: studentIds\r\n }\r\n});\r\n\r\ninterface ClassroomGroupDropdownProps {\r\n id: string;\r\n classroom: MockClassroom;\r\n studentIds: string[];\r\n groups: MockClassroomGroup[];\r\n onToggle: (group: MockClassroomGroup, toggleOn: boolean) => void;\r\n preselections?: MockClassroomGroup[];\r\n\r\n alignRight?: boolean;\r\n disabled?: boolean;\r\n}\r\n\r\nClassroomGroupDropdown.defaultProps = {\r\n preselections: [],\r\n};\r\n\r\nexport function ClassroomGroupDropdown(props: ClassroomGroupDropdownProps): JSX.Element {\r\n const { onToggleItem, isChecked } = useBulkCheckboxManager(props.groups, {\r\n preselectedIds: props.preselections.map(s => s.id)\r\n });\r\n\r\n function onChange(group: MockClassroomGroup): void {\r\n props.onToggle(group, !isChecked(group.id));\r\n onToggleItem(group.id);\r\n }\r\n\r\n const buttonClasses = 'mr-2 d-inline-block svg-container sm';\r\n\r\n const dropdownProps: HashObject = {\r\n alignRight: !!props.alignRight\r\n };\r\n\r\n /**\r\n * This prop is applied like this so that when `props.disabled` it false, the prop is omitted altogether.\r\n * This is because we want `react-bootstrap` to control the open state, and if we used the `show` prop\r\n * at all times we'd be preventing that.\r\n */\r\n if (props.disabled)\r\n dropdownProps.show = false;\r\n\r\n return (\r\n <Dropdown {...dropdownProps}>\r\n <Dropdown.Toggle\r\n as='div'\r\n id={props.id}\r\n className={`${props.disabled ? 'text-light' : 'cursor-pointer'} ${buttonClasses} ${styles.hideCaret}`}\r\n >\r\n <SvgContainer svgName={cvSvgLibrary.Tag} />\r\n </Dropdown.Toggle>\r\n <Dropdown.Menu className='px-2'>\r\n <p className='mb-0'><Text namespace={namespace} phrase='groupAs' /></p>\r\n <ul className='list-unstyled pr-3'>\r\n {props.groups.map(group => (\r\n <li key={group.id} className='d-flex align-items-center bg-white my-1'>\r\n <Checkbox\r\n id={`${props.id}:${group.id}`}\r\n checked={isChecked(group.id)}\r\n onChange={() => onChange(group)}\r\n />\r\n <ClassroomGroup group={group} />\r\n </li>\r\n ))}\r\n </ul>\r\n <AppLink appLink={getNewGroupAppLink(props.classroom.id, props.studentIds)}>\r\n <Text namespace={namespace} phrase='createNew' />\r\n </AppLink>\r\n </Dropdown.Menu>\r\n </Dropdown>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"hideCaret\":\"cv--hideCaret--xn-MJ\"};","import React from 'react';\r\n\r\nimport { MockClassroomGroup } from 'shared/interfaces/mocks';\r\n\r\nimport { GroupColour } from 'apps/classrooms/enums/GroupColour';\r\nimport { mapColourToClassName } from 'apps/classrooms/utils/GroupHelper';\r\n\r\ninterface ClassroomGroupProps {\r\n group: MockClassroomGroup;\r\n}\r\n\r\nexport function ClassroomGroup(props: ClassroomGroupProps): JSX.Element {\r\n let classes = 'tag font-weight-normal text-nowrap rounded-pill py-1 px-2';\r\n if (props.group.colour !== GroupColour.White)\r\n classes += ' text-white';\r\n else\r\n classes += ' border border-dark';\r\n\r\n classes += ` ${mapColourToClassName(props.group.colour)}`;\r\n\r\n return (\r\n <div className={classes}>\r\n {props.group.name}\r\n </div>\r\n );\r\n}","import React from 'react';\r\n\r\nimport { LanguageService } from '@clickview/common';\r\nimport { AppLink, DivButton, SvgContainer, cvSvgLibrary, SvgContainerSize } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { MockClassroom } from 'apps/user-manager/interfaces';\r\nimport { ClassroomStar } from 'apps/classrooms/components/classroom-star/ClassroomStar';\r\nimport { TileActions, TileAction } from 'apps/classrooms/components/tile-actions/TileActions';\r\n\r\nimport styles from './classroom-item.scss';\r\n\r\nconst namespace = 'classrooms.classroomItem';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\nconst getClassroomAppLink = (id: string) => ({\r\n application: AppChannels.CLASSROOMS,\r\n action: Actions.Classrooms.CLASSROOM,\r\n args: [id]\r\n});\r\n\r\nconst getEditClassroomAppLink = (id: string) => ({\r\n application: AppChannels.CLASSROOMS,\r\n action: Actions.Classrooms.EDIT_CLASSROOM,\r\n args: [id]\r\n});\r\n\r\nconst getDeleteClassroomAppLink = (id: string) => ({\r\n application: AppChannels.CLASSROOMS,\r\n action: Actions.Classrooms.DELETE_CLASSROOM,\r\n args: [id]\r\n});\r\n\r\ninterface ClassroomItemProps {\r\n classroom: MockClassroom;\r\n onToggleStar: () => void;\r\n}\r\n\r\nexport function ClassroomItem(props: ClassroomItemProps): JSX.Element {\r\n const [ showOptions, setShowOptions ] = React.useState(false);\r\n\r\n const classroomOptions: TileAction[] = [\r\n {\r\n text: getPhrase('rename'),\r\n appLink: getEditClassroomAppLink(props.classroom.id)\r\n },\r\n {\r\n text: getPhrase('delete'),\r\n appLink: getDeleteClassroomAppLink(props.classroom.id)\r\n }\r\n ];\r\n\r\n return (\r\n <>\r\n <div className='border border-dark position-relative p-2'>\r\n <div className='d-flex justify-content-between pb-5'>\r\n <ClassroomStar\r\n on={props.classroom.isFavourited}\r\n onToggle={props.onToggleStar}\r\n invisible={showOptions}\r\n />\r\n <DivButton onClick={() => setShowOptions(true)}>\r\n <SvgContainer svgName={cvSvgLibrary.Edit} />\r\n </DivButton>\r\n </div>\r\n\r\n <AppLink appLink={getClassroomAppLink(props.classroom.id)}>\r\n <h3 className='h6 mb-0'>{!showOptions ? props.classroom.name : <> </>}</h3>\r\n </AppLink>\r\n\r\n {showOptions && (\r\n <div className={`${styles.actionsContainer} ml-n2 w-100`}>\r\n <TileActions actions={classroomOptions} />\r\n </div>\r\n )}\r\n </div>\r\n </>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"toggleAction\":\"cv--toggleAction--2dgc9\",\"actionsContainer\":\"cv--actionsContainer--23R73\"};","import React from 'react';\r\nimport { DivButton, SvgContainer, SvgContainerSize, cvSvgLibrary } from '@clickview/shared';\r\nimport styles from './classroom-star.scss';\r\n\r\ninterface ClassroomStarProps {\r\n on: boolean;\r\n onToggle: () => void;\r\n invisible?: boolean;\r\n}\r\n\r\nexport function ClassroomStar({ on, onToggle, invisible }: ClassroomStarProps): JSX.Element {\r\n const className = `${on ? styles.yellow : ''} ${invisible ? 'invisible' : ''}`;\r\n\r\n return (\r\n <DivButton onClick={onToggle} className={className}>\r\n <SvgContainer\r\n svgName={on ? cvSvgLibrary.Star : cvSvgLibrary.StarOutline}\r\n size={SvgContainerSize.Large}\r\n />\r\n </DivButton>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"yellow\":\"cv--yellow--3zQMO\"};","import React from 'react';\r\n\r\nimport { LanguageService } from '@clickview/common';\r\nimport { SvgContainer, cvSvgLibrary, DivButton, SvgContainerSize } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { MockStudent, MockClassroom } from 'apps/user-manager/interfaces';\r\nimport { TileActions, TileAction } from 'apps/classrooms/components/tile-actions/TileActions';\r\n\r\nimport styles from './classroom-students-list.scss';\r\n\r\nconst namespace = 'classrooms.classroomStudentsList';\r\n\r\nconst getEditStudentAppLink = (id: string) => ({\r\n application: AppChannels.USER_MANAGER,\r\n action: Actions.UserManager.EDIT_STUDENT,\r\n args: [id]\r\n});\r\n\r\nconst getRemoveFromClassroomAppLink = (classroomId: string, studentId: string) => ({\r\n application: AppChannels.CLASSROOMS,\r\n action: Actions.Classrooms.REMOVE_STUDENTS,\r\n args: [classroomId],\r\n params: {\r\n studentIds: [studentId]\r\n }\r\n});\r\n\r\ninterface ClassroomStudentItemProps {\r\n student: MockStudent;\r\n classroom: MockClassroom;\r\n}\r\n\r\nexport function ClassroomStudentItem(props: ClassroomStudentItemProps): JSX.Element {\r\n const [ showOptions, setShowOptions ] = React.useState(false);\r\n\r\n const studentOptions: TileAction[] = [\r\n {\r\n text: LanguageService.getPhrase(namespace, 'editStudentDetails'),\r\n appLink: getEditStudentAppLink(props.student.id)\r\n },\r\n {\r\n text: LanguageService.getPhrase(namespace, 'removeFromClassroom'),\r\n appLink: getRemoveFromClassroomAppLink(props.classroom.id, props.student.id)\r\n }\r\n ];\r\n\r\n return (\r\n <li className={`${styles.studentCard} m-2 bg-white shadow position-relative rounded-lg`}>\r\n {!showOptions\r\n ? <>\r\n <DivButton className={styles.toggleAction} onClick={() => setShowOptions(true)}>\r\n <SvgContainer svgName={cvSvgLibrary.Edit} size={SvgContainerSize.Large} />\r\n </DivButton>\r\n\r\n <div className={`${styles.studentCardContent} w-100 px-1`}>\r\n {/* <img\r\n className='mb-1'\r\n src={props.student.avatar}\r\n alt={LanguageService.getPhrase(namespace, 'avatarAlt', { name: props.student.name })}\r\n /> */}\r\n <img\r\n className='mb-1'\r\n src={'/images/student-avatar-placeholder.png'}\r\n alt={LanguageService.getPhrase(namespace, 'avatarAlt', { name: props.student.name })}\r\n />\r\n <h3 className='h6 text-center text-truncate pb-1 w-100'>{props.student.name} {props.student.surname}</h3>\r\n </div>\r\n </>\r\n : <>\r\n <DivButton className={styles.toggleAction} onClick={() => setShowOptions(false)}>\r\n <SvgContainer svgName={cvSvgLibrary.Close} size={SvgContainerSize.Large} />\r\n </DivButton>\r\n <div className={styles.actionsContainer}>\r\n <TileActions actions={studentOptions} />\r\n </div>\r\n </>\r\n }\r\n </li>\r\n );\r\n}","import React from 'react';\r\n\r\nimport { MockStudent, MockClassroom } from 'apps/user-manager/interfaces';\r\n\r\nimport { ClassroomStudentItem } from './ClassroomStudentItem';\r\n\r\ninterface ClassroomStudentsListProps {\r\n students: MockStudent[];\r\n classroom: MockClassroom;\r\n}\r\n\r\nexport function ClassroomStudentsList(props: ClassroomStudentsListProps): JSX.Element {\r\n return (\r\n <>\r\n <ul className='list-unstyled d-flex flex-wrap mx-n2'>\r\n {props.students.map(student => (\r\n <ClassroomStudentItem key={student.id} student={student} classroom={props.classroom} />\r\n ))}\r\n </ul>\r\n </>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"studentCard\":\"cv--studentCard--wZAHT\",\"studentCardContent\":\"cv--studentCardContent--G006q\",\"actionsContainer\":\"cv--actionsContainer--3boP_\",\"toggleAction\":\"cv--toggleAction--28bC8\"};","import React from 'react';\r\n\r\ninterface ClassroomStudentsListEmptyStateProps {}\r\n\r\nexport function ClassroomStudentsListEmptyState(props: ClassroomStudentsListEmptyStateProps): JSX.Element {\r\n return (\r\n <>Students empty state</>\r\n );\r\n}","import React from 'react';\r\nimport { Dropdown } from 'react-bootstrap';\r\n\r\nimport { HashObject } from '@clickview/common';\r\nimport { DivButton, SvgContainer, cvSvgLibrary } from '@clickview/shared';\r\n\r\nimport { GroupColour } from 'apps/classrooms/enums/GroupColour';\r\nimport { mapColourToClassName } from 'apps/classrooms/utils/GroupHelper';\r\n\r\nimport styles from './colour-picker.scss';\r\n\r\ninterface ColourPickerProps {\r\n id: string;\r\n onSelect?: (colour: string) => void;\r\n selection?: GroupColour;\r\n disabled?: boolean;\r\n}\r\n\r\nColourPicker.defaultProps = {\r\n selection: GroupColour.White,\r\n onSelect: () => {}\r\n};\r\n\r\nexport function ColourPicker(props: ColourPickerProps): JSX.Element {\r\n function getToggleButtonClass(): string {\r\n const baseClass = `${styles.dropdownToggle} outline-none p-0 d-flex align-items-center`;\r\n const disabledClass = props.disabled ? 'cursor-default' : '';\r\n\r\n return `${baseClass} ${disabledClass}`;\r\n }\r\n\r\n function getOptionClass(colour: GroupColour): string {\r\n const baseClass = `${styles.colourOption} position-relative`;\r\n const borderClass = colour === GroupColour.White ? 'border border-dark' : '';\r\n const disabledClass = props.disabled ? 'cursor-default' : '';\r\n const colorClass = mapColourToClassName(colour);\r\n\r\n return `${baseClass} ${borderClass} ${disabledClass} ${colorClass}`;\r\n }\r\n\r\n const dropdownProps: HashObject = {};\r\n if (props.disabled)\r\n dropdownProps.show = false;\r\n\r\n return (\r\n <Dropdown {...dropdownProps}>\r\n <Dropdown.Toggle id={props.id} variant={'white' as any} className={getToggleButtonClass()}>\r\n <div className={`border border-secondary rounded bg-white ${styles.colourButton}`}>\r\n <div className={`px-0 py-1 rounded ${mapColourToClassName(props.selection)}`}>\r\n \r\n </div>\r\n </div>\r\n\r\n {!props.disabled &&\r\n <SvgContainer svgName={cvSvgLibrary.Caret} />\r\n }\r\n </Dropdown.Toggle>\r\n\r\n <Dropdown.Menu>\r\n <ul className={`${styles.colourList} list-unstyled d-flex flex-wrap px-2 m-0`}>\r\n {Object.keys(GroupColour).map(colourKey => {\r\n const colour = (GroupColour as any)[colourKey];\r\n\r\n return (\r\n <li key={`${props.id}:${colour}`} className='m-1'>\r\n <DivButton\r\n onClick={() => props.onSelect(colour)}\r\n className={getOptionClass(colour)}\r\n >\r\n {colour === GroupColour.White\r\n ? <div className={styles.lineThrough} />\r\n : <> </>\r\n }\r\n </DivButton>\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n </Dropdown.Menu>\r\n </Dropdown>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"dropdownToggle\":\"cv--dropdownToggle--347DY\",\"colourButton\":\"cv--colourButton--1rKvE\",\"colourList\":\"cv--colourList--328-w\",\"colourOption\":\"cv--colourOption--1Tw7u\",\"lineThrough\":\"cv--lineThrough--18oZq\"};","import React from 'react';\r\n\r\nimport { FormWrapper } from '@clickview/shared';\r\n\r\nimport { MockClassroom } from 'apps/user-manager/interfaces';\r\nimport { EditClassroomRequest } from 'apps/classrooms/interfaces/EditClassroomRequest';\r\nimport { ClassroomValidationSchema } from 'apps/classrooms/validation/ClassroomValidationSchema';\r\nimport { ClassroomDetailsForm } from 'apps/classrooms/components/classroom-details-form/ClassroomDetailsForm';\r\n\r\ninterface EditClassroomDetailsProps {\r\n classroom?: MockClassroom;\r\n saveClassroom: (data: EditClassroomRequest) => void;\r\n onClickCancel: () => void;\r\n}\r\n\r\nexport function EditClassroomDetails(props: EditClassroomDetailsProps): React.ReactElement {\r\n const { classroom, saveClassroom, onClickCancel } = props;\r\n\r\n const initialValues: EditClassroomRequest = {\r\n id: classroom?.id,\r\n name: classroom?.name\r\n };\r\n\r\n return (\r\n <FormWrapper<EditClassroomRequest>\r\n initialValues={initialValues}\r\n validationSchema={ClassroomValidationSchema}\r\n onSubmit={saveClassroom}\r\n >\r\n <ClassroomDetailsForm isNew={!classroom} onClickCancel={onClickCancel} />\r\n </FormWrapper>\r\n );\r\n}","import React from 'react';\r\n\r\nimport { FormWrapper } from '@clickview/shared';\r\n\r\nimport { MockClassroomGroup } from 'shared/interfaces/mocks';\r\nimport { ClassroomGroupValidationSchema } from 'apps/classrooms/validation/ClassroomGroupValidationSchema';\r\nimport { ClassroomGroupDetailsForm } from 'apps/classrooms/components/classroom-group-details-form/ClassroomGroupDetailsForm';\r\n\r\ninterface EditClassroomGroupDetailsProps {\r\n group?: MockClassroomGroup;\r\n saveGroup: (group: MockClassroomGroup) => void;\r\n onClickCancel: () => void;\r\n}\r\n\r\nexport function EditClassroomGroupDetails(props: EditClassroomGroupDetailsProps): React.ReactElement {\r\n const { group, saveGroup, onClickCancel } = props;\r\n\r\n const initialValues: MockClassroomGroup = {\r\n id: group?.id,\r\n name: group?.name,\r\n colour: group?.colour,\r\n students: []\r\n };\r\n\r\n return (\r\n <FormWrapper<MockClassroomGroup>\r\n initialValues={initialValues}\r\n validationSchema={ClassroomGroupValidationSchema}\r\n onSubmit={saveGroup}\r\n >\r\n <ClassroomGroupDetailsForm isNew={!group} onClickCancel={onClickCancel} />\r\n </FormWrapper>\r\n );\r\n}","import React from 'react';\r\n\r\nimport { Core } from '@clickview/common';\r\nimport { SvgContainer, DivButton, cvSvgLibrary } from '@clickview/shared';\r\n\r\nimport { MockClassroomGroup } from 'shared/interfaces/mocks';\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { ColourPicker } from 'apps/classrooms/components/colour-picker/ColourPicker';\r\nimport { MockClassroom } from 'apps/user-manager/interfaces';\r\n\r\ninterface ManageClassroomGroupItemProps {\r\n classroom: MockClassroom;\r\n group: MockClassroomGroup;\r\n}\r\n\r\nexport function ManageClassroomGroupItem(props: ManageClassroomGroupItemProps): JSX.Element {\r\n function onClickEdit(): void {\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.CLASSROOMS,\r\n action: Actions.Classrooms.EDIT_GROUP,\r\n args: [ props.classroom.id, props.group.id ]\r\n });\r\n }\r\n\r\n function onClickDelete(): void {\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.CLASSROOMS,\r\n action: Actions.Classrooms.DELETE_GROUP,\r\n args: [ props.classroom.id, props.group.id ]\r\n });\r\n }\r\n\r\n return (\r\n <>\r\n <div className='d-flex align-items-center'>\r\n <p className='w-50 m-0'>{props.group.name}</p>\r\n\r\n <div className='d-inline-block mr-4'>\r\n <ColourPicker\r\n selection={props.group.colour}\r\n id={`${props.group.id}-classroom-group-list-item`}\r\n disabled\r\n />\r\n </div>\r\n\r\n <DivButton className='mr-2' onClick={onClickEdit}>\r\n <SvgContainer svgName={cvSvgLibrary.Edit} />\r\n </DivButton>\r\n\r\n <DivButton onClick={onClickDelete}>\r\n <SvgContainer svgName={cvSvgLibrary.Delete} />\r\n </DivButton>\r\n </div>\r\n </>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { Text, LanguageNamespaceContext, IconButton, cvSvgLibrary } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { MockClassroom } from 'apps/user-manager/interfaces';\r\nimport { ManageClassroomGroupItem } from 'apps/classrooms/components/manage-classroom-group-item/ManageClassroomGroupItem';\r\n\r\nconst namespace = 'classrooms.manageClassroomGroups';\r\n\r\nconst getCreateGroupAppLink = (id: string) => ({\r\n application: AppChannels.CLASSROOMS,\r\n action: Actions.Classrooms.NEW_GROUP,\r\n args: [id]\r\n});\r\n\r\ninterface ManageClassroomGroupsProps {\r\n classroom: MockClassroom;\r\n}\r\n\r\nexport function ManageClassroomGroups(props: ManageClassroomGroupsProps): JSX.Element {\r\n return (\r\n <LanguageNamespaceContext.Provider value={namespace}>\r\n <div className='px-4 py-2'>\r\n <div className='d-flex align-items-center'>\r\n <h2 className='h6 w-50'><Text phrase='groupName' /></h2>\r\n <h2 className='h6 w-25'><Text phrase='colour' /></h2>\r\n <IconButton\r\n appLink={getCreateGroupAppLink(props.classroom.id)}\r\n className='btn btn-outline-dark ml-auto'\r\n svgName={cvSvgLibrary.Plus}\r\n >\r\n <Text phrase='createNew' />\r\n </IconButton>\r\n </div>\r\n\r\n <ul className='list-unstyled'>\r\n {props.classroom.groups.map(group => (\r\n <li key={group.id} className='mb-2'>\r\n <ManageClassroomGroupItem classroom={props.classroom} group={group} />\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n </LanguageNamespaceContext.Provider>\r\n );\r\n}","import React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { LanguageService, Flight } from '@clickview/common';\r\nimport { Checkbox, Actions as MoreActions, useAlerts } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { MockClassroomGroup } from 'shared/interfaces/mocks';\r\n\r\nimport { MockStudent, MockClassroom } from 'apps/user-manager/interfaces';\r\nimport { ClassroomGroupDropdown } from 'apps/classrooms/components/classroom-group-dropdown/ClassroomGroupDropdown';\r\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\r\nimport { ClassroomGroup } from 'apps/classrooms/components/classroom-group/ClassroomGroup';\r\nimport { SchoolUserRequests } from 'apps/user-manager/flight-requests/SchoolUserRequests';\r\n\r\nconst namespace = 'classrooms.manageClassroomStudentItem';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\nconst getEditStudentAppLink = (id: string) => ({\r\n application: AppChannels.USER_MANAGER,\r\n action: Actions.UserManager.EDIT_STUDENT,\r\n args: [id]\r\n});\r\n\r\nconst getRemoveStudentsAppLink = (studentId: string, classroomId: string) => ({\r\n application: AppChannels.CLASSROOMS,\r\n action: Actions.Classrooms.REMOVE_STUDENTS,\r\n args: [classroomId],\r\n params: {\r\n studentIds: [studentId]\r\n }\r\n});\r\n\r\ninterface ManageClassroomStudentItemProps {\r\n classroom: MockClassroom;\r\n student: MockStudent;\r\n onToggleCheckbox: () => void;\r\n checked: boolean;\r\n}\r\n\r\nexport function ManageClassroomStudentItem(props: ManageClassroomStudentItemProps): JSX.Element {\r\n const dispatch = useDispatch();\r\n const alerts = useAlerts();\r\n\r\n const selectedGroups = Flight.useBasicFetch<MockClassroomGroup[]>(\r\n SchoolUserRequests.getStudentsGroups(props.student.id));\r\n\r\n function onToggleGroup(student: MockStudent, group: MockClassroomGroup, toggleOn: boolean): void {\r\n if (toggleOn) {\r\n Flight.fetch(\r\n dispatch,\r\n ClassroomRequests.addStudentsToGroup([student.id], group.id, () => {\r\n alerts.success(getPhrase('addSuccess', { studentName: student.name, groupName: group.name }));\r\n }, () => {\r\n alerts.error(getPhrase('addError', { studentName: student.name, groupName: group.name }));\r\n })\r\n );\r\n\r\n return;\r\n }\r\n\r\n Flight.fetch(\r\n dispatch,\r\n ClassroomRequests.removeStudentsFromGroup([student.id], group.id, () => {\r\n alerts.success(getPhrase('removeSuccess', { studentName: student.name, groupName: group.name }));\r\n }, () => {\r\n alerts.error(getPhrase('removeError', { studentName: student.name, groupName: group.name }));\r\n })\r\n );\r\n }\r\n\r\n return (\r\n <div className='d-flex align-items-center py-1 px-4'>\r\n <Checkbox\r\n id={props.student.id}\r\n checked={props.checked}\r\n onChange={props.onToggleCheckbox}\r\n className='mr-2'\r\n />\r\n\r\n <p className='mb-0 w-25 text-truncate text-nowrap'>{props.student.name} {props.student.surname}</p>\r\n <div className='mr-auto d-flex flex-wrap mt-n1'>\r\n {!!selectedGroups.data?.length &&\r\n selectedGroups.data.map(group => (\r\n <div key={group.id} className='mr-1 mt-1'>\r\n <ClassroomGroup group={group} />\r\n </div>\r\n ))\r\n }\r\n </div>\r\n\r\n <ClassroomGroupDropdown\r\n id={`add-group-${props.student.id}`}\r\n classroom={props.classroom}\r\n groups={props.classroom.groups}\r\n studentIds={[props.student.id]}\r\n preselections={selectedGroups.data}\r\n onToggle={(group, toggleOn) => onToggleGroup(props.student, group, toggleOn)}\r\n alignRight\r\n />\r\n <MoreActions\r\n actions={[{\r\n label: getPhrase('editStudent'),\r\n appLink: getEditStudentAppLink(props.student.id)\r\n }, {\r\n label: getPhrase('removeStudent'),\r\n appLink: getRemoveStudentsAppLink(props.student.id, props.classroom.id)\r\n }]}\r\n actionsDropdownClassName='btn'\r\n />\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Core, Flight, LanguageService } from '@clickview/common';\r\nimport { Checkbox, DivButton, SvgContainer, cvSvgLibrary, IconButton, Text, useAlerts } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { useBulkCheckboxManager } from 'shared/hooks/useBulkCheckboxManager';\r\nimport { MockClassroomGroup } from 'shared/interfaces/mocks';\r\n\r\nimport { MockClassroom } from 'apps/user-manager/interfaces';\r\nimport { ManageClassroomStudentItem } from 'apps/classrooms/components/manage-classroom-student-item/ManageClassroomStudentItem';\r\nimport { ClassroomGroupDropdown } from 'apps/classrooms/components/classroom-group-dropdown/ClassroomGroupDropdown';\r\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\r\n\r\nconst namespace = 'classrooms.manageClassroomStudents';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\ninterface ManageClassroomStudentsProps {\r\n classroom: MockClassroom;\r\n}\r\n\r\nexport function ManageClassroomStudents(props: ManageClassroomStudentsProps): JSX.Element {\r\n const { students } = props.classroom;\r\n\r\n const dispatch = useDispatch();\r\n const alerts = useAlerts();\r\n\r\n const { onToggleBulk, onToggleItem, getSelected, isChecked, bulkChecked } = useBulkCheckboxManager(students);\r\n const selectionCount = getSelected().length;\r\n\r\n const bulkPreselections = Flight.useBasicFetch<MockClassroomGroup[]>(\r\n ClassroomRequests.getGroupsWithAllStudents(students));\r\n\r\n function onClickAddStudents(): void {\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.CLASSROOMS,\r\n action: Actions.Classrooms.ADD_STUDENTS,\r\n args: [props.classroom.id]\r\n });\r\n }\r\n\r\n function onClickBulkRemoveStudents(): void {\r\n if (!selectionCount)\r\n return;\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.CLASSROOMS,\r\n action: Actions.Classrooms.REMOVE_STUDENTS,\r\n args: [props.classroom.id],\r\n params: {\r\n studentIds: getSelected()\r\n }\r\n });\r\n }\r\n\r\n function onBulkToggleGroup(group: MockClassroomGroup, toggleOn: boolean): void {\r\n const selectedStudentIds = getSelected();\r\n\r\n if (toggleOn) {\r\n Flight.fetch(dispatch, ClassroomRequests.addStudentsToGroup(selectedStudentIds, group.id, () => {\r\n alerts.success(getPhrase('addSuccess', { groupName: group.name }));\r\n }, () => {\r\n alerts.error(getPhrase('addError', { groupName: group.name }));\r\n }));\r\n } else {\r\n Flight.fetch(dispatch, ClassroomRequests.removeStudentsFromGroup(selectedStudentIds, group.id, () => {\r\n alerts.success(getPhrase('removeSuccess', { groupName: group.name }));\r\n }, () => {\r\n alerts.error(getPhrase('removeError', { groupName: group.name }));\r\n }));\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n <div className='d-flex align-items-center py-2 px-4'>\r\n <Checkbox\r\n id='manage-classroom-students-bulk'\r\n onChange={onToggleBulk}\r\n checked={bulkChecked}\r\n className='mr-4'\r\n />\r\n\r\n <ClassroomGroupDropdown\r\n id='bulk-add-group'\r\n classroom={props.classroom}\r\n studentIds={getSelected()}\r\n groups={props.classroom.groups}\r\n onToggle={onBulkToggleGroup}\r\n disabled={!selectionCount}\r\n preselections={bulkPreselections.data}\r\n />\r\n\r\n <DivButton\r\n className={`mr-auto ${!selectionCount ? 'text-light cursor-default' : ''}`}\r\n onClick={onClickBulkRemoveStudents}\r\n >\r\n <SvgContainer svgName={cvSvgLibrary.Delete} />\r\n </DivButton>\r\n\r\n <IconButton\r\n onClick={onClickAddStudents}\r\n svgName={cvSvgLibrary.Plus}\r\n className='btn btn-outline-dark'\r\n >\r\n <Text namespace={namespace} phrase='addStudent' />\r\n </IconButton>\r\n </div>\r\n\r\n <ul className='striped-list list-unstyled'>\r\n {students.map(student => (\r\n <li key={student.id}>\r\n <ManageClassroomStudentItem\r\n classroom={props.classroom}\r\n student={student}\r\n checked={isChecked(student.id)}\r\n onToggleCheckbox={() => onToggleItem(student.id)}\r\n />\r\n </li>\r\n ))}\r\n </ul>\r\n </>\r\n );\r\n}","import React from 'react';\r\n\r\nimport { Text, IconButton, cvSvgLibrary, LanguageNamespaceContext } from '@clickview/shared';\r\nimport { Core } from '@clickview/common';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { VideoInfoButton } from 'shared/components/video-info-button/VideoInfoButton';\r\n\r\nimport { MockClassroom } from 'apps/user-manager/interfaces';\r\n\r\nconst namespace = 'classrooms.manageClassroomStudentsEmptyState';\r\n\r\ninterface ManageClassroomStudentsEmptyStateProps {\r\n classroom: MockClassroom;\r\n}\r\n\r\nexport function ManageClassroomStudentsEmptyState(props: ManageClassroomStudentsEmptyStateProps): JSX.Element {\r\n function onClickAddStudents(): void {\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.CLASSROOMS,\r\n action: Actions.Classrooms.ADD_STUDENTS,\r\n args: [props.classroom.id]\r\n });\r\n }\r\n\r\n return (\r\n <LanguageNamespaceContext.Provider value={namespace}>\r\n <div className='text-center pt-5'>\r\n {/* TODO: use actual image and remove hard coded width/height */}\r\n <img\r\n style={{ width: '200px', height: '200px' }}\r\n className='pb-3'\r\n src='/images/classroom-students-empty.png'\r\n role='presentation'\r\n alt=''\r\n />\r\n\r\n <h2 className='h6'><Text phrase='emptyStateHeading' /></h2>\r\n\r\n <p className='mb-3'><Text phrase='emptyStateInfo' /></p>\r\n\r\n <VideoInfoButton>\r\n <Text phrase='videoButton' />\r\n </VideoInfoButton>\r\n\r\n <IconButton className='btn btn-dark' onClick={onClickAddStudents} svgName={cvSvgLibrary.Plus}>\r\n <Text phrase='addStudents' />\r\n </IconButton>\r\n </div>\r\n </LanguageNamespaceContext.Provider>\r\n );\r\n}","import React from 'react';\r\n\r\nimport { Core } from '@clickview/common';\r\nimport { AppLink } from '@clickview/shared';\r\n\r\nimport styles from './tile-actions.scss';\r\n\r\nexport interface TileAction {\r\n appLink: Core.AppLink;\r\n text: string;\r\n}\r\n\r\ninterface TileActionsProps {\r\n actions: TileAction[];\r\n}\r\n\r\nexport function TileActions(props: TileActionsProps): JSX.Element {\r\n return (\r\n <div className='w-100 d-flex flex-column'>\r\n {props.actions.map(action => (\r\n <AppLink\r\n key={action.text}\r\n className={`${styles.option} py-1`}\r\n appLink={action.appLink}\r\n >\r\n <span className='pl-2'>\r\n {action.text}\r\n </span>\r\n </AppLink>\r\n ))}\r\n </div>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"option\":\"cv--option--2LGMe\"};","export enum GroupColour {\r\n White = 'white',\r\n Pink = 'pink',\r\n YellowOrange = 'yellow-orange',\r\n Emerald = 'emerald',\r\n PuertoRico = 'puerto-rico',\r\n PictonBlue = 'picton-blue',\r\n EastSide = 'east-side',\r\n Portage = 'portage'\r\n}","import { Flight, HttpVerbs, UrlHelper } from '@clickview/common';\r\n\r\nimport { MockClassroomGroup } from 'shared/interfaces/mocks';\r\n\r\nimport { EditClassroomRequest } from 'apps/classrooms/interfaces/EditClassroomRequest';\r\nimport { MockStudent, MockClassroom } from 'apps/user-manager/interfaces';\r\n\r\nimport starredClassrooms from './mocks/starred-classrooms.json';\r\n\r\nexport const ClassroomRequests = {\r\n getAll(): Flight.SimulatedRequest {\r\n return {\r\n url: '/api/domain/v1/classrooms',\r\n key: 'classrooms',\r\n successResponse: () => {\r\n return Flight.Simulator.getAll('classrooms');\r\n }\r\n };\r\n },\r\n\r\n getClassroom(id: string): Flight.SimulatedRequest {\r\n return {\r\n url: `/api/domain/v1/classrooms/${id}`,\r\n key: `classroom:${id}`,\r\n invalidationKeys: ['classrooms'],\r\n successResponse: () => {\r\n return Flight.Simulator.get('classrooms', id);\r\n }\r\n };\r\n },\r\n\r\n createClassroom(classroom: EditClassroomRequest, success?: () => void, error?: () => void): Flight.SimulatedRequest {\r\n return {\r\n url: '/api/domain/v1/classrooms',\r\n key: 'create:classroom',\r\n type: HttpVerbs.POST,\r\n invalidationKeys: ['classrooms'],\r\n successResponse: () => {\r\n return Flight.Simulator.create('classrooms', {\r\n ...classroom,\r\n students: [],\r\n groups: [],\r\n activities: [],\r\n isFavourited: false\r\n });\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n editClassroom(classroom: EditClassroomRequest, success?: () => void, error?: () => void): Flight.SimulatedRequest {\r\n return {\r\n url: '/api/domain/v1/classrooms',\r\n key: `update:classroom`,\r\n type: HttpVerbs.PUT,\r\n invalidationKeys: [ 'classrooms', `classroom:${classroom.id}` ],\r\n successResponse: () => {\r\n return Flight.Simulator.update('classrooms', classroom);\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n deleteClassroom(id: string, success?: () => void, error?: () => void): Flight.SimulatedRequest {\r\n return {\r\n url: '/api/domain/v1/classrooms',\r\n key: `delete:classroom`,\r\n type: HttpVerbs.DELETE,\r\n invalidationKeys: ['classrooms'],\r\n successResponse: () => {\r\n Flight.Simulator.delete('classrooms', id);\r\n return {};\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n /**\r\n * Student management requests\r\n */\r\n addStudents(\r\n students: MockStudent[], classroomId: string, success?: () => void, error?: () => void\r\n ): Flight.SimulatedRequest {\r\n return {\r\n url: `/api/domain/v1/classrooms/${classroomId}/students`,\r\n key: `add:students:classroom`,\r\n type: HttpVerbs.POST,\r\n invalidationKeys: [ `classroom:${classroomId}`, 'students', 'groups:with:all:students' ],\r\n successResponse: () => {\r\n return Flight.Simulator.assoc('classrooms', classroomId, 'students', 'school:students', students);\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n removeStudents(\r\n studentIds: string[], classroomId: string, success?: () => void, error?: () => void\r\n ): Flight.SimulatedRequest {\r\n return {\r\n url: `/api/domain/v1/classrooms/${classroomId}/students`,\r\n key: `remove:students:classroom`,\r\n type: HttpVerbs.DELETE,\r\n invalidationKeys: [ `classroom:${classroomId}`, ...studentIds.map(s => `students:${s}`), 'groups:with:all:students' ],\r\n successResponse: () => {\r\n return Flight.Simulator.dissoc('classrooms', classroomId, 'students', studentIds);\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n /**\r\n * Group management requests\r\n */\r\n addGroupToClassroom(\r\n group: MockClassroomGroup,\r\n classroomId: string,\r\n success: (group: MockClassroomGroup) => void,\r\n error: () => void\r\n ): Flight.SimulatedRequest {\r\n return {\r\n url: `/api/domain/v1/classrooms/${classroomId}/groups`,\r\n key: `add:classroom:group`,\r\n type: HttpVerbs.POST,\r\n invalidationKeys: [`classroom:${classroomId}`],\r\n successResponse: () => {\r\n return Flight.Simulator.assoc('classrooms', classroomId, 'groups', 'groups', group);\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n editGroup(\r\n group: MockClassroomGroup, classroom: MockClassroom, success: () => void, error: () => void\r\n ): Flight.SimulatedRequest {\r\n return {\r\n url: `/api/domain/v1/groups/${group.id}`,\r\n key: `group:${group.id}`,\r\n type: HttpVerbs.PUT,\r\n invalidationKeys: [ 'groups', `classroom:${classroom.id}` ],\r\n successResponse: () => {\r\n Flight.Simulator.update('classrooms', {\r\n ...classroom,\r\n groups: classroom.groups.map(_group => {\r\n if (_group.id !== group.id)\r\n return _group;\r\n\r\n return group;\r\n })\r\n });\r\n\r\n return Flight.Simulator.update('groups', group);\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n deleteGroup(groupId: string, classroomId: string, success?: () => void, error?: () => void): Flight.SimulatedRequest {\r\n return {\r\n url: `/api/domain/v1/groups/${groupId}`,\r\n key: `delete:group`,\r\n type: HttpVerbs.DELETE,\r\n invalidationKeys: [ 'groups', `classroom:${classroomId}` ],\r\n successResponse: () => {\r\n Flight.Simulator.dissoc('classrooms', classroomId, 'groups', groupId);\r\n Flight.Simulator.delete('groups', groupId);\r\n return {};\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n addStudentsToGroup(\r\n students: string[],\r\n groupId: string,\r\n success?: () => void,\r\n error?: () => void\r\n ): Flight.SimulatedRequest {\r\n return {\r\n url: `/api/domain/v1/groups/${groupId}/students`,\r\n key: `add:student:group`,\r\n data: students,\r\n type: HttpVerbs.POST,\r\n invalidationKeys: [ `group:${groupId}`, ...students.map(s => `user:${s}:groups`), 'groups:with:all:students' ],\r\n successResponse: () => {\r\n students.forEach(student => {\r\n Flight.Simulator.assoc('groups', groupId, 'students', 'school:students', [student]);\r\n });\r\n return Flight.Simulator.get('groups', groupId);\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n removeStudentsFromGroup(\r\n students: string[],\r\n groupId: string,\r\n success?: () => void,\r\n error?: () => void\r\n ): Flight.SimulatedRequest {\r\n return {\r\n url: UrlHelper.urlBuilder(`/api/domain/v1/groups/${groupId}/students`, { id: students }),\r\n key: `remove:student:group`,\r\n type: HttpVerbs.DELETE,\r\n invalidationKeys: [ `group:${groupId}`, 'groups:with:all:students', ...students.map(s => `user:${s}:groups`) ],\r\n successResponse: () => {\r\n students.forEach(student => {\r\n Flight.Simulator.dissoc('groups', groupId, 'students', student);\r\n });\r\n return Flight.Simulator.get('groups', groupId);\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n getStarredClassrooms(): Flight.SimulatedRequest {\r\n return {\r\n url: `/api/domain/v1/me/starred-classrooms`,\r\n key: 'starred:classrooms',\r\n successResponse: () => {\r\n return Flight.Simulator.getAll('classrooms').filter(c => c.isFavourited);\r\n }\r\n };\r\n },\r\n\r\n starClassroom(classroom: MockClassroom, success?: () => void, error?: () => void): Flight.SimulatedRequest {\r\n return {\r\n url: `/api/domain/v1/classroom/${classroom.id}/star`,\r\n key: `star:classroom:${classroom.id}`,\r\n type: HttpVerbs.PUT,\r\n invalidationKeys: [ 'classrooms', `classroom:${classroom.id}` ],\r\n successResponse: () => {\r\n return Flight.Simulator.update('classrooms', {\r\n ...classroom,\r\n isFavourited: true\r\n });\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n unstarClassroom(\r\n classroom: MockClassroom, success?: () => void, error?: () => void\r\n ): Flight.SimulatedRequest {\r\n return {\r\n url: `/api/domain/v1/classroom/${classroom.id}/unstar`,\r\n key: `unstar:classroom:${classroom.id}`,\r\n type: HttpVerbs.PUT,\r\n invalidationKeys: [ 'classrooms', `classroom:${classroom.id}` ],\r\n successResponse: () => {\r\n return Flight.Simulator.update('classrooms', {\r\n ...classroom,\r\n isFavourited: false\r\n });\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n /**\r\n * I'm temporarily using this function to get all of a classrooms groups that every single\r\n * student within that classroom is in. E.g. if EVERY student in classroom 1-A is in the group\r\n * \"Splendid Strawberries\", then that group will be returned here. This is to be temporarily\r\n * used by the bulk group management dropdown above the classroom student manager.\r\n * \r\n * I'm aware that it is slow and ugly - I feel like we're better off waiting to see how backend can\r\n * help us out here before unnecessarily optimizing things on the frontend.\r\n */\r\n getGroupsWithAllStudents(students: MockStudent[]): Flight.SimulatedRequest {\r\n const studentIds = students.map(s => s.id);\r\n return {\r\n url: 'i highly doubt this will be a real request',\r\n key: 'groups:with:all:students',\r\n successResponse: () => {\r\n const groups = Flight.Simulator.getAll('groups');\r\n\r\n return groups.filter(group => {\r\n let allStudentsFound = true;\r\n let index = 0;\r\n\r\n do {\r\n const id = studentIds[index];\r\n if (!group.students.find((stu: MockStudent) => stu.id === id))\r\n allStudentsFound = false;\r\n\r\n index++;\r\n } while (index < studentIds.length);\r\n\r\n return allStudentsFound;\r\n });\r\n }\r\n };\r\n }\r\n};\r\n","import { GroupColour } from 'apps/classrooms/enums/GroupColour';\r\n\r\nexport function mapColourToClassName(groupName: GroupColour): string {\r\n return `bg-${groupName}`;\r\n}","import { object, string } from 'yup';\r\n\r\nimport { LanguageService } from '@clickview/common';\r\nimport { GroupColour } from '../enums/GroupColour';\r\n\r\nconst getPhrase = LanguageService.encloseNamespace('classrooms.classroomValidation');\r\n\r\nexport const ClassroomGroupValidationSchema = object().shape({\r\n name: string()\r\n .max(255, () => getPhrase('nameExceeds'))\r\n .required(() => getPhrase('nameRequired'))\r\n .default(''),\r\n colour: string()\r\n .required(() => getPhrase('colourRequired'))\r\n .default(GroupColour.White)\r\n});","import { object, string } from 'yup';\r\n\r\nimport { LanguageService } from '@clickview/common';\r\n\r\nconst getPhrase = LanguageService.encloseNamespace('classrooms.classroomValidation');\r\n\r\nexport const ClassroomValidationSchema = object().shape({\r\n name: string()\r\n .max(255, () => getPhrase('nameExceeds'))\r\n .required(() => getPhrase('nameRequired'))\r\n .default('')\r\n});","import React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { LanguageService, Flight } from '@clickview/common';\r\nimport { Popup, PopupViewProps, PopupButtons, useAlerts, Text, AppLink } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { TokenizedTypeahead } from 'shared/components/share/tokenized-typeahead/TokenizedTypeahead';\r\n\r\nimport { MockClassroom } from 'apps/user-manager/interfaces/mocks/MockClassroom';\r\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\r\nimport { MockStudent } from 'apps/user-manager/interfaces';\r\nimport { SchoolUserRequests } from 'apps/user-manager/flight-requests/SchoolUserRequests';\r\n\r\nconst namespace = 'classrooms.addStudentsToClassroom';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\nconst studentManagerAppLink = {\r\n application: AppChannels.USER_MANAGER,\r\n action: Actions.UserManager.STUDENTS\r\n};\r\n\r\ninterface AddStudentsToClassroomViewProps extends PopupViewProps {\r\n classroomId: string;\r\n}\r\n\r\nexport function AddStudentsToClassroomView(props: AddStudentsToClassroomViewProps): JSX.Element {\r\n const [ showButtonSpinner, setShowButtonSpinner ] = React.useState(false);\r\n\r\n const [ selections, setSelections ] = React.useState<MockStudent[]>([]);\r\n\r\n const classroom = Flight.useBasicFetch<MockClassroom>(ClassroomRequests.getClassroom(props.classroomId));\r\n // Temp until we have instant search endpoint for users set up\r\n const students = Flight.useBasicFetch<MockStudent[]>(SchoolUserRequests.tempGetAllStudents());\r\n\r\n const dispatch = useDispatch();\r\n const alerts = useAlerts();\r\n\r\n function addStudents(): void {\r\n if (!selections)\r\n return;\r\n\r\n setShowButtonSpinner(true);\r\n\r\n Flight.fetch(dispatch, ClassroomRequests.addStudents(selections, props.classroomId, () => {\r\n setShowButtonSpinner(false);\r\n alerts.success(getPhrase('success', {\r\n smartCount: selections.length,\r\n classroomName: classroom.data.name\r\n }));\r\n props.closePopup();\r\n }, () => {\r\n setShowButtonSpinner(false);\r\n alerts.error(getPhrase('error', { smartCount: selections.length }));\r\n props.closePopup();\r\n }));\r\n }\r\n\r\n return (\r\n <Popup\r\n title={getPhrase('title')}\r\n closePopup={props.closePopup}\r\n showLoadingSpinner={!classroom.data || !students.data}\r\n >\r\n {(classroom.data && students.data) &&\r\n <>\r\n <div className='pb-3'>\r\n <TokenizedTypeahead\r\n placeholder={getPhrase('placeholder')}\r\n selections={selections}\r\n updateSelections={(student: MockStudent) => setSelections([ ...selections, student ])}\r\n removeSelection={id => setSelections(selections.filter(s => s.id !== id))}\r\n localSuggestions={students.data}\r\n />\r\n </div>\r\n\r\n <p>\r\n <Text namespace={namespace} phrase='createNewStudent' />\r\n <AppLink className='info-link' onClick={props.closePopup} appLink={studentManagerAppLink}>\r\n <Text namespace={namespace} phrase='studentManager' />\r\n </AppLink>\r\n </p>\r\n\r\n <PopupButtons buttons={\r\n [\r\n {\r\n variant: 'link',\r\n onClick: props.closePopup,\r\n buttonText: getPhrase('cancel')\r\n },\r\n {\r\n variant: 'dark',\r\n onClick: addStudents,\r\n buttonText: getPhrase('add'),\r\n isSpinnerButton: true,\r\n showSpinner: showButtonSpinner\r\n }\r\n ]\r\n }/>\r\n </>\r\n }\r\n </Popup>\r\n );\r\n}","import React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight } from '@clickview/common';\r\nimport { AppLink, cvSvgLibrary, SvgContainer, Text, LanguageNamespaceContext } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { MockClassroom } from 'apps/user-manager/interfaces';\r\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\r\n\r\nimport { ClassroomActivitiesList } from 'apps/classrooms/components/classroom-activities-list/ClassroomActivitiesList';\r\nimport { ClassroomActivitiesListEmptyState } from 'apps/classrooms/components/classroom-activities-list/empty-state/ClassroomActivitiesListEmptyState';\r\nimport { ClassroomStudentsList } from 'apps/classrooms/components/classroom-students-list/ClassroomStudentsList';\r\nimport { ClassroomStudentsListEmptyState } from 'apps/classrooms/components/classroom-students-list/empty-state/ClassroomStudentsListEmptyState';\r\nimport { ClassroomStar } from 'apps/classrooms/components/classroom-star/ClassroomStar';\r\n\r\nconst namespace = 'classrooms.classroom';\r\n\r\nconst learningPathsAppLink = {\r\n application: AppChannels.DASHBOARD,\r\n action: Actions.Dashboard.HOME\r\n};\r\n\r\nconst getManageClassroomAppLink = (id: string) => ({\r\n application: AppChannels.CLASSROOMS,\r\n action: Actions.Classrooms.MANAGE_CLASSROOM,\r\n args: [id]\r\n});\r\n\r\ninterface ClassroomViewProps {\r\n id: string;\r\n}\r\n\r\nexport function ClassroomView(props: ClassroomViewProps): JSX.Element {\r\n const classroom = Flight.useBasicFetch<MockClassroom>(ClassroomRequests.getClassroom(props.id));\r\n\r\n const dispatch = useDispatch();\r\n\r\n function onToggleStar(): void {\r\n if (!classroom.data.isFavourited)\r\n Flight.fetch(dispatch, ClassroomRequests.starClassroom(classroom.data));\r\n else\r\n Flight.fetch(dispatch, ClassroomRequests.unstarClassroom(classroom.data));\r\n }\r\n\r\n if (!classroom.data)\r\n return <>Partial Loading</>;\r\n\r\n return (\r\n <LanguageNamespaceContext.Provider value={namespace}>\r\n <div className='d-flex justify-content-between pb-3'>\r\n <div className='d-flex'>\r\n <div className='mt-1 mr-1'>\r\n <ClassroomStar on={classroom.data.isFavourited} onToggle={onToggleStar} />\r\n </div>\r\n <div>\r\n <h1 className='mb-0'>{classroom.data.name}</h1>\r\n <p className='h6'><Text phrase='overview' /></p>\r\n </div>\r\n </div>\r\n\r\n <AppLink className='d-flex align-items-center' appLink={getManageClassroomAppLink(classroom.data.id)}>\r\n <SvgContainer className='mr-1 svg-container' svgName={cvSvgLibrary.Cog} />\r\n <Text phrase='manageClassroom' />\r\n </AppLink>\r\n </div>\r\n\r\n <div className='pb-3'>\r\n <h2 className='h5'>\r\n <span className='mr-2'>\r\n <Text phrase='learningPaths' />\r\n </span>\r\n <AppLink appLink={learningPathsAppLink} className='font-weight-normal font-size-normal info-link'>\r\n <Text phrase='seeAll' />\r\n </AppLink>\r\n </h2>\r\n\r\n {!classroom.data.activities.length\r\n ? <ClassroomActivitiesList />\r\n : <ClassroomActivitiesListEmptyState />\r\n }\r\n </div>\r\n\r\n <div>\r\n <h2 className='h5'><Text phrase='students' /></h2>\r\n\r\n {classroom.data.students.length\r\n ? <ClassroomStudentsList students={classroom.data.students} classroom={classroom.data} />\r\n : <ClassroomStudentsListEmptyState />\r\n }\r\n </div>\r\n </LanguageNamespaceContext.Provider>\r\n );\r\n}","import React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight } from '@clickview/common';\r\nimport { Text, LanguageNamespaceContext, IconButton, cvSvgLibrary, SvgContainer, DivButton } from '@clickview/shared';\r\n\r\nimport { MockClassroom } from 'apps/user-manager/interfaces';\r\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\r\nimport { ClassroomItem } from 'apps/classrooms/components/classroom-item/ClassroomItem';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { ClassroomsEmptyState } from './empty-state/ClassroomsEmptyState';\r\nimport styles from './classrooms.scss';\r\n\r\nconst namespace = 'classrooms.classrooms';\r\n\r\nconst newClassroomAppLink = {\r\n application: AppChannels.CLASSROOMS,\r\n action: Actions.Classrooms.NEW_CLASSROOM\r\n};\r\n\r\nexport function ClassroomsView(): JSX.Element {\r\n const [ showOtherClassrooms, setShowOtherClassrooms ] = React.useState(false);\r\n\r\n const [ starredClassrooms, setStarredClassrooms ] = React.useState<MockClassroom[]>([]);\r\n const [ otherClassrooms, setOtherClassrooms ] = React.useState<MockClassroom[]>([]);\r\n\r\n const dispatch = useDispatch();\r\n\r\n const classrooms = Flight.useBasicFetch<MockClassroom[]>(ClassroomRequests.getAll());\r\n\r\n React.useEffect(() => {\r\n if (!classrooms.data?.length)\r\n return;\r\n\r\n const _starredClassrooms: MockClassroom[] = [];\r\n const _otherClassrooms: MockClassroom[] = [];\r\n\r\n classrooms.data.forEach(classroom => {\r\n if (classroom.isFavourited)\r\n _starredClassrooms.push(classroom);\r\n else\r\n _otherClassrooms.push(classroom);\r\n });\r\n\r\n if (!_starredClassrooms.length)\r\n setShowOtherClassrooms(true);\r\n\r\n setStarredClassrooms(_starredClassrooms);\r\n setOtherClassrooms(_otherClassrooms);\r\n }, [classrooms.data]);\r\n\r\n function onToggleStar(classroom: MockClassroom): void {\r\n if (!classroom.isFavourited) {\r\n Flight.fetch(dispatch, ClassroomRequests.starClassroom(classroom, () => {\r\n\r\n }, () => {\r\n\r\n }));\r\n return;\r\n }\r\n\r\n Flight.fetch(dispatch, ClassroomRequests.unstarClassroom(classroom, () => {\r\n\r\n }, () => {\r\n\r\n }));\r\n }\r\n\r\n return (\r\n <LanguageNamespaceContext.Provider value={namespace}>\r\n <div className='d-flex align-items-center pb-3'>\r\n <h1 className='flex-fill'><Text phrase='heading' /></h1>\r\n {!!classrooms.data?.length && (\r\n <IconButton\r\n className='btn btn-outline-dark'\r\n svgName={cvSvgLibrary.Plus}\r\n appLink={newClassroomAppLink}\r\n >\r\n <Text phrase='newClassroom' />\r\n </IconButton>\r\n )}\r\n </div>\r\n\r\n {(() => {\r\n if (!classrooms.data)\r\n return <>Partial loading</>;\r\n\r\n if (!classrooms.data.length)\r\n return <ClassroomsEmptyState />;\r\n\r\n return (\r\n <>\r\n <h2 className='h6'><Text phrase='myClassrooms' /></h2>\r\n <ul className={`list-unstyled d-flex flex-wrap mx-n2 ${styles.classroomList}`}>\r\n {starredClassrooms.map(c => (\r\n <li key={c.id}>\r\n <ClassroomItem onToggleStar={() => onToggleStar(c)} classroom={c} />\r\n </li>\r\n ))}\r\n </ul>\r\n\r\n {otherClassrooms && (\r\n <>\r\n <DivButton\r\n className='cursor-pointer d-inline-block'\r\n onClick={() => setShowOtherClassrooms(!showOtherClassrooms)}\r\n >\r\n <h2 className='h6 d-flex align-items-center'>\r\n <Text phrase='otherClassrooms' />\r\n <SvgContainer\r\n className={`d-inline-block svg-container ${showOtherClassrooms ? styles.caretUp : ''}`}\r\n svgName={cvSvgLibrary.Caret}\r\n />\r\n </h2>\r\n </DivButton>\r\n\r\n {showOtherClassrooms &&\r\n <ul className={`list-unstyled d-flex flex-wrap mx-n2 ${styles.classroomList}`}>\r\n {otherClassrooms.map(c => (\r\n <li key={c.id}>\r\n <ClassroomItem onToggleStar={() => onToggleStar(c)} classroom={c} />\r\n </li>\r\n ))}\r\n </ul>\r\n }\r\n </>\r\n )\r\n }\r\n </>\r\n );\r\n })()}\r\n </LanguageNamespaceContext.Provider>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"classroomList\":\"cv--classroomList--26s7s\",\"caretUp\":\"cv--caretUp--2o9ER\"};","import React from 'react';\r\n\r\nimport { Core } from '@clickview/common';\r\nimport { Text, IconButton, cvSvgLibrary } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nexport function ClassroomsEmptyState(): JSX.Element {\r\n function onClickCreateNew(): void {\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.CLASSROOMS,\r\n action: Actions.Classrooms.NEW_CLASSROOM\r\n });\r\n }\r\n\r\n return (\r\n <div className='text-center pt-5'>\r\n {/* TODO: use actual image and remove hard coded width/height */}\r\n <img\r\n style={{ width: '200px', height: '200px' }}\r\n className='pb-3'\r\n src='/images/classrooms-empty.png'\r\n role='presentation'\r\n alt=''\r\n />\r\n\r\n <h2 className='h6'><Text phrase='emptyStateHeading' /></h2>\r\n\r\n <p className='mb-3'><Text phrase='emptyStateInfo' /></p>\r\n\r\n <IconButton className='btn btn-dark' onClick={onClickCreateNew} svgName={cvSvgLibrary.Plus}>\r\n <Text phrase='createNew' />\r\n </IconButton>\r\n </div>\r\n );\r\n}","import React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { LanguageService, Flight } from '@clickview/common';\r\nimport { Popup, PopupViewProps, useAlerts } from '@clickview/shared';\r\n\r\nimport { MockClassroomGroup } from 'shared/interfaces/mocks';\r\n\r\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\r\nimport { MockClassroom } from 'apps/user-manager/interfaces';\r\nimport { EditClassroomGroupDetails } from 'apps/classrooms/components/edit-classroom-group-details/EditClassroomGroupDetails';\r\n\r\nconst namespace = 'classrooms.createClassroomGroup';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\ninterface CreateClassroomGroupViewProps extends PopupViewProps {\r\n classroomId: string;\r\n studentIds: string[];\r\n}\r\n\r\nexport function CreateClassroomGroupView(props: CreateClassroomGroupViewProps): JSX.Element {\r\n const classroom = Flight.useBasicFetch<MockClassroom>(ClassroomRequests.getClassroom(props.classroomId));\r\n\r\n const alerts = useAlerts();\r\n const dispatch = useDispatch();\r\n\r\n const successCallback = (group: MockClassroomGroup) => {\r\n alerts.success(getPhrase('success', {\r\n groupName: group.name,\r\n classroomName: classroom.data.name\r\n }));\r\n\r\n props.closePopup();\r\n };\r\n\r\n const addStudentsToGroup = (group: MockClassroomGroup) => {\r\n Flight.fetch(dispatch, ClassroomRequests.addStudentsToGroup(props.studentIds, group.id, () => {\r\n successCallback(group);\r\n }));\r\n };\r\n\r\n const saveGroupToClassroom = (group: MockClassroomGroup) => {\r\n Flight.fetch(dispatch, ClassroomRequests.addGroupToClassroom(\r\n group,\r\n props.classroomId,\r\n (newGroup: MockClassroomGroup) => {\r\n if (props.studentIds?.length) {\r\n addStudentsToGroup(newGroup);\r\n return;\r\n }\r\n\r\n successCallback(newGroup);\r\n }, () => {\r\n // TODO: Handle possible errors once we have a server side\r\n alerts.error(getPhrase('error'));\r\n }\r\n ));\r\n };\r\n\r\n return (\r\n <Popup title={getPhrase('title')} closePopup={props.closePopup} showLoadingSpinner={!classroom.data}>\r\n <EditClassroomGroupDetails\r\n saveGroup={saveGroupToClassroom}\r\n onClickCancel={props.closePopup}\r\n />\r\n </Popup>\r\n );\r\n}","import React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { LanguageService, Flight } from '@clickview/common';\r\nimport { Popup, PopupViewProps, useAlerts } from '@clickview/shared';\r\n\r\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\r\nimport { EditClassroomRequest } from 'apps/classrooms/interfaces/EditClassroomRequest';\r\nimport { EditClassroomDetails } from 'apps/classrooms/components/edit-classroom-details/EditClassroomDetails';\r\n\r\nconst namespace = 'classrooms.createClassroom';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\ninterface CreateClassroomView extends PopupViewProps {}\r\n\r\nexport function CreateClassroomView(props: CreateClassroomView): JSX.Element {\r\n const alerts = useAlerts();\r\n const dispatch = useDispatch();\r\n\r\n const saveClassroom = (classroom: EditClassroomRequest) => {\r\n Flight.fetch(dispatch, ClassroomRequests.createClassroom(classroom, () => {\r\n alerts.success(getPhrase('success', { name: classroom.name }));\r\n props.closePopup();\r\n }, () => {\r\n // TODO: Handle possible errors once we have a server side\r\n alerts.error(getPhrase('error'));\r\n }));\r\n };\r\n\r\n return (\r\n <Popup title={getPhrase('title')} closePopup={props.closePopup}>\r\n <EditClassroomDetails\r\n saveClassroom={saveClassroom}\r\n onClickCancel={props.closePopup}\r\n />\r\n </Popup>\r\n );\r\n}","import React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight, LanguageService } from '@clickview/common';\r\nimport { Popup, PopupViewProps, PopupButtons, Text, useAlerts } from '@clickview/shared';\r\n\r\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\r\nimport { MockClassroom } from 'apps/user-manager/interfaces';\r\n\r\nconst namespace = 'classrooms.deleteClassroomGroup';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\ninterface DeleteClassroomGroupViewProps extends PopupViewProps {\r\n classroomId: string;\r\n groupId: string;\r\n}\r\n\r\nexport function DeleteClassroomGroupView(props: DeleteClassroomGroupViewProps): JSX.Element {\r\n const [ showButtonSpinner, setShowButtonSpinner ] = React.useState(false);\r\n\r\n const classroom = Flight.useBasicFetch<MockClassroom>(ClassroomRequests.getClassroom(props.classroomId));\r\n\r\n const dispatch = useDispatch();\r\n const alerts = useAlerts();\r\n\r\n const group = classroom.data\r\n ? classroom.data.groups.find(g => g.id === props.groupId)\r\n : null;\r\n\r\n const deleteGroup = () => {\r\n setShowButtonSpinner(true);\r\n\r\n Flight.fetch(dispatch, ClassroomRequests.deleteGroup(props.groupId, props.classroomId, () => {\r\n setShowButtonSpinner(false);\r\n\r\n alerts.success(getPhrase('success', { name: group.name }));\r\n\r\n props.closePopup();\r\n }, () => {\r\n alerts.success(getPhrase('error', { name: group.name }));\r\n }));\r\n };\r\n\r\n return (\r\n <Popup title={getPhrase('title')} showLoadingSpinner={!group} closePopup={props.closePopup}>\r\n <p>\r\n <Text namespace={namespace} phrase='areYouSure' options={{ name: group.name }} />\r\n </p>\r\n\r\n <PopupButtons buttons={\r\n [\r\n {\r\n variant: 'link',\r\n onClick: props.closePopup,\r\n buttonText: getPhrase('cancel')\r\n },\r\n {\r\n variant: 'danger',\r\n onClick: deleteGroup,\r\n buttonText: getPhrase('delete'),\r\n isSpinnerButton: true,\r\n showSpinner: showButtonSpinner\r\n }\r\n ]\r\n }/>\r\n </Popup>\r\n );\r\n}","import React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { LanguageService, Flight } from '@clickview/common';\r\nimport { Popup, PopupViewProps, Text, PopupButtons, useAlerts } from '@clickview/shared';\r\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\r\nimport { MockClassroom } from 'apps/user-manager/interfaces';\r\n\r\nconst namespace = 'classrooms.deleteClassroom';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\ninterface DeleteClassroomViewProps {\r\n id: string;\r\n}\r\n\r\nexport function DeleteClassroomView(props: DeleteClassroomViewProps & PopupViewProps): JSX.Element {\r\n const [ showButtonSpinner, setShowButtonSpinner ] = React.useState(false);\r\n\r\n const dispatch = useDispatch();\r\n const alerts = useAlerts();\r\n\r\n const classroom = Flight.useBasicFetch<MockClassroom>(ClassroomRequests.getClassroom(props.id));\r\n\r\n function deleteClassrooms(): void {\r\n setShowButtonSpinner(true);\r\n\r\n Flight.fetch(dispatch, ClassroomRequests.deleteClassroom(props.id, () => {\r\n setShowButtonSpinner(false);\r\n\r\n alerts.success(getPhrase('success', { name: classroom.data.name }));\r\n\r\n props.closePopup();\r\n }));\r\n }\r\n\r\n const showLoadingSpinner = showButtonSpinner || !classroom.data;\r\n\r\n return (\r\n <Popup title={getPhrase('title')} closePopup={props.closePopup} showLoadingSpinner={showLoadingSpinner}>\r\n {classroom.data && (\r\n <>\r\n <p>\r\n <Text namespace={namespace} phrase='confirmation' options={{ name: classroom.data.name }} />\r\n </p>\r\n\r\n <PopupButtons buttons={\r\n [\r\n {\r\n variant: 'link',\r\n onClick: props.closePopup,\r\n buttonText: getPhrase('cancel')\r\n },\r\n {\r\n variant: 'danger',\r\n onClick: deleteClassrooms,\r\n buttonText: getPhrase('remove'),\r\n isSpinnerButton: true,\r\n showSpinner: showButtonSpinner\r\n }\r\n ]\r\n }/>\r\n </>\r\n )}\r\n </Popup>\r\n );\r\n}","import React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight, LanguageService } from '@clickview/common';\r\nimport { Popup, useAlerts, PopupViewProps } from '@clickview/shared';\r\n\r\nimport { MockClassroomGroup } from 'shared/interfaces/mocks';\r\n\r\nimport { MockClassroom } from 'apps/user-manager/interfaces';\r\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\r\nimport { EditClassroomGroupDetails } from 'apps/classrooms/components/edit-classroom-group-details/EditClassroomGroupDetails';\r\n\r\nconst namespace = 'classrooms.editClassroomGroup';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\ninterface EditClassroomGroupViewProps extends PopupViewProps {\r\n classroomId: string;\r\n groupId: string;\r\n}\r\n\r\nexport function EditClassroomGroupView(props: EditClassroomGroupViewProps): JSX.Element {\r\n const classroom = Flight.useBasicFetch<MockClassroom>(ClassroomRequests.getClassroom(props.classroomId));\r\n\r\n const alerts = useAlerts();\r\n const dispatch = useDispatch();\r\n\r\n const saveGroup = (editedGroup: MockClassroomGroup) => {\r\n Flight.fetch(dispatch, ClassroomRequests.editGroup(editedGroup, classroom.data, () => {\r\n alerts.success(getPhrase('success', { groupName: editedGroup.name }));\r\n\r\n props.closePopup();\r\n }, () => {\r\n // TODO: Handle possible errors once we have a server side\r\n alerts.error(getPhrase('error', { groupName: group.name }));\r\n }));\r\n };\r\n\r\n const group = classroom.data\r\n ? classroom.data.groups.find(g => g.id === props.groupId)\r\n : null;\r\n\r\n return (\r\n <Popup title={getPhrase('title')} closePopup={props.closePopup} showLoadingSpinner={!group}>\r\n <EditClassroomGroupDetails\r\n saveGroup={saveGroup}\r\n group={group}\r\n onClickCancel={props.closePopup}\r\n />\r\n </Popup>\r\n );\r\n}","import React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { LanguageService, Flight } from '@clickview/common';\r\nimport { Popup, PopupViewProps, useAlerts } from '@clickview/shared';\r\n\r\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\r\nimport { EditClassroomRequest } from 'apps/classrooms/interfaces/EditClassroomRequest';\r\nimport { EditClassroomDetails } from 'apps/classrooms/components/edit-classroom-details/EditClassroomDetails';\r\nimport { MockClassroom } from 'apps/user-manager/interfaces';\r\n\r\nconst namespace = 'classrooms.editClassroom';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\ninterface EditClassroomView extends PopupViewProps {\r\n id: string;\r\n}\r\n\r\nexport function EditClassroomView(props: EditClassroomView): JSX.Element {\r\n const alerts = useAlerts();\r\n const dispatch = useDispatch();\r\n\r\n const classroom = Flight.useBasicFetch<MockClassroom>(ClassroomRequests.getClassroom(props.id));\r\n\r\n const saveClassroom = (updatedClassroom: EditClassroomRequest) => {\r\n Flight.fetch(dispatch, ClassroomRequests.editClassroom(updatedClassroom, () => {\r\n alerts.success(getPhrase('success', { name: updatedClassroom.name }));\r\n props.closePopup();\r\n }, () => {\r\n // TODO: Handle possible errors once we have a server side\r\n alerts.error(getPhrase('error', { name: classroom.data.name }));\r\n }));\r\n };\r\n\r\n return (\r\n <Popup\r\n title={getPhrase('title', { name: classroom.data?.name })}\r\n closePopup={props.closePopup}\r\n showLoadingSpinner={!classroom.data}\r\n >\r\n {classroom.data && (\r\n <EditClassroomDetails\r\n classroom={classroom.data}\r\n saveClassroom={saveClassroom}\r\n onClickCancel={props.closePopup}\r\n />\r\n )}\r\n </Popup>\r\n );\r\n}","import React from 'react';\r\n\r\nimport { Text, LanguageNamespaceContext, AppLink } from '@clickview/shared';\r\nimport { Flight, LanguageService, Core } from '@clickview/common';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { PillTabSelector, PillTab } from 'shared/components/pill-tab-selector/PillTabSelector';\r\n\r\nimport { MockClassroom } from 'apps/user-manager/interfaces';\r\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\r\nimport { ManageClassroomStudents } from 'apps/classrooms/components/manage-classroom-students/ManageClassroomStudents';\r\nimport { ManageClassroomGroups } from 'apps/classrooms/components/manage-classroom-groups/ManageClassroomGroups';\r\nimport { ManageClassroomStudentsEmptyState } from 'apps/classrooms/components/manage-classroom-students/empty-state/ManageClassroomStudentsEmptyState';\r\n\r\nconst namespace = 'classrooms.manageClassroom';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\nexport type ClassroomManagerTabs = 'students' | 'groups';\r\n\r\nconst getClassroomAppLink = (id: string) => ({\r\n application: AppChannels.CLASSROOMS,\r\n action: Actions.Classrooms.CLASSROOM,\r\n args: [id]\r\n});\r\n\r\ninterface ManageClassroomViewProps {\r\n id: string;\r\n activeTab: ClassroomManagerTabs;\r\n}\r\n\r\nManageClassroomView.defaultProps = {\r\n activeTab: 'students'\r\n};\r\n\r\nexport function ManageClassroomView(props: ManageClassroomViewProps): JSX.Element {\r\n const classroom = Flight.useBasicFetch<MockClassroom>(ClassroomRequests.getClassroom(props.id));\r\n\r\n function onSelectStudentsTab(): void {\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.CLASSROOMS,\r\n action: Actions.Classrooms.MANAGE_CLASSROOM,\r\n args: [props.id],\r\n params: {\r\n tab: 'students'\r\n }\r\n });\r\n }\r\n\r\n function onSelectGroupsTab(): void {\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.CLASSROOMS,\r\n action: Actions.Classrooms.MANAGE_CLASSROOM,\r\n args: [props.id],\r\n params: {\r\n tab: 'groups'\r\n }\r\n });\r\n }\r\n\r\n const tabs: PillTab[] = [{\r\n name: getPhrase('students'),\r\n onSelect: onSelectStudentsTab,\r\n active: props.activeTab === 'students'\r\n }, {\r\n name: getPhrase('groups'),\r\n onSelect: onSelectGroupsTab,\r\n active: props.activeTab === 'groups'\r\n }];\r\n\r\n return (\r\n <LanguageNamespaceContext.Provider value={namespace}>\r\n <h1 className='mb-1 pl-4'><Text phrase='heading' /></h1>\r\n\r\n {(() => {\r\n if (!classroom.data)\r\n return <>Partial Loading</>;\r\n\r\n let ActiveTabComponent: (props: any) => JSX.Element;\r\n const hasStudents = !!classroom.data.students?.length;\r\n\r\n switch (props.activeTab) {\r\n case 'students':\r\n ActiveTabComponent = hasStudents ? ManageClassroomStudents : ManageClassroomStudentsEmptyState;\r\n break;\r\n case 'groups':\r\n ActiveTabComponent = ManageClassroomGroups;\r\n }\r\n\r\n return (\r\n <>\r\n {classroom.data &&\r\n <p className='pb-3 pl-4'>\r\n <Text phrase='goTo' />\r\n <AppLink className='info-link' appLink={getClassroomAppLink(props.id)}>{classroom.data.name}</AppLink>\r\n </p>\r\n }\r\n\r\n <div className='pl-4'>\r\n <PillTabSelector tabs={tabs} />\r\n </div>\r\n\r\n <ActiveTabComponent classroom={classroom.data} />\r\n </>\r\n );\r\n })()}\r\n </LanguageNamespaceContext.Provider>\r\n );\r\n}","import React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { LanguageService, Flight } from '@clickview/common';\r\nimport { Popup, PopupViewProps, Text, PopupButtons, useAlerts } from '@clickview/shared';\r\nimport { MockClassroom } from 'apps/user-manager/interfaces/mocks/MockClassroom';\r\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\r\n\r\nconst namespace = 'classrooms.removeStudentsFromClassroom';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\ninterface RemoveStudentsFromClassroomViewProps extends PopupViewProps {\r\n classroomId: string;\r\n studentIds: string[];\r\n}\r\n\r\nexport function RemoveStudentsFromClassroomView(props: RemoveStudentsFromClassroomViewProps): JSX.Element {\r\n const [ showButtonSpinner, setShowButtonSpinner ] = React.useState(false);\r\n\r\n const classroom = Flight.useBasicFetch<MockClassroom>(ClassroomRequests.getClassroom(props.classroomId));\r\n\r\n const dispatch = useDispatch();\r\n const alerts = useAlerts();\r\n\r\n const langOptions = { smartCount: props.studentIds.length, classroomName: classroom.data?.name };\r\n\r\n function removeStudents(): void {\r\n setShowButtonSpinner(true);\r\n\r\n Flight.fetch(dispatch, ClassroomRequests.removeStudents(props.studentIds, props.classroomId, () => {\r\n setShowButtonSpinner(false);\r\n\r\n alerts.success(getPhrase('success', langOptions));\r\n\r\n props.closePopup();\r\n }));\r\n }\r\n\r\n const title = classroom.data ? getPhrase('title', langOptions) : '';\r\n\r\n return (\r\n <Popup title={title} closePopup={props.closePopup} showLoadingSpinner={!classroom.data}>\r\n {classroom.data &&\r\n <>\r\n <p>\r\n <Text namespace={namespace} phrase='confirm' options={langOptions} />\r\n </p>\r\n\r\n <PopupButtons buttons={\r\n [\r\n {\r\n variant: 'link',\r\n onClick: props.closePopup,\r\n buttonText: getPhrase('cancel')\r\n },\r\n {\r\n variant: 'danger',\r\n onClick: removeStudents,\r\n buttonText: getPhrase('remove'),\r\n isSpinnerButton: true,\r\n showSpinner: showButtonSpinner\r\n }\r\n ]\r\n }/>\r\n </>\r\n }\r\n </Popup>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { Core, HashObject, ReactApplication } from '@clickview/common';\r\nimport { VideoAction, Video, VideoActionsContext } from '@clickview/shared';\r\nimport {\r\n ContentUpdatesView,\r\n ClassificationUpdateView\r\n} from '@clickview/playlists';\r\n\r\nimport { AppChannels, Layouts, LayoutRegions } from 'shared/constants';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts';\r\nimport { LiteContentUpdateAppLinks } from 'apps/content-updates/utils';\r\n\r\nclass ContentUpdatesRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.CONTENT_UPDATES;\r\n }\r\n\r\n protected get appRoutes(): HashObject {\r\n return {\r\n 'content-updates': 'contentUpdates',\r\n 'content-updates/:id': 'classificationUpdate'\r\n };\r\n }\r\n}\r\n\r\nexport class ContentUpdatesApplication extends ReactApplication {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Content Updates Application';\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true,\r\n alertRegion: LayoutRegions.ALERT\r\n }\r\n };\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.CONTENT_UPDATES;\r\n }\r\n\r\n public static get router(): typeof ContentUpdatesRouter {\r\n return ContentUpdatesRouter;\r\n }\r\n\r\n public contentUpdates(): void {\r\n const videoActions = [\r\n VideoAction.Share,\r\n VideoAction.AddToPlaylist\r\n ];\r\n\r\n const getActionAppLink = (video: Video, action: VideoAction) => {\r\n switch (action) {\r\n case VideoAction.AddToPlaylist:\r\n return LiteContentUpdateAppLinks.getAddToPlaylistAppLink(video);\r\n\r\n case VideoAction.Share:\r\n return LiteContentUpdateAppLinks.getShareAppLink(video);\r\n }\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT, (\r\n <VideoActionsContext.Provider value={{ videoActions, getActionAppLink }}>\r\n <ContentUpdatesView appLinks={LiteContentUpdateAppLinks} />\r\n </VideoActionsContext.Provider>\r\n ));\r\n }\r\n\r\n public classificationUpdate(classificationId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <ClassificationUpdateView classificationId={classificationId} appLinks={LiteContentUpdateAppLinks} />);\r\n }\r\n}","import { Video, Series, Classification } from '@clickview/shared';\r\nimport { ContentUpdateAppLinks } from '@clickview/playlists';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nexport const LiteContentUpdateAppLinks: ContentUpdateAppLinks = {\r\n getVideoAppLink: (video: Video) => ({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.PLAY_VIDEO,\r\n args: [video.id]\r\n }),\r\n getSeriesAppLink: (series: Series) => ({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SERIES,\r\n args: [series.id]\r\n }),\r\n getClassificationUpdateAppLink: (classification: Classification) => ({\r\n application: AppChannels.CONTENT_UPDATES,\r\n action: Actions.ContentUpdates.CLASSIFICATION_UPDATE,\r\n args: [classification.id]\r\n }),\r\n getClassificationAppLink: (classification: Classification) => ({\r\n application: AppChannels.SUBJECT,\r\n action: Actions.Classifications.CLASSIFICATION,\r\n args: [classification.id]\r\n }),\r\n getShareAppLink: (video: Video) => ({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SHARE,\r\n args: [video.id],\r\n params: { entityType: 'video' }\r\n }),\r\n getAddToPlaylistAppLink: (video: Video) => ({\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.ADD_TO_PLAYLIST,\r\n args: [video.id]\r\n }),\r\n dashboardAppLink: {\r\n application: AppChannels.DASHBOARD,\r\n action: Actions.Dashboard.HOME\r\n },\r\n contentUpdatesAppLink: {\r\n application: AppChannels.CONTENT_UPDATES,\r\n action: Actions.ContentUpdates.CONTENT_UPDATES\r\n }\r\n};","export * from './LiteContentUpdateAppLinks';","import * as React from 'react';\r\nimport { ObjectHash } from 'backbone';\r\nimport { Core, HashObject } from '@clickview/common';\r\nimport { DashboardWithSearchView } from '@clickview/dashboard';\r\n\r\nimport { AppChannels, Layouts, LayoutRegions } from 'shared/constants';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts';\r\n\r\nclass DashboardAppRouter extends Core.AppRouter {\r\n protected get channelName(): string {\r\n return AppChannels.DASHBOARD;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'dashboard/:id(/:name/)': 'dashboard',\r\n\r\n '(/)': 'index',\r\n };\r\n }\r\n}\r\n\r\nexport class DashboardApplication extends Core.Application {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Dashboard Application';\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.DASHBOARD;\r\n }\r\n\r\n public static get router(): typeof DashboardAppRouter {\r\n return DashboardAppRouter;\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true\r\n }\r\n };\r\n }\r\n\r\n public get appChannels(): HashObject<string> {\r\n return {\r\n dashboard: AppChannels.DASHBOARD,\r\n subject: AppChannels.SUBJECT\r\n };\r\n }\r\n\r\n public index(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <DashboardWithSearchView appChannels={this.appChannels} />);\r\n }\r\n}","import * as React from 'react';\r\n\r\nimport { Radio, ObjectHash } from 'backbone';\r\n\r\nimport { Core, HashObject, ReactApplication } from '@clickview/common';\r\nimport { DialogView } from '@clickview/shared';\r\n\r\nimport { AppChannels, Layouts, LayoutRegions } from 'shared/constants';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts';\r\nimport { PlayView, SeriesView, PlaySharedView, EditVideoView, FavoriteVideosView } from 'shared/views';\r\nimport { NotFoundError } from 'shared/errors';\r\n\r\nimport { NotFoundView, DevErrorView, ErrorView } from 'apps/default/views';\r\nimport { MyUploadsView } from 'apps/upload/views/my-uploads/MyUploadsView';\r\nimport { EditUploadView } from 'apps/upload/views/edit-upload/EditUploadView';\r\nimport { MockView } from './views/mock-testing/MockView';\r\nimport { ShareView } from 'shared/views/share/ShareView';\r\n\r\nclass DefaultAppRouter extends Core.AppRouter {\r\n protected get channelName(): string {\r\n return AppChannels.DEFAULT;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n // These routes should be moved to their own applications eventually\r\n 'videos/:id(/)': 'playVideo',\r\n 'my-uploads(/)': 'myUploads',\r\n 'series/:id(/)': 'series',\r\n 'share/:shortCode(/)': 'playSharedVideo',\r\n 'favourited-videos(/)': 'favoriteVideos',\r\n 'mock(/)': 'mock',\r\n '*path' : 'catchAllRoutes',\r\n };\r\n }\r\n\r\n protected get appLinks(): string[] {\r\n return [ 'devError', 'dialogError', 'error', 'notFound', 'editVideo', 'editUpload', 'share' ];\r\n }\r\n}\r\n\r\nexport class DefaultApplication extends ReactApplication {\r\n public layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Default Application';\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true,\r\n alertRegion: LayoutRegions.ALERT\r\n }\r\n };\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.DEFAULT;\r\n }\r\n\r\n public static get router(): typeof DefaultAppRouter {\r\n return DefaultAppRouter;\r\n }\r\n\r\n public share(id: string, params: HashObject): void {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <ShareView\r\n entityId={id}\r\n entityType={params.entityType}\r\n closePopup={() => this.layout.closePopup()}\r\n />\r\n );\r\n }\r\n\r\n public playVideo(id: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <PlayView id={id} />);\r\n }\r\n\r\n public playSharedVideo(shortCode: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <PlaySharedView shortCode={shortCode} />);\r\n }\r\n\r\n public myUploads(params: HashObject): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <MyUploadsView cursor={params.cursor} />);\r\n }\r\n\r\n public editVideo(videoId: string): void {\r\n this.layout.showChildView(\r\n LayoutRegions.POPUP, <EditVideoView id={videoId} closePopup={() => this.layout.closePopup()} />);\r\n }\r\n\r\n public editUpload(uploadId: string): void {\r\n this.layout.showChildView(\r\n LayoutRegions.POPUP, <EditUploadView uploadId={uploadId} closePopup={() => this.layout.closePopup()} />);\r\n }\r\n\r\n public series(id: string, params: HashObject): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <SeriesView id={id} cursor={params.cursor} />);\r\n }\r\n\r\n public favoriteVideos(params: HashObject): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <FavoriteVideosView cursor={params.cursor} />);\r\n }\r\n\r\n public mock(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <MockView />);\r\n }\r\n\r\n public catchAllRoutes(): void {\r\n Core.ErrorHelper.throw(new NotFoundError());\r\n }\r\n\r\n public notFound(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <NotFoundView />);\r\n }\r\n\r\n public error(): void {\r\n const error = Radio.channel('error:view').request('current:error');\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT, <ErrorView error={error} />);\r\n }\r\n\r\n public dialogError(): void {\r\n const error = Radio.channel('error:view').request('current:error');\r\n\r\n if (!error)\r\n return;\r\n\r\n const { dialogOptions } = error;\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <DialogView\r\n title={dialogOptions.title}\r\n text={dialogOptions.text}\r\n buttons={dialogOptions.buttons}\r\n onDone={error.onDone}\r\n onFail={error.onFail}\r\n closePopup={() => this.layout.closePopup()}\r\n />\r\n );\r\n }\r\n\r\n public devError(): void {\r\n const error = Radio.channel('error:view').request('current:error');\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT, <DevErrorView error={error} />);\r\n }\r\n}","import * as React from 'react';\r\nimport { Alert } from 'react-bootstrap';\r\n\r\ninterface DevErrorViewProps {\r\n error: Error;\r\n}\r\n\r\nexport function DevErrorView({ error }: DevErrorViewProps): React.ReactElement {\r\n if (!error)\r\n return <></>;\r\n\r\n return (\r\n <>\r\n <h1>{error.name}</h1>\r\n <Alert variant='danger'>\r\n <h2>{error.message}</h2>\r\n </Alert>\r\n <Alert variant='warning'>\r\n <h3>Call stack</h3>\r\n <code>{error.stack}</code>\r\n </Alert>\r\n </>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { ErrorPageError } from '@clickview/shared';\r\n\r\ninterface ErrorViewProps {\r\n error: ErrorPageError;\r\n}\r\n\r\nexport function ErrorView({ error }: ErrorViewProps): React.ReactElement {\r\n if (!error)\r\n return <></>;\r\n\r\n return (\r\n <div className='bg-white mt-3 p-5 text-center'>\r\n <h1 className='h4 text-muted'>{error.heading}</h1>\r\n <p>{error.description}</p>\r\n </div>\r\n );\r\n}","export * from './dev-error/LiteDevErrorView';\r\nexport * from './error/LiteErrorView';\r\nexport * from './not-found/LiteNotFoundView';","import { Flight, Xhr } from '@clickview/common';\r\n\r\nimport initialTodos from './mock-data.json';\r\n\r\nexport interface Todo {\r\n id: string;\r\n text: string;\r\n done: boolean;\r\n}\r\n\r\nexport const MockRequests = {\r\n getTodos(): Flight.SimulatedRequest {\r\n return {\r\n url: '',\r\n key: `todos`,\r\n successResponse: () => {\r\n return Flight.Simulator.getAll('todos', initialTodos);\r\n }\r\n };\r\n },\r\n addTodo(text: string, success: () => void, error: (xhr: Xhr) => void): Flight.SimulatedRequest {\r\n return {\r\n url: '',\r\n key: 'add:todo',\r\n invalidationKeys: ['todos'],\r\n successResponse: () => {\r\n return Flight.Simulator.create('todos', { text, done: false });\r\n },\r\n // errorResponse: () => {\r\n // return {\r\n // status: HttpStatus.BadRequest,\r\n // responseJSON: {\r\n // reason: 'Todo item must be at least 2 characters'\r\n // },\r\n // getResponseHeader: (name: string) => {\r\n // return 'nothing';\r\n // }\r\n // };\r\n // },\r\n success,\r\n error\r\n };\r\n },\r\n updateTodo(todo: Todo): Flight.SimulatedRequest {\r\n return {\r\n url: '',\r\n key: 'update:todo',\r\n invalidationKeys: ['todos'],\r\n successResponse: () => {\r\n return Flight.Simulator.update('todos', todo);\r\n }\r\n };\r\n },\r\n deleteTodo(id: string): Flight.SimulatedRequest {\r\n return {\r\n url: '',\r\n key: 'delete:todo',\r\n invalidationKeys: ['todos'],\r\n successResponse: () => {\r\n Flight.Simulator.delete('todos', id);\r\n return {};\r\n }\r\n };\r\n }\r\n};\r\n\r\n","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { Flight, HashObject, Xhr } from '@clickview/common';\r\nimport { MockRequests, Todo } from './MockRequests';\r\nimport { SvgContainer, cvSvgLibrary, SvgContainerSize } from '@clickview/shared';\r\n\r\ninterface TodoItemProps {\r\n todo: Todo;\r\n finish: (todo: Todo, done: boolean) => void;\r\n delete: (id: string) => void;\r\n}\r\n\r\nfunction TodoItem(props: TodoItemProps): React.ReactElement {\r\n const [ checked, setChecked ] = React.useState(props.todo.done);\r\n\r\n const finish = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n event.preventDefault();\r\n props.finish(props.todo, !checked);\r\n setChecked(!checked);\r\n };\r\n\r\n return (\r\n <div className='custom-control custom-checkbox my-2 mr-sm-2'>\r\n <input\r\n type='checkbox'\r\n className='custom-control-input'\r\n id={`todo-${props.todo.id}`}\r\n onChange={finish}\r\n checked={checked}></input>\r\n <label className='custom-control-label' htmlFor={`todo-${props.todo.id}`}>\r\n {props.todo.text}\r\n </label>\r\n <span className='text-muted' onClick={() => props.delete(props.todo.id)}>\r\n <SvgContainer svgName={cvSvgLibrary.Close} size={SvgContainerSize.Small}></SvgContainer>\r\n </span>\r\n </div>\r\n );\r\n}\r\n\r\nexport function MockView(): React.ReactElement {\r\n\r\n const todos = Flight.useBasicFetch<Todo[]>(MockRequests.getTodos());\r\n\r\n const [ inputText, setInputText ] = React.useState<string>('');\r\n const dispatch = useDispatch();\r\n\r\n const onAddTodo = (event: React.FormEvent) => {\r\n event.preventDefault();\r\n Flight.fetch(dispatch, MockRequests.addTodo(inputText, () => {\r\n setInputText('');\r\n }, (xhr: Xhr) => {\r\n alert(xhr.responseJSON.reason);\r\n }));\r\n };\r\n\r\n const onChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n setInputText(event.target.value);\r\n };\r\n\r\n const deleteTodo = (id: string) => {\r\n Flight.fetch(dispatch, MockRequests.deleteTodo(id));\r\n };\r\n\r\n const finish = (todo: Todo, done: boolean) => {\r\n todo.done = done;\r\n Flight.fetch(dispatch, MockRequests.updateTodo(todo));\r\n };\r\n\r\n if (!todos.data)\r\n return <div>Loading...</div>;\r\n\r\n return (\r\n <div>\r\n <h1>Todo list</h1>\r\n {todos.data.map(t => {\r\n return <TodoItem key={t.id} todo={t} finish={finish} delete={deleteTodo} />;\r\n })}\r\n <form onSubmit={onAddTodo} className='mt-3'>\r\n <div className='form-group'>\r\n <input type='text' className='form-control mb-3 w-50' placeholder='add a new todo' id='todo' onChange={onChange} value={inputText}></input>\r\n </div>\r\n </form>\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\n\r\n/**\r\n * TODO: Implement a proper NotFoundView\r\n */\r\nexport function NotFoundView(): React.ReactElement {\r\n return (\r\n <>\r\n <h1>Not Found</h1>\r\n </>\r\n );\r\n}","import * as React from 'react';\r\nimport { Core, HashObject, ReactApplication } from '@clickview/common';\r\n\r\nimport { AppChannels, Layouts, LayoutRegions } from 'shared/constants';\r\nimport { EmbedLayoutView } from 'shared/layouts';\r\n\r\nimport { EmbedView } from 'apps/embed/views';\r\n\r\nclass EmbedAppRouter extends Core.AppRouter {\r\n protected get channelName(): string {\r\n return AppChannels.EMBED;\r\n }\r\n\r\n protected get appRoutes(): HashObject {\r\n return {\r\n 'share/embed/:shortCode': 'embedVideo'\r\n };\r\n }\r\n}\r\n\r\nexport class EmbedApplication extends ReactApplication {\r\n public layout: EmbedLayoutView;\r\n\r\n public get name(): string {\r\n return 'Embed Application';\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<Core.LayoutViewOptions> {\r\n return {\r\n name: Layouts.EMBED_LAYOUT\r\n };\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.EMBED;\r\n }\r\n\r\n public static get router(): typeof EmbedAppRouter {\r\n return EmbedAppRouter;\r\n }\r\n\r\n public embedVideo(shortCode: string, params: HashObject = {}): void {\r\n const { a = false } = params;\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EmbedView id={shortCode} autoplay={a} />);\r\n }\r\n}","import * as React from 'react';\r\nimport { Flight } from '@clickview/common';\r\nimport { Video, Config, ConfigRequests } from '@clickview/shared';\r\n\r\nimport { VideoRequests } from 'shared/flight-requests';\r\nimport { WebPlayer } from 'shared/components';\r\n\r\nimport styles from './embed.scss';\r\n\r\ninterface EmbedViewProps {\r\n /**\r\n * TODO: Replace id with shortcode. It's just a master id now\r\n * as a placeholder\r\n */\r\n id: string;\r\n autoplay: boolean;\r\n}\r\n\r\nexport function EmbedView(props: EmbedViewProps): JSX.Element {\r\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.id));\r\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config);\r\n\r\n /**\r\n * Our body normally has overflow-y: scroll;\r\n * So we need to override it for the embedded play view\r\n */\r\n React.useEffect(() => {\r\n document.body.classList.add('overflow-hidden');\r\n return () => document.body.classList.remove('overflow-hidden');\r\n }, []);\r\n\r\n\r\n if (!video.data || !config.data)\r\n return <></>;\r\n\r\n return (\r\n <WebPlayer id={video.data.id} webPlayerHost={config.data.webPlayerUrl} className={styles.embeddedPlayer} />\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"embeddedPlayer\":\"cv--embeddedPlayer--3kXb6\"};","export * from './embed/EmbedView';","import * as React from 'react';\r\n\r\nimport { Core, HashObject, ReactApplication, BackboneViewWrapper } from '@clickview/common';\r\nimport { NotificationsView, LayoutRegions } from '@clickview/shared';\r\n\r\nimport { Layouts, AppChannels } from 'shared/constants';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts';\r\n\r\nclass NotificationsAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.NOTIFICATIONS;\r\n }\r\n\r\n public get appRoutes(): HashObject {\r\n return {\r\n 'notifications(/)': 'index'\r\n };\r\n }\r\n}\r\n\r\nexport class NotificationsApplication extends ReactApplication {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Notifications Application';\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true,\r\n alertRegion: LayoutRegions.ALERT\r\n }\r\n };\r\n }\r\n\r\n public static get router(): any {\r\n return NotificationsAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.NOTIFICATIONS;\r\n }\r\n\r\n public index(params: HashObject): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <BackboneViewWrapper view={NotificationsView} options={{ params }} />);\r\n }\r\n}","import { BaseNotificationsAppVariables, NotificationsAppLinks, NotificationType } from '@clickview/shared';\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nexport class NotificationsAppVariables extends BaseNotificationsAppVariables {\r\n public get appLinks(): NotificationsAppLinks {\r\n return {\r\n videoDetails: {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.PLAY_VIDEO\r\n },\r\n\r\n notifications: {\r\n application: AppChannels.NOTIFICATIONS,\r\n action: Actions.Notifications.HOME\r\n },\r\n\r\n /**\r\n * Below this comment is unimplemented applinks\r\n */\r\n pastReleases: {\r\n application: AppChannels.DASHBOARD,\r\n action: Actions.Dashboard.HOME\r\n },\r\n\r\n awaitingReview: {\r\n application: AppChannels.DASHBOARD,\r\n action: Actions.Dashboard.HOME\r\n },\r\n\r\n editStaffRequest: {\r\n application: AppChannels.DASHBOARD,\r\n action: Actions.Dashboard.HOME\r\n }\r\n };\r\n }\r\n\r\n public get notificationTypesWithAppLinks(): Array<NotificationType> {\r\n return [\r\n NotificationType.VideoReviewReminder,\r\n NotificationType.VideoReviewAddedToLibrary,\r\n NotificationType.CustomLibraryVideoAvailable,\r\n NotificationType.WorkspaceVideoAvailable,\r\n NotificationType.ExchangeVideoAvailable\r\n // NotificationType.StaffRequest,\r\n // NotificationType.StaffRequestFulfilled,\r\n // NotificationType.ChapterMergeSuccess\r\n ];\r\n }\r\n\r\n // TODO\r\n public get notificationsEmptyStateUrl(): string {\r\n // return '/images/empty-states/illo-no-notifications@2x.png';\r\n return '';\r\n }\r\n\r\n public get bellIconColor(): 'dark' {\r\n return 'dark';\r\n }\r\n}","import * as React from 'react';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { Core, BaseAlert, CommonChannels, HashObject, ReactApplication } from '@clickview/common';\r\nimport { Video, Series, Playlist, AlertList } from '@clickview/shared';\r\n\r\nimport {\r\n PlaylistView,\r\n PlaylistsView,\r\n NewPlaylistView,\r\n EditPlaylistView,\r\n DeletePlaylistView,\r\n AddToPlaylistView,\r\n RemoveVideoFromPlaylistView,\r\n PlaylistSortType,\r\n PlaylistSortHelper\r\n} from '@clickview/playlists';\r\n\r\nimport { AppChannels, Layouts, LayoutRegions, Actions } from 'shared/constants';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts';\r\n\r\nclass PlaylistsAppRouter extends Core.AppRouter {\r\n protected get channelName(): string {\r\n return AppChannels.PLAYLISTS;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'playlists(/)': 'index',\r\n 'playlists/:id(/)': 'playlist'\r\n };\r\n }\r\n protected get appLinks(): string[] {\r\n return [\r\n 'newPlaylist',\r\n 'editPlaylist',\r\n 'deletePlaylist',\r\n 'addToPlaylist',\r\n 'removeVideoFromPlaylist'\r\n ];\r\n }\r\n}\r\n\r\nexport class PlaylistsApplication extends ReactApplication {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Playlists Application';\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true,\r\n alertRegion: LayoutRegions.ALERT\r\n }\r\n };\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.PLAYLISTS;\r\n }\r\n\r\n public static get router(): typeof PlaylistsAppRouter {\r\n return PlaylistsAppRouter;\r\n }\r\n\r\n public index(params: HashObject): void {\r\n const getPlaylistAppLink = (playlist: Playlist) => ({\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.PLAYLIST,\r\n args: [playlist.id]\r\n });\r\n\r\n const getSortAppLink = (sort: PlaylistSortType): Core.AppLink => ({\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.HOME,\r\n params: {\r\n sort: sort\r\n }\r\n });\r\n\r\n this.setDefaultQueryParams({ sort: params.sort || PlaylistSortType.Newest });\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <PlaylistsView getPlaylistAppLink={getPlaylistAppLink}\r\n key={params.sort}\r\n getSortAppLink={getSortAppLink}\r\n sort={PlaylistSortHelper.getSortTypeFromName(params.sort)}\r\n />\r\n );\r\n }\r\n\r\n public playlist(id: string): void {\r\n // TODO Replace this\r\n const getVideoAppLink = (video: Video) => ({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.PLAY_VIDEO,\r\n args: [video.id]\r\n });\r\n\r\n const getSeriesAppLink = (series: Series) => ({\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.HOME\r\n });\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <PlaylistView\r\n key={id}\r\n playlistId={id}\r\n application={AppChannels.PLAYLISTS}\r\n getVideoAppLink={getVideoAppLink}\r\n getSeriesAppLink={getSeriesAppLink}\r\n allowEdit\r\n />\r\n );\r\n }\r\n\r\n public newPlaylist(): void {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <NewPlaylistView application={AppChannels.PLAYLISTS} closePopup={() => this.layout.closePopup()} />\r\n );\r\n }\r\n\r\n public editPlaylist(id: string): void {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <EditPlaylistView key={id} playlistId={id} closePopup={() => this.layout.closePopup()} />\r\n );\r\n }\r\n\r\n public deletePlaylist(id: string): void {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <DeletePlaylistView\r\n key={id}\r\n playlistId={id}\r\n routeToOnDelete={{\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.HOME\r\n }}\r\n closePopup={() => this.layout.closePopup()}\r\n />\r\n );\r\n }\r\n\r\n public addToPlaylist(videoId: string): void {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <AddToPlaylistView key={videoId} videoId={videoId} closePopup={() => this.layout.closePopup()} />);\r\n }\r\n\r\n public removeVideoFromPlaylist(videoId: string, playlistId: string): void {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <RemoveVideoFromPlaylistView\r\n key={`${videoId}:${playlistId}`}\r\n videoId={videoId}\r\n playlistId={playlistId}\r\n closePopup={() => this.layout.closePopup()}\r\n />\r\n );\r\n }\r\n}","import * as React from 'react';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { Core, HashObject } from '@clickview/common';\r\n\r\nimport { AppChannels, Layouts, LayoutRegions } from 'shared/constants';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts';\r\n\r\nimport { SearchResultsView } from 'apps/search/views';\r\n\r\nclass SearchAppRouter extends Core.AppRouter {\r\n protected get channelName(): string {\r\n return AppChannels.SEARCH;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'search(/)': 'index'\r\n };\r\n }\r\n}\r\n\r\nexport class SearchApplication extends Core.Application {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Search Application';\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true\r\n }\r\n };\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.SEARCH;\r\n }\r\n\r\n public static get router(): typeof SearchAppRouter {\r\n return SearchAppRouter;\r\n }\r\n\r\n public index(queryParams?: HashObject): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <SearchResultsView queryParams={queryParams} />);\r\n }\r\n}","import * as React from 'react';\r\nimport * as ReactIntersectionObserver from 'react-intersection-observer';\r\n\r\nimport { Core, ArrayHelper } from '@clickview/common';\r\nimport { Text, ContextService } from '@clickview/shared';\r\n\r\nimport { DivButton } from '@clickview/shared';\r\n\r\nimport { FilterContext, FilterPayloadType } from 'apps/search/reducers';\r\nimport { FilterHelper } from 'apps/search/utils';\r\n\r\nconst namespace = 'search.filterActions';\r\n\r\nconst triggerAppLink = (stateChange: FilterPayloadType) => {\r\n const currentQueryParams = Core.LocationUtils.GetQuery();\r\n\r\n const currentAppLink = ContextService.getCurrentRoute().appLink;\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: currentAppLink.application,\r\n action: currentAppLink.action,\r\n params: FilterHelper.buildQueryParams(currentQueryParams, stateChange)\r\n });\r\n};\r\n\r\ninterface FilterActionsProps extends FilterPayloadType {\r\n className?: string;\r\n}\r\n\r\nFilterActions.defaultProps = {\r\n active: false,\r\n className: ''\r\n};\r\n\r\nexport function FilterActions(props: FilterActionsProps): JSX.Element {\r\n const { dispatch } = React.useContext(FilterContext);\r\n\r\n const [ triggerOnClose, setTriggerOnClose ] = React.useState(false);\r\n let [ ref, inView ] = ReactIntersectionObserver.useInView();\r\n\r\n React.useEffect(() => {\r\n if (typeof (window as any).IntersectionObserver === 'undefined')\r\n return;\r\n\r\n if (inView) {\r\n setTriggerOnClose(true);\r\n return;\r\n }\r\n\r\n if (!inView && triggerOnClose) {\r\n setTriggerOnClose(false);\r\n applyFilter();\r\n }\r\n }, [inView]);\r\n\r\n function applyFilter(): void {\r\n // The default value should not be set as a query param\r\n const isDefaultValue = props.selection?.length === 1 && ArrayHelper.first(props.selection)?.default;\r\n\r\n const payload: FilterPayloadType = {\r\n filter: props.filter,\r\n active: props.active && !isDefaultValue,\r\n selection: (props.selection && !isDefaultValue) ? props.selection : []\r\n };\r\n\r\n dispatch({ type: 'apply', payload });\r\n triggerAppLink(payload);\r\n }\r\n\r\n function onClickReset(e: React.MouseEvent): void {\r\n e.preventDefault();\r\n\r\n const payload: FilterPayloadType = {\r\n filter: props.filter,\r\n active: false,\r\n selection: null\r\n };\r\n\r\n dispatch({ type: 'reset', payload });\r\n triggerAppLink(payload);\r\n }\r\n\r\n function onClickApply(e: React.MouseEvent): void {\r\n e.preventDefault();\r\n\r\n applyFilter();\r\n }\r\n\r\n return (\r\n <div ref={ref} className={`d-flex justify-content-between ${props.className}`}>\r\n <DivButton className='text-muted hover-text-underline cursor-pointer' onClick={onClickReset}>\r\n <Text namespace={namespace} phrase='reset' />\r\n </DivButton>\r\n\r\n <DivButton className='info-link' onClick={onClickApply}>\r\n <Text namespace={namespace} phrase='apply' />\r\n </DivButton>\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\nimport { Dropdown } from 'react-bootstrap';\r\n\r\nimport { SearchFilter, MoreFilters } from 'apps/search/interfaces';\r\nimport { FilterHelper } from 'apps/search/utils';\r\nimport { FilterContext } from 'apps/search/reducers';\r\n\r\nimport styles from './filter-button.scss';\r\n\r\ninterface FilterButtonProps {\r\n filter: SearchFilter | MoreFilters;\r\n}\r\n\r\nexport function FilterButton(props: FilterButtonProps): JSX.Element {\r\n const [ label, setLabel ] = React.useState(props.filter.name);\r\n\r\n const FilterComponent = props.filter.customComponent\r\n ? props.filter.customComponent\r\n : FilterHelper.mapTypeToComponent(props.filter.type);\r\n\r\n const { state } = React.useContext(FilterContext);\r\n const filterState = state[props.filter.id];\r\n\r\n React.useEffect(() => {\r\n setLabel(FilterHelper.getLabel(props.filter, filterState));\r\n }, [ props.filter, filterState.selection ]);\r\n\r\n const baseClass = `${styles.filterButton} mx-1 btn`;\r\n const colorClass = filterState.active ? 'btn-info' : 'btn-light';\r\n const caretClass = props.filter.type !== 'dropdown' ? styles.hideCaret : '';\r\n\r\n return (\r\n <Dropdown>\r\n <Dropdown.Toggle id={props.filter.id} className={`${baseClass} ${colorClass} ${caretClass}`}>\r\n {label}\r\n </Dropdown.Toggle>\r\n\r\n <Dropdown.Menu onClick={(e: React.MouseEvent) => e.stopPropagation()}>\r\n <div className={`${styles.filterItem} mx-1 ${props.filter.type !== 'dropdown' ? 'px-2 py-1' : ''}`}>\r\n <FilterComponent filter={props.filter} />\r\n </div>\r\n </Dropdown.Menu>\r\n </Dropdown>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"filterButton\":\"cv--filterButton--2LJ1G\",\"hideCaret\":\"cv--hideCaret--2OStB\",\"filterItem\":\"cv--filterItem--13K5j\"};","import * as React from 'react';\r\nimport { Form } from 'react-bootstrap';\r\n\r\nimport { Checkbox } from '@clickview/shared';\r\n\r\nimport { useBulkCheckboxManager } from 'shared/hooks/useBulkCheckboxManager';\r\n\r\nimport { SearchFilter } from 'apps/search/interfaces';\r\nimport { FilterContext } from 'apps/search/reducers';\r\n\r\nimport { FilterActions } from '../../filter-actions/FilterActions';\r\n\r\ninterface CheckboxFilterProps {\r\n filter: SearchFilter;\r\n}\r\n\r\nexport function CheckboxFilter(props: CheckboxFilterProps): JSX.Element {\r\n const { state } = React.useContext(FilterContext);\r\n const filterState = state[props.filter.id];\r\n\r\n const { onToggleItem, isChecked, getSelected } = useBulkCheckboxManager(props.filter.options, {\r\n preselectedIds: filterState.selection?.map(s => s.id) || []\r\n });\r\n\r\n const selections = getSelected().map(optionName => props.filter.options.find(o => o.id === optionName));\r\n\r\n return (\r\n <>\r\n <h3 className='h6 mb-2'>{props.filter.name}</h3>\r\n\r\n <Form className='mb-3'>\r\n {props.filter.options.map(option => {\r\n return (\r\n <Checkbox\r\n key={option.id}\r\n label={option.name}\r\n name={option.id}\r\n id={option.id}\r\n onChange={() => onToggleItem(option.id)}\r\n checked={isChecked(option.id)}\r\n className='my-1'\r\n />\r\n );\r\n })}\r\n </Form>\r\n\r\n <FilterActions active={!!selections.length} filter={props.filter} selection={selections} />\r\n </>\r\n );\r\n}","import React from 'react';\r\n\r\nimport { Dropdown } from 'react-bootstrap';\r\n\r\nimport { SearchFilter, FilterOption } from 'apps/search/interfaces';\r\nimport { FilterContext } from 'apps/search/reducers';\r\nimport { FilterActions } from '../../filter-actions/FilterActions';\r\n\r\ninterface DropdownFilterProps {\r\n filter: SearchFilter;\r\n}\r\n\r\nexport function DropdownFilter(props: DropdownFilterProps): JSX.Element {\r\n const { state } = React.useContext(FilterContext);\r\n const filterState = state[props.filter.id];\r\n\r\n const [ currentSelection, setCurrentSelection ] = React.useState(filterState.selection);\r\n\r\n return (\r\n <>\r\n {props.filter.options.map(option => (\r\n <Dropdown.Item\r\n key={option.id}\r\n onClick={() => setCurrentSelection([option])}\r\n >\r\n {option.name}\r\n </Dropdown.Item>\r\n ))}\r\n\r\n <FilterActions\r\n active={!!currentSelection}\r\n filter={props.filter}\r\n selection={currentSelection}\r\n className='pt-1 px-2'\r\n />\r\n </>\r\n );\r\n}","export * from './checkbox-filter/CheckboxFilter';\r\nexport * from './more-filters/MoreFilters';\r\nexport * from './switch-filter/SwitchFilter';\r\nexport * from './dropdown-filter/DropdownFilter';\r\nexport * from './radio-filter/RadioFilter';\r\nexport * from './radio-filter/year-level/YearLevelRadioFilter';","import * as React from 'react';\r\n\r\ninterface MoreFiltersProps {}\r\n\r\nexport function MoreFilters(props: MoreFiltersProps): JSX.Element {\r\n return (\r\n <></>\r\n );\r\n}","import * as React from 'react';\r\nimport { Form } from 'react-bootstrap';\r\n\r\nimport { ArrayHelper } from '@clickview/common';\r\n\r\nimport { SearchFilter } from 'apps/search/interfaces';\r\nimport { FilterContext } from 'apps/search/reducers';\r\nimport { FilterActions } from 'apps/search/components';\r\n\r\nimport styles from './radio-filter.scss';\r\n\r\ninterface RadioFilterProps {\r\n filter: SearchFilter;\r\n}\r\n\r\nexport function RadioFilter(props: RadioFilterProps): JSX.Element {\r\n const { state } = React.useContext(FilterContext);\r\n const filterState = state[props.filter.id];\r\n\r\n const [ currentSelection, setCurrentSelection ] = React.useState(filterState.selection);\r\n React.useEffect(() => setCurrentSelection(filterState.selection), [filterState.selection]);\r\n\r\n return (\r\n <>\r\n <h3 className='h6 mb-2'>{props.filter.name}</h3>\r\n\r\n <Form className='mb-3'>\r\n {props.filter.options.map(option => {\r\n const isSelected = currentSelection?.length && option.id === ArrayHelper.first(currentSelection).id;\r\n\r\n return (\r\n <Form.Check\r\n key={option.id}\r\n custom\r\n type='radio'\r\n label={option.name}\r\n name={option.id}\r\n id={option.id}\r\n value={option.id}\r\n onChange={() => setCurrentSelection([option])}\r\n checked={isSelected}\r\n className={styles.radioFilter}\r\n />\r\n );\r\n })}\r\n </Form>\r\n\r\n <FilterActions active={!!currentSelection?.length} filter={props.filter} selection={currentSelection} />\r\n </>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"radioFilter\":\"cv--radioFilter--3srm_\"};","import * as React from 'react';\r\nimport { Form } from 'react-bootstrap';\r\n\r\nimport { ArrayHelper } from '@clickview/common';\r\n\r\nimport { SearchFilter, FilterOption } from 'apps/search/interfaces';\r\nimport { FilterContext } from 'apps/search/reducers';\r\nimport { FilterActions } from 'apps/search/components';\r\n\r\nimport { YearLevelSelect } from 'apps/user-manager/components';\r\n\r\ninterface YearLevelRadioFilterProps {\r\n filter: SearchFilter;\r\n}\r\n\r\nexport function YearLevelRadioFilter(props: YearLevelRadioFilterProps): JSX.Element {\r\n const { state } = React.useContext(FilterContext);\r\n const filterState = state[props.filter.id];\r\n\r\n const [ currentSelection, setCurrentSelection ] = React.useState(filterState.selection);\r\n\r\n React.useEffect(() => setCurrentSelection(filterState.selection), [filterState.selection]);\r\n\r\n function onSelect(yearLevel: FilterOption): void {\r\n setCurrentSelection([yearLevel]);\r\n }\r\n\r\n return (\r\n <>\r\n <h3 className='h6 mb-2'>{props.filter.name}</h3>\r\n\r\n <Form className='mb-3'>\r\n <YearLevelSelect\r\n yearLevels={props.filter.options}\r\n onSelect={onSelect}\r\n selected={ArrayHelper.first(currentSelection)}\r\n />\r\n </Form>\r\n\r\n <FilterActions active={!!currentSelection?.length} filter={props.filter} selection={currentSelection} />\r\n </>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { ToggleSwitch } from 'shared/components/toggle-switch/ToggleSwitch';\r\n\r\nimport { FilterProps } from 'apps/search/interfaces';\r\nimport { FilterActions } from 'apps/search/components';\r\nimport { FilterContext } from 'apps/search/reducers';\r\n\r\nexport function SwitchFilter(props: FilterProps): JSX.Element {\r\n const { state } = React.useContext(FilterContext);\r\n const filterState = state[props.filter.id];\r\n\r\n const [ active, setActive ] = React.useState<boolean>(filterState.active);\r\n\r\n return (\r\n <>\r\n <h3 className='h6 mb-2'>{props.filter.name}</h3>\r\n <p className='d-inline-block w-75 mr-auto'>{props.filter.description}</p>\r\n\r\n <ToggleSwitch onClick={() => setActive(!active)} on={active} />\r\n\r\n <FilterActions active={active} filter={props.filter} />\r\n </>\r\n );\r\n}","export * from './search-filters/SearchFilters';\r\nexport * from './search-filters/PartialSearchFilters';\r\nexport * from './filter-button/FilterButton';\r\nexport * from './filter-actions/FilterActions';\r\nexport * from './reset-button/ResetButton';\r\nexport * from './filter-types';","import * as React from 'react';\r\n\r\nimport { Core } from '@clickview/common';\r\nimport { Text, ContextService, DivButton } from '@clickview/shared';\r\n\r\nimport { FilterContext } from 'apps/search/reducers';\r\n\r\ninterface ResetButtonProps {\r\n currentQueryParam: string;\r\n}\r\n\r\nexport function ResetButton(props: ResetButtonProps): JSX.Element {\r\n const { dispatch } = React.useContext(FilterContext);\r\n\r\n const onClickReset = () => {\r\n const currentAppLink = ContextService.getCurrentRoute().appLink;\r\n\r\n const nextAppLink: Core.AppLink = {\r\n application: currentAppLink.application,\r\n action: currentAppLink.action\r\n };\r\n\r\n if (props.currentQueryParam)\r\n nextAppLink.params = { query: props.currentQueryParam };\r\n\r\n Core.AppLinkHelper.trigger(nextAppLink);\r\n\r\n dispatch({\r\n type: 'trigger-reset',\r\n payload: {}\r\n });\r\n };\r\n\r\n return (\r\n <DivButton\r\n onClick={onClickReset}\r\n className='hover-text-underline cursor-pointer d-flex align-items-center ml-2'\r\n >\r\n <Text namespace='search.resetButton' phrase='reset' />\r\n </DivButton>\r\n );\r\n}","import React from 'react';\r\n\r\nimport { FunctionHelper, ObjectHelper, Core } from '@clickview/common';\r\nimport { SvgContainer, cvSvgLibrary, ContextService } from '@clickview/shared';\r\n\r\nimport styles from './scoped-search-bar.scss';\r\n\r\ninterface ScopedSearchBarProps {\r\n id: string;\r\n onSubmit?: (query: string) => void;\r\n name?: string;\r\n placeholder?: string;\r\n className?: string;\r\n queryParamName?: string;\r\n debounceTime?: number;\r\n}\r\n\r\nScopedSearchBar.defaultProps = {\r\n debounceTime: 300,\r\n queryParamName: 'query'\r\n};\r\n\r\nexport function ScopedSearchBar(props: ScopedSearchBarProps): JSX.Element {\r\n const [ searchQuery, setSearchQuery ] = React.useState('');\r\n\r\n /**\r\n * Update the value in the search bar to match an existing query param on first load\r\n */\r\n React.useEffect(() => {\r\n const currentQueryParams = ContextService.getCurrentRoute().appLink.params;\r\n\r\n if (!currentQueryParams || typeof currentQueryParams === 'string')\r\n return;\r\n\r\n if (currentQueryParams[props.queryParamName])\r\n setSearchQuery(currentQueryParams[props.queryParamName]);\r\n }, []);\r\n\r\n const delayedQuery = React.useCallback(\r\n FunctionHelper.debounce((query: string) => search(query), props.debounceTime),\r\n []\r\n );\r\n\r\n function onChange(event: React.FormEvent<HTMLInputElement>): void {\r\n setSearchQuery(event.currentTarget.value);\r\n delayedQuery(event.currentTarget.value);\r\n }\r\n\r\n function search(query: string = ''): void {\r\n const currentAppLink = ContextService.getCurrentRoute().appLink;\r\n const currentFilters = ObjectHelper.omit(currentAppLink.params, [props.queryParamName]);\r\n\r\n const nextParams = {\r\n [props.queryParamName]: query,\r\n ...currentFilters\r\n };\r\n\r\n if (!nextParams[props.queryParamName])\r\n delete nextParams[props.queryParamName];\r\n\r\n Core.AppLinkHelper.trigger({\r\n ...currentAppLink,\r\n params: nextParams\r\n });\r\n }\r\n\r\n return (\r\n <div className='position-relative w-100'>\r\n <input\r\n name={props.name}\r\n type='text'\r\n className={`form-control p-1 w-100 ${props.className || ''}`}\r\n id={props.id}\r\n autoComplete='off'\r\n placeholder={props.placeholder}\r\n aria-label='Search'\r\n onChange={onChange}\r\n value={searchQuery}\r\n />\r\n <SvgContainer\r\n svgName={cvSvgLibrary.Search}\r\n className={`${styles.searchSvg} svg-container cursor-pointer text-secondary`}\r\n />\r\n </div>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"searchSvg\":\"cv--searchSvg--Pt-8R\"};","import * as React from 'react';\r\nimport styles from './search-filters.scss';\r\n\r\ninterface PartialSearchFiltersProps {\r\n count?: number;\r\n hideHeading?: boolean;\r\n}\r\n\r\nexport function PartialSearchFilters({ count = 6, hideHeading }: PartialSearchFiltersProps): JSX.Element {\r\n return (\r\n <div className='d-flex'>\r\n {!hideHeading && (\r\n <div className={`\r\n ${styles.partialFilterHeading}\r\n partial-loading-background\r\n d-inline-block\r\n pr-2\r\n border-right\r\n d-flex\r\n align-items-center\r\n my-auto\r\n `} />\r\n )}\r\n\r\n <div className='d-flex pl-1'>\r\n {Array(count).fill(null).map((item, index) => (\r\n <div key={index} className={`${styles.partialButton} partial-loading-background mx-1`} />\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { HashObject } from '@clickview/common';\r\nimport { LanguageNamespaceContext, Text } from '@clickview/shared';\r\n\r\nimport { FilterButton, ResetButton } from 'apps/search/components';\r\nimport { FilterHelper } from 'apps/search/utils';\r\nimport { FilterReducer, FilterContext } from 'apps/search/reducers';\r\nimport { SearchFilter, MoreFilters } from 'apps/search/interfaces';\r\n\r\ninterface SearchFiltersProps {\r\n queryParams: HashObject;\r\n mainFilters: SearchFilter[];\r\n moreFilters?: MoreFilters;\r\n hideHeading?: boolean;\r\n}\r\n\r\nexport function SearchFilters(props: SearchFiltersProps): JSX.Element {\r\n const { queryParams, mainFilters, moreFilters, hideHeading } = props;\r\n\r\n const initialState = React.useMemo(() => {\r\n return FilterHelper.deriveInitialStateFromQuery(queryParams, mainFilters, moreFilters);\r\n }, [queryParams]);\r\n\r\n const [ state, dispatch ] = React.useReducer(FilterReducer, initialState);\r\n\r\n React.useEffect(() => {\r\n if (!state.bulkReset)\r\n return;\r\n\r\n dispatch({\r\n type: 'bulk-reset',\r\n payload: FilterHelper.deriveInitialStateFromQuery({}, mainFilters, moreFilters) as any\r\n });\r\n }, [state]);\r\n\r\n return (\r\n <FilterContext.Provider value={{ state, dispatch }}>\r\n <LanguageNamespaceContext.Provider value='search.searchFilters'>\r\n <section className='d-flex'>\r\n {!hideHeading && (\r\n <h2 className='h5 mb-0 d-inline-block pr-2 border-right d-flex align-items-center'><Text phrase='heading' /></h2>\r\n )}\r\n\r\n <div className='d-flex'>\r\n {mainFilters.map(f => <FilterButton key={f.id} filter={f} />)}\r\n\r\n {moreFilters && (\r\n <FilterButton key={moreFilters.id} filter={moreFilters} />\r\n )}\r\n\r\n {FilterHelper.hasActiveFilters(queryParams) &&\r\n <ResetButton currentQueryParam={queryParams.query} />\r\n }\r\n </div>\r\n </section>\r\n </LanguageNamespaceContext.Provider>\r\n </FilterContext.Provider>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"partialFilterHeading\":\"cv--partialFilterHeading--2zHGT\",\"partialButton\":\"cv--partialButton--3Gy7Y\"};","import { BaseSearchAppVariables, SearchAppLinks } from '@clickview/shared';\r\nimport { Actions as DashboardActions } from '@clickview/dashboard';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nexport class SearchAppVariables extends BaseSearchAppVariables {\r\n public get appLinks(): SearchAppLinks {\r\n /**\r\n * These will eventually be swapped out for their actual applinks\r\n */\r\n return {\r\n searchResults: {\r\n application: AppChannels.SEARCH,\r\n action: Actions.Search.HOME\r\n },\r\n\r\n series: {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SERIES\r\n },\r\n\r\n videoDetails: {\r\n application: AppChannels.DEFAULT,\r\n action: 'play:page' // TODO: Change to a constant\r\n },\r\n\r\n tagSearch: {\r\n application: AppChannels.SEARCH,\r\n action: Actions.Search.HOME\r\n },\r\n\r\n topic: {\r\n application: AppChannels.SUBJECT,\r\n action: DashboardActions.Classifications.CLASSIFICATION\r\n }\r\n };\r\n }\r\n}","import { Flight } from '@clickview/common';\r\n\r\nimport mockSearchResults from './mocks/search-results.json';\r\n\r\nconst endpoints = {\r\n search: (query: string) => ``\r\n};\r\n\r\nexport const SearchRequests = {\r\n search(query: string): Flight.SimulatedRequest {\r\n return {\r\n url: endpoints.search(query),\r\n key: `search:${query}`,\r\n normalize: false,\r\n successResponse: () => {\r\n return Flight.Simulator.getAll(`search:${query}`, [mockSearchResults]);\r\n },\r\n formatData: (data: any) => {\r\n return {\r\n subjects: data[0].subjects || [],\r\n videos: data[0].videos || [],\r\n playlists: data[0].playlists || [],\r\n series: data[0].series || []\r\n };\r\n }\r\n };\r\n }\r\n};","export * from './SearchRequests';","import { createContext } from 'react';\r\n\r\nimport { ReducerActions } from '@clickview/common';\r\nimport { SearchFilter, FilterIds, FilterOption } from 'apps/search/interfaces';\r\n\r\nexport type FilterState = {\r\n active: boolean;\r\n selection?: FilterOption[];\r\n};\r\n\r\ntype FilterStateHashFilters = {\r\n [key in FilterIds]: FilterState\r\n};\r\n\r\nexport type FilterStateHash = FilterStateHashFilters & {\r\n bulkReset?: boolean;\r\n};\r\n\r\nexport type FilterActionType = 'apply' | 'reset' | 'bulk-reset' | 'trigger-reset';\r\n\r\nexport interface FilterPayloadType {\r\n filter: SearchFilter;\r\n active: boolean;\r\n selection?: FilterOption[];\r\n}\r\n\r\n/**\r\n * Context\r\n */\r\ninterface FilterContextType {\r\n state: FilterStateHash;\r\n dispatch: React.Dispatch<ReducerActions<FilterActionType>>;\r\n}\r\n\r\nexport const FilterContext = createContext<FilterContextType>(null);\r\n\r\n/**\r\n * Reducer - root level keys should match the filter object's corresponding \"id\" field\r\n */\r\nexport function FilterReducer(\r\n state: FilterStateHash,\r\n action: ReducerActions<FilterActionType, FilterPayloadType>\r\n): FilterStateHash {\r\n switch (action.type) {\r\n case 'apply':\r\n return {\r\n ...state,\r\n [action.payload.filter.id]: {\r\n active: action.payload.active,\r\n selection: action.payload.selection\r\n }\r\n };\r\n\r\n case 'reset':\r\n return {\r\n ...state,\r\n [action.payload.filter.id]: {\r\n active: action.payload.active,\r\n selection: action.payload.selection\r\n }\r\n };\r\n\r\n case 'trigger-reset':\r\n return {\r\n ...state,\r\n bulkReset: true\r\n };\r\n\r\n case 'bulk-reset':\r\n return {\r\n ...state,\r\n ...action.payload,\r\n bulkReset: false\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n}","export * from './FilterReducer';","import * as React from 'react';\r\n\r\nimport { LanguageService, HashObject, ArrayHelper, ObjectHelper } from '@clickview/common';\r\n\r\nimport { SearchFilter, MoreFilters, FilterType, FilterProps, FilterOption, FilterIds } from 'apps/search/interfaces';\r\nimport { FilterStateHash, FilterPayloadType, FilterState } from 'apps/search/reducers';\r\nimport { SwitchFilter, RadioFilter, CheckboxFilter, DropdownFilter, YearLevelRadioFilter, MoreFilters as MoreFiltersComponent } from 'apps/search/components/filter-types';\r\nimport { MockYearLevel, MockClassroom } from 'apps/user-manager/interfaces';\r\n\r\nconst getPhrase = LanguageService.encloseNamespace('search.utils');\r\n\r\ninterface WithStatementObject {\r\n sortKey?: string;\r\n sortValue?: string;\r\n assocs?: string[];\r\n}\r\n\r\ntype FiltersDictionary = {\r\n [key: string]: (options?: any) => SearchFilter;\r\n};\r\n\r\nexport const Filters: FiltersDictionary = {\r\n SortByName: (options: FilterOption[]) => ({\r\n id: 'sortName',\r\n name: getPhrase('firstNameAToZ'),\r\n type: 'dropdown',\r\n options\r\n }),\r\n YearLevel: (options: FilterOption[]) => ({\r\n id: 'yearLevel', // \"name\" should match the state keys in `FilterReducer`\r\n name: getPhrase('yearLevel'),\r\n type: 'radio',\r\n customComponent: YearLevelRadioFilter,\r\n options\r\n }),\r\n ObjectType: (options: FilterOption[]) => ({\r\n id: 'objectType',\r\n name: getPhrase('objectTypes'),\r\n type: 'radio',\r\n options\r\n }),\r\n Ratings: (options: FilterOption[]) => ({\r\n id: 'ratings',\r\n name: getPhrase('ratings'),\r\n type: 'rating',\r\n options\r\n }),\r\n Interactives: () => ({\r\n id: 'interactives',\r\n name: getPhrase('interactives'),\r\n type: 'switch',\r\n description: getPhrase('interactivesDescription')\r\n }),\r\n Clips: () => ({\r\n id: 'clips',\r\n name: getPhrase('clips'),\r\n type: 'switch',\r\n description: getPhrase('clipsDescription')\r\n }),\r\n Classroom: (options: FilterOption[]) => ({\r\n id: 'classroom',\r\n name: getPhrase('classroom'),\r\n type: 'checkbox',\r\n options\r\n })\r\n};\r\n\r\nexport const FilterHelper = {\r\n getMoreFilters(): MoreFilters {\r\n return {\r\n id: 'moreFilters',\r\n name: getPhrase('moreFilters'),\r\n type: 'more-filters',\r\n filters: []\r\n };\r\n },\r\n\r\n mapTypeToComponent(type: FilterType): (props: FilterProps) => JSX.Element {\r\n switch (type) {\r\n case 'switch':\r\n return (props: any) => <SwitchFilter key={props.id} {...props} />;\r\n case 'checkbox':\r\n return (props: any) => <CheckboxFilter key={props.id} {...props} />;\r\n case 'radio':\r\n return (props: any) => <RadioFilter key={props.id} {...props} />;\r\n case 'rating':\r\n return (props: any) => <SwitchFilter key={props.id} {...props} />;\r\n case 'dropdown':\r\n return (props: any) => <DropdownFilter key={props.id} {...props} />;\r\n case 'more-filters':\r\n return (props: any) => <MoreFiltersComponent key={props.id} {...props} />;\r\n }\r\n },\r\n\r\n deriveInitialStateFromQuery(\r\n queryParams: HashObject = {},\r\n mainFilters: SearchFilter[] = null,\r\n moreFilters: MoreFilters = null\r\n ): FilterStateHash {\r\n const initialStates: FilterStateHash = {\r\n sortName: {\r\n active: !!queryParams.sortName,\r\n selection: getFilterSelectionsFromQueryParams(queryParams, mainFilters, 'sortName')\r\n },\r\n\r\n objectType: {\r\n active: !!queryParams.objectType,\r\n selection: getFilterSelectionsFromQueryParams(queryParams, mainFilters, 'objectType')\r\n },\r\n\r\n ratings: {\r\n active: !!queryParams.ratings,\r\n selection: queryParams.ratings || null\r\n },\r\n\r\n interactives: {\r\n active: queryParams.interactives\r\n },\r\n\r\n clips: {\r\n active: queryParams.clips\r\n },\r\n\r\n yearLevel: {\r\n active: !!queryParams.yearLevel,\r\n selection: getFilterSelectionsFromQueryParams(queryParams, mainFilters, 'yearLevel')\r\n },\r\n\r\n classroom: {\r\n active: !!queryParams.classroom,\r\n selection: getFilterSelectionsFromQueryParams(queryParams, mainFilters, 'classroom')\r\n },\r\n\r\n moreFilters: {\r\n active: false // TODO: figure this shit out eventually\r\n }\r\n };\r\n\r\n const derivedState = mainFilters.reduce<FilterStateHash>((state: FilterStateHash, filter) => {\r\n state[filter.id] = initialStates[filter.id];\r\n return state;\r\n }, {} as FilterStateHash);\r\n\r\n if (moreFilters)\r\n derivedState.moreFilters = initialStates.moreFilters;\r\n\r\n return derivedState;\r\n },\r\n\r\n hasActiveFilters(queryParams: HashObject): boolean {\r\n const paramKeys = Object.keys(queryParams);\r\n\r\n if (!paramKeys.length)\r\n return false;\r\n\r\n const activeFilters = paramKeys.filter(q => {\r\n // 'query', 'cursor', and 'page' don't count as filters\r\n if (q === 'query' || q === 'cursor' || q === 'page')\r\n return false;\r\n\r\n // Filters that can have multiple selections (e.g. checkbox types) do not count as active if they are empty\r\n if (Array.isArray(queryParams[q]) && !queryParams[q].length)\r\n return false;\r\n\r\n return true;\r\n });\r\n\r\n return !!activeFilters.length;\r\n },\r\n\r\n getLabel(filter: SearchFilter, filterState: FilterState): string {\r\n if (!filterState.selection?.length)\r\n return filter.name;\r\n\r\n if (filter.type === 'dropdown')\r\n return ArrayHelper.first(filterState.selection).name;\r\n\r\n if (filter.type === 'radio') {\r\n const selection = ArrayHelper.first(filterState.selection);\r\n if (!selection || selection.default)\r\n return filter.name;\r\n\r\n return selection.name;\r\n }\r\n\r\n if (filter.type === 'checkbox')\r\n return `${filter.name} - ${filterState.selection.length}`;\r\n },\r\n\r\n buildQueryParams(queryParams: HashObject, state: FilterPayloadType): HashObject {\r\n const { id: param, type } = state.filter;\r\n\r\n const updatedParams = { ...queryParams };\r\n\r\n switch (type) {\r\n case 'switch':\r\n updatedParams[param] = state.active ? 'true' : '';\r\n break;\r\n\r\n case 'radio':\r\n case 'dropdown':\r\n updatedParams[param] = getRadioParamValue(state.selection);\r\n break;\r\n\r\n case 'checkbox':\r\n updatedParams[param] = state.active ? state.selection.map(option => option.id) : [];\r\n }\r\n\r\n if (!updatedParams[param]) // If the param is empty, delete it\r\n delete updatedParams[param];\r\n\r\n return updatedParams;\r\n },\r\n\r\n /**\r\n * This returns an object of all of the query params our search requests will pass to the backend endpoint.\r\n * This usually consists of:\r\n * q = the query string e.g. 'shakespeare'\r\n * filter = the filter string e.g. '{interactives:true,classroom:classroom-2-a,classroom:classroom-2-b}'\r\n * query = the with statement e.g. '{orderbydesc:name}series,season,interactives,resources,subtitles'\r\n * cursor = the cursor e.g. 's-sf3r9o32f-0vd'\r\n */\r\n getBackendQueryParams(queryParams: HashObject): HashObject {\r\n const q = queryParams.query;\r\n const query = getWithStatement(queryParams);\r\n const filter = getFilterString(queryParams);\r\n\r\n const backendQueryParams: HashObject = {};\r\n\r\n if (q)\r\n backendQueryParams.q = q;\r\n\r\n if (query)\r\n backendQueryParams.query = query;\r\n\r\n if (filter)\r\n backendQueryParams.filter = `{${filter}}`;\r\n\r\n if (queryParams.cursor)\r\n backendQueryParams.cursor = queryParams.cursor;\r\n\r\n return backendQueryParams;\r\n },\r\n\r\n /**\r\n * This functions purpose is to convert a with statement string into an object that is easy to use\r\n * in mock backends for sorting/filtering mock data. It doesn't need to be efficient, as it should\r\n * never ever be used in production\r\n */\r\n convertWithStatementToObject(withStatement: string): WithStatementObject {\r\n if (!withStatement)\r\n return {};\r\n\r\n // Remove any angle brackets with commas, which we use in `.split` just below\r\n withStatement = withStatement.replace('{', ',').replace('}', ',');\r\n\r\n const withStatements = withStatement.split(',');\r\n\r\n let sortingStatement: string = '';\r\n let assocStatements: string[] = [];\r\n\r\n withStatements.forEach(statement => {\r\n if (statement.includes(':'))\r\n sortingStatement = statement;\r\n else\r\n assocStatements.push(statement);\r\n });\r\n\r\n const [ sortKey, sortValue ] = sortingStatement.split(':');\r\n\r\n return {\r\n assocs: assocStatements,\r\n sortKey,\r\n sortValue\r\n };\r\n },\r\n\r\n // This is used for filtering data in mock flight requests. It shouldn't be used in production code\r\n revertFilterString(filterString: string): HashObject {\r\n if (!filterString)\r\n return {};\r\n\r\n // Remove \"{\" and \"}\" from both ends\r\n filterString = filterString.slice(1, -1);\r\n\r\n // Get an array of all of our filter values:\r\n // E.g. [ 'yearLevel:year-2', 'classroom:classroom-2-a', 'classroom-2-b', 'classroom-2-c' ]\r\n const filterValues = filterString.split(',');\r\n\r\n const keyValueFilterStrings: string[] = [];\r\n\r\n let currentFilterKey = '';\r\n filterValues.forEach(filterStr => {\r\n // Here we're building an array that looks like `filterValues`, but where every value has its key attached\r\n // E.g. [ 'yearLevel:year-2', 'classroom:classroom-2-a', 'classroom:classroom-2-b', 'classroom:classroom-2-c' ]\r\n\r\n if (filterStr.includes(':')) {\r\n currentFilterKey = filterStr.split(':')[0];\r\n keyValueFilterStrings.push(filterStr);\r\n return;\r\n }\r\n\r\n const fullFilterString = `${currentFilterKey}:${filterStr}`;\r\n keyValueFilterStrings.push(fullFilterString);\r\n });\r\n\r\n // Convert the array into an object.\r\n // E.g. { yearLevel: 'year-2', classroom: [ 'classroom-2-a', 'classroom-2-b', 'classroom-2-c' ] }\r\n return keyValueFilterStrings.reduce((filterObj: HashObject, filterStr) => {\r\n const [ key, value ] = filterStr.split(':');\r\n\r\n if (filterObj[key] && !Array.isArray(filterObj[key])) {\r\n const temp = filterObj[key];\r\n filterObj[key] = [temp];\r\n }\r\n\r\n if (Array.isArray(filterObj[key]))\r\n filterObj[key].push(value);\r\n else\r\n filterObj[key] = value;\r\n\r\n return filterObj;\r\n }, {});\r\n },\r\n\r\n /**\r\n * Helpers below this comment return hard coded filter options for a particular filter.\r\n * If you are adding a new filter with hard coded options, add a new function here.\r\n */\r\n getObjectTypeOptions(): FilterOption[] {\r\n return [\r\n {\r\n id: 'allTypes',\r\n name: getPhrase('allTypes'),\r\n default: true\r\n },\r\n {\r\n id: 'topics',\r\n name: getPhrase('topics')\r\n },\r\n {\r\n id: 'playlists',\r\n name: getPhrase('playlists')\r\n },\r\n {\r\n id: 'series',\r\n name: getPhrase('series')\r\n },\r\n {\r\n id: 'videos',\r\n name: getPhrase('videos')\r\n }\r\n ];\r\n },\r\n\r\n getNameSortOptions(): FilterOption[] {\r\n return [\r\n {\r\n id: 'first-name-atoz',\r\n name: getPhrase('firstNameAToZ'),\r\n default: true\r\n },\r\n {\r\n id: 'first-name-ztoa',\r\n name: getPhrase('firstNameZToA')\r\n },\r\n {\r\n id: 'surname-atoz',\r\n name: getPhrase('surnameAToZ')\r\n },\r\n {\r\n id: 'surname-ztoa',\r\n name: getPhrase('surnameZToA')\r\n }\r\n ];\r\n },\r\n\r\n getYearLevelOptions(yearLevels: MockYearLevel[]): FilterOption[] {\r\n if (!yearLevels?.length)\r\n return [];\r\n\r\n return yearLevels.map(level => ({\r\n id: level.name.toLowerCase().replace(' ', '-'),\r\n name: level.name\r\n }));\r\n },\r\n\r\n getClassroomOptions(classrooms: MockClassroom[]): FilterOption[] {\r\n if (!classrooms?.length)\r\n return [];\r\n\r\n return classrooms.map(classroom => ({\r\n id: classroom.name.toLowerCase().replace(' ', '-'),\r\n name: classroom.name\r\n }));\r\n }\r\n};\r\n\r\n// This allows us to determine which filters should be applied based on the query params set on first load\r\nfunction getFilterSelectionsFromQueryParams(\r\n queryParams: HashObject,\r\n filters: SearchFilter[],\r\n filterName: FilterIds\r\n): FilterOption[] {\r\n const filter = filters.find(f => f.id === filterName);\r\n\r\n if (!filter)\r\n return [];\r\n\r\n if (!queryParams[filterName])\r\n return filter.options.filter(option => option.default);\r\n\r\n let selections = queryParams[filterName];\r\n if (!Array.isArray(selections))\r\n selections = [selections];\r\n\r\n return filter.options.filter(option => selections.includes(option.id));\r\n}\r\n\r\nfunction getRadioParamValue(selection: FilterOption[]): string {\r\n if (!selection?.length)\r\n return '';\r\n\r\n return ArrayHelper.first(selection).id;\r\n}\r\n\r\n/**\r\n * This is massively under developed, and only does what it's needed for at this time.\r\n * Please update if you need extra functionality\r\n */\r\nfunction getWithStatement(queryParams: HashObject): string {\r\n let withStatement = '';\r\n\r\n if (queryParams['sortName']) {\r\n switch (queryParams['sortName']) {\r\n case 'first-name-atoz':\r\n withStatement += '{orderby:name}';\r\n break;\r\n\r\n case 'first-name-ztoa':\r\n withStatement += '{orderbydesc:name}';\r\n break;\r\n\r\n case 'surname-atoz':\r\n withStatement += '{orderby:surname}';\r\n break;\r\n\r\n case 'surname-ztoa':\r\n withStatement += '{orderbydesc:surname}';\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n return withStatement;\r\n}\r\n\r\n/**\r\n * Private functions\r\n */\r\n\r\nfunction getFilterString(queryParams: HashObject): string {\r\n // Add any potential query params here that are not supposed to be in the filter string\r\n const omitKeys = [ 'query', 'sortName', 'cursor', 'page' ];\r\n\r\n const filterQueryParams = ObjectHelper.omit(queryParams, omitKeys);\r\n\r\n const filterStrings = Object.keys(filterQueryParams).map(filter => {\r\n return `${filter}:${filterQueryParams[filter]}`;\r\n });\r\n\r\n return filterStrings.join(',');\r\n}","import * as React from 'react';\r\nimport * as _ from 'underscore';\r\n\r\nimport { ArrayHelper, Core, LanguageService } from '@clickview/common';\r\nimport { Video, Series, Playlist, VideoList, PresentationAudience } from '@clickview/shared';\r\nimport { FixedWidget, PlaylistWidgetItem, SeriesWidgetItem, WidgetContents } from '@clickview/dashboard';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { SearchResults, MainSearchResults, OtherSearchResultSet, OtherSearchResults } from 'apps/search/interfaces';\r\n\r\nconst Capacities = {\r\n MainResults: {\r\n SUBJECTS: 10,\r\n PLAYLISTS: 5,\r\n SERIES: 4\r\n },\r\n\r\n OtherResults: {\r\n VIDEOS: 6,\r\n PLAYLISTS: 10,\r\n SERIES: 10\r\n }\r\n};\r\n\r\nexport const SearchHelper = {\r\n /**\r\n * These are the results that appear at the very top of the page\r\n */\r\n filterMainResults(results: SearchResults): MainSearchResults {\r\n const { MainResults } = Capacities;\r\n\r\n const subjects = ArrayHelper.firstFew(results.subjects, MainResults.SUBJECTS);\r\n const firstVideo = ArrayHelper.first(results.videos);\r\n const playlists = ArrayHelper.firstFew(results.playlists, MainResults.PLAYLISTS);\r\n const series = ArrayHelper.firstFew(results.series, MainResults.SERIES);\r\n\r\n return {\r\n subjects,\r\n firstVideo,\r\n playlists,\r\n series,\r\n otherResults: { // All excess results are displayed in a different format defined below\r\n videos: ArrayHelper.lastFew(results.videos, results.videos.length - 1),\r\n playlists: ArrayHelper.lastFew(results.playlists, results.playlists.length - MainResults.PLAYLISTS),\r\n series: ArrayHelper.lastFew(results.series, results.series.length - MainResults.SERIES)\r\n }\r\n };\r\n },\r\n\r\n structureOtherResults(results: OtherSearchResults): OtherSearchResultSet[] {\r\n const { OtherResults } = Capacities;\r\n\r\n const videoSets = ArrayHelper.chunk<Video>(results.videos, OtherResults.VIDEOS);\r\n const playlistSets = ArrayHelper.chunk<Playlist>(results.playlists, OtherResults.PLAYLISTS);\r\n const seriesSets = ArrayHelper.chunk<Series>(results.series, OtherResults.SERIES);\r\n\r\n return SearchHelper.buildResultStructure(videoSets, playlistSets, seriesSets);\r\n },\r\n\r\n // For every 6 videos, there should be either a row of playlists or a row of series (alternating)\r\n buildResultStructure(\r\n videoSets: Video[][],\r\n playlistSets: Playlist[][],\r\n seriesSets: Series[][]\r\n ): OtherSearchResultSet[] {\r\n const structure: OtherSearchResultSet[] = [];\r\n\r\n // Clone each set as we need to use a mutable structure, but don't want to mutate the inputs directly\r\n const videosClone = [...videoSets];\r\n const playlistsClone = [...playlistSets];\r\n const seriesClone = [...seriesSets];\r\n\r\n // We set the iterations here instead of in the for-loop args because `videoSets` gets mutated\r\n const iterations = videoSets.length;\r\n for (let index = 0; index < iterations; index++) {\r\n const nextVideoSet = videosClone.shift();\r\n\r\n // After every video set will come a set of playlists or series\r\n const seriesOrPlaylistSet = SearchHelper.getSeriesOrPlaylistSet(playlistsClone, seriesClone, index);\r\n\r\n nextVideoSet && structure.push({ type: 'video', data: nextVideoSet });\r\n seriesOrPlaylistSet && structure.push(seriesOrPlaylistSet);\r\n }\r\n\r\n // In edge cases where there may be more playlists or series result sets than video sets, add them to the end\r\n if (playlistsClone.length) {\r\n playlistsClone.forEach(data => structure.push({ type: 'playlist', data }));\r\n }\r\n\r\n if (seriesClone.length) {\r\n seriesClone.forEach(data => structure.push({ type: 'series', data }));\r\n }\r\n\r\n // Remove any empty sets\r\n return structure.filter(set => set.data && !!set.data.length);\r\n },\r\n\r\n /**\r\n * Determines whether or not a playlist or series set should be added to the results structure next.\r\n */\r\n getSeriesOrPlaylistSet(playlists: Playlist[][], series: Series[][], videoSetIndex: number): OtherSearchResultSet {\r\n const isOdd = videoSetIndex % 2 === 0; // If odd, add a series set. If even, add a playlist set.\r\n\r\n if ((isOdd && series.length) || !playlists.length)\r\n return { type: 'series', data: series.shift() };\r\n\r\n if ((!isOdd && playlists.length) || !series.length)\r\n return { type: 'playlist', data: playlists.shift() };\r\n\r\n // We will only reach this point once we have run out of series and playlist results\r\n return null;\r\n },\r\n\r\n getResultSetComponent(set: OtherSearchResultSet, audiences: PresentationAudience[]): JSX.Element {\r\n switch (set.type) {\r\n case 'video':\r\n return (\r\n <div className='pb-3'>\r\n <VideoList\r\n videos={set.data as Video[]}\r\n getVideoAppLink={SearchHelper.getVideoAppLink}\r\n getSeriesAppLink={SearchHelper.getSeriesAppLink}\r\n />\r\n </div>\r\n );\r\n\r\n case 'playlist':\r\n return (\r\n <div className='mx-n1'>\r\n <FixedWidget\r\n name={LanguageService.getPhrase('search.searchResults', 'relatedPlaylists')}\r\n collection={set.data as Playlist[]}\r\n childAppLink={SearchHelper.getPlaylistAppLink()}\r\n childComponent={(childProps: any) => (\r\n <PlaylistWidgetItem\r\n {...childProps}\r\n presentationAudiences={audiences}\r\n />\r\n )}\r\n contents={WidgetContents.Playlists}\r\n />\r\n </div>\r\n );\r\n\r\n case 'series':\r\n return (\r\n <div className='mx-n1'>\r\n <FixedWidget\r\n name={LanguageService.getPhrase('search.searchResults', 'relatedSeries')}\r\n collection={set.data}\r\n childAppLink={SearchHelper.getSeriesAppLink()}\r\n childComponent={(childProps: any) => (\r\n <SeriesWidgetItem\r\n {...childProps}\r\n audiences={audiences}\r\n />\r\n )}\r\n contents={WidgetContents.Series}\r\n />\r\n </div>\r\n );\r\n }\r\n },\r\n\r\n getVideoAppLink(video: Video): Core.AppLink {\r\n return {\r\n application: AppChannels.DEFAULT,\r\n action: 'play:video', // TODO: Change to constant\r\n args: [video.id]\r\n };\r\n },\r\n\r\n getSeriesAppLink(series?: Series): Core.AppLink {\r\n return {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SERIES,\r\n args: series ? [series.id] : []\r\n };\r\n },\r\n\r\n getPlaylistAppLink(playlist?: Playlist): Core.AppLink {\r\n return {\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.PLAYLIST,\r\n args: playlist ? [playlist.id] : []\r\n };\r\n },\r\n};","export * from './FilterHelper';\r\nexport * from './SearchHelper';","export * from './search-results/SearchResultsView';","import * as React from 'react';\r\n\r\nimport { PartialPlaylistList, PartialVideoList } from '@clickview/shared';\r\nimport { PartialSeriesList } from '@clickview/dashboard';\r\n\r\nimport { PartialSearchFilters } from 'apps/search/components';\r\n\r\nimport styles from './search-results.scss';\r\n\r\nexport function PartialSearchResultsView(): JSX.Element {\r\n return (\r\n <>\r\n <div className={`${styles.partialHeading} partial-loading-background`} />\r\n\r\n <div className='mt-3'>\r\n <PartialSearchFilters />\r\n </div>\r\n\r\n <div role='separator' className='border-bottom my-2' />\r\n\r\n {/* <PartialVideoItem /> */}\r\n\r\n <PartialPlaylistList />\r\n\r\n <PartialSeriesList />\r\n\r\n <PartialVideoList />\r\n </>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { HashObject, Flight, Core } from '@clickview/common';\r\nimport { Text, VideoItem, PresentationAudience, LanguageNamespaceContext, VideoActionsContext } from '@clickview/shared';\r\nimport { DynamicWidget, Actions as DashboardActions, SubjectWidgetItem } from '@clickview/dashboard';\r\n\r\nimport { SearchFilters } from 'apps/search/components';\r\nimport { SearchRequests } from 'apps/search/flight-requests';\r\nimport { SearchHelper, FilterHelper, Filters } from 'apps/search/utils';\r\nimport { SearchResults } from 'apps/search/interfaces';\r\n\r\nimport { AppChannels } from 'shared/constants';\r\nimport { AudienceRequests } from 'shared/flight-requests';\r\nimport { getVideoActionAppLink } from 'shared/utils';\r\n\r\nimport { PartialSearchResultsView } from './PartialSearchResultsView';\r\n\r\nconst namespace = 'search.searchResults';\r\n\r\nconst classificationAppLink: Core.AppLink = {\r\n application: AppChannels.SUBJECT,\r\n action: DashboardActions.Classifications.CLASSIFICATION\r\n};\r\n\r\ninterface SearchResultsViewProps {\r\n queryParams: HashObject;\r\n}\r\n\r\nexport function SearchResultsView({ queryParams }: SearchResultsViewProps): JSX.Element {\r\n const results = Flight.useBasicFetch<SearchResults>(SearchRequests.search(queryParams.query));\r\n const audiences = Flight.useBasicFetch<PresentationAudience[]>(AudienceRequests.presentationAudiences());\r\n\r\n if (!results.data || !audiences.data)\r\n return <PartialSearchResultsView />;\r\n\r\n const mainResults = SearchHelper.filterMainResults({ ...results.data });\r\n const otherResults = SearchHelper.structureOtherResults({ ...mainResults.otherResults });\r\n\r\n const mainFilters = [\r\n Filters.YearLevel([]), // TODO: fetch or mock year levels\r\n Filters.ObjectType(FilterHelper.getObjectTypeOptions()),\r\n Filters.Ratings([]), // TODO: fetch ratings\r\n Filters.Interactives(),\r\n Filters.Clips()\r\n ];\r\n\r\n return (\r\n <LanguageNamespaceContext.Provider value={namespace}>\r\n <h1 className='h2'><Text phrase='heading' /></h1>\r\n\r\n <div className='mt-3'>\r\n <SearchFilters\r\n queryParams={queryParams}\r\n mainFilters={mainFilters}\r\n moreFilters={FilterHelper.getMoreFilters()}\r\n />\r\n </div>\r\n\r\n <hr />\r\n\r\n <section>\r\n <VideoActionsContext.Provider value={{ getActionAppLink: getVideoActionAppLink }}>\r\n {!!mainResults.subjects.length &&\r\n <DynamicWidget\r\n collection={mainResults.subjects}\r\n childAppLink={classificationAppLink}\r\n childComponent={SubjectWidgetItem}\r\n headingPhraseKey='topics'\r\n />\r\n }\r\n\r\n {!!mainResults.firstVideo &&\r\n <div className='pb-2'>\r\n <VideoItem\r\n video={mainResults.firstVideo}\r\n getVideoAppLink={SearchHelper.getVideoAppLink}\r\n getSeriesAppLink={SearchHelper.getSeriesAppLink}\r\n />\r\n </div>\r\n }\r\n\r\n {!!mainResults.playlists.length &&\r\n SearchHelper.getResultSetComponent({\r\n type: 'playlist',\r\n data: mainResults.playlists\r\n }, audiences.data)\r\n }\r\n\r\n {!!mainResults.series.length &&\r\n SearchHelper.getResultSetComponent({\r\n type: 'series',\r\n data: mainResults.series\r\n }, audiences.data)\r\n }\r\n\r\n {otherResults.map((resultSet, i) =>\r\n <React.Fragment key={i}>\r\n {SearchHelper.getResultSetComponent(resultSet, audiences.data)}\r\n </React.Fragment>\r\n )}\r\n </VideoActionsContext.Provider>\r\n </section>\r\n </LanguageNamespaceContext.Provider>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"partialHeading\":\"cv--partialHeading--1c2gx\"};","import * as React from 'react';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { Core, HashObject, ReactApplication } from '@clickview/common';\r\nimport { LayoutRegions, Video, Series } from '@clickview/shared';\r\nimport { ClassificationView, PreferencesView } from '@clickview/dashboard';\r\nimport { PlaylistView } from '@clickview/playlists';\r\n\r\nimport { AppChannels, Layouts, Actions } from 'shared/constants';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts';\r\n\r\nclass SubjectAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.SUBJECT;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'subjects/preferences?step=subjects': 'preferences',\r\n 'subjects/:id/playlists/:playlistId(/)': 'playlist',\r\n 'subjects/:id(/)': 'classification',\r\n 'series/:id': 'series'\r\n };\r\n }\r\n}\r\n\r\nexport class SubjectApplication extends ReactApplication {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Subject Application';\r\n }\r\n\r\n public static get router(): any {\r\n return SubjectAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.SUBJECT;\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true,\r\n alertRegion: LayoutRegions.ALERT\r\n }\r\n };\r\n }\r\n\r\n public get appChannels(): HashObject<string> {\r\n return {\r\n dashboard: AppChannels.DASHBOARD,\r\n subject: AppChannels.SUBJECT\r\n };\r\n }\r\n\r\n public classification(classificationId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <ClassificationView\r\n key={classificationId}\r\n id={classificationId}\r\n appChannels={this.appChannels}\r\n />);\r\n }\r\n\r\n public playlist(id: string, playlistId: string): void {\r\n const getVideoAppLink = (video: Video) => ({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.PLAY_VIDEO,\r\n args: [video.id]\r\n });\r\n\r\n const getSeriesAppLink = (series: Series) => ({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SERIES,\r\n args: [series.id]\r\n });\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <PlaylistView\r\n playlistId={playlistId}\r\n application={AppChannels.PLAYLISTS}\r\n getVideoAppLink={getVideoAppLink}\r\n getSeriesAppLink={getSeriesAppLink}\r\n allowEdit\r\n />\r\n );\r\n }\r\n\r\n public preferences({ step = 'subjects' }: HashObject): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <PreferencesView\r\n application={AppChannels.SUBJECT}\r\n step={step}\r\n />\r\n );\r\n }\r\n\r\n protected onShowAlert(options: ObjectHash = {}): void {}\r\n}","import * as React from 'react';\r\n\r\nimport { Core, HashObject, ReactApplication } from '@clickview/common';\r\nimport { LayoutRegions } from '@clickview/shared';\r\n\r\nimport { AppChannels, Layouts } from 'shared/constants';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts';\r\n\r\nimport { MyUploadsView } from 'apps/upload/views/my-uploads/MyUploadsView';\r\nimport { EditUploadView } from 'apps/upload/views/edit-upload/EditUploadView';\r\nimport { CancelUploadView } from 'apps/upload/views/cancel-upload/CancelUploadView';\r\n\r\nclass UploadAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.UPLOAD;\r\n }\r\n\r\n protected get appRoutes(): HashObject {\r\n return {\r\n 'my-uploads(/)': 'myUploads',\r\n };\r\n }\r\n\r\n protected get appLinks(): string[] {\r\n return [\r\n 'editUpload',\r\n 'cancelUpload'\r\n ];\r\n }\r\n}\r\n\r\nexport class UploadApplication extends ReactApplication {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'Upload Application';\r\n }\r\n\r\n public static get router(): any {\r\n return UploadAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.UPLOAD;\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true,\r\n alertRegion: LayoutRegions.ALERT\r\n }\r\n };\r\n }\r\n\r\n public myUploads(params: HashObject): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <MyUploadsView cursor={params.cursor} />);\r\n }\r\n\r\n public editUpload(uploadId: string): void {\r\n this.layout.showChildView(\r\n LayoutRegions.POPUP, <EditUploadView uploadId={uploadId} closePopup={() => this.layout.closePopup()} />);\r\n }\r\n\r\n public cancelUpload(id: string, params: HashObject): void {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <CancelUploadView\r\n id={id}\r\n name={params.name}\r\n status={params.status}\r\n closePopup={() => this.layout.closePopup()}\r\n />\r\n );\r\n }\r\n}\r\n","import * as React from 'react';\r\nimport { IconButton, cvSvgLibrary, Text } from '@clickview/shared';\r\nimport { useService } from '@clickview/common';\r\n\r\nimport { Services } from 'shared/constants';\r\n\r\nimport { VideoUploadService } from 'apps/upload/services/VideoUploadService';\r\n\r\nconst namespace = 'shared.uploadFileSelect';\r\n\r\ninterface UploadFileSelectProps {\r\n hideButtonText?: boolean;\r\n}\r\n\r\nexport const UploadFileSelect = React.memo(function(props: UploadFileSelectProps): JSX.Element {\r\n const { hideButtonText = false } = props;\r\n\r\n const videoUploadService = useService<VideoUploadService>(Services.VideoUpload);\r\n\r\n const ref = React.useRef(null);\r\n const useRef = React.useCallback(node => {\r\n if (!node)\r\n return;\r\n\r\n ref.current = node;\r\n }, []);\r\n\r\n const onClick = (e: React.MouseEvent) => {\r\n ref.current.value = null;\r\n ref.current.click(null);\r\n };\r\n\r\n const onChange = (files: FileList) => videoUploadService.addFiles(files as any);\r\n\r\n return (\r\n <>\r\n <IconButton\r\n svgName={cvSvgLibrary.Upload}\r\n className='btn btn-secondary'\r\n onClick={onClick}\r\n >\r\n { !hideButtonText && <Text phrase='uploadVideo' namespace={namespace} /> }\r\n </IconButton>\r\n\r\n <input\r\n type='file'\r\n autoComplete='off'\r\n className='file-select d-none'\r\n multiple\r\n accept='video/*'\r\n ref={useRef}\r\n onChange={e => onChange(e.target.files)}\r\n />\r\n </>\r\n );\r\n});\r\n","import * as React from 'react';\r\nimport { ProgressBar, Row, Col } from 'react-bootstrap';\r\n\r\nimport { LanguageService } from '@clickview/common';\r\nimport { ThumbnailFallback, ThumbnailFallbackType, BaseThumbnail, AspectRatio, SvgContainer, cvSvgLibrary } from '@clickview/shared';\r\n\r\nimport { CombinedUploadStatus, CombinedUpload } from 'apps/upload/services/CombineUploadsService';\r\n\r\nconst namespace = 'upload.uploadingItem';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\nfunction getClassName(status: CombinedUploadStatus): string {\r\n switch (status) {\r\n case CombinedUploadStatus.Uploading:\r\n return 'text-success';\r\n case CombinedUploadStatus.Processing:\r\n return 'text-info';\r\n case CombinedUploadStatus.Errored:\r\n return 'text-danger';\r\n }\r\n}\r\n\r\nfunction getVariant(status: CombinedUploadStatus): 'success' | 'info' | 'danger' {\r\n switch (status) {\r\n case CombinedUploadStatus.Uploading:\r\n return 'success';\r\n case CombinedUploadStatus.Processing:\r\n return 'info';\r\n case CombinedUploadStatus.Errored:\r\n return 'danger';\r\n }\r\n}\r\n\r\nfunction getProgressText(status: CombinedUploadStatus, progress: number): string {\r\n const rounded = Math.round(progress) || 0;\r\n\r\n switch (status) {\r\n case CombinedUploadStatus.Uploading:\r\n return `${getPhrase('uploading')} ${rounded}%`;\r\n\r\n case CombinedUploadStatus.Processing:\r\n if (rounded === 0)\r\n return getPhrase('waitingToBeProcessed');\r\n else\r\n return `${getPhrase('processing')} ${rounded}%`;\r\n\r\n case CombinedUploadStatus.Errored:\r\n return getPhrase('error');\r\n }\r\n}\r\n\r\ninterface UploadingItemProps {\r\n item: CombinedUpload;\r\n onClickDelete: (item: CombinedUpload) => void;\r\n onClickAlternate: (item: CombinedUpload) => void;\r\n}\r\n\r\nexport function UploadingItem(props: UploadingItemProps): JSX.Element {\r\n const { status, progress, name } = props.item;\r\n\r\n /**\r\n * We're using React.useCallback here because this view\r\n * will get re-rendered many times by it's parent during\r\n * an upload\r\n */\r\n const onClickAlternate = React.useCallback(() => {\r\n props.onClickAlternate(props.item);\r\n }, []);\r\n\r\n const onClickDelete = React.useCallback(() => {\r\n props.onClickDelete(props.item);\r\n }, []);\r\n\r\n return (\r\n <Row className='py-2'>\r\n <Col lg={4}>\r\n <BaseThumbnail data='' aspectRatio={AspectRatio.SixteenByNine}>\r\n <ThumbnailFallback type={ThumbnailFallbackType.Video} />\r\n </BaseThumbnail>\r\n </Col>\r\n <Col lg={8}>\r\n <h5 className='m-0 pb-1'>{name}</h5>\r\n <span className={getClassName(status)}>{getProgressText(status, progress)}</span>\r\n <div className='d-flex'>\r\n <ProgressBar className='flex-grow-1 align-self-center' variant={getVariant(status)} now={progress} />\r\n <SvgContainer\r\n className='svg-container cursor-pointer ml-2'\r\n svgName={status === CombinedUploadStatus.Errored ? cvSvgLibrary.Bell : cvSvgLibrary.Edit}\r\n onClick={onClickAlternate}\r\n />\r\n <SvgContainer\r\n className='svg-container cursor-pointer ml-2'\r\n svgName={cvSvgLibrary.Delete}\r\n onClick={onClickDelete}\r\n />\r\n </div>\r\n </Col>\r\n </Row>\r\n );\r\n}\r\n","import React from 'react';\r\nimport { useService } from '@clickview/common';\r\n\r\nimport { CombineUploadsService, CombinedUpload } from '../services/CombineUploadsService';\r\n\r\nexport function useGetUploadingItems(onRemove: () => void, dependencies: React.DependencyList): CombinedUpload[] {\r\n const combineUploadsService = useService<CombineUploadsService>('combine:uploads:service');\r\n\r\n const [ , setUpdate ] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n const collection = combineUploadsService.getCollection();\r\n collection.off('add remove change');\r\n collection.on('add remove change', () => {\r\n setUpdate(s => !s);\r\n });\r\n collection.on('remove', onRemove);\r\n return () => collection.off('add remove change');\r\n }, dependencies);\r\n\r\n return combineUploadsService.getCollection().toJSON();\r\n}","import { Radio } from 'backbone';\r\nimport { BaseAlertService, Core, InstanceManager, HashObject, DevError, CommonServices, LanguageService, AlertType, BaseAlert, DefaultAlertHeading } from '@clickview/common';\r\nimport { BaseVideoUploadService, BasePendingItemsService, PendingItemsHelper, SharedServiceChannels, UploadEventNames, ContextService } from '@clickview/shared';\r\n\r\nimport { Services, AppChannels, Actions, ServiceChannels } from 'shared/constants';\r\n\r\nconst getPhrase = LanguageService.encloseNamespace('upload.services');\r\n\r\nclass CombinedCollection extends Core.Collection {\r\n public modelId(attrs: HashObject): string {\r\n return attrs.pendingProcessId || attrs.id;\r\n }\r\n\r\n public get comparator(): (item1: Core.Model, item2: Core.Model) => number {\r\n return (item1: Core.Model, item2: Core.Model) => {\r\n const item1Status = item1.get('status');\r\n const item2Status = item2.get('status');\r\n if (item1Status === CombinedUploadStatus.Errored)\r\n return 1;\r\n if (item2Status === CombinedUploadStatus.Errored)\r\n return -1;\r\n\r\n return 0;\r\n };\r\n }\r\n}\r\n\r\nexport enum CombinedUploadStatus {\r\n Uploading,\r\n Processing,\r\n Errored\r\n}\r\n\r\nexport interface CombinedUpload {\r\n id: string;\r\n name: string;\r\n status: CombinedUploadStatus;\r\n progress: number;\r\n pendingProcessId: number;\r\n videoId?: string;\r\n}\r\n\r\n/**\r\n * The sole purpose of this service is to combine the collections in the\r\n * VideoUploadService and the PendingItemsService in a way that's consumable\r\n * by the MyuploadsView\r\n */\r\nexport class CombineUploadsService extends Core.Service {\r\n private videoUploadService: BaseVideoUploadService;\r\n private pendingItemsService: BasePendingItemsService;\r\n private alertService: BaseAlertService;\r\n\r\n private uploads: Core.Collection;\r\n private pendingItems: Core.Collection;\r\n\r\n private combined: CombinedCollection;\r\n\r\n private erroredVideos: Core.Collection;\r\n\r\n public get name(): string {\r\n return Services.CombineUploads;\r\n }\r\n\r\n public get channelName(): string {\r\n return ServiceChannels.COMBINE_UPLOADS;\r\n }\r\n\r\n public initialize(): void {\r\n this.initializeServices();\r\n this.initializeCollections();\r\n this.bindListeners();\r\n }\r\n\r\n private initializeServices(): void {\r\n this.videoUploadService = InstanceManager.getInstance(Services.VideoUpload, this);\r\n this.pendingItemsService = InstanceManager.getInstance(Services.PendingItems, this);\r\n this.alertService = InstanceManager.getInstance(CommonServices.ALERT, this);\r\n }\r\n\r\n private initializeCollections(): void {\r\n this.uploads = this.videoUploadService.getCollection();\r\n this.pendingItems = this.pendingItemsService.getPendingItems();\r\n this.combined = new CombinedCollection();\r\n this.erroredVideos = new Core.Collection();\r\n\r\n this.uploads.each(this.addUpload, this);\r\n this.pendingItems.each(this.addPendingItem, this);\r\n }\r\n\r\n private bindListeners(): void {\r\n this.listenTo(this.uploads, 'add', this.addUpload);\r\n this.listenTo(this.pendingItems, 'add', this.addPendingItem);\r\n\r\n this.listenTo(this.uploads, 'remove', this.removeUpload);\r\n this.listenTo(this.pendingItems, 'remove', this.removePendingItem);\r\n\r\n this.listenTo(this.uploads, 'change', this.onChangeUpload);\r\n this.listenTo(this.pendingItems, 'change', this.onChangePendingItem);\r\n\r\n this.listenTo(\r\n SharedServiceChannels.PENDING_ITEMS,\r\n UploadEventNames.PENDING_ITEM_READY_TO_WATCH,\r\n this.onPendingItemReadyToWatch\r\n );\r\n }\r\n\r\n private getUploadAttrs(upload: Core.Model): CombinedUpload {\r\n return {\r\n id: upload.get('id'),\r\n name: upload.get('name'),\r\n progress: upload.get('progress'),\r\n status: CombinedUploadStatus.Uploading,\r\n pendingProcessId: upload.get('pendingProcessId')\r\n };\r\n }\r\n\r\n private getPendingItemAttrs(pendingItem: Core.Model): CombinedUpload {\r\n return {\r\n id: pendingItem.get('pendingProcessId'),\r\n name: pendingItem.get('video').get('name'),\r\n progress: pendingItem.get('foregroundProgress'),\r\n status: PendingItemsHelper.hasError(pendingItem) ? CombinedUploadStatus.Errored : CombinedUploadStatus.Processing,\r\n pendingProcessId: pendingItem.get('pendingProcessId'),\r\n videoId: pendingItem.get('video').get('id')\r\n };\r\n }\r\n\r\n private addUpload(upload: Core.Model): void {\r\n this.combined.add(this.getUploadAttrs(upload));\r\n }\r\n\r\n private addPendingItem(pendingItem: Core.Model): void {\r\n const existing = this.combined.findWhere({ pendingProcessId: pendingItem.get('pendingProcessId') });\r\n\r\n if (existing) {\r\n existing.set(this.getPendingItemAttrs(pendingItem));\r\n return;\r\n }\r\n\r\n this.combined.add(this.getPendingItemAttrs(pendingItem));\r\n }\r\n\r\n private removeUpload(upload: Core.Model): void {\r\n const item = this.combined.get(upload.get('id'));\r\n this.combined.remove(item);\r\n this.erroredVideos.remove(item);\r\n }\r\n\r\n private removePendingItem(pendingItem: Core.Model): void {\r\n const item = this.combined.get(pendingItem.get('pendingProcessId'));\r\n this.combined.remove(item);\r\n this.erroredVideos.remove(item);\r\n\r\n Radio.channel(this.channelName).trigger(UploadEventNames.PROCESSING_CANCELLED);\r\n }\r\n\r\n private onChangeUpload(upload: Core.Model): void {\r\n const item = this.combined.get(upload.get('id'));\r\n item.set(this.getUploadAttrs(upload));\r\n }\r\n\r\n private onChangePendingItem(pendingItem: Core.Model): void {\r\n const item = this.combined.get(pendingItem.get('pendingProcessId'));\r\n item.set(this.getPendingItemAttrs(pendingItem));\r\n\r\n if (PendingItemsHelper.hasError(pendingItem)) {\r\n this.onPendingItemError(item);\r\n }\r\n }\r\n\r\n private onPendingItemError(pendingItem: Core.Model): void {\r\n if (this.erroredVideos.findWhere({ id: pendingItem.get('id') }))\r\n return;\r\n\r\n this.erroredVideos.add(pendingItem);\r\n\r\n const alert: BaseAlert = {\r\n heading: DefaultAlertHeading.Fail,\r\n type: AlertType.Fail,\r\n message: getPhrase('errorAlertMessage', { videoName: pendingItem.get('name') })\r\n };\r\n\r\n const { appLink: currentAppLink } = ContextService.getCurrentContext();\r\n if (currentAppLink.application !== AppChannels.UPLOAD) {\r\n alert.appLinkText = getPhrase('errorAlertAppLinkText');\r\n alert.appLinkClassName = 'info-link';\r\n alert.appLink = {\r\n application: AppChannels.UPLOAD,\r\n action: Actions.Upload.MY_UPLOADS\r\n };\r\n }\r\n\r\n this.alertService.createAlert(alert);\r\n }\r\n\r\n private onPendingItemReadyToWatch(pendingItem: Core.Model): void {\r\n const video = pendingItem.get('video');\r\n\r\n const completeUploadAppLink = {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.PLAY_VIDEO,\r\n args: [video.get('id')]\r\n };\r\n\r\n this.alertService.createAlert({\r\n type: AlertType.Success,\r\n heading: getPhrase('completeUploadAlertHeading', { videoName: video.get('name') }),\r\n message: getPhrase('completeUploadAlertMessage', { videoName: video.get('name') }),\r\n appLink: completeUploadAppLink,\r\n appLinkText: getPhrase('completeUploadAlertAppLinkText', { videoName: video.get('name') }),\r\n appLinkClassName: 'info-link'\r\n });\r\n }\r\n\r\n public cancelUpload(itemId: string): void {\r\n this.videoUploadService.cancelUpload(itemId);\r\n }\r\n\r\n public cancelProcessing(itemId: string): void {\r\n const pendingItem = this.pendingItems.findWhere({ pendingProcessId: itemId });\r\n this.pendingItemsService.clearPendingItem(pendingItem);\r\n }\r\n\r\n public retryItem(item: CombinedUpload): void {\r\n if (item.status === CombinedUploadStatus.Uploading)\r\n Core.ErrorHelper.throw(new DevError('Cannot retry uploading items.'));\r\n\r\n this.erroredVideos.remove(item);\r\n\r\n const pendingItem = this.pendingItems.findWhere({ pendingProcessId: item.id });\r\n\r\n this.pendingItemsService.retryPendingItem(pendingItem, () => {\r\n this.pendingItemsService.forceFetchPendingItems();\r\n });\r\n }\r\n\r\n public editUpload(item: CombinedUpload): void {\r\n if (item.status !== CombinedUploadStatus.Uploading)\r\n return;\r\n\r\n const upload = this.uploads.get(item.id);\r\n\r\n /**\r\n * If the upload has sending set to true the VideoUploadService is in the middle of \r\n * posting the video to v2/process so we can't let the user edit the video via the edit upload form.\r\n * \r\n * This will only happen if the user clicks edit exactly as the video is posted\r\n */\r\n if (upload.get('sending'))\r\n return;\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.UPLOAD,\r\n action: Actions.Upload.EDIT_UPLOAD,\r\n args: [item.id]\r\n });\r\n }\r\n\r\n public updateUploadMetadata(videoId: string, name: string): void {\r\n const item = this.combined.findWhere({ videoId });\r\n\r\n if (!item) return;\r\n\r\n item.set({ name });\r\n }\r\n\r\n public getCollection(): Core.Collection {\r\n return this.combined;\r\n }\r\n}\r\n","import { Store } from 'redux';\r\nimport { Core, Flight, HashObject, HttpVerbs } from '@clickview/common';\r\nimport { BaseVideoUploadDataService, VideoOrigin, PendingProcessOrigin } from '@clickview/shared';\r\nimport { DataServices } from 'shared/constants';\r\n\r\nconst pendingItemRequests = {\r\n delete(ids: string[], success?: () => void): Flight.Request {\r\n return {\r\n url: `/api/domain/v2/process?${ids.map(id => `pendingProcessId=${id}`)}`,\r\n key: `pending:clear:${ids.join(',')}`,\r\n success,\r\n normalize: false,\r\n type: HttpVerbs.DELETE\r\n };\r\n },\r\n\r\n cancel(ids: string[], success?: () => void): Flight.Request {\r\n return {\r\n url: `/api/domain/v2/process/cancel?${ids.map(id => `pendingProcessId=${id}`)}`,\r\n key: `pending:cancel:${ids.join(',')}`,\r\n success,\r\n normalize: false,\r\n type: HttpVerbs.DELETE\r\n };\r\n },\r\n\r\n retry(ids: string[], success?: () => void): Flight.Request {\r\n return {\r\n url: `/api/domain/v2/process/retry?${ids.map(id => `pendingProcessId=${id}`)}`,\r\n key: `pending:retry:${ids.join(',')}`,\r\n success,\r\n normalize: false,\r\n type: HttpVerbs.POST\r\n };\r\n },\r\n\r\n get(id: string, success?: (item: HashObject) => void): Flight.Request {\r\n return {\r\n url: `/api/domain/v2/process/${id}`,\r\n key: `pending:item:${id}`,\r\n success,\r\n normalize: false\r\n };\r\n },\r\n\r\n getAll(success: (items: HashObject[]) => void): Flight.Request {\r\n return {\r\n url: '/api/domain/v2/process?destination=2&status=1&status=-1',\r\n key: 'pending',\r\n success,\r\n normalize: false\r\n };\r\n },\r\n\r\n completeUpload(completeRequest: CompletePendingItemRequest, success: (item: HashObject) => void): Flight.Request {\r\n return {\r\n url: '/api/domain/v2/process',\r\n key: `complete:upload:${completeRequest.id}`,\r\n type: HttpVerbs.POST,\r\n success,\r\n data: completeRequest\r\n };\r\n }\r\n};\r\n\r\ninterface FlightVideoDataServiceOptions {\r\n store: Store;\r\n}\r\n\r\ninterface CompletePendingItemVideo {\r\n name: string;\r\n description?: string;\r\n}\r\n\r\ninterface CompletePendingItemRequest {\r\n id: string;\r\n userId: string;\r\n customerId: string;\r\n libraryId: string;\r\n categoryId: string;\r\n fileUrl: string;\r\n pendingProcessOrigin: PendingProcessOrigin;\r\n origin: VideoOrigin;\r\n video: CompletePendingItemVideo;\r\n}\r\n\r\nexport class FlightVideoUploadDataService implements BaseVideoUploadDataService {\r\n private store: Store;\r\n\r\n constructor(options: FlightVideoDataServiceOptions) {\r\n this.store = options.store;\r\n }\r\n\r\n public get name(): string {\r\n return DataServices.VideoUpload;\r\n }\r\n\r\n public clearPendingItems(ids: string[], callback?: () => void): void {\r\n Flight.fetch(this.store.dispatch, pendingItemRequests.delete(ids, callback));\r\n }\r\n public cancelPendingItems(ids: string[], callback?: () => void): void {\r\n Flight.fetch(this.store.dispatch, pendingItemRequests.cancel(ids, callback));\r\n }\r\n public retryPendingItems(ids: string[], callback?: () => void): void {\r\n Flight.fetch(this.store.dispatch, pendingItemRequests.retry(ids, callback));\r\n }\r\n public getPendingItem(id: string, callback: (item: Core.Model) => void): void {\r\n Flight.fetch(this.store.dispatch, pendingItemRequests.get(id, (data: any) => {\r\n callback(new Core.Model(data));\r\n }));\r\n }\r\n public getPendingItems(callback: (items: HashObject[]) => void): void {\r\n Flight.fetch(this.store.dispatch, pendingItemRequests.getAll(callback));\r\n }\r\n public completeVideoUpload(request: CompletePendingItemRequest, callback?: (item: HashObject) => void): void {\r\n Flight.fetch(this.store.dispatch, pendingItemRequests.completeUpload(request, callback));\r\n }\r\n}\r\n","import { Radio } from 'backbone';\r\n\r\nimport { BaseVideoUploadService, UserDataService, UploadEventNames, BasePendingItemsService, PendingProcessOrigin, ContextService } from '@clickview/shared';\r\nimport { InstanceManager, Core, HashObject, LanguageService, CommonServices, AlertType, BaseAlert, BaseAlertService } from '@clickview/common';\r\nimport { VideoOrigin } from '@clickview/shared';\r\n\r\nimport { Services, DataServices, AppChannels, Actions } from 'shared/constants';\r\nimport { FlightVideoUploadDataService } from './FlightVideoUploadDataService';\r\n\r\nconst getPhrase = LanguageService.encloseNamespace('upload.services');\r\n\r\nexport class VideoUploadService extends BaseVideoUploadService {\r\n private videoUploadDataService: FlightVideoUploadDataService;\r\n private pendingItemsService: BasePendingItemsService;\r\n private userDataService: UserDataService;\r\n private alertService: BaseAlertService;\r\n\r\n public initialize(): void {\r\n super.initialize();\r\n\r\n this.videoUploadDataService = InstanceManager.getInstance(DataServices.VideoUpload, this);\r\n this.pendingItemsService = InstanceManager.getInstance(Services.PendingItems, this);\r\n this.userDataService = InstanceManager.getInstance(DataServices.User, this);\r\n this.alertService = InstanceManager.getInstance(CommonServices.ALERT, this);\r\n\r\n this.listenTo(this.channelName, UploadEventNames.FILES_ADDED, this.onUploadStart);\r\n this.listenTo(this.channelName, UploadEventNames.UPLOAD_COMPLETE, this.unlockNav);\r\n this.listenTo(this.channelName, UploadEventNames.UPLOAD_CANCELLED, this.unlockNav);\r\n }\r\n\r\n private onUploadStart(files: FileList): void {\r\n const alert: BaseAlert = {\r\n type: AlertType.Success,\r\n heading: getPhrase('startUploadAlertHeading'),\r\n message: files.length === 1\r\n ? getPhrase('startUploadSingleAlertBody', { videoName: files[0].name })\r\n : getPhrase('startUploadMultipleAlertBody', { uploadCount: files.length })\r\n };\r\n\r\n const { appLink: currentAppLink } = ContextService.getCurrentContext();\r\n\r\n const inUploadApp = currentAppLink.application === AppChannels.UPLOAD;\r\n\r\n // If the user is not on the \"My Uploads\" page, add an applink to the alert\r\n if (!inUploadApp) {\r\n alert.appLinkText = getPhrase('startUploadAlertAppLinkText', { smartCount: files.length });\r\n alert.appLink = {\r\n application: AppChannels.UPLOAD,\r\n action: Actions.Upload.MY_UPLOADS\r\n };\r\n alert.appLinkClassName = 'info-link';\r\n }\r\n\r\n this.alertService.createAlert(alert);\r\n }\r\n\r\n private unlockNav(): void {\r\n const collection = this.getCollection();\r\n\r\n if (collection.some(upload => upload.get('progress') < 100))\r\n return;\r\n\r\n Radio.channel(this.channelName).trigger(UploadEventNames.UNLOCK_NAV);\r\n }\r\n\r\n private getUpload(file: File): Core.Model {\r\n const fileId = this.uploader.getId(file);\r\n\r\n return this.getCollection().get(fileId);\r\n }\r\n\r\n private completeUpload(upload: Core.Model, response: any): void {\r\n upload.set('sending', true);\r\n this.userDataService.getCurrentUser((user: HashObject) => {\r\n this.userDataService.getWorkspace((workspace: HashObject) => {\r\n this.videoUploadDataService.completeVideoUpload({\r\n id: upload.get('id'),\r\n userId: user.id,\r\n customerId: user.customerId,\r\n libraryId: workspace.id,\r\n categoryId: workspace.categoryTree.id,\r\n pendingProcessOrigin: PendingProcessOrigin.Upload,\r\n origin: VideoOrigin.Lite,\r\n fileUrl: response.url,\r\n video: { name: upload.get('name'), description: upload.get('description') }\r\n }, (item: any) => {\r\n upload.set('pendingProcessId', item.pendingProcessId);\r\n this.pendingItemsService.forceFetchPendingItems({\r\n resetTimeout: true,\r\n });\r\n });\r\n });\r\n });\r\n }\r\n\r\n protected onSuccess(file: File, response: any): void {\r\n super.onSuccess(file, response);\r\n\r\n const upload = this.getUpload(file);\r\n\r\n /**\r\n * editingMetadata is set by the EditUploadView.\r\n * If it's set, we wait till the user is done editing the metadata before\r\n * we post the data\r\n */\r\n if (upload.get('editingMetadata')) {\r\n this.listenToOnce(upload, 'change:editingMetadata', () => {\r\n this.completeUpload(upload, response);\r\n });\r\n } else {\r\n this.completeUpload(upload, response);\r\n }\r\n }\r\n}\r\n","export * from './CombineUploadsService';\r\nexport * from './FlightVideoUploadDataService';\r\nexport * from './VideoUploadService';","import * as React from 'react';\r\nimport { Radio } from 'backbone';\r\nimport { useService, LanguageService, AlertType } from '@clickview/common';\r\nimport { PopupViewProps, Popup, PopupButton, PopupButtons, Text, SharedServiceChannels, UploadEventNames, useAlerts } from '@clickview/shared';\r\n\r\nimport { Services, ServiceChannels } from 'shared/constants';\r\nimport { CombineUploadsService, CombinedUploadStatus } from 'apps/upload/services/CombineUploadsService';\r\n\r\nconst namespace = 'upload.cancelUpload';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\ninterface CancelUploadViewProps {\r\n id: string;\r\n name: string;\r\n status: CombinedUploadStatus;\r\n}\r\n\r\nexport function CancelUploadView(props: CancelUploadViewProps & PopupViewProps): JSX.Element {\r\n const { id, status, name } = props;\r\n\r\n const [ showSpinner, setShowSpinner ] = React.useState(false);\r\n\r\n const combineUploadsService = useService<CombineUploadsService>(Services.CombineUploads);\r\n const alerts = useAlerts();\r\n\r\n const isUploading = status === CombinedUploadStatus.Uploading;\r\n\r\n const onCancelComplete = () => {\r\n const headingPhrase = isUploading ? 'cancelUploadingAlertHeading' : 'cancelProcessingAlertHeading';\r\n const messagePhrase = isUploading ? 'cancelUploadingAlertMessage' : 'cancelProcessingAlertMessage';\r\n\r\n alerts.success({\r\n type: AlertType.Success,\r\n heading: getPhrase(headingPhrase),\r\n message: getPhrase(messagePhrase, { videoName: name })\r\n });\r\n\r\n props.closePopup();\r\n };\r\n\r\n const cancelUpload = () => {\r\n setShowSpinner(true);\r\n\r\n if (isUploading) {\r\n combineUploadsService.cancelUpload(id);\r\n\r\n const uploadChannel = Radio.channel(SharedServiceChannels.VIDEO_UPLOAD);\r\n uploadChannel.on(UploadEventNames.UPLOAD_CANCELLED, () => onCancelComplete());\r\n } else {\r\n combineUploadsService.cancelProcessing(id);\r\n\r\n const combinedUploadsChannel = Radio.channel(ServiceChannels.COMBINE_UPLOADS);\r\n combinedUploadsChannel.on(UploadEventNames.PROCESSING_CANCELLED, () => onCancelComplete());\r\n }\r\n };\r\n\r\n const buttons: PopupButton[] = [\r\n {\r\n variant: 'link',\r\n onClick: () => props.closePopup(),\r\n buttonText: 'No'\r\n },\r\n {\r\n variant: 'primary',\r\n onClick: cancelUpload,\r\n buttonText: 'Yes',\r\n isSpinnerButton: true,\r\n showSpinner\r\n }\r\n ];\r\n\r\n const titlePhraseKey = status === CombinedUploadStatus.Processing\r\n ? 'cancelProcessingTitle'\r\n : 'cancelUploadingTitle';\r\n\r\n const messagePhraseKey = status === CombinedUploadStatus.Processing\r\n ? 'cancelProcessingMessage'\r\n : 'cancelUploadingMessage';\r\n\r\n return (\r\n <Popup title={getPhrase(titlePhraseKey)} closePopup={() => props.closePopup()}>\r\n <p>\r\n <Text\r\n namespace={namespace}\r\n phrase={messagePhraseKey}\r\n options={{\r\n videoName: name\r\n }}\r\n />\r\n </p>\r\n <PopupButtons buttons={buttons} />\r\n </Popup>\r\n );\r\n}\r\n","import * as React from 'react';\r\nimport { useService, LanguageService, CommonServices, AlertType } from '@clickview/common';\r\nimport { PopupViewProps, Popup, EditVideoDetails, UpdateVideoRequest, useAlerts } from '@clickview/shared';\r\n\r\nimport { Services } from 'shared/constants';\r\n\r\nimport { VideoUploadService } from 'apps/upload/services/VideoUploadService';\r\n\r\nconst namespace = 'upload.editUpload';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\ninterface EditUploadViewProps {\r\n uploadId: string;\r\n}\r\n\r\nexport function EditUploadView(props: EditUploadViewProps & PopupViewProps): JSX.Element {\r\n const { uploadId } = props;\r\n\r\n const videoUploadService = useService<VideoUploadService>(Services.VideoUpload);\r\n const alerts = useAlerts();\r\n\r\n var upload = videoUploadService.getCollection().get(uploadId);\r\n\r\n /**\r\n * We set editingMetadata to true while the user has the edit form open\r\n * This prevents the VideoUploadService from posting till the user is done\r\n */\r\n if (!upload.get('editingMetadata'))\r\n upload.set('editingMetadata', true);\r\n\r\n const closePopup = () => {\r\n upload.set('editingMetadata', false);\r\n props.closePopup();\r\n };\r\n\r\n const saveUpload = (data: UpdateVideoRequest) => {\r\n upload.set(data);\r\n\r\n alerts.success(getPhrase('alertBody', { videoName: data.name }));\r\n\r\n closePopup();\r\n };\r\n\r\n return (\r\n <Popup closePopup={closePopup} title={LanguageService.getPhrase(namespace, 'title')}>\r\n <EditVideoDetails\r\n video={{ name: upload.get('name'), description: upload.get('description'), productionYear: 0 }}\r\n saveVideo={saveUpload}\r\n onClickCancel={closePopup}\r\n />\r\n </Popup>\r\n );\r\n}\r\n","import * as React from 'react';\r\nimport { Alert } from 'react-bootstrap';\r\nimport { Text } from '@clickview/shared';\r\n\r\nconst namespace = 'upload.myUploads';\r\n\r\nexport function DismissibleAlert(): JSX.Element {\r\n const [ show, setShow ] = React.useState(!localStorage.getItem('uploadInfoDismissed'));\r\n\r\n const onDismiss = () => {\r\n localStorage.setItem('uploadInfoDismissed', '1');\r\n setShow(false);\r\n };\r\n\r\n if (!show)\r\n return <></>;\r\n\r\n return (\r\n <Alert variant={'info'} onClose={onDismiss} dismissible>\r\n <Text namespace={namespace} phrase={'alertMessage'} /><br />\r\n <small><Text namespace={namespace} phrase={'alertSecondaryMessage'} /></small>\r\n </Alert>\r\n );\r\n}\r\n","import * as React from 'react';\r\n\r\nimport { Flight, LanguageService, Core, useService } from '@clickview/common';\r\nimport {\r\n BannerHeader,\r\n Config,\r\n Text,\r\n VideoCollection,\r\n Video,\r\n Series,\r\n ActionOptions,\r\n cvSvgLibrary,\r\n VideoActionsContext,\r\n Library,\r\n VideoAction,\r\n VideoList,\r\n ConfigRequests,\r\n UserRequests\r\n} from '@clickview/shared';\r\n\r\nimport { VideoRequests } from 'shared/flight-requests';\r\nimport { AppChannels, Actions, Services } from 'shared/constants';\r\n\r\nimport { useGetUploadingItems } from 'apps/upload/hooks/useGetUploadingItems';\r\nimport { CombineUploadsService, CombinedUpload, CombinedUploadStatus } from 'apps/upload/services/CombineUploadsService';\r\nimport { UploadingItem } from 'apps/upload/components/uploading-item/UploadingItem';\r\n\r\nimport { DismissibleAlert } from './DismissibleAlert';\r\n\r\n/**\r\n * This will need to change when this is moved into its own application directory.\r\n */\r\nconst namespace = 'upload.myUploads';\r\n\r\n// This must be a function as the LanguageService config won't be set until runtime.\r\nconst getHeaderActions = (): ActionOptions[] => ([\r\n {\r\n label: LanguageService.getPhrase(namespace, 'share'),\r\n appLink: { application: AppChannels.DEFAULT, action: Actions.Default.SHARE },\r\n svgName: cvSvgLibrary.Share,\r\n className: 'btn btn-light',\r\n button: true\r\n },\r\n {\r\n label: LanguageService.getPhrase(namespace, 'edit'),\r\n appLink: { application: AppChannels.DEFAULT, action: 'index' },\r\n svgName: cvSvgLibrary.Edit,\r\n className: 'btn btn-light',\r\n button: true\r\n }\r\n]);\r\n\r\nfunction getVideoActions(): VideoAction[] {\r\n return [\r\n VideoAction.Edit,\r\n VideoAction.AddToPlaylist,\r\n VideoAction.Share\r\n ];\r\n}\r\n\r\nfunction getVideoActionAppLink(video: Video, action: VideoAction): Core.AppLink {\r\n switch (action) {\r\n case VideoAction.Edit:\r\n return { application: AppChannels.DEFAULT, action: Actions.Default.EDIT_VIDEO, args: [video.id]};\r\n case VideoAction.AddToPlaylist:\r\n return { application: AppChannels.PLAYLISTS, action: 'add:to:playlist', args: [video.id]};\r\n case VideoAction.Share:\r\n return {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SHARE,\r\n args: [video.id],\r\n params: {\r\n entityType: 'video'\r\n }\r\n };\r\n }\r\n}\r\n\r\nconst getVideoAppLink = (video: Video): Core.AppLink => ({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.PLAY_VIDEO,\r\n args: [video.id]\r\n});\r\n\r\nconst getSeriesAppLink = (series: Series): Core.AppLink => ({\r\n application: null,\r\n action: null,\r\n args: [series.id]\r\n});\r\n\r\ninterface MyUploadsViewProps {\r\n cursor?: string;\r\n}\r\n\r\nexport function MyUploadsView(props: MyUploadsViewProps): JSX.Element {\r\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config);\r\n const workspace = Flight.useBasicFetch<Library>(UserRequests.workspace);\r\n\r\n const workspaceRequest = workspace.data && VideoRequests.workspace(workspace.data.id, props.cursor);\r\n const workspaceVideos = Flight.useGetResponse<VideoCollection>(workspaceRequest && workspaceRequest.key);\r\n const fetchData = Flight.useGetFetch(workspaceRequest);\r\n\r\n /**\r\n * Get reference to the combined service even though useGetUploadingItems does it too\r\n * so that we can provide the callbacks\r\n */\r\n const combinedUploadService = useService<CombineUploadsService>(Services.CombineUploads);\r\n\r\n /**\r\n * fetchData will be undefined on the first run through of this view because\r\n * the workspace.data will be null, so we pass a dependency of !workspace.data\r\n * so this callback is re-created once we have wokspace.data and the fetchData\r\n * is properly encapsulated.\r\n */\r\n const items = useGetUploadingItems(() => {\r\n fetchData && fetchData();\r\n }, [!!workspace.data]);\r\n\r\n /**\r\n * Using React.useCallback because this component will render\r\n * every time a chunk is loaded and every time the pending items\r\n * is fetched\r\n */\r\n const onClickDelete = React.useCallback((item: CombinedUpload) => {\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.UPLOAD,\r\n action: Actions.Upload.CANCEL_UPLOAD,\r\n args: [item.id],\r\n params: {\r\n name: item.name,\r\n status: item.status\r\n }\r\n });\r\n }, []);\r\n\r\n const onClickAlternate = React.useCallback((item: CombinedUpload) => {\r\n switch (item.status) {\r\n case CombinedUploadStatus.Errored:\r\n combinedUploadService.retryItem(item);\r\n return;\r\n case CombinedUploadStatus.Processing:\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.EDIT_VIDEO,\r\n args: [item.videoId]\r\n });\r\n return;\r\n case CombinedUploadStatus.Uploading:\r\n combinedUploadService.editUpload(item);\r\n break;\r\n default:\r\n // This should never happen\r\n }\r\n }, []);\r\n\r\n if (workspace.shouldFetch || !workspace.data) {\r\n return <></>;\r\n }\r\n\r\n if (workspaceVideos.shouldFetch)\r\n fetchData();\r\n\r\n if (!config.data || !workspaceVideos.data)\r\n return <></>;\r\n\r\n return (\r\n <VideoActionsContext.Provider\r\n value={{\r\n videoActions: getVideoActions(),\r\n getActionAppLink: getVideoActionAppLink\r\n }}>\r\n <BannerHeader\r\n heading={LanguageService.getPhrase(namespace, 'header')}\r\n banner={null}\r\n imageCdnUrl={config.data.imageCdnUrl}\r\n actions={getHeaderActions()}\r\n />\r\n <div>\r\n <p className='pt-3'><Text namespace={namespace} phrase='description' /></p>\r\n <DismissibleAlert />\r\n {items.map(item => <UploadingItem\r\n item={item}\r\n onClickAlternate={onClickAlternate}\r\n onClickDelete={onClickDelete}\r\n key={item.id}\r\n />)}\r\n <VideoList\r\n videos={workspaceVideos.data.data}\r\n cursors={workspaceVideos.data.pagination.cursors}\r\n getVideoAppLink={getVideoAppLink}\r\n getSeriesAppLink={getSeriesAppLink}\r\n />\r\n </div>\r\n </VideoActionsContext.Provider>\r\n );\r\n}\r\n","import * as React from 'react';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { Core, ReactApplication, HashObject } from '@clickview/common';\r\nimport { LayoutRegions } from '@clickview/shared';\r\n\r\nimport { AppChannels, Layouts } from 'shared/constants';\r\nimport { TeacherLayoutViewOptions, TeacherLayoutView } from 'shared/layouts';\r\n\r\nimport { SchoolStudentManagerView } from 'apps/user-manager/views/school-student-manager/SchoolStudentManagerView';\r\nimport { SchoolTeacherManagerView } from 'apps/user-manager/views/school-teacher-manager/SchoolTeacherManagerView';\r\nimport { RemoveUserView } from 'apps/user-manager/views/remove-user/RemoveUserView';\r\nimport { CreateStudentView } from 'apps/user-manager/views/create-student/CreateStudentView';\r\nimport { EditStudentView } from './views/edit-student/EditStudentView';\r\nimport { CreateTeacherView } from './views/create-teacher/CreateTeacherView';\r\nimport { EditTeacherView } from './views/edit-teacher/EditTeacherView';\r\nimport { StudentUploadReviewView } from 'apps/user-manager/views/student-upload-review/StudentUploadReviewView';\r\nimport { TeacherUploadReviewView } from 'apps/user-manager/views/teacher-upload-review/TeacherUploadReviewView';\r\n\r\nclass UserManagerAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.USER_MANAGER;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'user-manager/students(/)': 'studentManager',\r\n 'user-manager/teachers(/)': 'teacherManager',\r\n 'user-manager/students/upload/review': 'studentUploadReview',\r\n 'user-manager/teachers/upload/review': 'teacherUploadReview'\r\n };\r\n }\r\n\r\n protected get appLinks(): string[] {\r\n return [\r\n 'newStudent',\r\n 'editStudent',\r\n 'newTeacher',\r\n 'editTeacher',\r\n 'removeUsers'\r\n ];\r\n }\r\n}\r\n\r\nexport class UserManagerApplication extends ReactApplication {\r\n protected layout: TeacherLayoutView;\r\n\r\n public get name(): string {\r\n return 'User Manager Application';\r\n }\r\n\r\n public static get router(): any {\r\n return UserManagerAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.USER_MANAGER;\r\n }\r\n\r\n protected get layoutOptions(): Core.LayoutOptions<TeacherLayoutViewOptions> {\r\n return {\r\n name: Layouts.TEACHER_LAYOUT,\r\n options: {\r\n showNav: true,\r\n alertRegion: LayoutRegions.ALERT\r\n }\r\n };\r\n }\r\n\r\n public studentManager(queryParams?: HashObject): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <SchoolStudentManagerView queryParams={queryParams} />);\r\n }\r\n\r\n public teacherManager(queryParams?: HashObject): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <SchoolTeacherManagerView queryParams={queryParams} />);\r\n }\r\n\r\n public studentUploadReview(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, (\r\n <StudentUploadReviewView closePopup={() => this.layout.closePopup()} />\r\n ));\r\n }\r\n\r\n public teacherUploadReview(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, (\r\n <TeacherUploadReviewView closePopup={() => this.layout.closePopup()} />\r\n ));\r\n }\r\n\r\n public newStudent(): void {\r\n this.layout.showChildView(LayoutRegions.POPUP, <CreateStudentView closePopup={() => this.layout.closePopup()} />);\r\n }\r\n\r\n public editStudent(id: string): void {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <EditStudentView id={id} closePopup={() => this.layout.closePopup()} />);\r\n }\r\n\r\n public newTeacher(): void {\r\n this.layout.showChildView(LayoutRegions.POPUP, <CreateTeacherView closePopup={() => this.layout.closePopup()} />);\r\n }\r\n\r\n public editTeacher(id: string): void {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <EditTeacherView id={id} closePopup={() => this.layout.closePopup()} />);\r\n }\r\n\r\n public removeUsers(params: HashObject): void {\r\n const { userIds = [], userType } = params;\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <RemoveUserView\r\n userIds={userIds}\r\n userType={userType}\r\n closePopup={() => this.layout.closePopup()}\r\n />\r\n );\r\n }\r\n}","import React from 'react';\r\nimport { parse, ParseResult } from 'papaparse';\r\n\r\nimport { IconButton, cvSvgLibrary, useAlerts, Text } from '@clickview/shared';\r\nimport { HashObject, Core, ViewModelService, LanguageService } from '@clickview/common';\r\n\r\nimport { AppChannels } from 'shared/constants';\r\n\r\nimport { MockYearLevel, MockUserRole } from 'apps/user-manager/interfaces';\r\nimport { MockUserType } from 'apps/user-manager/enums';\r\n\r\nconst namespace = 'userManager.bulkUploadFileSelect';\r\n\r\ninterface BulkUploadFileSelectProps {\r\n action: string;\r\n userType: MockUserType;\r\n userRoles?: MockUserRole[];\r\n yearLevels?: MockYearLevel[];\r\n}\r\n\r\nexport function BulkUploadFileSelect(props: BulkUploadFileSelectProps): React.ReactElement {\r\n const ref = React.useRef(null);\r\n const useRef = React.useCallback(node => {\r\n if (!node)\r\n return;\r\n\r\n ref.current = node;\r\n }, []);\r\n\r\n const alerts = useAlerts();\r\n\r\n const buildStudent = (r: HashObject, index: number): HashObject => {\r\n const yearLevel = props.yearLevels.find(y => y.name === r[2]);\r\n\r\n return {\r\n lookupId: index.toString(),\r\n name: r[0],\r\n surname: r[1],\r\n yearLevel,\r\n email: r[3]\r\n };\r\n };\r\n\r\n const buildTeacher = (r: HashObject, index: number): HashObject => {\r\n const userRole = props.userRoles.find(y => y.name === r[2]);\r\n\r\n // TODO: Change to actually work\r\n return {\r\n lookupId: index.toString(),\r\n name: r[0],\r\n surname: r[1],\r\n userRole,\r\n email: r[3]\r\n };\r\n };\r\n\r\n const onClick = (e: React.MouseEvent) => {\r\n ref.current.value = null;\r\n ref.current.click(null);\r\n };\r\n\r\n const onChange = (file: File) => {\r\n parse(file, {\r\n complete: (result: ParseResult) => {\r\n const data = result.data;\r\n\r\n if (!data.length || data.length === 1) {\r\n alerts.warning(LanguageService.getPhrase(namespace, 'emptyCsvWarning'));\r\n return;\r\n }\r\n\r\n data.shift();\r\n\r\n const users = data.map(props.userType === MockUserType.Student ? buildStudent : buildTeacher);\r\n\r\n const viewModelKey = props.userType === MockUserType.Student ? 'bulk:student:upload' : 'bulk:teacher:upload';\r\n const viewModel = ViewModelService.get(viewModelKey);\r\n viewModel.set('users', users);\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.USER_MANAGER,\r\n action: props.action\r\n });\r\n }\r\n });\r\n };\r\n\r\n return (\r\n <>\r\n <IconButton\r\n svgName={cvSvgLibrary.Upload}\r\n className='btn btn-outline-dark'\r\n onClick={onClick}\r\n >\r\n <Text namespace={namespace} phrase='button' />\r\n </IconButton>\r\n\r\n <input\r\n type='file'\r\n autoComplete='off'\r\n className='file-select d-none'\r\n accept='text/csv'\r\n ref={useRef}\r\n onChange={e => onChange(e.target.files[0])}\r\n />\r\n </>\r\n );\r\n}","import React from 'react';\r\n\r\nimport { LanguageService } from '@clickview/common';\r\nimport { PopupViewProps, Popup, Text, PopupButtons, PopupButton, LanguageNamespaceContext, useAlerts } from '@clickview/shared';\r\n\r\nimport { MockStudent } from 'apps/user-manager/interfaces';\r\nimport { UserUploadContext } from 'apps/user-manager/reducers/UserUploadReducer';\r\n\r\nconst namespace = 'userManager.deleteUploadedStudentPopup';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\ninterface DeleteUploadedStudentPopupProps {\r\n student: MockStudent;\r\n}\r\n\r\nexport function DeleteUploadedStudentPopup(props: DeleteUploadedStudentPopupProps & PopupViewProps): JSX.Element {\r\n const { dispatch } = React.useContext(UserUploadContext);\r\n\r\n const alerts = useAlerts();\r\n\r\n function onClickDelete(): void {\r\n dispatch({\r\n type: 'delete',\r\n payload: props.student\r\n });\r\n\r\n alerts.success(getPhrase('success'));\r\n\r\n props.closePopup();\r\n }\r\n\r\n const buttons: PopupButton[] = [\r\n {\r\n variant: 'link',\r\n onClick: props.closePopup,\r\n buttonText: getPhrase('cancel')\r\n },\r\n {\r\n variant: 'danger',\r\n onClick: onClickDelete,\r\n buttonText: getPhrase('delete')\r\n }\r\n ];\r\n\r\n return (\r\n <LanguageNamespaceContext.Provider value={namespace}>\r\n <Popup title={getPhrase('title')} closePopup={props.closePopup}>\r\n <p className='m-0 pb-1'><Text phrase='confirmation' /></p>\r\n <ul>\r\n <li><Text phrase='firstName' options={{ firstName: props.student.name }} /></li>\r\n <li><Text phrase='lastName' options={{ lastName: props.student.surname }} /></li>\r\n <li><Text phrase='yearLevel' options={{ yearLevel: props.student.yearLevel?.name }} /></li>\r\n <li><Text phrase='email' options={{ email: props.student.email }} /></li>\r\n </ul>\r\n <PopupButtons buttons={buttons} />\r\n </Popup>\r\n </LanguageNamespaceContext.Provider>\r\n );\r\n}","import React from 'react';\r\n\r\nimport { LanguageService } from '@clickview/common';\r\nimport { PopupViewProps, Popup, Text, PopupButtons, PopupButton, LanguageNamespaceContext, useAlerts } from '@clickview/shared';\r\n\r\nimport { MockTeacher } from 'apps/user-manager/interfaces';\r\nimport { UserUploadContext } from 'apps/user-manager/reducers/UserUploadReducer';\r\n\r\nconst namespace = 'userManager.deleteUploadedTeacherPopup';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\ninterface DeleteUploadedTeacherPopupProps {\r\n teacher: MockTeacher;\r\n}\r\n\r\nexport function DeleteUploadedTeacherPopup(props: DeleteUploadedTeacherPopupProps & PopupViewProps): JSX.Element {\r\n const { dispatch } = React.useContext(UserUploadContext);\r\n\r\n const alerts = useAlerts();\r\n\r\n function onClickDelete(): void {\r\n dispatch({\r\n type: 'delete',\r\n payload: props.teacher\r\n });\r\n\r\n alerts.success(getPhrase('success'));\r\n\r\n props.closePopup();\r\n }\r\n\r\n const buttons: PopupButton[] = [\r\n {\r\n variant: 'link',\r\n onClick: props.closePopup,\r\n buttonText: getPhrase('cancel')\r\n },\r\n {\r\n variant: 'danger',\r\n onClick: onClickDelete,\r\n buttonText: getPhrase('delete')\r\n }\r\n ];\r\n\r\n return (\r\n <LanguageNamespaceContext.Provider value={namespace}>\r\n <Popup title={getPhrase('title')} closePopup={props.closePopup}>\r\n <p className='m-0 pb-1'><Text phrase='confirmation' /></p>\r\n <ul>\r\n <li><Text phrase='firstName' options={{ firstName: props.teacher.name }} /></li>\r\n <li><Text phrase='lastName' options={{ lastName: props.teacher.surname }} /></li>\r\n <li><Text phrase='userRole' options={{ userRole: props.teacher.userRole?.name }} /></li>\r\n <li><Text phrase='email' options={{ email: props.teacher.email }} /></li>\r\n </ul>\r\n <PopupButtons buttons={buttons} />\r\n </Popup>\r\n </LanguageNamespaceContext.Provider>\r\n );\r\n}","import React from 'react';\r\nimport { FormikErrors, FormikTouched } from 'formik';\r\n\r\nimport { FormWrapper } from '@clickview/shared';\r\n\r\nimport { EditUserRequest, MockYearLevel, MockStudent } from 'apps/user-manager/interfaces';\r\nimport { MockUserType } from 'apps/user-manager/enums';\r\nimport { getStudentValidationSchema } from 'apps/user-manager/validation/user-validation/UserValidationSchema';\r\nimport { UserDetailsForm } from 'apps/user-manager/components/user-details-form/UserDetailsForm';\r\n\r\nexport interface EditStudentDetailsProps {\r\n user?: MockStudent;\r\n saveUser: (data: EditUserRequest) => void;\r\n onClickCancel: () => void;\r\n yearLevels: MockYearLevel[];\r\n initialErrors?: FormikErrors<EditUserRequest>;\r\n hasNext?: boolean;\r\n}\r\n\r\nexport function EditStudentDetails(props: EditStudentDetailsProps): React.ReactElement {\r\n const { user, saveUser, onClickCancel, yearLevels, hasNext = false, initialErrors = {} } = props;\r\n\r\n const initialValues: EditUserRequest = {\r\n id: user?.id,\r\n name: user?.name,\r\n email: user?.email,\r\n surname: user?.surname,\r\n yearLevel: {\r\n id: user?.yearLevel?.id,\r\n name: user?.yearLevel?.name\r\n }\r\n };\r\n\r\n const initialTouched: FormikTouched<EditUserRequest> = {};\r\n Object.keys(initialErrors).forEach((err: keyof EditUserRequest) => {\r\n initialTouched[err] = true;\r\n });\r\n\r\n const StudentValidationSchema = getStudentValidationSchema(yearLevels);\r\n\r\n return (\r\n <FormWrapper<EditUserRequest>\r\n initialValues={initialValues}\r\n initialErrors={initialErrors}\r\n initialTouched={initialTouched}\r\n validationSchema={StudentValidationSchema}\r\n onSubmit={saveUser}\r\n >\r\n <UserDetailsForm\r\n onClickCancel={onClickCancel}\r\n yearLevels={yearLevels}\r\n userType={MockUserType.Student}\r\n hasNext={hasNext}\r\n />\r\n </FormWrapper>\r\n );\r\n}","import React from 'react';\r\nimport { FormikErrors, FormikTouched } from 'formik';\r\n\r\nimport { FormWrapper } from '@clickview/shared';\r\nimport { EditUserRequest, MockUserRole, MockTeacher } from 'apps/user-manager/interfaces';\r\nimport { getTeacherValidationSchema } from 'apps/user-manager/validation/user-validation/UserValidationSchema';\r\nimport { UserDetailsForm } from 'apps/user-manager/components/user-details-form/UserDetailsForm';\r\nimport { MockUserType } from 'apps/user-manager/enums';\r\n\r\nexport interface EditTeacherDetailsProps {\r\n user?: MockTeacher;\r\n saveUser: (data: EditUserRequest) => void;\r\n onClickCancel: () => void;\r\n userRoles: MockUserRole[];\r\n initialErrors?: FormikErrors<EditUserRequest>;\r\n hasNext?: boolean;\r\n}\r\n\r\nexport function EditTeacherDetails(props: EditTeacherDetailsProps): React.ReactElement {\r\n const { user, saveUser, onClickCancel, userRoles, hasNext = false, initialErrors = {} } = props;\r\n\r\n const initialValues: EditUserRequest = {\r\n id: user?.id,\r\n name: user?.name,\r\n email: user?.email,\r\n surname: user?.surname,\r\n userRole: {\r\n id: user?.userRole?.id,\r\n name: user?.userRole?.name\r\n }\r\n };\r\n\r\n const initialTouched: FormikTouched<EditUserRequest> = {};\r\n Object.keys(initialErrors).forEach((err: keyof EditUserRequest) => {\r\n initialTouched[err] = true;\r\n });\r\n\r\n const TeacherValidationSchema = getTeacherValidationSchema(userRoles);\r\n\r\n return (\r\n <FormWrapper<EditUserRequest>\r\n initialValues={initialValues}\r\n initialErrors={initialErrors}\r\n initialTouched={initialTouched}\r\n validationSchema={TeacherValidationSchema}\r\n onSubmit={saveUser}\r\n >\r\n <UserDetailsForm\r\n onClickCancel={onClickCancel}\r\n userRoles={userRoles}\r\n userType={MockUserType.Teacher}\r\n hasNext={hasNext}\r\n />\r\n </FormWrapper>\r\n );\r\n}","import React from 'react';\r\n\r\nimport { LanguageService, Flight } from '@clickview/common';\r\nimport { Popup, PopupViewProps, useAlerts } from '@clickview/shared';\r\n\r\nimport { MockYearLevel, MockStudent, MockTeacher, MockUserRole } from 'apps/user-manager/interfaces';\r\nimport { EditStudentDetails } from 'apps/user-manager/components';\r\nimport { YearLevelRequests } from 'apps/user-manager/flight-requests/YearLevelRequests';\r\nimport { UserUploadContext } from 'apps/user-manager/reducers/UserUploadReducer';\r\nimport { MockUserType } from 'apps/user-manager/enums';\r\nimport { EditTeacherDetails } from 'apps/user-manager/components/edit-teacher-details/EditTeacherDetails';\r\nimport { SchoolUserRequests } from 'apps/user-manager/flight-requests/SchoolUserRequests';\r\n\r\nconst namespace = 'userManager.editUploadedUserPopup';\r\n\r\ninterface EditUploadedUserPopupProps {\r\n user: MockStudent | MockTeacher;\r\n userType: MockUserType;\r\n title: string;\r\n}\r\n\r\nexport function EditUploadedUserPopup(props: EditUploadedUserPopupProps & PopupViewProps): JSX.Element {\r\n const { state, dispatch } = React.useContext(UserUploadContext);\r\n\r\n const [ isInvalid, setIsInvalid ] = React.useState(!!state.invalidUsers[props.user.lookupId]);\r\n const [ currentUserId, setCurrentUserId ] = React.useState<string>(props.user.lookupId);\r\n\r\n const yearLevels = Flight.useBasicFetch<MockYearLevel[]>(YearLevelRequests.getAll());\r\n const userRoles = Flight.useBasicFetch<MockUserRole[]>(SchoolUserRequests.getUserRoles());\r\n\r\n const alerts = useAlerts();\r\n\r\n React.useEffect(() => {\r\n setIsInvalid(!!state.invalidUsers[props.user.lookupId]);\r\n }, [props.user]);\r\n\r\n const invalidUserContext = state.invalidUsers[currentUserId];\r\n\r\n function onClickNext(updatedUser: MockStudent): void {\r\n if (isInvalid) {\r\n const invalidUserIds = Object.keys(state.invalidUsers);\r\n\r\n const currentIndex = invalidUserIds.indexOf(currentUserId);\r\n const nextId = invalidUserIds[currentIndex + 1] || invalidUserIds[0];\r\n\r\n setCurrentUserId(nextId);\r\n }\r\n\r\n const lookupId = isInvalid\r\n ? invalidUserContext.user.lookupId\r\n : props.user.lookupId;\r\n\r\n dispatch({\r\n type: 'save',\r\n payload: {\r\n ...updatedUser,\r\n lookupId\r\n }\r\n });\r\n\r\n alerts.success(LanguageService.getPhrase(namespace, 'success'));\r\n\r\n if (!isInvalid || !Object.keys(state.invalidUsers).length)\r\n props.closePopup();\r\n }\r\n\r\n if (isInvalid && !invalidUserContext)\r\n return <></>;\r\n\r\n const formProps: any = {\r\n user: isInvalid ? invalidUserContext.user : props.user,\r\n initialErrors: isInvalid ? invalidUserContext.errors : {},\r\n saveUser: onClickNext,\r\n onClickCancel: props.closePopup,\r\n hasNext: isInvalid && Object.keys(state.invalidUsers).length > 1\r\n };\r\n\r\n if (props.userType === MockUserType.Student)\r\n formProps.yearLevels = yearLevels.data;\r\n else\r\n formProps.userRoles = userRoles.data;\r\n\r\n return (\r\n <Popup closePopup={props.closePopup} title={props.title}>\r\n {props.userType === MockUserType.Student\r\n ? <EditStudentDetails {...formProps} />\r\n : <EditTeacherDetails {...formProps} />\r\n }\r\n </Popup>\r\n );\r\n}","export * from './user-details-form/UserDetailsForm';\r\nexport * from './year-level-select/YearLevelSelect';\r\nexport * from './edit-student-details/EditStudentDetails';\r\nexport * from './edit-teacher-details/EditTeacherDetails';\r\nexport * from './bulk-upload-file-select/BulkUploadFileSelect';","import * as React from 'react';\r\n\r\nimport { Core } from '@clickview/common';\r\nimport { Checkbox, SvgContainer, cvSvgLibrary, IconButton, Text, DivButton } from '@clickview/shared';\r\n\r\nimport { useBulkCheckboxManager } from 'shared/hooks/useBulkCheckboxManager';\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { MockYearLevel, MockUserRole } from 'apps/user-manager/interfaces';\r\n\r\nimport { ManageStudentItem } from './students/ManageStudentItem';\r\nimport { ManageTeacherItem } from './teachers/ManageTeacherItem';\r\nimport { BulkUploadFileSelect } from '../bulk-upload-file-select/BulkUploadFileSelect';\r\nimport { MockUserType } from 'apps/user-manager/enums';\r\n\r\nconst newStudentAppLink: Core.AppLink = {\r\n application: AppChannels.USER_MANAGER,\r\n action: Actions.UserManager.NEW_STUDENT\r\n};\r\n\r\nconst newTeacherAppLink: Core.AppLink = {\r\n application: AppChannels.USER_MANAGER,\r\n action: Actions.UserManager.NEW_TEACHER\r\n};\r\n\r\nfunction onBulkDelete(userIds: string[], userType: MockUserType): void {\r\n if (!userIds?.length)\r\n return;\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.USER_MANAGER,\r\n action: Actions.UserManager.REMOVE_USERS,\r\n params: { userIds, userType }\r\n });\r\n}\r\n\r\ninterface ManageUsersListProps {\r\n users: any[];\r\n userType: MockUserType;\r\n yearLevels?: MockYearLevel[];\r\n userRoles?: MockUserRole[];\r\n}\r\n\r\nexport function ManageUsersList(props: ManageUsersListProps): JSX.Element {\r\n const { onToggleBulk, onToggleItem, getSelected, isChecked, bulkChecked } = useBulkCheckboxManager(props.users);\r\n\r\n const isManagingStudents = props.userType === MockUserType.Student;\r\n\r\n const ChildComponent = isManagingStudents ? ManageStudentItem : ManageTeacherItem;\r\n const newUserAppLink = isManagingStudents ? newStudentAppLink : newTeacherAppLink;\r\n const i18nNamespace = isManagingStudents ? 'userManager.manageStudents' : 'userManager.manageTeachers';\r\n const bulkAction = isManagingStudents\r\n ? Actions.UserManager.STUDENT_UPLOAD_REVIEW : Actions.UserManager.TEACHER_UPLOAD_REVIEW;\r\n\r\n return (\r\n <>\r\n <div className='d-flex align-items-center pb-3'>\r\n <div className='px-4'>\r\n <Checkbox\r\n id='user-manager'\r\n name='user-manager'\r\n checked={bulkChecked}\r\n onChange={onToggleBulk}\r\n />\r\n </div>\r\n\r\n <div className='mr-auto'>\r\n {!!getSelected().length && (\r\n <DivButton onClick={() => onBulkDelete(getSelected(), props.userType)} className='cursor-pointer'>\r\n <SvgContainer svgName={cvSvgLibrary.Delete} />\r\n </DivButton>\r\n )}\r\n </div>\r\n\r\n <BulkUploadFileSelect\r\n action={bulkAction}\r\n userType={props.userType}\r\n yearLevels={props.yearLevels}\r\n userRoles={props.userRoles}\r\n />\r\n <IconButton className='btn btn-outline-dark ml-2' appLink={newUserAppLink} svgName={cvSvgLibrary.Plus}>\r\n <Text namespace={i18nNamespace} phrase='addNew' />\r\n </IconButton>\r\n </div>\r\n\r\n <ul className='m-0 list-unstyled striped-list'>\r\n {props.users.map(user => (\r\n <ChildComponent\r\n key={user.id}\r\n user={user}\r\n onToggleCheckbox={() => onToggleItem(user.id)}\r\n isChecked={isChecked(user.id)}\r\n />\r\n ))}\r\n </ul>\r\n </>\r\n );\r\n}","import React from 'react';\r\n\r\nfunction PartialUserItem(): JSX.Element {\r\n return (\r\n <li className='w-100 d-flex align-items-center py-2'>\r\n <div className='mx-4 partial-loading-background' style={{ width: '21px', height: '21px' }} />\r\n\r\n <div className='d-flex flex-column justify-content-center w-100'>\r\n <div className='pb-1'>\r\n <div className='partial-loading-background mr-1 align-middle d-inline-block' style={{ width: '180px', height: '28px' }} />\r\n </div>\r\n\r\n <div className='d-flex'>\r\n <div className='w-50'>\r\n <div className='partial-loading-background align-middle d-inline-block' style={{ width: '250px', height: '21px' }} />\r\n </div>\r\n\r\n <div className='d-flex w-50 pl-1'>\r\n <div className='w-50'>\r\n <div className='partial-loading-background' style={{ width: '100px', height: '21px' }} />\r\n </div>\r\n <div className='w-50'>\r\n <div className='partial-loading-background' style={{ width: '100px', height: '21px' }} />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </li>\r\n );\r\n}\r\n\r\nexport function PartialManageUsersList(): JSX.Element {\r\n return (\r\n <>\r\n <div className='d-flex justify-content-between align-items-center mb-3'>\r\n <div className='mx-4 partial-loading-background' style={{ width: '21px', height: '21px' }} />\r\n <div className='d-flex align-items-center'>\r\n <div className='partial-loading-background' style={{ width: '140px', height: '35px' }} />\r\n <div className='partial-loading-background ml-2' style={{ width: '150px', height: '35px' }} />\r\n </div>\r\n </div>\r\n\r\n <ul className='m-0 list-unstyled striped-list'>\r\n {Array(20).fill(null).map((item, index) => <PartialUserItem key={index} />)}\r\n </ul>\r\n </>\r\n );\r\n}","import React from 'react';\r\n\r\nimport { LanguageService } from '@clickview/common';\r\nimport { Checkbox, Text, Actions as ActionsComponent } from '@clickview/shared';\r\n\r\nimport { MockStudent } from 'apps/user-manager/interfaces';\r\n\r\nimport { Actions, AppChannels } from 'shared/constants';\r\n\r\nimport styles from './manage-student-item.scss';\r\n\r\nconst namespace = 'userManager.manageStudents';\r\n\r\ninterface ManageStudentItemProps {\r\n user: MockStudent;\r\n isChecked: boolean;\r\n onToggleCheckbox: () => void;\r\n}\r\n\r\nexport function ManageStudentItem(props: ManageStudentItemProps): JSX.Element {\r\n const { user, isChecked, onToggleCheckbox } = props;\r\n\r\n const actions = [\r\n {\r\n label: LanguageService.getPhrase(namespace, 'edit'),\r\n appLink: {\r\n application: AppChannels.USER_MANAGER,\r\n action: Actions.UserManager.EDIT_STUDENT,\r\n args: [user.id]\r\n }\r\n },\r\n {\r\n label: LanguageService.getPhrase(namespace, 'enableProfile'),\r\n appLink: {\r\n application: AppChannels.USER_MANAGER,\r\n // action: Actions.UserManager.ENABLE_USER_PROFILE,\r\n action: 'enable:user:profile', // TODO: Replace this with commented out line above\r\n args: [user.id]\r\n }\r\n },\r\n {\r\n label: LanguageService.getPhrase(namespace, 'activate'),\r\n appLink: {\r\n application: AppChannels.USER_MANAGER,\r\n // action: Actions.UserManager.ACTIVATE_USER,\r\n action: 'activate:user', // TODO: Replace this with commented out line above\r\n args: [user.id]\r\n }\r\n },\r\n {\r\n label: LanguageService.getPhrase(namespace, 'remove'),\r\n appLink: {\r\n application: AppChannels.USER_MANAGER,\r\n action: Actions.UserManager.REMOVE_USERS,\r\n params: {\r\n userIds: [user.id],\r\n userType: 'student'\r\n }\r\n },\r\n className: 'text-danger'\r\n }\r\n ];\r\n\r\n return (\r\n <li className='d-flex align-items-center py-2'>\r\n <div className='px-4'>\r\n <Checkbox\r\n id={user.id}\r\n name={user.id}\r\n checked={isChecked}\r\n onChange={onToggleCheckbox}\r\n />\r\n </div>\r\n\r\n <div className='d-flex flex-column justify-content-center w-100'>\r\n <div className='pb-1'>\r\n <h2 className='h5 m-0 mr-1 d-inline-block align-middle'>{user.name} {user.surname || ''}</h2>\r\n {user.username && <p className='m-0 d-inline-block align-middle'>({user.username})</p>}\r\n </div>\r\n\r\n <div className='d-flex'>\r\n <p className='m-0 w-50 text-truncate'>{user.email}</p>\r\n\r\n <div className='d-flex w-50 pl-1'>\r\n <div className='w-50'>\r\n <Text namespace={namespace} phrase='level' />\r\n <span className={`rounded-pill px-2 ${styles.level}`}>{user.yearLevel.name}</span>\r\n </div>\r\n {user.classroom && <p className='mb-0 w-50'>{user.classroom.name}</p>}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <ActionsComponent actions={actions} className='pr-4' actionsDropdownClassName='btn' />\r\n </li>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"level\":\"cv--level--Atgxo\"};","import React from 'react';\r\n\r\nimport { LanguageService } from '@clickview/common';\r\nimport { Checkbox, Actions as ActionsComponent } from '@clickview/shared';\r\n\r\nimport { Actions, AppChannels } from 'shared/constants';\r\nimport { MockTeacher } from 'apps/user-manager/interfaces';\r\n\r\nconst namespace = 'userManager.manageTeachers';\r\n\r\ninterface ManageTeacherItemProps {\r\n user: MockTeacher;\r\n isChecked: boolean;\r\n onToggleCheckbox: () => void;\r\n}\r\n\r\nexport function ManageTeacherItem(props: ManageTeacherItemProps): JSX.Element {\r\n const { user, isChecked, onToggleCheckbox } = props;\r\n\r\n const actions = [\r\n {\r\n label: LanguageService.getPhrase(namespace, 'edit'),\r\n appLink: {\r\n application: AppChannels.USER_MANAGER,\r\n action: Actions.UserManager.EDIT_TEACHER,\r\n args: [user.id]\r\n }\r\n },\r\n {\r\n label: LanguageService.getPhrase(namespace, 'enableProfile'),\r\n appLink: {\r\n application: AppChannels.USER_MANAGER,\r\n // action: Actions.UserManager.ENABLE_USER_PROFILE,\r\n action: 'enable:user:profile', // TODO: Replace this with commented out line above\r\n args: [user.id]\r\n }\r\n },\r\n {\r\n label: LanguageService.getPhrase(namespace, 'activate'),\r\n appLink: {\r\n application: AppChannels.USER_MANAGER,\r\n // action: Actions.UserManager.ACTIVATE_USER,\r\n action: 'activate:user', // TODO: Replace this with commented out line above\r\n args: [user.id]\r\n }\r\n },\r\n {\r\n label: LanguageService.getPhrase(namespace, 'remove'),\r\n appLink: {\r\n application: AppChannels.USER_MANAGER,\r\n action: Actions.UserManager.REMOVE_USERS,\r\n params: {\r\n userIds: [user.id],\r\n userType: 'teacher'\r\n }\r\n },\r\n className: 'text-danger'\r\n }\r\n ];\r\n\r\n return (\r\n <li className='d-flex align-items-center py-2'>\r\n <div className='px-4'>\r\n <Checkbox\r\n id={user.id}\r\n name={user.id}\r\n checked={isChecked}\r\n onChange={onToggleCheckbox}\r\n />\r\n </div>\r\n\r\n <div className='d-flex flex-column justify-content-center w-100'>\r\n <div className='pb-1'>\r\n <h2 className='h5 m-0 mr-1 d-inline-block align-middle'>{user.name} {user.surname || ''}</h2>\r\n {user.username &&\r\n <p className='m-0 d-inline-block align-middle'>({user.username})</p>\r\n }\r\n </div>\r\n\r\n <div className='d-flex'>\r\n <p className='m-0 w-50 text-truncate'>{user.email}</p>\r\n <p className='mb-0 w-50 pl-1 text-center'>{user.userRole.name}</p>\r\n </div>\r\n </div>\r\n\r\n <ActionsComponent actions={actions} className='pr-4' actionsDropdownClassName='btn' />\r\n </li>\r\n );\r\n}","import React from 'react';\r\n\r\nimport { HashObject } from '@clickview/common';\r\nimport { cvSvgLibrary, SvgContainer } from '@clickview/shared';\r\n\r\nimport { DivButton } from '@clickview/shared';\r\n\r\nimport { MockStudent } from 'apps/user-manager/interfaces';\r\n\r\nimport styles from './student-review-table.scss';\r\n\r\ninterface DataCellProps {\r\n data: string;\r\n error?: string;\r\n yearLevel?: boolean;\r\n}\r\n\r\nfunction DataCell(props: DataCellProps): JSX.Element {\r\n const className = props.error ? 'p-2 text-danger font-weight-bold' : 'p-2';\r\n let innerClassName = '';\r\n\r\n const text = props.error || props.data;\r\n\r\n if (props.yearLevel && !props.error)\r\n innerClassName += `${styles.yearLevel} rounded-pill px-2`;\r\n\r\n return (\r\n <td className={className}>\r\n <span className={innerClassName}>{text}</span>\r\n </td>\r\n );\r\n}\r\n\r\ninterface StudentReviewRowProps {\r\n student: MockStudent;\r\n errors: HashObject;\r\n onClickEdit: (student: MockStudent) => void;\r\n onClickDelete: (student: MockStudent) => void;\r\n}\r\n\r\nexport function StudentReviewRow(props: StudentReviewRowProps): JSX.Element {\r\n const { student, errors, onClickEdit, onClickDelete } = props;\r\n\r\n return (\r\n <tr>\r\n <DataCell data={student.name} error={errors.name} />\r\n <DataCell data={student.surname} error={errors.surname} />\r\n <DataCell data={student.yearLevel?.name} error={errors.yearLevel} yearLevel />\r\n <DataCell data={student.email} error={errors.email} />\r\n\r\n <td className='p-2 d-flex justify-content-end'>\r\n <DivButton className='mr-2 cursor-pointer' onClick={() => onClickEdit(student)}>\r\n <SvgContainer svgName={cvSvgLibrary.Edit} />\r\n </DivButton>\r\n <DivButton className='cursor-pointer' onClick={() => onClickDelete(student)}>\r\n <SvgContainer svgName={cvSvgLibrary.Delete} />\r\n </DivButton>\r\n </td>\r\n </tr>\r\n );\r\n}","import React from 'react';\r\n\r\nimport { LanguageNamespaceContext, Text } from '@clickview/shared';\r\n\r\nimport { MockStudent } from 'apps/user-manager/interfaces';\r\nimport { UserUploadContext } from 'apps/user-manager/reducers/UserUploadReducer';\r\n\r\nimport { StudentReviewRow } from './StudentReviewRow';\r\n\r\ninterface StudentReviewTableProps {\r\n students: MockStudent[];\r\n\r\n onClickEdit: (student: MockStudent) => void;\r\n onClickDelete: (student: MockStudent) => void;\r\n}\r\n\r\nexport function StudentReviewTable(props: StudentReviewTableProps): JSX.Element {\r\n const { state } = React.useContext(UserUploadContext);\r\n\r\n return (\r\n <LanguageNamespaceContext.Provider value='userManager.studentReviewTable'>\r\n <table className='w-100'>\r\n <thead>\r\n <tr>\r\n <th className='p-2'><Text phrase='firstName' /></th>\r\n <th className='p-2'><Text phrase='lastName' /></th>\r\n <th className='p-2'><Text phrase='yearLevel' /></th>\r\n <th className='p-2'><Text phrase='email' /></th>\r\n <th className='p-2'> </th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody className='striped-list'>\r\n {props.students.map((s, i) => {\r\n return (\r\n <StudentReviewRow\r\n key={s.lookupId}\r\n student={s}\r\n errors={state.invalidUsers[s.lookupId]?.errors || {}}\r\n onClickEdit={props.onClickEdit}\r\n onClickDelete={props.onClickDelete}\r\n />\r\n );\r\n })}\r\n </tbody>\r\n </table>\r\n </LanguageNamespaceContext.Provider>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"yearLevel\":\"cv--yearLevel--32fjr\"};","import React from 'react';\r\n\r\nimport { HashObject } from '@clickview/common';\r\nimport { cvSvgLibrary, SvgContainer } from '@clickview/shared';\r\n\r\nimport { DivButton } from '@clickview/shared';\r\n\r\nimport { MockTeacher } from 'apps/user-manager/interfaces';\r\n\r\ninterface DataCellProps {\r\n data: string;\r\n error?: string;\r\n yearLevel?: boolean;\r\n}\r\n\r\nfunction DataCell(props: DataCellProps): JSX.Element {\r\n const className = props.error ? 'p-2 text-danger font-weight-bold' : 'p-2';\r\n let innerClassName = '';\r\n\r\n const text = props.error || props.data;\r\n\r\n return (\r\n <td className={className}>\r\n <span className={innerClassName}>{text}</span>\r\n </td>\r\n );\r\n}\r\n\r\ninterface TeacherReviewRowProps {\r\n teacher: MockTeacher;\r\n errors: HashObject;\r\n onClickEdit: (teacher: MockTeacher) => void;\r\n onClickDelete: (teacher: MockTeacher) => void;\r\n}\r\n\r\nexport function TeacherReviewRow(props: TeacherReviewRowProps): JSX.Element {\r\n const { teacher, errors, onClickEdit, onClickDelete } = props;\r\n\r\n return (\r\n <tr>\r\n <DataCell data={teacher.name} error={errors.name} />\r\n <DataCell data={teacher.surname} error={errors.surname} />\r\n <DataCell data={teacher.userRole?.name} error={errors.userRole} />\r\n <DataCell data={teacher.email} error={errors.email} />\r\n\r\n <td className='p-2 d-flex justify-content-end'>\r\n <DivButton className='mr-2 cursor-pointer' onClick={() => onClickEdit(teacher)}>\r\n <SvgContainer svgName={cvSvgLibrary.Edit} />\r\n </DivButton>\r\n <DivButton className='cursor-pointer' onClick={() => onClickDelete(teacher)}>\r\n <SvgContainer svgName={cvSvgLibrary.Delete} />\r\n </DivButton>\r\n </td>\r\n </tr>\r\n );\r\n}","import React from 'react';\r\n\r\nimport { LanguageNamespaceContext, Text } from '@clickview/shared';\r\n\r\nimport { MockTeacher } from 'apps/user-manager/interfaces';\r\nimport { UserUploadContext } from 'apps/user-manager/reducers/UserUploadReducer';\r\n\r\nimport { TeacherReviewRow } from './TeacherReviewRow';\r\n\r\ninterface TeacherReviewTableProps {\r\n teachers: MockTeacher[];\r\n\r\n onClickEdit: (teacher: MockTeacher) => void;\r\n onClickDelete: (teacher: MockTeacher) => void;\r\n}\r\n\r\nexport function TeacherReviewTable(props: TeacherReviewTableProps): JSX.Element {\r\n const { state } = React.useContext(UserUploadContext);\r\n\r\n return (\r\n <LanguageNamespaceContext.Provider value='userManager.teacherReviewTable'>\r\n <table className='w-100'>\r\n <thead>\r\n <tr>\r\n <th className='p-2'><Text phrase='firstName' /></th>\r\n <th className='p-2'><Text phrase='lastName' /></th>\r\n <th className='p-2'><Text phrase='userRole' /></th>\r\n <th className='p-2'><Text phrase='email' /></th>\r\n <th className='p-2'> </th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody className='striped-list'>\r\n {props.teachers.map((s, i) => {\r\n return (\r\n <TeacherReviewRow\r\n key={s.lookupId}\r\n teacher={s}\r\n errors={state.invalidUsers[s.lookupId]?.errors || {}}\r\n onClickEdit={props.onClickEdit}\r\n onClickDelete={props.onClickDelete}\r\n />\r\n );\r\n })}\r\n </tbody>\r\n </table>\r\n </LanguageNamespaceContext.Provider>\r\n );\r\n}","import * as React from 'react';\r\nimport { Form } from 'formik';\r\n\r\nimport { LanguageService } from '@clickview/common';\r\nimport { FormField, FormButtons, Text, useFormikContextWrapper, FormHelper } from '@clickview/shared';\r\nimport { EditUserRequest, MockYearLevel, MockUserRole } from 'apps/user-manager/interfaces';\r\nimport { YearLevelSelect } from 'apps/user-manager/components/year-level-select/YearLevelSelect';\r\nimport { MockUserType } from 'apps/user-manager/enums';\r\n\r\n/**\r\n * This file uses 3 *.lang.json files.\r\n * - One for generic values\r\n * - One for student specific values\r\n * - One for teacher specific values\r\n */\r\nconst namespace = 'userManager.userDetailsForm';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\ninterface UserDetailsFormProps {\r\n onClickCancel: () => void;\r\n yearLevels?: MockYearLevel[];\r\n userRoles?: MockUserRole[];\r\n userType: MockUserType;\r\n hasNext?: boolean;\r\n}\r\n\r\nexport function UserDetailsForm(props: UserDetailsFormProps): React.ReactElement {\r\n const { onClickCancel, yearLevels, userRoles, userType } = props;\r\n\r\n const formikProps = useFormikContextWrapper<EditUserRequest>();\r\n\r\n const getTreeSelectClassName = (field: keyof EditUserRequest) => FormHelper.getCustomFormControlClassName(\r\n formikProps.errors,\r\n formikProps.touched,\r\n field,\r\n 'revert-form-control h-auto'\r\n );\r\n\r\n const getTypePhrase = LanguageService.encloseNamespace(\r\n userType === MockUserType.Teacher ? 'userManager.teacherDetailsForm' : 'userManager.studentDetailsForm'\r\n );\r\n\r\n return (\r\n <Form>\r\n <FormField\r\n label={getPhrase('firstName')}\r\n type='text'\r\n name='name'\r\n id='name'\r\n placeholder={getTypePhrase('firstNamePlaceholder')}\r\n autoFocus\r\n value={formikProps.values.name}\r\n />\r\n <FormField\r\n label={getPhrase('lastName')}\r\n type='text'\r\n name='surname'\r\n id='surname'\r\n placeholder={getTypePhrase('lastNamePlaceholder')}\r\n value={formikProps.values.surname}\r\n />\r\n {yearLevels &&\r\n <FormField\r\n name='yearLevel'\r\n label={getPhrase('yearLevel')}\r\n >\r\n {() => (\r\n <div className={getTreeSelectClassName('yearLevel')}>\r\n <YearLevelSelect\r\n yearLevels={yearLevels}\r\n selected={formikProps.values.yearLevel}\r\n onSelect={(yearLevel: MockYearLevel) => formikProps.setFieldValue('yearLevel', yearLevel)}\r\n />\r\n </div>\r\n )}\r\n </FormField>\r\n }\r\n {userRoles &&\r\n <FormField\r\n label={getPhrase('userRole')}\r\n name='userRole'\r\n as='select'\r\n onChange={(e: any) => {\r\n const roleObj = props.userRoles.find(r => r.id === e.target.value);\r\n formikProps.setFieldValue('userRole', roleObj);\r\n }}\r\n value={formikProps.values.userRole.id}\r\n >\r\n {userRoles.map(r => <option key={r.id} value={r.id}>{r.name}</option>)}\r\n </FormField>\r\n }\r\n <FormField\r\n label={getPhrase('emailAddress')}\r\n type='text'\r\n name='email'\r\n id='email'\r\n placeholder={getTypePhrase('emailAddressPlaceholder')}\r\n value={formikProps.values.email}\r\n />\r\n <div className='btn-container d-flex justify-content-end'>\r\n <button type='button' className={`btn btn-link mr-2`} onClick={onClickCancel}>\r\n <Text namespace={namespace} phrase='cancel' />\r\n </button>\r\n <FormButtons isNew={false} hasNext={props.hasNext} />\r\n </div>\r\n </Form>\r\n );\r\n}\r\n","import * as React from 'react';\r\n\r\nimport { MockYearLevel } from 'apps/user-manager/interfaces';\r\n\r\ninterface YearLevelProps {\r\n yearLevel: MockYearLevel;\r\n selected: boolean;\r\n onSelect: (yearLevel: MockYearLevel) => void;\r\n}\r\n\r\nfunction YearLevel(props: YearLevelProps): React.ReactElement {\r\n const { yearLevel, selected, onSelect } = props;\r\n\r\n const className = selected ? 'badge-info' : 'badge-light';\r\n\r\n return (\r\n <span\r\n className={`badge-pill d-inline-block mr-1 mb-1 cursor-pointer ${className}`}\r\n role='radio'\r\n aria-checked={selected}\r\n onClick={() => onSelect(yearLevel)}\r\n >\r\n {yearLevel.name}\r\n </span>\r\n );\r\n}\r\n\r\ninterface YearLevelSelectProps {\r\n yearLevels: MockYearLevel[];\r\n onSelect: (yearLevel: MockYearLevel) => void;\r\n selected?: MockYearLevel;\r\n}\r\n\r\nexport function YearLevelSelect(props: YearLevelSelectProps): React.ReactElement {\r\n const { yearLevels, selected, onSelect } = props;\r\n\r\n return (\r\n <div role='radiogroup'>\r\n {yearLevels.map(y =>\r\n <YearLevel\r\n key={y.id}\r\n yearLevel={y}\r\n selected={y.id.toString() === selected?.id?.toString()}\r\n onSelect={onSelect}\r\n />\r\n )}\r\n </div>\r\n );\r\n}","export * from './mocks/MockUserType';","export enum MockUserType {\r\n Student = 'student',\r\n Teacher = 'teacher'\r\n}","import { Flight, HashObject, UrlHelper, HttpVerbs } from '@clickview/common';\r\n\r\nimport { FilterHelper } from 'apps/search/utils';\r\nimport { EditUserRequest, MockStudent } from 'apps/user-manager/interfaces';\r\n\r\nimport mockStudents from './mocks/students.json';\r\nimport mockTeachers from './mocks/teachers.json';\r\nimport mockUserRoles from './mocks/user-roles.json';\r\n\r\nconst MOCK_STUDENTS = 'school:students';\r\nconst MOCK_TEACHERS = 'school:teachers';\r\nconst MOCK_USER_ROLES = 'user:roles';\r\n\r\nexport const SchoolUserRequests = {\r\n /**\r\n * School student management\r\n */\r\n getSchoolStudents(queryObject: HashObject = {}): Flight.SimulatedRequest {\r\n const { filter = '', q = '', query = '', cursor = '1' } = queryObject;\r\n\r\n return {\r\n url: UrlHelper.urlBuilder('api/domain/v1/school/:id/students', queryObject),\r\n key: `school:students:${q}:${query}:${filter}:${cursor}`,\r\n successResponse: () => {\r\n const filters = FilterHelper.revertFilterString(filter);\r\n\r\n // Apply any filters to the students array\r\n const filteredStudents = Flight.Simulator.getAll('school:students', mockStudents).filter(student => {\r\n // Best search in clickview\r\n if (q && !student.name.toLowerCase().includes(q.toLowerCase()))\r\n return false;\r\n\r\n if (!filter)\r\n return true;\r\n\r\n if (filters.yearLevel && (filters.yearLevel !== student.yearLevel.id))\r\n return false;\r\n\r\n if (filters.classroom?.length && !filters.classroom.includes(student.classroom?.id))\r\n return false;\r\n\r\n return true;\r\n });\r\n\r\n const withStatement = FilterHelper.convertWithStatementToObject(query);\r\n\r\n const sortField = withStatement.sortValue || 'name';\r\n\r\n // Sort all students\r\n let sortedStudents = filteredStudents.sort((u1, u2) => {\r\n if (u1[sortField].toLowerCase() < u2[sortField].toLowerCase())\r\n return -1;\r\n\r\n if (u1[sortField].toLowerCase() > u2[sortField].toLowerCase())\r\n return 1;\r\n\r\n return 0;\r\n });\r\n\r\n // If the sort order was descending, reverse the previously sorted array\r\n if (withStatement.sortKey && withStatement.sortKey === 'orderbydesc')\r\n sortedStudents = sortedStudents.reverse();\r\n\r\n let paginatedStudents = sortedStudents.slice(25 * (+cursor - 1), 25 * +cursor);\r\n const hasNextPage = sortedStudents.slice(25 * +cursor).length;\r\n\r\n let nextCursor = hasNextPage ? +cursor + 1 : undefined;\r\n let prevCursor = cursor === '1' ? undefined : +cursor - 1;\r\n\r\n if (!paginatedStudents.length) {\r\n paginatedStudents = sortedStudents.slice(0, 25);\r\n nextCursor = sortedStudents.slice(25).length ? 2 : undefined;\r\n prevCursor = undefined;\r\n }\r\n\r\n return {\r\n data: paginatedStudents,\r\n pagination: {\r\n cursors: {\r\n next: nextCursor,\r\n previous: prevCursor\r\n }\r\n },\r\n count: sortedStudents.length\r\n };\r\n },\r\n timeout: 500\r\n };\r\n },\r\n\r\n // temporarily using this to populate user typeaheads without pagination\r\n tempGetAllStudents(): Flight.SimulatedRequest {\r\n return {\r\n url: '',\r\n key: 'get:all:dem:students',\r\n successResponse: () => {\r\n return Flight.Simulator.getAll(MOCK_STUDENTS);\r\n }\r\n };\r\n },\r\n\r\n removeStudentsFromSchool(ids: string[], onDone: () => void): Flight.SimulatedRequest {\r\n return {\r\n url: '',\r\n key: 'remove:school:students',\r\n invalidationKeys: ['school:students'],\r\n successResponse: () => {\r\n Flight.Simulator.delete(MOCK_STUDENTS, ids);\r\n return {};\r\n },\r\n always: onDone\r\n };\r\n },\r\n\r\n getStudent(id: string): Flight.SimulatedRequest {\r\n return {\r\n url: `/api/domain/v1/users/${id}`,\r\n key: `students:${id}`,\r\n successResponse: () => {\r\n return Flight.Simulator.get(MOCK_STUDENTS, id);\r\n }\r\n };\r\n },\r\n\r\n createStudent(user: EditUserRequest, success?: () => void, error?: () => void): Flight.SimulatedRequest {\r\n return {\r\n url: '/api/domain/v1/users',\r\n key: 'create:student',\r\n type: HttpVerbs.POST,\r\n invalidationKeys: ['school:students'],\r\n successResponse: () => {\r\n return Flight.Simulator.create(MOCK_STUDENTS, user);\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n bulkCreateStudents(\r\n users: EditUserRequest[],\r\n success?: () => void,\r\n error?: () => void,\r\n always?: () => void\r\n ): Flight.SimulatedRequest {\r\n return {\r\n url: '/api/domain/v1/users',\r\n key: 'create:students',\r\n type: HttpVerbs.POST,\r\n invalidationKeys: ['school:students'],\r\n successResponse: () => {\r\n users.forEach(user => Flight.Simulator.create(MOCK_STUDENTS, user));\r\n return users;\r\n },\r\n success,\r\n error,\r\n always\r\n };\r\n },\r\n\r\n updateStudent(user: EditUserRequest, success?: () => void, error?: () => void): Flight.SimulatedRequest {\r\n return {\r\n url: '/api/domain/v1/users',\r\n key: 'edit:student',\r\n type: HttpVerbs.PUT,\r\n invalidationKeys: ['school:students'],\r\n successResponse: () => {\r\n return Flight.Simulator.update(MOCK_STUDENTS, user);\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n /**\r\n * School teacher management\r\n */\r\n getSchoolTeachers(queryObject: HashObject = {}): Flight.SimulatedRequest {\r\n const { filter = '', q = '', query = '', cursor = '' } = queryObject;\r\n\r\n return {\r\n url: UrlHelper.urlBuilder('api/domain/v1/school/:id/teachers', queryObject),\r\n key: `school:teachers:${q}:${query}:${filter}:${cursor}`,\r\n successResponse: () => {\r\n const teachers = Flight.Simulator.getAll(MOCK_TEACHERS, mockTeachers);\r\n\r\n return {\r\n data: teachers,\r\n pagination: {\r\n cursors: {}\r\n },\r\n count: teachers.length\r\n };\r\n },\r\n timeout: 2000\r\n };\r\n },\r\n\r\n removeTeachersFromSchool(ids: string[], onDone: () => void): Flight.SimulatedRequest {\r\n return {\r\n url: '',\r\n key: 'remove:school:teachers',\r\n invalidationKeys: ['school:teachers'],\r\n successResponse: () => {\r\n Flight.Simulator.delete(MOCK_TEACHERS, ids);\r\n return {};\r\n },\r\n always: onDone\r\n };\r\n },\r\n\r\n getTeacher(id: string): Flight.SimulatedRequest {\r\n return {\r\n url: `/api/domain/v1/users/${id}`,\r\n key: `teachers:${id}`,\r\n successResponse: () => {\r\n return Flight.Simulator.get(MOCK_TEACHERS, id);\r\n }\r\n };\r\n },\r\n\r\n createTeacher(user: EditUserRequest, success?: () => void, error?: () => void): Flight.SimulatedRequest {\r\n return {\r\n url: '/api/domain/v1/users',\r\n key: 'create:teacher',\r\n type: HttpVerbs.POST,\r\n invalidationKeys: ['school:teachers'],\r\n successResponse: () => {\r\n return Flight.Simulator.create(MOCK_TEACHERS, user);\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n bulkCreateTeachers(\r\n users: EditUserRequest[],\r\n success?: () => void,\r\n error?: () => void,\r\n always?: () => void\r\n ): Flight.SimulatedRequest {\r\n return {\r\n url: '/api/domain/v1/users',\r\n key: 'create:teachers',\r\n type: HttpVerbs.POST,\r\n invalidationKeys: ['school:teachers'],\r\n successResponse: () => {\r\n users.forEach(user => Flight.Simulator.create(MOCK_TEACHERS, user));\r\n return users;\r\n },\r\n success,\r\n error,\r\n always\r\n };\r\n },\r\n\r\n updateTeacher(user: EditUserRequest, success?: () => void, error?: () => void): Flight.SimulatedRequest {\r\n return {\r\n url: '/api/domain/v1/users',\r\n key: 'edit:teacher',\r\n type: HttpVerbs.PUT,\r\n invalidationKeys: ['school:teachers'],\r\n successResponse: () => {\r\n return Flight.Simulator.update(MOCK_TEACHERS, user);\r\n },\r\n success,\r\n error\r\n };\r\n },\r\n\r\n getUserRoles(): Flight.SimulatedRequest {\r\n return {\r\n url: '/api/domain/v1/users/roles',\r\n key: 'user:roles',\r\n successResponse: () => Flight.Simulator.getAll(MOCK_USER_ROLES, mockUserRoles)\r\n };\r\n },\r\n\r\n getStudentsGroups(id: string): Flight.SimulatedRequest {\r\n return {\r\n url: `/api/domain/v1/users/${id}/groups`,\r\n key: `user:${id}:groups`,\r\n successResponse: () => {\r\n const groups = Flight.Simulator.getAll('groups');\r\n return groups.filter(g => !!g.students.find((s: MockStudent) => s.id === id));\r\n }\r\n };\r\n }\r\n};","import { Flight } from '@clickview/common';\r\n\r\nimport yearLevels from './mocks/year-levels.json';\r\n\r\nconst MOCK_YEAR_LEVELS = 'year:levels';\r\n\r\nexport const YearLevelRequests = {\r\n getAll(): Flight.SimulatedRequest {\r\n return {\r\n url: '/api/domain/v1/yearlevels',\r\n key: 'yearlevels',\r\n successResponse: () => {\r\n return Flight.Simulator.getAll(MOCK_YEAR_LEVELS, yearLevels);\r\n }\r\n };\r\n }\r\n};\r\n","import { createContext } from 'react';\r\nimport { ReducerActions } from '@clickview/common';\r\nimport { MockTeacher, MockStudent } from 'apps/user-manager/interfaces';\r\n\r\ntype ActionTypes = 'init' | 'save' | 'delete';\r\n\r\ntype MockUser = MockStudent & MockTeacher;\r\n\r\ninterface InvalidUserHash {\r\n [lookupId: string]: {\r\n user: MockUser;\r\n errors: {\r\n name?: string;\r\n surname?: string;\r\n email?: string;\r\n yearLevel?: {\r\n name: string;\r\n },\r\n userRole?: {\r\n name: string;\r\n }\r\n };\r\n };\r\n}\r\n\r\nexport interface UserUploadReducerState {\r\n users: MockUser[];\r\n invalidUsers: InvalidUserHash;\r\n}\r\n\r\n/**\r\n * Context\r\n */\r\ninterface UserUploadContextType {\r\n state: UserUploadReducerState;\r\n dispatch: React.Dispatch<ReducerActions<ActionTypes, any>>;\r\n}\r\n\r\nexport const UserUploadContext = createContext<UserUploadContextType>(null);\r\n\r\n/**\r\n * Reducer\r\n */\r\nexport function UserUploadReducer(\r\n state: UserUploadReducerState,\r\n action: ReducerActions<ActionTypes, any>\r\n): any {\r\n switch (action.type) {\r\n case 'init': {\r\n return action.payload;\r\n }\r\n\r\n case 'save': {\r\n const savedUser: MockUser = action.payload;\r\n\r\n const updatedUsers = state.users.map(user => {\r\n if (user.lookupId !== savedUser.lookupId)\r\n return user;\r\n\r\n return savedUser;\r\n });\r\n\r\n const invalidUserLookupIds = Object.keys(state.invalidUsers);\r\n const updatedInvalidUsers = invalidUserLookupIds.reduce((updatedObj: InvalidUserHash, lookupId) => {\r\n if (lookupId !== savedUser.lookupId)\r\n updatedObj[lookupId] = state.invalidUsers[lookupId];\r\n\r\n return updatedObj;\r\n }, {});\r\n\r\n return {\r\n users: updatedUsers,\r\n invalidUsers: updatedInvalidUsers\r\n };\r\n }\r\n\r\n case 'delete': {\r\n const deletedUser: MockTeacher | MockStudent = action.payload;\r\n\r\n const updatedUsers = state.users.filter(user => user.lookupId !== deletedUser.lookupId);\r\n\r\n const invalidUserLookupIds = Object.keys(state.invalidUsers);\r\n const updatedInvalidUsers = invalidUserLookupIds.reduce((updatedObj: InvalidUserHash, lookupId) => {\r\n if (lookupId !== deletedUser.lookupId)\r\n updatedObj[lookupId] = state.invalidUsers[lookupId];\r\n\r\n return updatedObj;\r\n }, {});\r\n\r\n return {\r\n users: updatedUsers,\r\n invalidUsers: updatedInvalidUsers\r\n };\r\n }\r\n\r\n default:\r\n return state;\r\n }\r\n}","export * from './user-validation/UserValidationSchema';","import { object, string } from 'yup';\r\n\r\nimport { LanguageService } from '@clickview/common';\r\nimport { MockYearLevel, MockUserRole } from 'apps/user-manager/interfaces';\r\n\r\nconst getPhrase = LanguageService.encloseNamespace('userManager.userValidation');\r\n\r\nconst UserValidationSchema = object().shape({\r\n name: string()\r\n .max(255, () => getPhrase('nameExceeds'))\r\n .required(() => getPhrase('nameRequired'))\r\n .default(''),\r\n surname: string()\r\n .max(255, () => getPhrase('surnameExceeds'))\r\n .required(() => getPhrase('surnameRequired'))\r\n .default(''),\r\n email: string()\r\n .max(255, () => getPhrase('emailExceeds'))\r\n .required(() => getPhrase('emailRequired'))\r\n .email(() => getPhrase('emailValid'))\r\n .default('')\r\n});\r\n\r\nexport const getTeacherValidationSchema = (userRoles: MockUserRole[]) => UserValidationSchema.shape({\r\n userRole: object().shape({\r\n name: string()\r\n .required(() => getPhrase('userRoleRequired'))\r\n .oneOf(userRoles.map(r => r.name), () => getPhrase('userRoleInvalid'))\r\n .default('')\r\n })\r\n});\r\n\r\nexport const getStudentValidationSchema = (yearLevels: MockYearLevel[]) => UserValidationSchema.shape({\r\n yearLevel: object().shape({\r\n name: string()\r\n .required(() => getPhrase('yearLevelRequired'))\r\n .oneOf(yearLevels.map(y => y.name), () => getPhrase('yearLevelInvalid'))\r\n .default('')\r\n })\r\n});","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight, LanguageService } from '@clickview/common';\r\nimport { Popup, PopupViewProps, useAlerts } from '@clickview/shared';\r\nimport { SchoolUserRequests } from 'apps/user-manager/flight-requests/SchoolUserRequests';\r\nimport { EditUserRequest, MockYearLevel } from 'apps/user-manager/interfaces';\r\nimport { EditStudentDetails } from 'apps/user-manager/components/edit-student-details/EditStudentDetails';\r\nimport { YearLevelRequests } from 'apps/user-manager/flight-requests/YearLevelRequests';\r\n\r\n\r\nconst getPhrase = LanguageService.encloseNamespace('userManager.createStudent');\r\n\r\ninterface CreateStudentViewProps {}\r\n\r\nexport function CreateStudentView(props: CreateStudentViewProps & PopupViewProps): React.ReactElement {\r\n const alerts = useAlerts();\r\n\r\n const dispatch = useDispatch();\r\n\r\n const yearLevels = Flight.useBasicFetch<MockYearLevel[]>(YearLevelRequests.getAll());\r\n\r\n const saveUser = (user: EditUserRequest) => {\r\n Flight.fetch(dispatch, SchoolUserRequests.createStudent(user, () => {\r\n alerts.success(getPhrase('success'));\r\n props.closePopup();\r\n }, () => {\r\n // TODO: Handle possible errors once we have a server side\r\n alerts.error(getPhrase('error'));\r\n }));\r\n };\r\n\r\n const isLoaded = !!yearLevels.data;\r\n\r\n return (\r\n <Popup closePopup={props.closePopup} title={getPhrase('popupTitle')} showLoadingSpinner={!isLoaded}>\r\n {isLoaded && <EditStudentDetails\r\n saveUser={saveUser}\r\n onClickCancel={props.closePopup}\r\n yearLevels={yearLevels.data}\r\n />}\r\n </Popup>\r\n );\r\n}","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight, LanguageService } from '@clickview/common';\r\nimport { PopupViewProps, Popup, useAlerts } from '@clickview/shared';\r\nimport { EditUserRequest, MockUserRole } from 'apps/user-manager/interfaces';\r\nimport { SchoolUserRequests } from 'apps/user-manager/flight-requests/SchoolUserRequests';\r\nimport { EditTeacherDetails } from 'apps/user-manager/components/edit-teacher-details/EditTeacherDetails';\r\n\r\nconst getPhrase = LanguageService.encloseNamespace('userManager.createTeacher');\r\n\r\ninterface CreateTeacherViewProps {}\r\n\r\nexport function CreateTeacherView(props: CreateTeacherViewProps & PopupViewProps): React.ReactElement {\r\n const alerts = useAlerts();\r\n\r\n const dispatch = useDispatch();\r\n\r\n const userRoles = Flight.useBasicFetch<MockUserRole[]>(SchoolUserRequests.getUserRoles());\r\n\r\n const saveUser = (user: EditUserRequest) => {\r\n Flight.fetch(dispatch, SchoolUserRequests.createTeacher(user, () => {\r\n alerts.success(getPhrase('success'));\r\n props.closePopup();\r\n }, () => {\r\n // TODO: Handle possible errors once we have a server side\r\n alerts.error(getPhrase('error'));\r\n }));\r\n };\r\n\r\n const isLoaded = !!userRoles.data;\r\n\r\n return (\r\n <Popup closePopup={props.closePopup} title={getPhrase('popupTitle')} showLoadingSpinner={!isLoaded}>\r\n {isLoaded && <EditTeacherDetails\r\n saveUser={saveUser}\r\n onClickCancel={props.closePopup}\r\n userRoles={userRoles.data}\r\n />}\r\n </Popup>\r\n );\r\n}","\r\nimport React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { PopupViewProps, Popup, useAlerts } from '@clickview/shared';\r\nimport { LanguageService, Flight } from '@clickview/common';\r\nimport { SchoolUserRequests } from 'apps/user-manager/flight-requests/SchoolUserRequests';\r\nimport { EditUserRequest, MockYearLevel, MockStudent } from 'apps/user-manager/interfaces';\r\nimport { EditStudentDetails } from 'apps/user-manager/components/edit-student-details/EditStudentDetails';\r\nimport { YearLevelRequests } from 'apps/user-manager/flight-requests/YearLevelRequests';\r\n\r\nconst getPhrase = LanguageService.encloseNamespace('userManager.editStudent');\r\n\r\ninterface EditStudentViewProps {\r\n id: string;\r\n}\r\n\r\nexport function EditStudentView(props: EditStudentViewProps & PopupViewProps): React.ReactElement {\r\n const alerts = useAlerts();\r\n\r\n const dispatch = useDispatch();\r\n\r\n const yearLevels = Flight.useBasicFetch<MockYearLevel[]>(YearLevelRequests.getAll());\r\n const student = Flight.useBasicFetch<MockStudent>(SchoolUserRequests.getStudent(props.id));\r\n\r\n const saveUser = (user: EditUserRequest) => {\r\n Flight.fetch(dispatch, SchoolUserRequests.updateStudent(user, () => {\r\n alerts.success(getPhrase('success'));\r\n props.closePopup();\r\n }, () => {\r\n // TODO: Handle possible errors once we have a server side\r\n alerts.error(getPhrase('error'));\r\n }));\r\n };\r\n\r\n const isLoaded = !!yearLevels.data && !!student.data;\r\n\r\n return (\r\n <Popup closePopup={props.closePopup} title={getPhrase('popupTitle')} showLoadingSpinner={!isLoaded}>\r\n {isLoaded && <EditStudentDetails\r\n user={student.data}\r\n saveUser={saveUser}\r\n onClickCancel={props.closePopup}\r\n yearLevels={yearLevels.data}\r\n />}\r\n </Popup>\r\n );\r\n}","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight, LanguageService } from '@clickview/common';\r\nimport { PopupViewProps, Popup, useAlerts } from '@clickview/shared';\r\n\r\nimport { SchoolUserRequests } from 'apps/user-manager/flight-requests/SchoolUserRequests';\r\nimport { EditUserRequest, MockUserRole, MockTeacher } from 'apps/user-manager/interfaces';\r\nimport { EditTeacherDetails } from 'apps/user-manager/components/edit-teacher-details/EditTeacherDetails';\r\n\r\nconst getPhrase = LanguageService.encloseNamespace('userManager.editTeacher');\r\n\r\ninterface EditTeacherViewProps {\r\n id: string;\r\n}\r\n\r\nexport function EditTeacherView(props: EditTeacherViewProps & PopupViewProps): React.ReactElement {\r\n const alerts = useAlerts();\r\n\r\n const dispatch = useDispatch();\r\n const teacher = Flight.useBasicFetch<MockTeacher>(SchoolUserRequests.getTeacher(props.id));\r\n const userRoles = Flight.useBasicFetch<MockUserRole[]>(SchoolUserRequests.getUserRoles());\r\n\r\n const saveUser = (user: EditUserRequest) => {\r\n Flight.fetch(dispatch, SchoolUserRequests.updateTeacher(user, () => {\r\n alerts.success(getPhrase('success'));\r\n props.closePopup();\r\n }, () => {\r\n // TODO: Handle possible errors once we have a server side\r\n alerts.error(getPhrase('error'));\r\n }));\r\n };\r\n\r\n const isLoaded = !!userRoles.data && !!teacher.data;\r\n\r\n return (\r\n <Popup closePopup={props.closePopup} title={getPhrase('popupTitle')} showLoadingSpinner={!isLoaded}>\r\n {isLoaded && <EditTeacherDetails\r\n user={teacher.data}\r\n saveUser={saveUser}\r\n onClickCancel={props.closePopup}\r\n userRoles={userRoles.data}\r\n />}\r\n </Popup>\r\n );\r\n}","import React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { LanguageService, Flight } from '@clickview/common';\r\nimport { Popup, PopupViewProps, Text, PopupButtons, useAlerts } from '@clickview/shared';\r\nimport { SchoolUserRequests } from 'apps/user-manager/flight-requests/SchoolUserRequests';\r\n\r\nconst namespace = 'userManager.removeUser';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\ninterface RemoveUserViewProps {\r\n userIds: string[];\r\n userType: 'student' | 'teacher';\r\n}\r\n\r\nexport function RemoveUserView(props: RemoveUserViewProps & PopupViewProps): JSX.Element {\r\n const [ showButtonSpinner, setShowButtonSpinner ] = React.useState(false);\r\n\r\n const dispatch = useDispatch();\r\n const alerts = useAlerts();\r\n\r\n const isManagingStudents = props.userType === 'student';\r\n\r\n function removeUsers(): void {\r\n setShowButtonSpinner(true);\r\n\r\n const deleteUsers = isManagingStudents\r\n ? SchoolUserRequests.removeStudentsFromSchool\r\n : SchoolUserRequests.removeTeachersFromSchool;\r\n\r\n Flight.fetch(dispatch, deleteUsers(props.userIds, () => {\r\n setShowButtonSpinner(false);\r\n\r\n alerts.success(getPhrase('success', { smartCount: props.userIds.length }));\r\n\r\n props.closePopup();\r\n }));\r\n }\r\n\r\n const titlePhrase = isManagingStudents ? 'titleStudents' : 'titleTeachers';\r\n const confirmationPhrase = isManagingStudents ? 'confirmStudents' : 'confirmTeachers';\r\n\r\n return (\r\n <Popup title={getPhrase(titlePhrase)} closePopup={props.closePopup} showLoadingSpinner={showButtonSpinner}>\r\n <p>\r\n <Text namespace={namespace} phrase={confirmationPhrase} options={{ smartCount: props.userIds.length }} />\r\n </p>\r\n\r\n <PopupButtons buttons={\r\n [\r\n {\r\n variant: 'link',\r\n onClick: props.closePopup,\r\n buttonText: getPhrase('cancel')\r\n },\r\n {\r\n variant: 'danger',\r\n onClick: removeUsers,\r\n buttonText: getPhrase('remove'),\r\n isSpinnerButton: true,\r\n showSpinner: showButtonSpinner\r\n }\r\n ]\r\n }/>\r\n </Popup>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { Flight, LanguageService, HashObject } from '@clickview/common';\r\nimport { Text, Pagination, ContextService } from '@clickview/shared';\r\n\r\nimport { SchoolUserRequests } from 'apps/user-manager/flight-requests/SchoolUserRequests';\r\nimport { ManageUsersList } from 'apps/user-manager/components/manage-users-list/ManageUsersList';\r\nimport { PartialManageUsersList } from 'apps/user-manager/components/manage-users-list/partial-loading/PartialManageUsersList';\r\nimport { MockClassroom, MockYearLevel, MockStudentCollection } from 'apps/user-manager/interfaces';\r\nimport { YearLevelRequests } from 'apps/user-manager/flight-requests/YearLevelRequests';\r\nimport { MockUserType } from 'apps/user-manager/enums';\r\n\r\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\r\n\r\nimport { ScopedSearchBar } from 'apps/search/components/scoped-search-bar/ScopedSearchBar';\r\nimport { SearchFilters, PartialSearchFilters } from 'apps/search/components';\r\nimport { SearchFilter } from 'apps/search/interfaces';\r\nimport { Filters, FilterHelper } from 'apps/search/utils';\r\n\r\nimport { SchoolStudentManagerEmptyState } from './empty-state/SchoolStudentManagerEmptyState';\r\n\r\nconst namespace = 'userManager.schoolStudentManager';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\ninterface SchoolStudentManagerViewProps {\r\n queryParams: HashObject;\r\n}\r\n\r\nexport function SchoolStudentManagerView(props: SchoolStudentManagerViewProps): JSX.Element {\r\n const students = Flight.useBasicFetch<MockStudentCollection>(\r\n SchoolUserRequests.getSchoolStudents(FilterHelper.getBackendQueryParams(props.queryParams)));\r\n const yearLevels = Flight.useBasicFetch<MockYearLevel[]>(YearLevelRequests.getAll());\r\n const classrooms = Flight.useBasicFetch<MockClassroom[]>(ClassroomRequests.getAll());\r\n\r\n function getFilters(): SearchFilter[] {\r\n if (!yearLevels.data || !classrooms.data)\r\n return [];\r\n\r\n return [\r\n Filters.SortByName(FilterHelper.getNameSortOptions()),\r\n Filters.YearLevel(FilterHelper.getYearLevelOptions(yearLevels.data)),\r\n Filters.Classroom(FilterHelper.getClassroomOptions(classrooms.data))\r\n ];\r\n }\r\n\r\n return (\r\n <>\r\n <h1 className='pl-4'><Text namespace={namespace} phrase='heading' /></h1>\r\n\r\n <div className='pl-4 py-2 row'>\r\n <div className='col-9 p-0'>\r\n {getFilters().length\r\n ? <SearchFilters\r\n queryParams={props.queryParams}\r\n mainFilters={getFilters()}\r\n hideHeading\r\n />\r\n : <PartialSearchFilters hideHeading />\r\n }\r\n </div>\r\n\r\n <div className='col-3'>\r\n <ScopedSearchBar\r\n id='school-student-search'\r\n name='school-student-search'\r\n placeholder={getPhrase('searchBarPlaceholder')}\r\n />\r\n </div>\r\n </div>\r\n\r\n <p className='pl-4 mb-0 font-weight-bold'>\r\n <Text\r\n namespace={namespace}\r\n phrase='entries'\r\n options={{\r\n totalVisible: students.data?.data?.length || 0,\r\n absoluteTotal: students.data?.count || 0,\r\n smartCount: students.data?.count || 0\r\n }}\r\n />\r\n </p>\r\n\r\n <main className='py-3'>\r\n {(() => {\r\n if (!students.data?.data || !yearLevels.data)\r\n return <PartialManageUsersList />;\r\n\r\n if (!students.data.data.length)\r\n return <SchoolStudentManagerEmptyState />;\r\n\r\n return (\r\n <>\r\n <ManageUsersList\r\n users={students.data.data}\r\n userType={MockUserType.Student}\r\n yearLevels={yearLevels.data}\r\n />\r\n <Pagination\r\n appLink={ContextService.getCurrentRoute().appLink}\r\n cursors={{\r\n next: students.data.pagination.cursors.next,\r\n previous: students.data.pagination.cursors.previous\r\n }}\r\n className='pt-3 d-flex justify-content-end'\r\n />\r\n </>\r\n );\r\n })()}\r\n </main>\r\n </>\r\n );\r\n}","import React from 'react';\r\n\r\nimport { Core } from '@clickview/common';\r\nimport { Text, LanguageNamespaceContext, IconButton, cvSvgLibrary } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { VideoInfoButton } from 'shared/components/video-info-button/VideoInfoButton';\r\n\r\nconst namespace = 'userManager.schoolStudentManagerEmptyState';\r\n\r\nconst newStudentAppLink: Core.AppLink = {\r\n application: AppChannels.USER_MANAGER,\r\n action: Actions.UserManager.NEW_STUDENT\r\n};\r\n\r\nexport function SchoolStudentManagerEmptyState(): JSX.Element {\r\n return (\r\n <LanguageNamespaceContext.Provider value={namespace}>\r\n <div className='text-center py-5'>\r\n <p>TODO: add an actual empty state image once bev has one</p>\r\n <img src='/favicon.ico' className='pb-3' />\r\n\r\n <h2 className='h6'><Text phrase='heading' /></h2>\r\n <p className='w-33 mx-auto'><Text phrase='info' /></p>\r\n\r\n <VideoInfoButton>\r\n <Text phrase='videoLink' />\r\n </VideoInfoButton>\r\n\r\n <IconButton\r\n className='btn btn-dark mx-auto'\r\n svgName={cvSvgLibrary.Plus}\r\n appLink={newStudentAppLink}\r\n >\r\n <Text phrase='addNew' />\r\n </IconButton>\r\n </div>\r\n </LanguageNamespaceContext.Provider>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { Flight, LanguageService, HashObject } from '@clickview/common';\r\nimport { Text, Pagination, ContextService } from '@clickview/shared';\r\n\r\nimport { SchoolUserRequests } from 'apps/user-manager/flight-requests/SchoolUserRequests';\r\nimport { ManageUsersList } from 'apps/user-manager/components/manage-users-list/ManageUsersList';\r\nimport { PartialManageUsersList } from 'apps/user-manager/components/manage-users-list/partial-loading/PartialManageUsersList';\r\n\r\nimport { Filters, FilterHelper } from 'apps/search/utils';\r\nimport { SearchFilters } from 'apps/search/components';\r\nimport { ScopedSearchBar } from 'apps/search/components/scoped-search-bar/ScopedSearchBar';\r\nimport { MockUserType } from 'apps/user-manager/enums';\r\n\r\nimport { SchoolTeacherManagerEmptyState } from './empty-state/SchoolTeacherManagerEmptyState';\r\nimport { MockUserRole, MockTeacherCollection } from 'apps/user-manager/interfaces';\r\n\r\nconst namespace = 'userManager.schoolTeacherManager';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\ninterface SchoolTeacherManagerViewProps {\r\n queryParams: HashObject;\r\n}\r\n\r\nexport function SchoolTeacherManagerView(props: SchoolTeacherManagerViewProps): JSX.Element {\r\n const userRoles = Flight.useBasicFetch<MockUserRole[]>(SchoolUserRequests.getUserRoles());\r\n const teachers = Flight.useBasicFetch<MockTeacherCollection>(\r\n SchoolUserRequests.getSchoolTeachers(FilterHelper.getBackendQueryParams(props.queryParams)));\r\n\r\n return (\r\n <>\r\n <h1 className='pl-4'><Text namespace={namespace} phrase='heading' /></h1>\r\n\r\n <div className='pl-4 py-2 row'>\r\n <div className='col-9 p-0'>\r\n <SearchFilters\r\n queryParams={props.queryParams}\r\n mainFilters={[Filters.SortByName(FilterHelper.getNameSortOptions())]}\r\n hideHeading\r\n />\r\n </div>\r\n\r\n <div className='col-3'>\r\n <ScopedSearchBar\r\n id='school-teacher-search'\r\n name='school-teacher-search'\r\n placeholder={getPhrase('searchBarPlaceholder')}\r\n />\r\n </div>\r\n </div>\r\n\r\n <p className='pl-4 mb-0 font-weight-bold'>\r\n <Text namespace={namespace} phrase='entries' options={{ smartCount: teachers.data?.data?.length || 0 }} />\r\n </p>\r\n\r\n <main className='py-3'>\r\n {(() => {\r\n if (!teachers.data?.data || !userRoles.data)\r\n return <PartialManageUsersList />;\r\n\r\n if (!teachers.data.data.length)\r\n return <SchoolTeacherManagerEmptyState />;\r\n\r\n return (\r\n <>\r\n <ManageUsersList\r\n users={teachers.data.data}\r\n userType={MockUserType.Teacher}\r\n userRoles={userRoles.data}\r\n />\r\n <Pagination\r\n appLink={ContextService.getCurrentRoute().appLink}\r\n cursors={{\r\n next: teachers.data.pagination.cursors.next,\r\n previous: teachers.data.pagination.cursors.previous\r\n }}\r\n className='pt-3 d-flex justify-content-end'\r\n />\r\n </>\r\n );\r\n })()}\r\n </main>\r\n </>\r\n );\r\n}","import React from 'react';\r\nimport { Text, LanguageNamespaceContext, IconButton, cvSvgLibrary } from '@clickview/shared';\r\nimport { VideoInfoButton } from 'shared/components/video-info-button/VideoInfoButton';\r\n\r\nconst namespace = 'userManager.schoolTeacherManagerEmptyState';\r\n\r\nexport function SchoolTeacherManagerEmptyState(): JSX.Element {\r\n return (\r\n <LanguageNamespaceContext.Provider value={namespace}>\r\n <div className='text-center py-5'>\r\n <p>TODO: add an actual empty state image once bev has one</p>\r\n <img src='/favicon.ico' className='pb-3' />\r\n\r\n <h2 className='h6'><Text phrase='heading' /></h2>\r\n <p className='w-33 mx-auto'><Text phrase='info' /></p>\r\n\r\n <VideoInfoButton>\r\n <Text phrase='videoLink' />\r\n </VideoInfoButton>\r\n\r\n <IconButton\r\n className='btn btn-dark d-block mx-auto'\r\n svgName={cvSvgLibrary.Plus}\r\n >\r\n <Text phrase='addNew' />\r\n </IconButton>\r\n </div>\r\n </LanguageNamespaceContext.Provider>\r\n );\r\n}","import React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { HashObject, Core, Flight, LanguageService, ViewModelService } from '@clickview/common';\r\nimport { Text, LanguageNamespaceContext, PopupViewProps, useAlerts, Pagination, LocalPagination } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { ToggleSwitch } from 'shared/components/toggle-switch/ToggleSwitch';\r\nimport { useNavLock } from 'shared/hooks/useNavLock';\r\nimport { DialogHelper } from 'shared/utils/DialogHelper';\r\n\r\nimport { MockStudent, MockYearLevel } from 'apps/user-manager/interfaces';\r\nimport { getStudentValidationSchema } from 'apps/user-manager/validation';\r\nimport { YearLevelRequests } from 'apps/user-manager/flight-requests/YearLevelRequests';\r\nimport { SchoolUserRequests } from 'apps/user-manager/flight-requests/SchoolUserRequests';\r\nimport { StudentReviewTable } from 'apps/user-manager/components/student-review-table/StudentReviewTable';\r\nimport { EditUploadedUserPopup } from 'apps/user-manager/components/edit-uploaded-user-popup/EditUploadedUserPopup';\r\nimport { DeleteUploadedStudentPopup } from 'apps/user-manager/components/delete-uploaded-student-popup/DeleteUploadedStudentPopup';\r\nimport { UserUploadReducer, UserUploadContext, UserUploadReducerState } from 'apps/user-manager/reducers/UserUploadReducer';\r\nimport { MockUserType } from 'apps/user-manager/enums';\r\n\r\n// Max number of students displayable in the table at one time\r\nconst MAX_PAGE_SIZE = 25;\r\nconst NAV_LOCK_ID = 'student-upload-review';\r\n\r\nconst namespace = 'userManager.studentUploadReview';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\nfunction getTotalInvalidListings(state: UserUploadReducerState): number {\r\n return Object.keys(state.invalidUsers).length;\r\n}\r\n\r\nexport function StudentUploadReviewView({ closePopup }: PopupViewProps): JSX.Element {\r\n const viewModel = ViewModelService.get('bulk:student:upload');\r\n const uploadedStudents = viewModel.get('users');\r\n\r\n const [ hideValidListings, setHideValidListings ] = React.useState(true);\r\n\r\n const [ editingStudent, setEditingStudent ] = React.useState<MockStudent>();\r\n const [ deletingStudent, setDeletingStudent ] = React.useState<MockStudent>();\r\n\r\n const [ pageNumber, setPageNumber ] = React.useState<number>(1);\r\n const [ currentPage, setCurrentPage ] = React.useState<MockStudent[]>([]);\r\n\r\n const [ state, dispatch ] = React.useReducer(UserUploadReducer, null);\r\n\r\n const flightDispatch = useDispatch();\r\n const alerts = useAlerts();\r\n const navLock = useNavLock();\r\n\r\n const yearLevels = Flight.useBasicFetch<MockYearLevel[]>(YearLevelRequests.getAll());\r\n\r\n // Runs on first load. Finds all invalid students and initializes the reducer.\r\n React.useEffect(() => {\r\n if (!yearLevels.data || state)\r\n return;\r\n\r\n if (!uploadedStudents) {\r\n // Redirect if the user has reloaded the page\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.USER_MANAGER,\r\n action: Actions.UserManager.STUDENTS\r\n }, { replace: true });\r\n return;\r\n }\r\n\r\n const StudentValidationSchema = getStudentValidationSchema(yearLevels.data);\r\n\r\n async function initReducer(): Promise<void> {\r\n const invalidUsers: HashObject = {};\r\n\r\n // Find every uploaded student with errors, and add them to the invalid students view model\r\n for (const student of uploadedStudents) {\r\n try {\r\n await StudentValidationSchema.validate(student, { abortEarly: false });\r\n } catch (errors) {\r\n invalidUsers[student.lookupId] = {\r\n user: student,\r\n errors: errors.inner.reduce((errorsObj: HashObject, err: HashObject) => {\r\n const key = err.path.split('.')[0];\r\n errorsObj[key] = err.message;\r\n return errorsObj;\r\n }, {})\r\n };\r\n }\r\n }\r\n\r\n dispatch({\r\n type: 'init',\r\n payload: {\r\n users: uploadedStudents,\r\n invalidUsers\r\n }\r\n });\r\n\r\n viewModel.unset('users');\r\n }\r\n\r\n initReducer();\r\n\r\n navLock.lock({\r\n id: NAV_LOCK_ID,\r\n title: getPhrase('navLockTitle'),\r\n text: getPhrase('navLockBody')\r\n });\r\n }, [ uploadedStudents, yearLevels.data ]);\r\n\r\n // Handles pagination. Runs every time the state changes\r\n React.useEffect(() => {\r\n if (!state || !state.users?.length)\r\n return;\r\n\r\n const collection = hideValidListings\r\n ? Object.keys(state.invalidUsers).map(lookupId => state.invalidUsers[lookupId].user)\r\n : state.users;\r\n\r\n const studentsPage = collection.slice(MAX_PAGE_SIZE * (pageNumber - 1), MAX_PAGE_SIZE * pageNumber);\r\n\r\n setCurrentPage(studentsPage);\r\n\r\n const pageCount = getPageCount();\r\n if (pageCount && pageNumber > pageCount)\r\n setPageNumber(pageCount);\r\n }, [ hideValidListings, pageNumber, state ]);\r\n\r\n // Listening for when all students have been validated. Switches the view to show all students.\r\n React.useEffect(() => {\r\n if (!state || getTotalInvalidListings(state))\r\n return;\r\n\r\n setHideValidListings(false);\r\n }, [state]);\r\n\r\n // Listening for when all student entries have been deleted. Redirects to student manager\r\n React.useEffect(() => {\r\n if (state && !state.users?.length) {\r\n navLock.unlock(NAV_LOCK_ID);\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.USER_MANAGER,\r\n action: Actions.UserManager.STUDENTS\r\n });\r\n }\r\n }, [state]);\r\n\r\n /**\r\n * Event Handlers\r\n */\r\n function onToggleValidListings(): void {\r\n setHideValidListings(!hideValidListings);\r\n setPageNumber(1);\r\n }\r\n\r\n function onClickEdit(student: MockStudent): void {\r\n setEditingStudent(student);\r\n }\r\n\r\n function onCloseEditPopup(): void {\r\n setEditingStudent(null);\r\n closePopup();\r\n }\r\n\r\n function onClickDelete(student: MockStudent): void {\r\n setDeletingStudent(student);\r\n }\r\n\r\n function onCloseDeletePopup(): void {\r\n closePopup();\r\n setDeletingStudent(null);\r\n }\r\n\r\n function onClickSave(): void {\r\n if (getTotalInvalidListings(state))\r\n return;\r\n\r\n DialogHelper.render((\r\n <p>\r\n <Text\r\n namespace={namespace}\r\n phrase='saveConfirmationBody'\r\n options={{ smartCount: state.users.length }}\r\n />\r\n </p>\r\n ), {\r\n title: getPhrase('saveConfirmationHeading'),\r\n buttons: [\r\n DialogHelper.getCancelDefault(),\r\n {\r\n variant: 'dark' as const,\r\n success: true,\r\n onClick: () => saveUsers(),\r\n buttonText: getPhrase('save')\r\n }\r\n ]\r\n });\r\n }\r\n\r\n function saveUsers(): void {\r\n if (getTotalInvalidListings(state))\r\n return;\r\n\r\n Flight.fetch(flightDispatch, SchoolUserRequests.bulkCreateStudents(state.users, () => {\r\n alerts.success(getPhrase('success'));\r\n }, () => {\r\n alerts.error(getPhrase('error'));\r\n }, () => {\r\n navLock.unlock(NAV_LOCK_ID);\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.USER_MANAGER,\r\n action: Actions.UserManager.STUDENTS\r\n });\r\n }));\r\n }\r\n\r\n function getPageCount(): number {\r\n return hideValidListings\r\n ? Math.ceil(getTotalInvalidListings(state) / MAX_PAGE_SIZE)\r\n : Math.ceil(state.users.length / MAX_PAGE_SIZE);\r\n }\r\n\r\n if (!state)\r\n return <></>;\r\n\r\n return (\r\n <LanguageNamespaceContext.Provider value={namespace}>\r\n <UserUploadContext.Provider value={{ state, dispatch }}>\r\n <div className='d-flex justify-content-between align-items-center'>\r\n <h1><Text phrase='heading' /></h1>\r\n <button\r\n className={`btn btn-dark ${getTotalInvalidListings(state) ? 'disabled' : ''}`}\r\n onClick={onClickSave}\r\n >\r\n <Text phrase='save' />\r\n </button>\r\n </div>\r\n\r\n {!!getTotalInvalidListings(state) &&\r\n <p className='mb-1'>\r\n <Text phrase='reviewCount' options={{ smartCount: getTotalInvalidListings(state) }} />\r\n </p>\r\n }\r\n\r\n <div className='d-flex align-items-center flex-wrap'>\r\n <p className='pr-3 mb-0'><Text phrase='switchLabel' /></p>\r\n <ToggleSwitch\r\n onClick={onToggleValidListings}\r\n on={hideValidListings}\r\n disabled={!getTotalInvalidListings(state)}\r\n />\r\n </div>\r\n\r\n <main className='pt-2 pb-3'>\r\n <StudentReviewTable\r\n students={currentPage}\r\n onClickEdit={onClickEdit}\r\n onClickDelete={onClickDelete}\r\n />\r\n\r\n <LocalPagination\r\n className='py-2 float-right'\r\n onClickNext={() => setPageNumber(pageNumber + 1)}\r\n onClickBack={() => setPageNumber(pageNumber - 1)}\r\n currentPage={pageNumber}\r\n totalPages={getPageCount()}\r\n />\r\n </main>\r\n\r\n {!!editingStudent && (\r\n <EditUploadedUserPopup\r\n user={editingStudent}\r\n closePopup={onCloseEditPopup}\r\n title={getPhrase('editStudent')}\r\n userType={MockUserType.Student}\r\n />\r\n )}\r\n\r\n {!!deletingStudent && <DeleteUploadedStudentPopup student={deletingStudent} closePopup={onCloseDeletePopup} />}\r\n </UserUploadContext.Provider>\r\n </LanguageNamespaceContext.Provider>\r\n );\r\n}","import React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { HashObject, Core, Flight, LanguageService, ViewModelService } from '@clickview/common';\r\nimport { Text, LanguageNamespaceContext, PopupViewProps, useAlerts, LocalPagination } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { ToggleSwitch } from 'shared/components/toggle-switch/ToggleSwitch';\r\nimport { useNavLock } from 'shared/hooks/useNavLock';\r\nimport { DialogHelper } from 'shared/utils/DialogHelper';\r\n\r\nimport { MockTeacher, MockUserRole } from 'apps/user-manager/interfaces';\r\nimport { getTeacherValidationSchema } from 'apps/user-manager/validation';\r\nimport { SchoolUserRequests } from 'apps/user-manager/flight-requests/SchoolUserRequests';\r\nimport { TeacherReviewTable } from 'apps/user-manager/components/teacher-review-table/TeacherReviewTable';\r\nimport { DeleteUploadedTeacherPopup } from 'apps/user-manager/components/delete-uploaded-teacher-popup/DeleteUploadedTeacherPopup';\r\nimport { UserUploadContext, UserUploadReducer, UserUploadReducerState } from 'apps/user-manager/reducers/UserUploadReducer';\r\nimport { EditUploadedUserPopup } from 'apps/user-manager/components/edit-uploaded-user-popup/EditUploadedUserPopup';\r\nimport { MockUserType } from 'apps/user-manager/enums';\r\n\r\n// Max number of teachers displayable in the table at one time\r\nconst MAX_PAGE_SIZE = 25;\r\nconst NAV_LOCK_ID = 'teacher-upload-review';\r\n\r\nconst namespace = 'userManager.teacherUploadReview';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\nfunction getTotalInvalidListings(state: UserUploadReducerState): number {\r\n return Object.keys(state.invalidUsers).length;\r\n}\r\n\r\nexport function TeacherUploadReviewView({ closePopup }: PopupViewProps): JSX.Element {\r\n const viewModel = ViewModelService.get('bulk:teacher:upload');\r\n const uploadedTeachers = viewModel.get('users');\r\n\r\n const [ hideValidListings, setHideValidListings ] = React.useState(true);\r\n\r\n const [ editingTeacher, setEditingTeacher ] = React.useState<MockTeacher>();\r\n const [ deletingTeacher, setDeletingTeacher ] = React.useState<MockTeacher>();\r\n\r\n const [ pageNumber, setPageNumber ] = React.useState<number>(1);\r\n const [ currentPage, setCurrentPage ] = React.useState<MockTeacher[]>([]);\r\n\r\n const [ state, dispatch ] = React.useReducer(UserUploadReducer, null);\r\n\r\n const flightDispatch = useDispatch();\r\n const alerts = useAlerts();\r\n const navLock = useNavLock();\r\n\r\n const userRoles = Flight.useBasicFetch<MockUserRole[]>(SchoolUserRequests.getUserRoles());\r\n\r\n // Runs on first load. Finds all invalid teachers and initializes the reducer.\r\n React.useEffect(() => {\r\n if (!userRoles.data || state)\r\n return;\r\n\r\n if (!uploadedTeachers) {\r\n // Redirect if the user has reloaded the page\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.USER_MANAGER,\r\n action: Actions.UserManager.TEACHERS\r\n }, { replace: true });\r\n return;\r\n }\r\n\r\n const TeacherValidationSchema = getTeacherValidationSchema(userRoles.data);\r\n\r\n async function initReducer(): Promise<void> {\r\n const invalidUsers: HashObject = {};\r\n\r\n // Find every uploaded teacher with errors, and add them to the invalid teachers view model\r\n for (const teacher of uploadedTeachers) {\r\n try {\r\n await TeacherValidationSchema.validate(teacher, { abortEarly: false });\r\n } catch (errors) {\r\n invalidUsers[teacher.lookupId] = {\r\n user: teacher,\r\n errors: errors.inner.reduce((errorsObj: HashObject, err: HashObject) => {\r\n const key = err.path.split('.')[0];\r\n errorsObj[key] = err.message;\r\n return errorsObj;\r\n }, {})\r\n };\r\n }\r\n }\r\n\r\n dispatch({\r\n type: 'init',\r\n payload: {\r\n users: uploadedTeachers,\r\n invalidUsers\r\n }\r\n });\r\n\r\n viewModel.unset('users');\r\n }\r\n\r\n initReducer();\r\n\r\n navLock.lock({\r\n id: NAV_LOCK_ID,\r\n title: getPhrase('navLockTitle'),\r\n text: getPhrase('navLockBody')\r\n });\r\n }, [ uploadedTeachers, userRoles.data ]);\r\n\r\n // Handles pagination. Runs every time the state changes\r\n React.useEffect(() => {\r\n if (!state || !state.users?.length)\r\n return;\r\n\r\n const collection = hideValidListings\r\n ? Object.keys(state.invalidUsers).map(lookupId => state.invalidUsers[lookupId].user)\r\n : state.users;\r\n\r\n const teachersPage = collection.slice(MAX_PAGE_SIZE * (pageNumber - 1), MAX_PAGE_SIZE * pageNumber);\r\n\r\n setCurrentPage(teachersPage);\r\n\r\n const pageCount = getPageCount();\r\n if (pageCount && pageNumber > pageCount)\r\n setPageNumber(pageCount);\r\n }, [ hideValidListings, pageNumber, state ]);\r\n\r\n // Listening for when all teachers have been validated. Switches the view to show all teachers.\r\n React.useEffect(() => {\r\n if (!state || getTotalInvalidListings(state))\r\n return;\r\n\r\n setHideValidListings(false);\r\n }, [state]);\r\n\r\n // Listening for when all teacher entries have been deleted. Redirects to teacher manager\r\n React.useEffect(() => {\r\n if (state && !state.users?.length) {\r\n navLock.unlock(NAV_LOCK_ID);\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.USER_MANAGER,\r\n action: Actions.UserManager.TEACHERS\r\n });\r\n }\r\n }, [state]);\r\n\r\n /**\r\n * Event Handlers\r\n */\r\n function onToggleValidListings(): void {\r\n setHideValidListings(!hideValidListings);\r\n setPageNumber(1);\r\n }\r\n\r\n function onClickEdit(teacher: MockTeacher): void {\r\n setEditingTeacher(teacher);\r\n }\r\n\r\n function onCloseEditPopup(): void {\r\n setEditingTeacher(null);\r\n closePopup();\r\n }\r\n\r\n function onClickDelete(teacher: MockTeacher): void {\r\n setDeletingTeacher(teacher);\r\n }\r\n\r\n function onCloseDeletePopup(): void {\r\n closePopup();\r\n setDeletingTeacher(null);\r\n }\r\n\r\n function onClickSave(): void {\r\n if (getTotalInvalidListings(state))\r\n return;\r\n\r\n DialogHelper.render((\r\n <p>\r\n <Text\r\n namespace={namespace}\r\n phrase='saveConfirmationBody'\r\n options={{ smartCount: state.users.length }}\r\n />\r\n </p>\r\n ), {\r\n title: getPhrase('saveConfirmationHeading'),\r\n buttons: [\r\n DialogHelper.getCancelDefault(),\r\n {\r\n variant: 'dark' as const,\r\n success: true,\r\n onClick: () => saveUsers(),\r\n buttonText: getPhrase('save')\r\n }\r\n ]\r\n });\r\n }\r\n\r\n function saveUsers(): void {\r\n if (getTotalInvalidListings(state))\r\n return;\r\n\r\n Flight.fetch(flightDispatch, SchoolUserRequests.bulkCreateTeachers(state.users, () => {\r\n alerts.success(getPhrase('success'));\r\n }, () => {\r\n alerts.error(getPhrase('error'));\r\n }, () => {\r\n navLock.unlock(NAV_LOCK_ID);\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.USER_MANAGER,\r\n action: Actions.UserManager.TEACHERS\r\n });\r\n }));\r\n }\r\n\r\n function getPageCount(): number {\r\n return hideValidListings\r\n ? Math.ceil(getTotalInvalidListings(state) / MAX_PAGE_SIZE)\r\n : Math.ceil(state.users.length / MAX_PAGE_SIZE);\r\n }\r\n\r\n if (!state)\r\n return <></>;\r\n\r\n return (\r\n <LanguageNamespaceContext.Provider value={namespace}>\r\n <UserUploadContext.Provider value={{ state, dispatch }}>\r\n <div className='d-flex justify-content-between align-items-center'>\r\n <h1><Text phrase='heading' /></h1>\r\n <button\r\n className={`btn btn-dark ${getTotalInvalidListings(state) ? 'disabled' : ''}`}\r\n onClick={onClickSave}\r\n >\r\n <Text phrase='save' />\r\n </button>\r\n </div>\r\n\r\n {!!getTotalInvalidListings(state) &&\r\n <p className='mb-1'>\r\n <Text phrase='reviewCount' options={{ smartCount: getTotalInvalidListings(state) }} />\r\n </p>\r\n }\r\n\r\n <div className='d-flex align-items-center flex-wrap'>\r\n <p className='pr-3 mb-0'><Text phrase='switchLabel' /></p>\r\n <ToggleSwitch\r\n onClick={onToggleValidListings}\r\n on={hideValidListings}\r\n disabled={!getTotalInvalidListings(state)}\r\n />\r\n </div>\r\n\r\n <main className='pt-2 pb-3'>\r\n <TeacherReviewTable\r\n teachers={currentPage}\r\n onClickEdit={onClickEdit}\r\n onClickDelete={onClickDelete}\r\n />\r\n\r\n <LocalPagination\r\n className='py-2 float-right'\r\n onClickNext={() => setPageNumber(pageNumber + 1)}\r\n onClickBack={() => setPageNumber(pageNumber - 1)}\r\n currentPage={pageNumber}\r\n totalPages={getPageCount()}\r\n />\r\n </main>\r\n\r\n {!!editingTeacher && (\r\n <EditUploadedUserPopup\r\n user={editingTeacher}\r\n closePopup={onCloseEditPopup}\r\n title={getPhrase('editTeacher')}\r\n userType={MockUserType.Teacher}\r\n />\r\n )}\r\n\r\n {!!deletingTeacher && <DeleteUploadedTeacherPopup teacher={deletingTeacher} closePopup={onCloseDeletePopup} />}\r\n </UserUploadContext.Provider>\r\n </LanguageNamespaceContext.Provider>\r\n );\r\n}","import './apps/classrooms/components/classroom-activities-list/classroom-actitivies-list.lang.json'; import './apps/classrooms/components/classroom-details-form/classroom-details-form.lang.json'; import './apps/classrooms/components/classroom-group-details-form/classroom-group-details-form.lang.json'; import './apps/classrooms/components/classroom-group-dropdown/classroom-group-dropdown.lang.json'; import './apps/classrooms/components/classroom-item/classroom-item.lang.json'; import './apps/classrooms/components/classroom-students-list/classroom-students-list.lang.json'; import './apps/classrooms/components/manage-classroom-groups/manage-classroom-groups.lang.json'; import './apps/classrooms/components/manage-classroom-student-item/manage-classroom-student-item.lang.json'; import './apps/classrooms/components/manage-classroom-students/empty-state/manage-classroom-students-empty-state.lang.json'; import './apps/classrooms/components/manage-classroom-students/manage-classroom-students.lang.json'; import './apps/classrooms/validation/classrooms-validation.lang.json'; import './apps/classrooms/views/add-students-to-classroom/add-students-to-classroom.lang.json'; import './apps/classrooms/views/classroom/classroom.lang.json'; import './apps/classrooms/views/classrooms/classrooms.lang.json'; import './apps/classrooms/views/create-classroom-group/create-classroom-group.lang.json'; import './apps/classrooms/views/create-classroom/create-classroom.lang.json'; import './apps/classrooms/views/delete-classroom-group/delete-classroom-group.lang.json'; import './apps/classrooms/views/delete-classroom/delete-classroom.lang.json'; import './apps/classrooms/views/edit-classroom-group/edit-classroom-group.lang.json'; import './apps/classrooms/views/edit-classroom/edit-classroom.lang.json'; import './apps/classrooms/views/manage-classroom/manage-classroom.lang.json'; import './apps/classrooms/views/remove-students-from-classroom/remove-students-from-classroom.lang.json'; import './apps/search/components/filter-actions/filter-actions.lang.json'; import './apps/search/components/reset-button/reset-button.lang.json'; import './apps/search/components/search-filters/search-filters.lang.json'; import './apps/search/utils/search-utils.lang.json'; import './apps/search/views/search-results/search-results.lang.json'; import './apps/upload/components/upload-file-select/upload-file-select.lang.json'; import './apps/upload/components/uploading-item/uploading-item.lang.json'; import './apps/upload/services/upload-services.lang.json'; import './apps/upload/views/cancel-upload/cancel-upload.lang.json'; import './apps/upload/views/edit-upload/edit-upload.lang.json'; import './apps/upload/views/my-uploads/my-uploads.lang.json'; import './apps/user-manager/components/bulk-upload-file-select/bulk-upload-file-select.lang.json'; import './apps/user-manager/components/delete-uploaded-student-popup/delete-uploaded-student-popup.lang.json'; import './apps/user-manager/components/delete-uploaded-teacher-popup/delete-uploaded-teacher-popup.lang.json'; import './apps/user-manager/components/edit-uploaded-user-popup/edit-uploaded-user-popup.lang.json'; import './apps/user-manager/components/manage-users-list/students/manage-students.lang.json'; import './apps/user-manager/components/manage-users-list/teachers/manage-teachers.lang.json'; import './apps/user-manager/components/student-review-table/student-review-table.lang.json'; import './apps/user-manager/components/teacher-review-table/teacher-review-table.lang.json'; import './apps/user-manager/components/user-details-form/student-details-form.lang.json'; import './apps/user-manager/components/user-details-form/teacher-details-form.lang.json'; import './apps/user-manager/components/user-details-form/user-details-form.lang.json'; import './apps/user-manager/validation/user-validation/user-validation.lang.json'; import './apps/user-manager/views/create-student/create-student.lang.json'; import './apps/user-manager/views/create-teacher/create-teacher.lang.json'; import './apps/user-manager/views/edit-student/edit-student.lang.json'; import './apps/user-manager/views/edit-teacher/edit-teacher.lang.json'; import './apps/user-manager/views/remove-user/remove-user.lang.json'; import './apps/user-manager/views/school-student-manager/empty-state/school-student-manager-empty-state.lang.json'; import './apps/user-manager/views/school-student-manager/school-student-manager.lang.json'; import './apps/user-manager/views/school-teacher-manager/empty-state/school-teacher-manager-empty-state.lang.json'; import './apps/user-manager/views/school-teacher-manager/school-teacher-manager.lang.json'; import './apps/user-manager/views/student-upload-review/student-upload-review.lang.json'; import './apps/user-manager/views/teacher-upload-review/teacher-upload-review.lang.json'; import './shared/components/clips/clips.lang.json'; import './shared/components/immersive-reader/immersive-reader.lang.json'; import './shared/components/interactives/interactives.lang.json'; import './shared/components/play-page/play-page.lang.json'; import './shared/components/share/copy-embed-html/copy-embed-html.lang.json'; import './shared/components/share/tokenized-typeahead/tokenized-typeahead.lang.json'; import './shared/components/synopsis/synopsis.lang.json'; import './shared/components/user-options/user-options.lang.json'; import './shared/components/video-details/video-details.lang.json'; import './shared/errors/not-found/not-found.lang.json'; import './shared/hooks/hooks.lang.json'; import './shared/layouts/teacher-layout/drag-mask/drag-mask.lang.json'; import './shared/utils/shared-utils.lang.json'; import './shared/views/favorite-videos/favorite-videos-view.lang.json'; import './shared/views/left-nav/left-nav-view.lang.json'; import './shared/views/series/series-view.lang.json'; import './shared/views/share/share.lang.json';\r\n\r\nimport './styles';\r\n\r\n/**\r\n * Files that are needed by outside projects. E.g. applications, services.\r\n */\r\nexport * from './shared/constants';\r\nexport * from './shared/errors';\r\nexport * from './shared/layouts';\r\nexport * from './shared/services';\r\n\r\nexport * from './apps/default/LiteDefaultApplication';\r\n\r\nexport * from './apps/playlists/LitePlaylistsApplication';\r\nexport * from './apps/embed/LiteEmbedApplication';\r\nexport * from './apps/dashboard/LiteDashboardApplication';\r\nexport * from './apps/subjects/LiteSubjectApplication';\r\nexport * from './apps/search/LiteSearchApplication';\r\nexport * from './apps/content-updates/LiteContentUpdatesApplication';\r\nexport * from './apps/user-manager/LiteUserManagerApplication';\r\nexport * from './apps/classrooms/LiteClassroomsApplication';\r\n\r\nexport * from './apps/upload/LiteUploadApplication';\r\nexport * from './apps/upload/services';\r\n\r\nexport * from './apps/search/constants/SearchAppVariables';\r\n\r\nexport * from './apps/notifications/LiteNotificationsApplication';\r\nexport * from './apps/notifications/constants/NotificationsAppVariables';","import React from 'react';\r\n\r\nimport styles from './avatar.scss';\r\n\r\ninterface AvatarProps {\r\n imageUrl: string;\r\n}\r\n\r\nexport function Avatar({ imageUrl }: AvatarProps): JSX.Element {\r\n return (\r\n <span className={styles.avatar} style={{ backgroundImage: `url('${imageUrl}')` }}>\r\n \r\n </span>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"avatar\":\"cv--avatar--3RyZE\"};","import * as React from 'react';\r\nimport { OverlayTrigger, Tooltip } from 'react-bootstrap';\r\nimport { Clip, SvgContainer, cvSvgLibrary, SvgContainerSize, DurationHelper, Badge, BadgeType } from '@clickview/shared';\r\n\r\nimport styles from './clips.scss';\r\n\r\nfunction ClipDuration(props: ClipItemProps): JSX.Element {\r\n const { clip } = props;\r\n\r\n const clipLength = clip.endTime - clip.startTime;\r\n\r\n const displayDuration = DurationHelper.ToDisplayDuration(clipLength * 1000);\r\n\r\n const duration = props.duration / 1000;\r\n const start = (clip.startTime / duration) * 100;\r\n const length = (clipLength / duration) * 100;\r\n\r\n const overlay = (\r\n <Tooltip id={`tooltip-top`}>\r\n {displayDuration}\r\n </Tooltip>\r\n );\r\n\r\n return (\r\n <div className={`${styles.bar} rounded mt-2`}>\r\n <OverlayTrigger overlay={overlay}>\r\n <div\r\n className={`${styles.subBar} bg-primary rounded`}\r\n style={{ width: `${length}%`, marginLeft: `${start}%` }}>\r\n </div>\r\n </OverlayTrigger>\r\n </div>\r\n );\r\n}\r\n\r\ninterface ClipItemProps {\r\n clip: Clip;\r\n duration: number;\r\n}\r\n\r\nexport function ClipItem(props: ClipItemProps): JSX.Element {\r\n const { clip } = props;\r\n\r\n const clipLength = clip.endTime - clip.startTime;\r\n\r\n return (\r\n <div className='border rounded w-33 py-3 px-1 d-flex align-items-center mr-3 flex-wrap'>\r\n <div className='d-flex align-self-center w-100'>\r\n <SvgContainer\r\n className='svg-container align-self-center'\r\n svgName={cvSvgLibrary.Play}\r\n size={SvgContainerSize.ExtraLarge}\r\n />\r\n <span className={styles.content}>\r\n <div className='d-flex'>\r\n <h3 className={`h6 mb-0 d-inline-block text-truncate`} title={clip.name}>\r\n {clip.name}\r\n </h3>\r\n <div className='flex-shrink-0'>\r\n <Badge type={ BadgeType.Duration } data={clipLength * 1000} />\r\n </div>\r\n </div>\r\n {clip.description &&\r\n <p className={`${styles.clampedDescription} mb-0 clamp-2`} title={clip.description}>{clip.description}</p>}\r\n <ClipDuration {...props} />\r\n </span>\r\n <SvgContainer\r\n className='svg-container align-self-center'\r\n svgName={cvSvgLibrary.More}\r\n size={SvgContainerSize.ExtraLarge}\r\n />\r\n </div>\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\nimport { Text, Video, cvSvgLibrary, IconButton, SvgContainer } from '@clickview/shared';\r\n\r\nimport { ClipItem } from './ClipItem';\r\n\r\nconst namespace = 'shared.clips';\r\n\r\ninterface ClipsProps {\r\n video: Video;\r\n}\r\n\r\nexport function Clips(props: ClipsProps): JSX.Element {\r\n const { video } = props;\r\n\r\n const hasClips = video?.clips?.data?.length;\r\n\r\n return (\r\n <div className='pb-3'>\r\n <h2 className='h4'>\r\n <Text namespace={namespace} phrase='clips' />\r\n <IconButton className='btn btn-outline-dark ml-3 align-middle' svgName={cvSvgLibrary.Plus}>\r\n <Text namespace={namespace} phrase='create' />\r\n </IconButton>\r\n </h2>\r\n <div className='d-flex align-items-stretch'>\r\n {hasClips\r\n ? video.clips.data.map(c => <ClipItem duration={video.duration} clip={c} key={c.id} />)\r\n : <div>\r\n <SvgContainer className='svg-container mr-2 align-top' svgName={cvSvgLibrary.Star} />\r\n <Text namespace={namespace} phrase='empty' />\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"content\":\"cv--content--22tRu\",\"clamped\":\"cv--clamped--_LK8Q\",\"clampedDescription\":\"cv--clampedDescription--18yOL\",\"bar\":\"cv--bar--3-kb8\",\"subBar\":\"cv--subBar--1ROlV\"};","import * as React from 'react';\r\n\r\nimport { Core } from '@clickview/common';\r\nimport { SvgContainer, cvSvgLibrary, AppLink, SeriesLink, Video, Series } from '@clickview/shared';\r\n\r\nimport { PlayerContext } from 'shared/contexts';\r\nimport { WebPlayer } from 'shared/components';\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport styles from './floating-player.scss';\r\n\r\nfunction getSeriesAppLink(id: string): Core.AppLink {\r\n return {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SERIES,\r\n args: [id]\r\n };\r\n}\r\n\r\nfunction getVideoAppLink(id: string): Core.AppLink {\r\n return {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.PLAY_VIDEO,\r\n args: [id]\r\n };\r\n}\r\n\r\ninterface FloatingPlayerTitleProps {\r\n video: Video;\r\n}\r\n\r\nfunction FloatingPlayerTitle(props: FloatingPlayerTitleProps): JSX.Element {\r\n const { video } = props;\r\n\r\n return (\r\n <h2 className='mb-0 h6'>\r\n {!!video.series && <SeriesLink video={video} appLink={getSeriesAppLink(video.series.id)} />}\r\n <AppLink appLink={getVideoAppLink(video.id)}>\r\n {video.name}\r\n </AppLink>\r\n </h2>\r\n );\r\n}\r\n\r\nexport function FloatingPlayer(): React.ReactElement {\r\n const { video, webPlayerUrl, viewportPosition, setVideo, isOnPlayPage } = React.useContext(PlayerContext);\r\n\r\n if (!video)\r\n return <></>;\r\n\r\n let style = {};\r\n let className = styles.fixed;\r\n\r\n if (viewportPosition) {\r\n className = styles.inline;\r\n style = viewportPosition;\r\n }\r\n\r\n /**\r\n * Add box shadow when player is floating\r\n */\r\n if (!viewportPosition)\r\n className += ' shadow';\r\n\r\n return (\r\n <div style={style} className={`${className}`}>\r\n <WebPlayer id={video.id} webPlayerHost={webPlayerUrl} className={'embed-responsive-16by9'} key={video.id} />\r\n {!viewportPosition &&\r\n <div className='p-2 bg-white d-flex justify-content-between align-items-center'>\r\n <FloatingPlayerTitle video={video} />\r\n <span className={`${styles.buttons} flex-shrink-1`}>\r\n <span className={`cursor-pointer ml-1 float-right`} role='button' tabIndex={0} onClick={() => setVideo(null)}>\r\n <SvgContainer svgName={cvSvgLibrary.Close} />\r\n </span>\r\n <AppLink appLink={getVideoAppLink(video.id)}>\r\n {!isOnPlayPage && <SvgContainer\r\n svgName={cvSvgLibrary.NewWindow}\r\n className={`${styles.flippedIcon} d-inline-block svg-container float-right`} />}\r\n </AppLink>\r\n </span>\r\n </div>}\r\n </div>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"fixed\":\"cv--fixed--3C4_W\",\"inline\":\"cv--inline--2voRI\",\"closeSvg\":\"cv--closeSvg--2RiDj\",\"buttons\":\"cv--buttons--ZbN3s\",\"flippedIcon\":\"cv--flippedIcon--3nkTw\"};","import * as React from 'react';\r\nimport * as ImmersiveReaderSdk from '@microsoft/immersive-reader-sdk';\r\n\r\nimport { Flight, LanguageService } from '@clickview/common';\r\nimport { ConfigRequests } from '@clickview/shared';\r\n\r\nimport styles from './immersive-reader.scss';\r\n\r\nconst namespace = 'shared.immersiveReader';\r\n\r\ninterface ImmersiveReaderResponse {\r\n token: string;\r\n subdomain: string;\r\n}\r\n\r\ninterface ImmersiveReaderProps {\r\n text: string;\r\n title?: string;\r\n className?: string;\r\n}\r\n\r\nexport function ImmersiveReader(props: ImmersiveReaderProps): JSX.Element {\r\n const config = Flight.useBasicFetch(ConfigRequests.config);\r\n const immersiveReaderResponse = Flight.useBasicFetch<ImmersiveReaderResponse>({\r\n url: '/api/integrations/token/immersive-reader',\r\n key: 'immersive:reader:token'\r\n });\r\n\r\n if (!config.data || !immersiveReaderResponse.data)\r\n return <></>;\r\n\r\n if (!props.title)\r\n props.title = LanguageService.getPhrase(namespace, 'titleFallback');\r\n\r\n function launchImmersiveReader(): void {\r\n // TODO: analytics\r\n\r\n const content = {\r\n title: props.title,\r\n chunks: [{\r\n content: props.text\r\n }]\r\n };\r\n\r\n const { data: { subdomain, token } } = immersiveReaderResponse;\r\n\r\n const options = {\r\n uiZIndex: 5000 // Should always appear above our content\r\n };\r\n\r\n ImmersiveReaderSdk.launchAsync(token, subdomain, content, options);\r\n }\r\n\r\n return (\r\n <div className={`${styles.button} ${props.className || ''}`} onClick={launchImmersiveReader}>\r\n <svg viewBox='0 0 40 37'>\r\n <path d='M37.4,0.9 L37.4,9.6 L35.4,9.6 L35.4,2.9 L24.4,2.9 C22.9,3.3 20,4.5 20,6 L20,17.2 L18,17.2 L18,6 C18,5 15.6,3.6 13.8,2.9 L2,2.9 L2,29 L12.4,29 L12.4,31 L0,31 L0,0.9 L14.1,0.9 L14.3,1 C15,1.2 17.5,2.2 18.9,3.7 C20.5,1.9 23.5,1.1 23.9,1 L24.1,1 L37.4,1 L37.4,0.9 Z' fill='#000000'></path>\r\n <path d='M27.4,37 L25.8,37 L18.4,29.4 L14,29.4 L14,21 L18.4,20.9 L26.1,13 L27.4,13 L27.4,37 Z M16,27.4 L19.2,27.4 L25.3,33.7 L25.3,16.6 L19.2,22.9 L15.9,22.9 L15.9,27.4 L16,27.4 Z' fill='#0197F2'></path>\r\n <path d='M31.3,32.7 L29.6,31.7 C29.6,31.7 31.7,28.3 31.7,25.2 C31.7,21.9 29.6,18.5 29.6,18.4 L31.3,17.4 C31.4,17.6 33.7,21.3 33.7,25.2 C33.7,28.8 31.4,32.6 31.3,32.7 Z' fill='#0197F2'></path>\r\n <path d='M36.4,36.2 L34.8,35 C34.8,35 38,30.8 38,25.2 C38,19.6 34.8,15.4 34.8,15.4 L36.4,14.2 C36.5,14.4 40,19 40,25.3 C40,31.5 36.5,36 36.4,36.2 Z' fill='#0197F2'></path>\r\n </svg>\r\n </div>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"button\":\"cv--button--10_KK\"};","export * from './web-player/WebPlayer';\r\nexport * from './floating-player/FloatingPlayer';\r\nexport * from './resources/Resources';\r\nexport * from './video-details/VideoDetails';\r\nexport * from './play-page/PlayPage';\r\nexport * from './user-options/UserOptions';\r\nexport * from './synopsis/Synopsis';\r\nexport * from './interactives/Interactives';\r\nexport * from './clips/Clips';\r\nexport * from './immersive-reader/ImmersiveReader';","import * as React from 'react';\r\nimport { Text, Interactive, SvgContainer, cvSvgLibrary, SvgContainerSize } from '@clickview/shared';\r\n\r\nimport styles from './interactives.scss';\r\n\r\nconst namespace = 'shared.interactives';\r\n\r\n\r\nfunction getContributorName(interactive: Interactive): string {\r\n const { owner } = interactive;\r\n\r\n if (!owner || !owner.name || !owner.surname)\r\n return '';\r\n\r\n return owner.name.substring(0, 1) + '. ' + owner.surname;\r\n}\r\n\r\nfunction getContributorOrg(interactive: Interactive): string {\r\n const { owner } = interactive;\r\n return owner?.customers?.data?.[0]?.organisation?.name;\r\n}\r\n\r\ninterface InteractiveItemProps {\r\n interactive: Interactive;\r\n}\r\n\r\nexport function InteractiveItem(props: InteractiveItemProps): JSX.Element {\r\n const { interactive } = props;\r\n\r\n const contributor = getContributorName(interactive);\r\n const org = getContributorOrg(interactive);\r\n\r\n return (\r\n <div className='border rounded w-33 py-3 px-1 d-flex align-items-center mr-3'>\r\n <div className='d-flex align-items-center w-100'>\r\n <SvgContainer\r\n className='svg-container'\r\n svgName={cvSvgLibrary.Play}\r\n size={SvgContainerSize.ExtraLarge}\r\n />\r\n <span className={styles.content}>\r\n {org &&\r\n <small>{contributor && <>{contributor}, </>}<em>{org}</em></small>}\r\n <h3 className={`h6 mb-0 clamp-2 ${styles.clamped}`} title={interactive.name}>{interactive.name}</h3>\r\n <SvgContainer className='svg-container align-middle mr-1' svgName={cvSvgLibrary.Preview} />\r\n <span className='text-info'><Text namespace={namespace} phrase={'preview'} /></span>\r\n </span>\r\n <SvgContainer\r\n className='svg-container'\r\n svgName={cvSvgLibrary.More}\r\n size={SvgContainerSize.ExtraLarge}\r\n />\r\n </div>\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\nimport { Text, Video, cvSvgLibrary, IconButton, SvgContainer } from '@clickview/shared';\r\n\r\nimport { InteractiveItem } from './InteractiveItem';\r\n\r\nconst namespace = 'shared.interactives';\r\n\r\ninterface InteractivesProps {\r\n video: Video;\r\n}\r\n\r\nexport function Interactives(props: InteractivesProps): JSX.Element {\r\n const { video } = props;\r\n\r\n const hasInteractives = video?.interactives?.data?.length;\r\n\r\n return (\r\n <div className='pb-3'>\r\n <h2 className='h4'>\r\n <Text namespace={namespace} phrase='interactives' />\r\n <IconButton className='btn btn-outline-dark ml-3 align-middle' svgName={cvSvgLibrary.Plus}>\r\n <Text namespace={namespace} phrase='create' />\r\n </IconButton>\r\n </h2>\r\n <div className='d-flex align-items-stretch'>\r\n {hasInteractives\r\n ? video.interactives.data.map(i => <InteractiveItem interactive={i} key={i.id} />)\r\n : <div>\r\n <SvgContainer className='svg-container mr-2 align-top' svgName={cvSvgLibrary.Star} />\r\n <Text namespace={namespace} phrase='empty' />\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"content\":\"cv--content--1D6Hx\",\"clamped\":\"cv--clamped--2sHZC\"};","import React from 'react';\r\n\r\nimport { DivButton } from '@clickview/shared';\r\n\r\nimport styles from './pill-tab-selector.scss';\r\n\r\nexport interface PillTab {\r\n name: string;\r\n onSelect: () => void;\r\n active: boolean;\r\n}\r\n\r\ninterface PillTabSelectorProps {\r\n tabs: PillTab[];\r\n}\r\n\r\nexport function PillTabSelector(props: PillTabSelectorProps): JSX.Element {\r\n function onSelectTab(tab: PillTab): void {\r\n if (tab.active)\r\n return;\r\n\r\n tab.onSelect();\r\n }\r\n\r\n return (\r\n <nav>\r\n <ul className={`list-unstyled d-inline-block border border-dark ${styles.pillTabSelector}`}>\r\n {props.tabs.map(tab => (\r\n <li className={`p-0 ${tab.active ? 'btn btn-dark' : 'btn btn-outline-dark'}`} key={tab.name}>\r\n <DivButton className='cursor-pointer outline-none py-1' onClick={() => onSelectTab(tab)}>\r\n {tab.name}\r\n </DivButton>\r\n </li>\r\n ))}\r\n </ul>\r\n </nav>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"pillTabSelector\":\"cv--pillTabSelector--33p-_\"};","import * as React from 'react';\r\nimport { Video } from '@clickview/shared';\r\n\r\ninterface BadgesProps {\r\n video: Video;\r\n}\r\n\r\nexport function Badges(props: BadgesProps): React.ReactElement {\r\n const { video } = props;\r\n const { rating, productionYear } = video;\r\n\r\n return (\r\n <div>\r\n {rating && <span className='badge badge-light p-1 mr-1'>{rating.code}</span>}\r\n {productionYear && <span className='badge badge-light p-1 mr-1'>{productionYear}</span>}\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\nimport { IconButton, cvSvgLibrary, LanguageNamespaceContext, Text, VideoActionsContext, Video, VideoAction } from '@clickview/shared';\r\n\r\nconst namespace = 'shared.playPage';\r\n\r\ninterface ButtonsProps {\r\n video: Video;\r\n}\r\n\r\nexport function Buttons(props: ButtonsProps): React.ReactElement {\r\n const leftBtnClasses = 'btn btn-outline-secondary mr-2';\r\n const rightBtnClasses = 'btn btn-light float-right ml-2';\r\n\r\n const { getActionAppLink } = React.useContext(VideoActionsContext);\r\n\r\n return (\r\n <LanguageNamespaceContext.Provider value={namespace}>\r\n <div className='mt-3 clearfix'>\r\n <IconButton svgName={cvSvgLibrary.Plus} className={leftBtnClasses}><Text phrase='createInteractive' /></IconButton>\r\n <IconButton svgName={cvSvgLibrary.Plus} className={leftBtnClasses}><Text phrase='createClip' /></IconButton>\r\n\r\n <IconButton svgName={cvSvgLibrary.More} className={rightBtnClasses}><Text phrase='more' /></IconButton>\r\n <IconButton\r\n svgName={cvSvgLibrary.Share}\r\n className={rightBtnClasses}\r\n appLink={getActionAppLink(props.video, VideoAction.Share)}\r\n >\r\n <Text phrase='share' />\r\n </IconButton>\r\n <IconButton svgName={cvSvgLibrary.AddToPlaylists} className={rightBtnClasses}><Text phrase='addToPlaylist' /></IconButton>\r\n <IconButton svgName={cvSvgLibrary.Plus} className={rightBtnClasses}><Text phrase='favourite' /></IconButton>\r\n </div>\r\n </LanguageNamespaceContext.Provider>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { FunctionHelper, Core } from '@clickview/common';\r\nimport { BackButton, Video, Text, VideoList, Series, VideoActionsContext } from '@clickview/shared';\r\n\r\nimport { Resources, VideoDetailsWithScrollbar, Interactives, Clips } from 'shared/components';\r\nimport { PlayerPosition, PlayerContext } from 'shared/contexts';\r\nimport { useOnScroll, useOnResize } from 'shared/hooks';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { VideoTitle } from './VideoTitle';\r\nimport { Badges } from './Badges';\r\nimport { Buttons } from './Buttons';\r\nimport { Synopsis } from '../synopsis/Synopsis';\r\nimport { getVideoActionAppLink } from 'shared/utils';\r\n\r\nconst namespace = 'shared.playPage';\r\n\r\nconst getVideoAppLink = (video: Video): Core.AppLink => ({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.PLAY_VIDEO,\r\n args: [video.id]\r\n});\r\n\r\nconst getSeriesAppLink = (series: Series): Core.AppLink => ({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SERIES,\r\n args: [series.id]\r\n});\r\n\r\nfunction getUpdate(\r\n placeholder: React.MutableRefObject<HTMLElement>,\r\n setPosition: (position: PlayerPosition) => void\r\n): () => void {\r\n return () => {\r\n if (!placeholder.current)\r\n return;\r\n\r\n const rect = placeholder.current.getBoundingClientRect();\r\n const left = window.pageXOffset || document.documentElement.scrollLeft;\r\n const top = window.pageYOffset || document.documentElement.scrollTop;\r\n\r\n /**\r\n * Only show floating player\r\n * if the normal player is no longer in view\r\n */\r\n if (rect.top < -rect.height) {\r\n setPosition(null);\r\n return;\r\n }\r\n\r\n setPosition({ top: top + rect.top, left: left + rect.left, width: rect.width });\r\n };\r\n}\r\n\r\ninterface PlayPageProps {\r\n video: Video;\r\n relatedVideos: Video[];\r\n setFavorite?: (favorite: boolean) => void;\r\n}\r\n\r\nexport function PlayPage(props: PlayPageProps): JSX.Element {\r\n const { video, relatedVideos } = props;\r\n\r\n const { setViewportPosition, setIsOnPlayPage } = React.useContext(PlayerContext);\r\n\r\n /**\r\n * TODO: Change this to default to showSynopsis if we have a glance\r\n */\r\n const [ showSynopsis, setShowSynopsis ] = React.useState(true);\r\n /**\r\n * Get reference to the placeholder domElement\r\n */\r\n const placeholder = React.useRef(null);\r\n const placeholderRef = React.useCallback(node => {\r\n if (!node)\r\n return;\r\n\r\n placeholder.current = node;\r\n update();\r\n }, []);\r\n\r\n /**\r\n * Memoize so we don't call throttle repeatedly\r\n */\r\n const update = React.useMemo(() => FunctionHelper.throttle(getUpdate(placeholder, setViewportPosition), 100, {\r\n leading: true,\r\n trailing: true\r\n }), []);\r\n\r\n /**\r\n * Bind update to 'scroll' and 'resize'\r\n */\r\n useOnScroll(update);\r\n useOnResize(update);\r\n\r\n /**\r\n * Clear the position when this component is closed\r\n */\r\n React.useEffect(() => {\r\n\r\n setIsOnPlayPage(true);\r\n return () => {\r\n setViewportPosition(null);\r\n setIsOnPlayPage(false);\r\n };\r\n }, []);\r\n\r\n return (\r\n <VideoActionsContext.Provider value={{ getActionAppLink: getVideoActionAppLink }}>\r\n <div className='d-flex justify-content-between'>\r\n <BackButton\r\n appLink={{\r\n application: AppChannels.DASHBOARD,\r\n action: Actions.Dashboard.HOME\r\n }}\r\n backToName='Home'\r\n />\r\n <button className='btn btn-light'><Text namespace={namespace} phrase='classroomMode' /></button>\r\n </div>\r\n <div className='embed-responsive embed-responsive-16by9 my-3' ref={placeholderRef}></div>\r\n <VideoTitle video={video} setFavorite={props.setFavorite} />\r\n <Badges video={video} />\r\n <Buttons video={video} />\r\n <hr />\r\n {showSynopsis\r\n ? <Synopsis video={video} onClickFullDescription={() => setShowSynopsis(false)} />\r\n : <VideoDetailsWithScrollbar video={video} onClickShowSynopsis={() => setShowSynopsis(true)} /> }\r\n <Resources video={video} className='my-3' />\r\n <Interactives video={video} />\r\n <Clips video={video} />\r\n {!!relatedVideos && <>\r\n <h2 className={'h4 mt-3'}><Text namespace={namespace} phrase={'relatedVideos'} /></h2>\r\n <VideoList\r\n videos={relatedVideos}\r\n getSeriesAppLink={getSeriesAppLink}\r\n getVideoAppLink={getVideoAppLink}\r\n />\r\n </>}\r\n </VideoActionsContext.Provider>\r\n );\r\n}","import * as React from 'react';\r\nimport { Core, FunctionHelper } from '@clickview/common';\r\nimport { Video, SeriesLink, FavoriteButton } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\ninterface VideoTitleProps {\r\n video: Video;\r\n setFavorite?: (favorite: boolean) => void;\r\n}\r\n\r\nexport function VideoTitle(props: VideoTitleProps): React.ReactElement {\r\n const { video } = props;\r\n\r\n const tempAppLink: Core.AppLink = {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SERIES,\r\n args: video.series ? [video.series.id] : []\r\n };\r\n\r\n return (\r\n <div className='mb-2'>\r\n <h1 className='h3 d-inline-block m-0'>\r\n {!!video.series && <SeriesLink video={video} appLink={tempAppLink} />}\r\n {video.name}\r\n </h1>\r\n {!!FunctionHelper.isFunction(props.setFavorite) &&\r\n <FavoriteButton\r\n setFavorite={props.setFavorite}\r\n video={video}\r\n className='d-inline-block ml-2 align-text-bottom'\r\n />\r\n }\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { Video } from '@clickview/shared';\r\n\r\ninterface VideoResourcesProps {\r\n video: Video;\r\n className?: string;\r\n}\r\n\r\nexport function Resources(props: VideoResourcesProps): React.ReactElement {\r\n const { video } = props;\r\n\r\n if (!video.resources || !video.resources.data || !video.resources.data.length)\r\n return <></>;\r\n\r\n return (\r\n <div className={props.className}>\r\n <h2 className='h4'>Resources</h2>\r\n {video.resources.data.map((r, i) => <div key={i}>{r.name}</div>)}\r\n </div>\r\n );\r\n}","import React from 'react';\r\nimport * as CopyToClipboard from 'react-copy-to-clipboard';\r\nimport { Dropdown } from 'react-bootstrap';\r\n\r\nimport { Text, Checkbox, LanguageNamespaceContext, EmbedResolution, EmbedHelper } from '@clickview/shared';\r\n\r\nimport styles from './copy-embed-html.scss';\r\n\r\nconst namespace = 'share.copyEmbedHtml';\r\n\r\ninterface CopyEmbedHtmlProps {\r\n shortCode: string;\r\n}\r\n\r\nexport function CopyEmbedHtml(props: CopyEmbedHtmlProps): JSX.Element {\r\n const videoSizes = EmbedHelper.getEmbedResolutions();\r\n\r\n const [ copyBtnPhrase, setCopyBtnPhrase ] = React.useState<'copy' | 'copied'>('copy');\r\n const [ autoplay, setAutoplay ] = React.useState(false);\r\n const [ videoSize, setVideoSize ] = React.useState<EmbedResolution>(videoSizes.find(s => s.width === '100%'));\r\n\r\n // TODO: This embed string will likely get generated by the backend once that's done, so this will probably go.\r\n function getEmbedString(): string {\r\n const baseUrl = 'https://localhost:5001/share/embed';\r\n\r\n const dynamicAttributes = videoSize.width === '100%'\r\n ? 'style=\"position:absolute; top:0; left:0; width:100%; height:100%;\"'\r\n : `width=\"${videoSize.width}\" height=\"${videoSize.height}\"`;\r\n\r\n const fixedAttributes = 'frameborder=\"0\" allowfullscreen webkitallowfullscreen mozallowfullscreen';\r\n\r\n const src = `src=\"${baseUrl}/${props.shortCode}?a=${autoplay}\"`;\r\n\r\n return `<iframe ${dynamicAttributes} ${fixedAttributes} ${src}></iframe>`;\r\n }\r\n\r\n const embedString = getEmbedString();\r\n\r\n return (\r\n <LanguageNamespaceContext.Provider value={namespace}>\r\n <label className='m-0'><Text namespace={namespace} phrase='label' /></label>\r\n <div className='position-relative mb-2'>\r\n <textarea\r\n className='form-control rounded w-100 h-100 bg-white border-dark'\r\n spellCheck={false}\r\n value={embedString}\r\n rows={5}\r\n readOnly\r\n />\r\n <div className={`input-group-append rounded ${styles.copyBtnContainer}`}>\r\n <CopyToClipboard onCopy={() => setCopyBtnPhrase('copied')} text={embedString}>\r\n <button className={`btn bg-white ${styles.copyBtn}`}>\r\n <Text phrase={copyBtnPhrase} />\r\n </button>\r\n </CopyToClipboard>\r\n </div>\r\n </div>\r\n\r\n <div className='d-flex align-items-center'>\r\n <div className='mr-1'>\r\n <Text phrase='videoSize' />\r\n </div>\r\n <div className='pr-3'>\r\n <Dropdown>\r\n <Dropdown.Toggle id='embed-resolution' variant='outline-dark'>\r\n {videoSize.label}\r\n </Dropdown.Toggle>\r\n\r\n <Dropdown.Menu>\r\n {videoSizes.map(size => (\r\n <Dropdown.Item\r\n key={`${size.width}x${size.height}`}\r\n onClick={() => setVideoSize(size)}\r\n >\r\n {size.label}\r\n </Dropdown.Item>\r\n ))}\r\n </Dropdown.Menu>\r\n </Dropdown>\r\n </div>\r\n\r\n <div className='mr-1'>\r\n <Text phrase='autoplay' />\r\n </div>\r\n <Checkbox id={props.shortCode} checked={autoplay} onChange={() => setAutoplay(!autoplay)} />\r\n </div>\r\n </LanguageNamespaceContext.Provider>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"copyBtnContainer\":\"cv--copyBtnContainer--3SR_7\",\"copyBtn\":\"cv--copyBtn--B_4l9\"};","import React from 'react';\r\nimport { BaseObject } from '@clickview/shared';\r\nimport { Avatar } from 'shared/components/avatar/Avatar';\r\n\r\ninterface ShareeItemProps {\r\n entity: BaseObject;\r\n}\r\n\r\nexport function ShareeItem(props: ShareeItemProps): JSX.Element {\r\n return (\r\n <div className='d-flex align-items-center'>\r\n <div className='pr-2'>\r\n {/* TODO: Add avatar to user and classroom models? */}\r\n <Avatar imageUrl='' />\r\n </div>\r\n\r\n <div>\r\n <h4 className='font-size-normal font-weight-normal m-0'>{props.entity.name}</h4>\r\n <p className='text-muted m-0'>Email or classroom count here idk</p>\r\n </div>\r\n\r\n <div>\r\n\r\n </div>\r\n </div>\r\n );\r\n}","import React from 'react';\r\nimport { BaseObject, SvgContainer, cvSvgLibrary, DivButton } from '@clickview/shared';\r\n\r\nimport styles from './tokenized-typeahead.scss';\r\n\r\nfunction mapEntityTypeToBackgroundColor(entityType: string): string {\r\n switch (entityType) {\r\n case 'user': {\r\n return styles.selectedUser;\r\n }\r\n\r\n case 'classroom': {\r\n return styles.selectedClassroom;\r\n }\r\n }\r\n}\r\n\r\ninterface InputSelectionProps {\r\n selection: BaseObject;\r\n onClickRemove: (id: string) => void;\r\n}\r\n\r\nexport function InputSelection(props: InputSelectionProps): JSX.Element {\r\n const colourClass = mapEntityTypeToBackgroundColor('user');\r\n\r\n return (\r\n <div className={`${colourClass} d-flex align-items-center pl-2 pr-1 mr-1 mt-1`}>\r\n <span className='mr-1'>{props.selection.name}</span>\r\n\r\n <DivButton className='cursor-pointer' onClick={() => props.onClickRemove(props.selection.id)}>\r\n <SvgContainer svgName={cvSvgLibrary.Close} />\r\n </DivButton>\r\n </div>\r\n );\r\n}","import React from 'react';\r\n\r\nimport { ArrayHelper, LanguageService } from '@clickview/common';\r\nimport { BaseObject, SvgContainer, cvSvgLibrary, SearchBar } from '@clickview/shared';\r\n\r\nimport { ShareeItem } from 'shared/components/share/sharee-item/ShareeItem';\r\nimport { InputSelection } from './InputSelection';\r\n\r\nimport styles from './tokenized-typeahead.scss';\r\n\r\nconst namespace = 'shared.tokenizedTypeahead';\r\n\r\ninterface TokenizedTypeaheadProps {\r\n placeholder: string;\r\n selections: BaseObject[];\r\n updateSelections: (suggestion: BaseObject) => void;\r\n removeSelection: (id: string) => void;\r\n recentSearchHeading?: string;\r\n endpoint?: string;\r\n localSuggestions?: BaseObject[];\r\n}\r\n\r\n/**\r\n * This component extends the functionality of the `SearchBar` component by\r\n * displaying a list of selections as tokens inside the search bar.\r\n * \r\n * Any component using this component is responsible for managing the state of\r\n * these tokens (selections). See `MainShareView` for an example.\r\n */\r\nexport function TokenizedTypeahead(props: TokenizedTypeaheadProps): JSX.Element {\r\n function onSuggestionSelected(suggestion: any): void {\r\n props.updateSelections(suggestion);\r\n }\r\n\r\n return (\r\n <div className='form-control h-auto d-flex flex-wrap align-items-center py-1 px-0 position-relative'>\r\n <SvgContainer className='svg-container mx-1 h-100 align-self-start' svgName={cvSvgLibrary.Search} />\r\n\r\n <div className={`${styles.selectionContainer} d-flex flex-wrap align-items-center mt-n1`}>\r\n {props.selections.map(s => (\r\n <InputSelection\r\n key={s.id}\r\n selection={s}\r\n onClickRemove={(id: string) => props.removeSelection(id)}\r\n />\r\n ))}\r\n\r\n <SearchBar\r\n onSuggestionSelected={onSuggestionSelected}\r\n onBackspace={() => props.removeSelection(ArrayHelper.last(props.selections).id)}\r\n local={props.localSuggestions}\r\n recentSearchHeading={props.recentSearchHeading || LanguageService.getPhrase(namespace, 'recentSearchHeading')}\r\n recentSearches={[]}\r\n placeholder={props.placeholder}\r\n searchIconPlacement={false}\r\n activationLength={2}\r\n clearQueryOnSelect\r\n getSuggestionComponent={suggestion => <ShareeItem entity={suggestion} />}\r\n theme={{\r\n container: styles.container,\r\n suggestionsContainerOpen: `bg-white py-1 rounded border mt-1 ${styles.suggestionsContainerOpen}`,\r\n suggestionsList: 'list-unstyled m-0',\r\n suggestion: 'cursor-pointer py-1 px-2',\r\n suggestionHighlighted: styles.suggestionHighlighted\r\n }}\r\n />\r\n </div>\r\n </div>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"cv--container--16rdL\",\"suggestionsContainerOpen\":\"cv--suggestionsContainerOpen--2886c\",\"selectionContainer\":\"cv--selectionContainer--12TCg\",\"suggestionHighlighted\":\"cv--suggestionHighlighted--3HZFR\",\"selectedUser\":\"cv--selectedUser--3NTEb\",\"selectedClassroom\":\"cv--selectedClassroom--x8G1B\"};","import * as React from 'react';\r\nimport * as marked from 'marked';\r\n\r\nimport { Video, Text, DivButton } from '@clickview/shared';\r\n\r\nimport styles from './synopsis.scss';\r\n\r\nconst namespace = 'shared.synopsis';\r\n\r\ninterface SynopsisProps {\r\n video: Video;\r\n onClickFullDescription: () => void;\r\n}\r\n\r\nexport function Synopsis(props: SynopsisProps): JSX.Element {\r\n const { video, onClickFullDescription } = props;\r\n\r\n /**\r\n * If we don't have a glance, or our glance is not markdown\r\n * we tell the PlayPage to render the description instead and return.\r\n */\r\n if (!video.glance || !video.glance.content || video.glance.format !== 'text/markdown') {\r\n onClickFullDescription();\r\n return <></>;\r\n }\r\n\r\n /* These url values should be replaced by something dynamic in the future */\r\n const images = [\r\n { className: styles.topLeft, url: 'https://i.imgur.com/3GafOwO.png' },\r\n { className: styles.topRight, url: 'https://i.imgur.com/wcNZVth.png' },\r\n { className: styles.bottomLeft, url: 'https://i.imgur.com/vUEo7H2.png' },\r\n { className: styles.bottomRight, url: 'https://i.imgur.com/R3gcyGY.png' },\r\n ];\r\n\r\n return (\r\n <div className={\r\n `rounded border px-3 position-relative d-flex align-items-center justify-content-center ${styles.container}`\r\n }>\r\n <div className={`${styles.content} py-5`}>\r\n <h2><Text namespace={namespace} phrase='videoAtAGlance' /></h2>\r\n <div dangerouslySetInnerHTML={{ __html: marked(video.glance.content) }}></div>\r\n <DivButton onClick={props.onClickFullDescription} className='cursor-pointer d-inline-block'>\r\n <strong><Text namespace={namespace} phrase='showFullDescription' /></strong>\r\n </DivButton>\r\n </div>\r\n\r\n {images.map((img, i) => (\r\n <div\r\n key={i}\r\n className={`${img.className} ${styles.background}`}\r\n style={{ backgroundImage: `url('${img.url}')` }}\r\n />\r\n ))}\r\n </div>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"cv--container--1XOYA\",\"content\":\"cv--content--UcxNO\",\"background\":\"cv--background--3gpaY\",\"topLeft\":\"cv--topLeft--2s7I6\",\"bottomLeft\":\"cv--bottomLeft--23UKL\",\"topRight\":\"cv--topRight--ec_-l\",\"bottomRight\":\"cv--bottomRight--1xMKp\"};","import React from 'react';\r\nimport { DivButton } from '@clickview/shared';\r\n\r\ninterface ToggleSwitchProps {\r\n onClick: (...args: any) => any;\r\n on: boolean;\r\n disabled?: boolean;\r\n}\r\n\r\nexport function ToggleSwitch(props: ToggleSwitchProps): JSX.Element {\r\n function onClick(...args: any): void {\r\n if (props.disabled)\r\n return;\r\n\r\n props.onClick(...args);\r\n }\r\n\r\n const bootstrapClasses = 'd-inline-block float-right align-top custom-toggle toggle-option';\r\n const onClass = (props.on && !props.disabled) ? 'on' : '';\r\n const disabledClass = props.disabled ? 'disabled' : '';\r\n\r\n return (\r\n <DivButton\r\n onClick={onClick}\r\n className={`${bootstrapClasses} ${onClass} ${disabledClass}`}\r\n >\r\n <span className='handle' />\r\n </DivButton>\r\n );\r\n}","import * as React from 'react';\r\nimport { Button } from 'react-bootstrap';\r\n\r\nimport { CurrentUser, LanguageNamespaceContext, Text, AppLink } from '@clickview/shared';\r\n\r\nimport { Avatar } from 'shared/components/avatar/Avatar';\r\n\r\nimport styles from './user-options.scss';\r\n\r\ninterface UserOptionsProps {\r\n user: CurrentUser;\r\n}\r\n\r\n/**\r\n * TODO: Implement user options properly;\r\n */\r\nexport const UserOptions = React.memo(function(props: UserOptionsProps): React.ReactElement {\r\n const { user } = props;\r\n\r\n if (!user)\r\n return <Button variant={'primary'} className='mx-2 px-2'>Log in</Button>;\r\n\r\n const { avatar, displayName, customerName } = user;\r\n\r\n /**\r\n * We're not using react-bootstrap dropdown here because we need a custom toggle\r\n * and it doesn't seem like it's worth the hassle https://react-bootstrap.github.io/components/dropdowns/\r\n */\r\n return (\r\n <LanguageNamespaceContext.Provider value='shared.userOptions'>\r\n <div className='cursor-pointer mx-2 px-2 position-relative' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false'>\r\n <Avatar imageUrl={avatar} />\r\n <nav className={`dropdown-menu dropdown-arrow dropdown-menu-right ${styles.dropdownMenu}`}>\r\n <div className='dropdown-item'>\r\n <div className='m-0'><strong>{displayName}</strong></div>\r\n <div className='m-0 text-muted'>{customerName}</div>\r\n </div>\r\n <AppLink className='dropdown-item' appLink={null}>\r\n <span className={`${styles.iconPlaceholder} d-inline-block mr-2 align-middle`}></span>\r\n <Text phrase={'myProfile'} />\r\n </AppLink>\r\n <AppLink className='dropdown-item' appLink={null}>\r\n <span className={`${styles.iconPlaceholder} d-inline-block mr-2 align-middle`}></span>\r\n <Text phrase={'myPreferences'} />\r\n </AppLink>\r\n <AppLink className='dropdown-item' appLink={null}>\r\n <span className={`${styles.iconPlaceholder} d-inline-block mr-2 align-middle`}></span>\r\n <Text phrase={'signOut'} />\r\n </AppLink>\r\n </nav>\r\n </div>\r\n </LanguageNamespaceContext.Provider>\r\n );\r\n}, (prevProps, nextProps): boolean => {\r\n return prevProps.user?.id === nextProps.user?.id\r\n && prevProps.user?.avatar === nextProps.user?.avatar\r\n && prevProps.user?.displayName === nextProps.user?.displayName\r\n && prevProps.user?.customerName === nextProps.user?.customerName;\r\n});","// extracted by mini-css-extract-plugin\nmodule.exports = {\"iconPlaceholder\":\"cv--iconPlaceholder--2hr_4\"};","import * as React from 'react';\r\nimport Scrollbars from 'react-custom-scrollbars';\r\n\r\nimport { LanguageService } from '@clickview/common';\r\nimport { Video, BaseObject, BasePaginatedCollection, TagCollection, LanguageNamespaceContext, Text } from '@clickview/shared';\r\n\r\nimport { ImmersiveReader } from 'shared/components';\r\n\r\nimport styles from './video-details.scss';\r\n\r\nconst namespace = 'shared.videoDetails';\r\n\r\ninterface TagListProps {\r\n tags: TagCollection;\r\n className?: string;\r\n}\r\n\r\nfunction TagList(props: TagListProps): React.ReactElement {\r\n const { tags, className } = props;\r\n\r\n const hasTags = tags && tags.data && tags.data.length;\r\n\r\n if (!hasTags)\r\n return <></>;\r\n\r\n return (\r\n <div className={className}>\r\n <Text phrase='tags' /> {tags.data.map((t, i) =>\r\n <span className='badge mr-1 p-1 badge-light' key={i}>{t.name}</span>)}\r\n </div>\r\n );\r\n}\r\n\r\ninterface CommaListProps {\r\n label: string;\r\n items: BasePaginatedCollection<BaseObject>;\r\n className?: string;\r\n}\r\n\r\nfunction CommaList(props: CommaListProps): React.ReactElement {\r\n const { label, items, className } = props;\r\n\r\n const hasItems = items && items.data && items.data.length;\r\n\r\n if (!hasItems)\r\n return <></>;\r\n\r\n const commaSeperated = items.data.map(i => i.name).join(', ');\r\n\r\n return (\r\n <div className={className}>{label}: {commaSeperated}</div>\r\n );\r\n}\r\n\r\ninterface VideoDetailsProps {\r\n video: Video;\r\n}\r\n\r\nfunction VideoDetails(props: VideoDetailsProps): React.ReactElement {\r\n const { video } = props;\r\n const { tags, rating, productionYear, productionCompanies, distributors } = video;\r\n\r\n const ratingCode = rating && rating.code;\r\n\r\n /**\r\n * TODO: Use language service\r\n */\r\n return (\r\n <>\r\n <h2 className='h4'><Text phrase='details' /></h2>\r\n <div className='row no-gutters'>\r\n <div className='col-3'>\r\n {ratingCode && <div className='pb-2'><Text phrase='rating' options={{ code: ratingCode }} /></div>}\r\n {productionYear && <div className='pb-2'><Text phrase='productionYear' options={{ year: productionYear }} /></div>}\r\n </div>\r\n <div className='col-9'>\r\n <CommaList label={LanguageService.getPhrase(namespace, 'productionCompanies')} items={productionCompanies} className='pb-2' />\r\n <CommaList label={LanguageService.getPhrase(namespace, 'distributors')} items={distributors} className='pb-2' />\r\n <TagList tags={tags} className='pb-2' />\r\n </div>\r\n </div>\r\n </>\r\n );\r\n}\r\n\r\ninterface DescriptionProperties {\r\n description: string;\r\n immersiveReaderTitle?: string;\r\n}\r\n\r\nfunction Description(props: DescriptionProperties): React.ReactElement {\r\n const { description, immersiveReaderTitle } = props;\r\n\r\n if (!description)\r\n return <></>;\r\n\r\n /**\r\n * TODO: Linkify the description\r\n */\r\n return (\r\n <>\r\n <h2 className='h4'>\r\n <Text phrase='description' />\r\n <ImmersiveReader text={description} title={immersiveReaderTitle} className='pl-2' />\r\n </h2>\r\n <p>{description}</p>\r\n </>\r\n );\r\n}\r\n\r\ninterface DetailsPaneProps {\r\n video: Video;\r\n onClickShowSynopsis: () => void;\r\n}\r\n\r\nexport function VideoDetailsWithScrollbar(props: DetailsPaneProps): React.ReactElement {\r\n const { video } = props;\r\n\r\n return (\r\n <LanguageNamespaceContext.Provider value={namespace}>\r\n <div className='rounded border px-3 mb-3'>\r\n {/* 368 is the min height of Video at a glance which is defined as $glanceHeight in synopsis.scss */}\r\n <Scrollbars autoHeight autoHeightMax={368}>\r\n <div className='py-3'>\r\n <VideoDetails video={video} />\r\n <Description description={video.description} immersiveReaderTitle={video.name} />\r\n <span className={`${styles.showGlance} cursor-pointer`} onClick={props.onClickShowSynopsis} role='button' tabIndex={0}>\r\n <strong><Text namespace={namespace} phrase='showGlance' /></strong>\r\n </span>\r\n </div>\r\n </Scrollbars>\r\n </div>\r\n </LanguageNamespaceContext.Provider>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"showGlance\":\"cv--showGlance--2fhqC\"};","import React from 'react';\r\nimport { cvSvgLibrary, IconButton } from '@clickview/shared';\r\n\r\nexport function VideoInfoButton(props: React.PropsWithChildren<{}>): JSX.Element {\r\n return (\r\n <IconButton\r\n className='btn btn-outline-info d-block mx-auto mb-3'\r\n svgName={cvSvgLibrary.Video}\r\n >\r\n {props.children}\r\n </IconButton>\r\n );\r\n}","import * as React from 'react';\r\n\r\ninterface WebPlayerProps {\r\n className?: string;\r\n webPlayerHost: string;\r\n id: string;\r\n}\r\n\r\nexport function WebPlayer(props: WebPlayerProps): React.ReactElement {\r\n const url = `${props.webPlayerHost}home/ev?vid=${props.id}`;\r\n\r\n return (\r\n <div className={`embed-responsive ${props.className ? props.className : ''}`}>\r\n <iframe\r\n src={url}\r\n className='embed-responsive-item'\r\n allowFullScreen\r\n allow='autoplay; fullscreen'/>\r\n </div>\r\n );\r\n}","import { Actions as PlaylistActions } from '@clickview/playlists';\r\nimport { Actions as DashboardActions } from '@clickview/dashboard';\r\n\r\nexport const Actions = {\r\n Default: {\r\n ERROR: 'error',\r\n NOT_FOUND: 'not:found',\r\n DEV_ERROR: 'dev:error',\r\n DIALOG_ERROR: 'dialog:error',\r\n\r\n SERIES: 'series',\r\n PLAY_VIDEO: 'play:video',\r\n FAVORITE_VIDEOS: 'favorite:videos',\r\n EDIT_VIDEO: 'edit:video',\r\n EDIT_UPLOAD: 'edit:upload',\r\n SHARE: 'share',\r\n WATCH_HISTORY: 'watch:history'\r\n },\r\n\r\n Playlists: {\r\n HOME: PlaylistActions.Playlists.HOME,\r\n PLAYLIST: PlaylistActions.Playlists.PLAYLIST,\r\n NEW_PLAYLIST: PlaylistActions.Playlists.NEW_PLAYLIST,\r\n EDIT_PLAYLIST: PlaylistActions.Playlists.EDIT_PLAYLIST,\r\n DELETE_PLAYLIST: PlaylistActions.Playlists.DELETE_PLAYLIST,\r\n ADD_TO_PLAYLIST: PlaylistActions.Playlists.ADD_TO_PLAYLIST,\r\n REMOVE_VIDEO_FROM_PLAYLIST: PlaylistActions.Playlists.REMOVE_VIDEO_FROM_PLAYLIST\r\n },\r\n\r\n Dashboard: {\r\n HOME: DashboardActions.Dashboard.HOME,\r\n DASHBOARD: DashboardActions.Dashboard.DASHBOARD,\r\n VIDEO: DashboardActions.Dashboard.VIDEO\r\n },\r\n\r\n Classifications: {\r\n CLASSIFICATION: DashboardActions.Classifications.CLASSIFICATION,\r\n PLAYLIST: DashboardActions.Classifications.PLAYLIST,\r\n VIDEO: DashboardActions.Classifications.VIDEO,\r\n SERIES: DashboardActions.Classifications.SERIES\r\n },\r\n\r\n Notifications: {\r\n HOME: 'index'\r\n },\r\n\r\n Search: {\r\n HOME: 'index'\r\n },\r\n\r\n ContentUpdates: {\r\n CONTENT_UPDATES: PlaylistActions.ContentUpdates.CONTENT_UPDATES,\r\n CLASSIFICATION_UPDATE: PlaylistActions.ContentUpdates.CLASSIFICATION_UPDATE\r\n },\r\n\r\n UserManager: {\r\n STUDENTS: 'student:manager',\r\n TEACHERS: 'teacher:manager',\r\n REMOVE_USERS: 'remove:users',\r\n NEW_STUDENT: 'new:student',\r\n EDIT_STUDENT: 'edit:student',\r\n NEW_TEACHER: 'new:teacher',\r\n EDIT_TEACHER: 'edit:teacher',\r\n STUDENT_UPLOAD_REVIEW: 'student:upload:review',\r\n TEACHER_UPLOAD_REVIEW: 'teacher:upload:review'\r\n },\r\n\r\n Upload: {\r\n MY_UPLOADS: 'my:uploads',\r\n EDIT_UPLOAD: 'edit:upload',\r\n CANCEL_UPLOAD: 'cancel:upload'\r\n },\r\n\r\n Classrooms: {\r\n HOME: 'index',\r\n CLASSROOM: 'classroom',\r\n NEW_CLASSROOM: 'new:classroom',\r\n EDIT_CLASSROOM: 'edit:classroom',\r\n DELETE_CLASSROOM: 'delete:classroom',\r\n\r\n MANAGE_CLASSROOM: 'manage:classroom',\r\n ADD_STUDENTS: 'add:students',\r\n REMOVE_STUDENTS: 'remove:students',\r\n\r\n NEW_GROUP: 'new:group',\r\n EDIT_GROUP: 'edit:group',\r\n DELETE_GROUP: 'delete:group'\r\n }\r\n};","export const LayoutRegions = {\r\n CONTENT: 'content',\r\n POPUP: 'popup',\r\n ALERT: 'alert'\r\n};","export const Layouts = {\r\n TEACHER_LAYOUT: 'TeacherLayout',\r\n EMBED_LAYOUT: 'EmbedLayout'\r\n};","export const AppChannels = {\r\n DEFAULT: 'default:application',\r\n PLAYLISTS: 'lite:playlists:application',\r\n DASHBOARD: 'lite:dashboard:application',\r\n SUBJECT: 'lite:subject:application',\r\n EMBED: 'embed:application',\r\n NOTIFICATIONS: 'notifications:application',\r\n SEARCH: 'search:application',\r\n CONTENT_UPDATES: 'content:updates:application',\r\n USER_MANAGER: 'user:manager:application',\r\n UPLOAD: 'lite:upload:application',\r\n CLASSROOMS: 'classrooms:application'\r\n};\r\n\r\nexport const ServiceChannels = {\r\n COMBINE_UPLOADS: 'combine:uploads:service'\r\n};","import { SharedDataChannels } from '@clickview/shared';\r\n\r\nexport const DataChannels = {\r\n ...SharedDataChannels\r\n};","import { SharedDataServices, SharedServices } from '@clickview/shared';\r\n\r\nexport const Services = {\r\n ...SharedServices,\r\n CombineUploads: 'combine:uploads:service'\r\n};\r\n\r\nexport const DataServices = {\r\n ...SharedDataServices\r\n};","const ObjectWithStatements = {\r\n VIDEO: 'series,season,rating,producers,glance,distributors,resources,tags,productionCompanies,directors,links,thumbnail,interactives[owner[customers[organisation]]],clips'\r\n};\r\n\r\nconst CollectionWithStatements = {\r\n VIDEO_COLLECTION: `thumbnail,tags,rating,series,season`\r\n};\r\n\r\nexport const WithStatements = {\r\n ...ObjectWithStatements,\r\n ...CollectionWithStatements\r\n};","export * from './LiteActions';\r\nexport * from './LiteRadioChannels';\r\nexport * from './LiteLayoutRegions';\r\nexport * from './LiteLayouts';\r\nexport * from './WithStatements';\r\nexport * from './RadioChannels';\r\nexport * from './Services';","export * from './player/PlayerContext';","import * as React from 'react';\r\nimport { Flight } from '@clickview/common';\r\nimport { Config, Video, ConfigRequests } from '@clickview/shared';\r\n\r\nexport interface PlayerPosition {\r\n top: number;\r\n left: number;\r\n width: number;\r\n}\r\n\r\ninterface PlayerContextProps {\r\n webPlayerUrl: string;\r\n\r\n /**\r\n * Video that the player is currently plaing\r\n */\r\n video?: Video;\r\n setVideo: (video: Video) => void;\r\n\r\n /**\r\n * Position of the video player when we're on a play page\r\n * no position means we're floating on the bottom right of the screen\r\n */\r\n viewportPosition: PlayerPosition;\r\n setViewportPosition: (position: PlayerPosition) => void;\r\n\r\n /**\r\n * Tells the floating player to not render when it has\r\n * as video but no position. This prevents\r\n * a bug where the floating player flashes briefly when the\r\n * PlayView has set a video but not yet set a position\r\n */\r\n isOnPlayPage: boolean;\r\n setIsOnPlayPage: (isOnPlayPage: boolean) => void;\r\n}\r\n\r\nexport const PlayerContext = React.createContext<PlayerContextProps>(undefined);\r\n\r\nexport function PlayerContextProvider(props: React.PropsWithChildren<{}>): React.ReactElement {\r\n const { children } = props;\r\n\r\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config, { optimize: true });\r\n\r\n const [ video, setVideo ] = React.useState<Video>(null);\r\n const [ viewportPosition, setViewportPosition ] = React.useState<PlayerPosition>(null);\r\n const [ isOnPlayPage, setIsOnPlayPage ] = React.useState<boolean>(false);\r\n\r\n const context = {\r\n webPlayerUrl: config.data ? config.data.webPlayerUrl : '',\r\n video,\r\n setVideo,\r\n viewportPosition,\r\n setViewportPosition,\r\n isOnPlayPage,\r\n setIsOnPlayPage\r\n };\r\n\r\n return (\r\n <PlayerContext.Provider value={context}>\r\n {children}\r\n </PlayerContext.Provider>\r\n );\r\n}","export * from './not-found/LiteNotFoundError';","import { Core, LanguageService } from '@clickview/common';\r\n\r\nconst lang = 'shared.silentNotFound';\r\n\r\nexport class NotFoundError extends Core.SilentError {\r\n constructor() {\r\n /**\r\n * TODO: Set up language service properly\r\n */\r\n // super(LanguageService.getPhrase(lang, 'title'));\r\n super('Not Found');\r\n }\r\n\r\n public get name(): string {\r\n return 'NotFoundError';\r\n }\r\n}","import { Flight } from '@clickview/common';\r\n\r\nexport const AudienceRequests = {\r\n presentationAudiences(): Flight.Request {\r\n return {\r\n url: '/api/domain/v1/subjects/audiences',\r\n key: `presentation:audiences`\r\n };\r\n }\r\n};","import { Flight } from '@clickview/common';\r\nimport { WithStatements } from 'shared/constants';\r\n\r\nconst endpoints = {\r\n series: (id: string) => `/api/domain/v2/objects/${id}`,\r\n seriesVideos: (id: string, cursor: string) =>\r\n `/api/domain/v2/objects/${id}/videos?query=${WithStatements.VIDEO_COLLECTION}${addCursor(cursor)}`,\r\n\r\n breadcrumbs: (id: string) => `/api/domain/v1/subjects/${id}/path`\r\n};\r\n\r\nexport const SeriesRequests = {\r\n series(id: string): Flight.Request {\r\n return {\r\n url: endpoints.series(id),\r\n key: `series:${id}`\r\n };\r\n },\r\n seriesVideos(id: string, cursor: string): Flight.Request {\r\n return {\r\n url: endpoints.seriesVideos(id, cursor),\r\n key: `series:${id}:videos:${cursor}`\r\n };\r\n },\r\n breadcrumbs(classificationId: string): Flight.Request {\r\n if (!classificationId)\r\n return;\r\n\r\n return {\r\n url: endpoints.breadcrumbs(classificationId),\r\n key: `series:${classificationId}:breadcrumbs`\r\n };\r\n }\r\n};\r\n\r\nfunction addCursor(cursor: string): string {\r\n return cursor ? `&cursor=${cursor}` : '';\r\n}","import { Flight, HttpVerbs } from '@clickview/common';\r\nimport { WithStatements } from 'shared/constants';\r\n\r\nexport const ShareRequests = {\r\n getShareData(id: string): Flight.Request {\r\n if (!id)\r\n return;\r\n\r\n return {\r\n url: '/api/domain/v1/share',\r\n key: `share:${id}`,\r\n type: HttpVerbs.POST,\r\n data: {\r\n id,\r\n privacy: null\r\n }\r\n };\r\n },\r\n\r\n sharedResource(shortCode: string): Flight.Request {\r\n return {\r\n url: `/api/domain/v2/share/${shortCode}?query=${WithStatements.VIDEO}`,\r\n key: `shared:resource:${shortCode}`\r\n };\r\n }\r\n};","import { Flight, HttpVerbs } from '@clickview/common';\r\nimport { WithStatements } from 'shared/constants';\r\nimport { Video, UpdateVideoRequest } from '@clickview/shared';\r\n\r\nconst endpoints = {\r\n video: (id: string) => `/api/domain/v2/objects/${id}?query=${WithStatements.VIDEO}`,\r\n\r\n // workspace: () => `api/domain/v2/me/workspace?query=${WithStatements.WORKSPACE_VIDEOS}${addCursor(cursor)}`,\r\n workspace: (id: string, cursor: string) => {\r\n const query = `{orderbydesc:datecreated}${WithStatements.VIDEO_COLLECTION}${addCursor(cursor)}`;\r\n return `api/domain/v2/objects/${id}/videos?query=${query}`;\r\n },\r\n\r\n getVideosById: (ids: string[]) => {\r\n const params = ids.map(i => `id=${i}`);\r\n return `/api/domain/v2/objects?${params.join('&')}`;\r\n },\r\n\r\n favoriteVideos: (cursor: string) =>\r\n `/api/domain/v2/objects/9160822/videos?query=${WithStatements.VIDEO_COLLECTION}${addCursor(cursor)}`\r\n};\r\n\r\nexport const VideoRequests = {\r\n video(id: string): Flight.Request {\r\n return {\r\n url: endpoints.video(id),\r\n key: `videos:${id}`\r\n };\r\n },\r\n\r\n workspace(id: string, cursor: string): Flight.Request {\r\n return {\r\n url: endpoints.workspace(id, cursor),\r\n key: `workspace:${id}:${cursor}`\r\n };\r\n },\r\n\r\n videos(ids: string[], success?: (videos: Video[]) => void): Flight.Request {\r\n return {\r\n url: endpoints.getVideosById(ids),\r\n key: `videos:by:id:${ids.join(',')}`,\r\n success\r\n };\r\n },\r\n\r\n updateVideo(data: UpdateVideoRequest, success?: () => void): Flight.Request {\r\n return {\r\n key: `update:video:${data.id}`,\r\n url: `/api/domain/v2/objects/${data.id}`,\r\n type: HttpVerbs.PUT,\r\n data,\r\n success\r\n };\r\n },\r\n\r\n favoriteVideos(cursor: string): Flight.Request {\r\n return {\r\n url: endpoints.favoriteVideos(cursor),\r\n key: `favorite:videos:${cursor}`\r\n };\r\n },\r\n\r\n /**\r\n * This is simply an example to show the prototype for useVideoMixin\r\n * eventually there will be endpoints in domain that let us fetch members\r\n * without fetching the objects properties, so we can fetch stuff like\r\n * hasInteractives and isFavourited as subsequent calls\r\n */\r\n videoRatings(ids: string[]): Flight.Request {\r\n const params = ids.map(i => `id=${i}`);\r\n return {\r\n url: `/api/domain/v2/objects?query=rating&${params.join('&')}`,\r\n key: `video:ratings:by:id:${ids.join(',')}`\r\n };\r\n }\r\n};\r\n\r\nfunction addCursor(cursor: string): string {\r\n return cursor ? `&cursor=${cursor}` : '';\r\n}","export * from './VideoRequests';\r\nexport * from './SeriesRequests';\r\nexport * from './ShareRequests';\r\nexport * from './AudienceRequests';","export * from './useWindowListeners';\r\nexport * from './useVideoMixin';","import React from 'react';\r\n\r\nimport { HashObject } from '@clickview/common';\r\ninterface CheckboxItemsState {\r\n [id: string]: boolean;\r\n}\r\n\r\ninterface BulkCheckboxManagerOptions {\r\n preselectedIds?: string[]; // An array of ids of objects whose checkboxes are checked by default\r\n idField?: string; // For objects like `PresentationAudiences` that don't use `id` as their identifier field\r\n}\r\n\r\n/**\r\n * @param collection - The collection you are keeping track of with checkboxes\r\n * @param options - See interface above\r\n */\r\nexport const useBulkCheckboxManager = (collection: HashObject[], options: BulkCheckboxManagerOptions = {}) => {\r\n const [ bulkChecked, setBulkChecked ] = React.useState(false);\r\n const [ items, setItems ] = React.useState<CheckboxItemsState>({});\r\n\r\n const { idField = 'id' } = options;\r\n\r\n React.useEffect(() => {\r\n if (!collection?.length)\r\n return;\r\n\r\n const newItemState = collection.reduce<CheckboxItemsState>((stateObj: CheckboxItemsState, item: HashObject) => {\r\n let checkboxState = false;\r\n\r\n if (options?.preselectedIds?.includes(item[idField]))\r\n checkboxState = true;\r\n\r\n const id = item[idField];\r\n stateObj[id] = checkboxState;\r\n\r\n return stateObj;\r\n }, {});\r\n\r\n setItems(newItemState);\r\n }, [collection]);\r\n\r\n // When toggled on, all checkbox items will be enabled. Vice versa if toggled off\r\n function onToggleBulk(): void {\r\n const nextState = !bulkChecked;\r\n\r\n setBulkChecked(nextState);\r\n\r\n const newItemsState = collection.reduce<CheckboxItemsState>((stateObj: CheckboxItemsState, item: HashObject) => {\r\n stateObj[item[idField]] = nextState;\r\n return stateObj;\r\n }, {});\r\n\r\n setItems(newItemsState);\r\n }\r\n\r\n // Toggles a single item\r\n function onToggleItem(id: string): void {\r\n const nextItemState = !items[id];\r\n\r\n const nextState = {\r\n ...items,\r\n [id]: nextItemState\r\n };\r\n setItems(nextState);\r\n\r\n /**\r\n * Keep the bulk checkbox in sync with all of the other checkboxes\r\n */\r\n const totalItemsSelected = Object.keys(nextState).filter(i => nextState[i]).length;\r\n if (totalItemsSelected === collection.length) {\r\n setBulkChecked(true);\r\n return;\r\n }\r\n\r\n if (!nextItemState && bulkChecked)\r\n setBulkChecked(false);\r\n }\r\n\r\n // Returns the state of the item passed in\r\n function isChecked(item: string | HashObject<string>): boolean {\r\n if (bulkChecked)\r\n return true;\r\n\r\n if (typeof item !== 'string')\r\n item = item[idField];\r\n\r\n return items[item];\r\n }\r\n\r\n function getSelected(): string[] {\r\n if (bulkChecked)\r\n return Object.keys(items);\r\n\r\n return Object.keys(items).filter(item => items[item]);\r\n }\r\n\r\n return { onToggleBulk, onToggleItem, getSelected, isChecked, bulkChecked };\r\n};","import React from 'react';\r\nimport { Radio } from 'backbone';\r\n\r\nimport { CommonChannels, Core, LanguageService, ArrayHelper } from '@clickview/common';\r\nimport { SharedServiceChannels, UploadEventNames } from '@clickview/shared';\r\n\r\nimport { DialogHelper, DialogButton } from 'shared/utils/DialogHelper';\r\n\r\nconst getPhrase = LanguageService.encloseNamespace('shared.hooks');\r\n\r\nexport interface NavLockOptions {\r\n id?: string;\r\n title?: string;\r\n text?: string;\r\n allowAppLinks?: boolean;\r\n}\r\n\r\nexport const useNavLock = () => {\r\n const [ locks, setLocks ] = React.useState<NavLockOptions[]>([]);\r\n\r\n const shell = Radio.channel(CommonChannels.SHELL);\r\n\r\n React.useEffect(() => {\r\n if (locks.find(lockObj => !lockObj.allowAppLinks))\r\n shell.on(Core.EventNames.NAV_IS_LOCKED, onNavigate);\r\n\r\n if (locks.length)\r\n window.addEventListener('beforeunload', onBeforeUnload);\r\n\r\n return () => {\r\n shell.off(Core.EventNames.NAV_IS_LOCKED, onNavigate);\r\n window.removeEventListener('beforeunload', onBeforeUnload);\r\n };\r\n }, [locks]);\r\n\r\n // This hook is specific to setting up navlock listeners for our video upload backbone events.\r\n React.useEffect(() => {\r\n function setupVideoUploadNavLock(): void {\r\n lock({\r\n id: 'upload',\r\n title: getPhrase('uploadLockTitle'),\r\n text: getPhrase('uploadLockBody'),\r\n allowAppLinks: true\r\n });\r\n }\r\n\r\n const uploadChannel = Radio.channel(SharedServiceChannels.VIDEO_UPLOAD);\r\n uploadChannel.on(UploadEventNames.FILES_ADDED, setupVideoUploadNavLock);\r\n uploadChannel.on(UploadEventNames.UNLOCK_NAV, unlock);\r\n\r\n return () => {\r\n uploadChannel.off(UploadEventNames.FILES_ADDED, setupVideoUploadNavLock);\r\n uploadChannel.off(UploadEventNames.UNLOCK_NAV, unlock);\r\n };\r\n }, []);\r\n\r\n function lock(lockOptions: NavLockOptions = {}): void {\r\n if (locks.find(lockObj => lockObj.id === lockOptions.id))\r\n return;\r\n\r\n if (!lockOptions.allowAppLinks)\r\n shell.trigger(Core.EventNames.LOCK_NAV);\r\n\r\n setLocks([ ...locks, lockOptions ]);\r\n }\r\n\r\n function unlock(id: string): void {\r\n const newLocks = locks.filter(lockObj => lockObj.id !== id);\r\n\r\n if (newLocks.length === 0 || !newLocks.find(lockObj => !lockObj.allowAppLinks))\r\n shell.trigger(Core.EventNames.UNLOCK_NAV);\r\n\r\n setLocks(newLocks);\r\n }\r\n\r\n function onNavigate(appLink: Core.AppLink): void {\r\n if (!locks.length)\r\n return;\r\n\r\n const buttons: DialogButton[] = [\r\n {\r\n buttonText: getPhrase('cancel'),\r\n className: 'btn btn-secondary'\r\n },\r\n {\r\n buttonText: getPhrase('discard'),\r\n className: 'btn btn-danger',\r\n success: true\r\n }\r\n ];\r\n\r\n const lockOptions = locks.find(lockObj => !lockObj.allowAppLinks);\r\n\r\n DialogHelper.render(<p>{lockOptions.text}</p>, {\r\n title: lockOptions.title,\r\n buttons,\r\n success: () => onClickDiscard(appLink)\r\n });\r\n }\r\n\r\n function onBeforeUnload(e: any): any {\r\n let lockOptions = locks.find(lockObj => lockObj.allowAppLinks);\r\n if (!lockOptions)\r\n lockOptions = ArrayHelper.first(locks);\r\n\r\n e.returnValue = lockOptions.text;\r\n return lockOptions.text;\r\n }\r\n\r\n function onClickDiscard(appLink: Core.AppLink): void {\r\n shell.trigger(Core.EventNames.NAV_UNLOCKED_BY_USER);\r\n\r\n locks.forEach(lockObj => {\r\n if (lockObj.allowAppLinks)\r\n return;\r\n\r\n unlock(lockObj.id);\r\n });\r\n\r\n Core.AppLinkHelper.trigger(appLink);\r\n }\r\n\r\n return { lock, unlock };\r\n};","import { Flight } from '@clickview/common';\r\nimport { VideoCollection } from '@clickview/shared';\r\nimport { VideoRequests } from 'shared/flight-requests';\r\n\r\nexport function useVideoMixin(videos: VideoCollection): void {\r\n /**\r\n * We're mixing in a rating here as an example\r\n */\r\n const ratingRequests = videos && VideoRequests.videoRatings(videos.data.map(v => v.id));\r\n const ratings = Flight.useGetResponse<VideoCollection>(ratingRequests && ratingRequests.key);\r\n const fetch = Flight.useGetFetch(ratingRequests);\r\n\r\n if (videos && ratings.shouldFetch)\r\n fetch();\r\n}","import * as React from 'react';\r\n\r\nfunction createUseWindowListener(event: string): any {\r\n return function useWindowListener(callback: () => void): void {\r\n /**\r\n * Memoize the callback so it's the same function\r\n * when we call removeEventListener\r\n */\r\n const memoCallback = React.useCallback(callback, []);\r\n\r\n React.useEffect(() => {\r\n window.addEventListener(event, memoCallback);\r\n return () => window.removeEventListener(event, memoCallback);\r\n }, []);\r\n };\r\n}\r\n\r\nexport const useOnScroll = createUseWindowListener('scroll');\r\nexport const useOnResize = createUseWindowListener('resize');\r\n\r\n","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n return \"<div class=\\\"layout-region\\\"></div>\";\n},\"useData\":true});","import * as React from 'react';\r\nimport { Store } from 'redux';\r\nimport { Provider } from 'react-redux';\r\n\r\nexport interface EmbedLayoutComponentProps {\r\n store: Store;\r\n contentChild?: React.ReactNode;\r\n}\r\n\r\nfunction EmbedLayoutComponent(props: EmbedLayoutComponentProps): JSX.Element {\r\n const { contentChild } = props;\r\n\r\n return (\r\n <>\r\n {contentChild}\r\n </>\r\n );\r\n}\r\n\r\nfunction WrapLayoutWithProviders(props: EmbedLayoutComponentProps): JSX.Element {\r\n const { store } = props;\r\n\r\n return (\r\n <Provider store={store}>\r\n <EmbedLayoutComponent {...props} />\r\n </Provider>\r\n );\r\n}\r\n\r\nexport { WrapLayoutWithProviders as EmbedLayoutComponent };","import * as React from 'react';\r\nimport { ReactLayoutView, HashObject } from '@clickview/common';\r\n\r\nimport { Layouts, LayoutRegions } from 'shared/constants';\r\n\r\nimport { EmbedLayoutComponent, EmbedLayoutComponentProps } from './EmbedLayoutComponent';\r\nimport EmbedLayoutTemplate from './EmbedLayout.hbs';\r\n\r\n\r\nexport class EmbedLayoutView extends ReactLayoutView {\r\n protected childComponents: { [index: string]: React.ReactNode} = {};\r\n\r\n public get title(): boolean {\r\n return false;\r\n }\r\n\r\n public get name(): string {\r\n return 'EmbedLayoutView';\r\n }\r\n\r\n public get template(): any {\r\n return EmbedLayoutTemplate;\r\n }\r\n\r\n public static getCacheKey(): string {\r\n return Layouts.EMBED_LAYOUT;\r\n }\r\n\r\n public regions(): HashObject {\r\n return {\r\n layout: {\r\n el: '.layout-region',\r\n replaceEl: true\r\n }\r\n };\r\n }\r\n\r\n private getChildComponents(): EmbedLayoutComponentProps {\r\n return {\r\n contentChild: this.childComponents[LayoutRegions.CONTENT],\r\n store: this.options.store\r\n };\r\n }\r\n\r\n protected unsetRegion(region: string): void {\r\n delete this.childComponents[region];\r\n\r\n this.renderLayout();\r\n }\r\n\r\n public closePopup(): void {\r\n this.unsetRegion(LayoutRegions.POPUP);\r\n }\r\n\r\n public showChildView(region: string, component: React.ReactElement): void {\r\n this.childComponents[region] = component;\r\n\r\n this.renderLayout();\r\n }\r\n\r\n public renderLayout(): void {\r\n super.showChildView('layout', <EmbedLayoutComponent {...this.getChildComponents()} />);\r\n }\r\n}","export * from './teacher-layout/TeacherLayoutView';\r\nexport * from './embed-layout/EmbedLayoutView';","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n return \"<div class=\\\"layout-region position-relative\\\"></div>\\r\\n<div id=\\\"dialog-region\\\"></div>\";\n},\"useData\":true});","import * as React from 'react';\r\nimport { Store } from 'redux';\r\nimport { Provider } from 'react-redux';\r\nimport { useDropzone } from 'react-dropzone';\r\n\r\nimport { useService } from '@clickview/common';\r\nimport { useMediaQuery, MediaQueryStrings, BaseVideoUploadService, SearchAppContextProvider } from '@clickview/shared';\r\n\r\nimport { HeaderView, LeftNavView, LeftNavState } from 'shared/views';\r\nimport { PlayerContextProvider, PlayerContext } from 'shared/contexts';\r\nimport { FloatingPlayer } from 'shared/components';\r\nimport { Services } from 'shared/constants';\r\nimport { useNavLock } from 'shared/hooks/useNavLock';\r\n\r\nimport { DragMask } from './drag-mask/DragMask';\r\n\r\nimport styles from './teacher-layout.scss';\r\n\r\ninterface DerivedNavState {\r\n state: LeftNavState;\r\n showMask: boolean;\r\n contentClass: string;\r\n}\r\n\r\nfunction getDerivedNavState(\r\n collapse: boolean, isMobile: boolean, isIPad: boolean\r\n): DerivedNavState {\r\n if (isMobile) {\r\n return {\r\n state: collapse ? LeftNavState.Hidden : LeftNavState.Open,\r\n showMask: !collapse,\r\n contentClass: styles.hiddenNavContent\r\n };\r\n }\r\n\r\n if (isIPad) {\r\n return {\r\n state: collapse ? LeftNavState.Collapsed : LeftNavState.Open,\r\n showMask: !collapse,\r\n contentClass: styles.collapsedNavContent\r\n };\r\n }\r\n\r\n return {\r\n state: collapse ? LeftNavState.Collapsed : LeftNavState.Open,\r\n showMask: false,\r\n contentClass: collapse ? styles.collapsedNavContent : styles.openNavContent\r\n };\r\n}\r\n\r\nexport interface TeacherLayoutComponentProps {\r\n showNav: boolean;\r\n\r\n contentChild?: React.ReactNode;\r\n popupChild?: React.ReactNode;\r\n alertChild?: React.ReactNode;\r\n\r\n store: Store;\r\n}\r\n\r\nconst TeacherLayoutComponent = (props: TeacherLayoutComponentProps): React.ReactElement => {\r\n const { showNav, contentChild, popupChild, alertChild } = props;\r\n\r\n const { viewportPosition: playerViewportPosition } = React.useContext(PlayerContext);\r\n\r\n const [ collapse, setCollapse ] = React.useState(false);\r\n\r\n // This is executed at the beginning to set up the backbone radio event listeners\r\n useNavLock();\r\n\r\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\r\n const isIPad = useMediaQuery(MediaQueryStrings.SM);\r\n const isLargeDesktop = useMediaQuery(MediaQueryStrings.XXL);\r\n\r\n const toggleLeftNav = () => {\r\n setCollapse(!collapse);\r\n };\r\n\r\n React.useEffect(() => {\r\n setCollapse(!isLargeDesktop);\r\n }, [isLargeDesktop]);\r\n\r\n const navState = getDerivedNavState(collapse, isMobile, isIPad);\r\n\r\n const videoUploadService = useService<BaseVideoUploadService>(Services.VideoUpload);\r\n const onDrop = React.useCallback((acceptedFiles: File[]) => {\r\n videoUploadService.addFiles(acceptedFiles);\r\n }, []);\r\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\r\n onDrop,\r\n noClick: true,\r\n noKeyboard: true\r\n });\r\n\r\n // Right align content in the alert-player container.\r\n let alertPlayerContainerClassName = 'd-flex flex-column align-items-end';\r\n let alertContainerClassName = '';\r\n\r\n /**\r\n * If playerViewportPosition is truthy, the player isn't floating,\r\n * so we only apply the fixed position styling to the alert container.\r\n * \r\n * Else if playerViewportPosition is falsy, we fix the entire\r\n * alert-player container.\r\n */\r\n if (playerViewportPosition)\r\n alertContainerClassName = styles.fixedBottomRightContainer;\r\n else\r\n alertPlayerContainerClassName += ` ${styles.fixedBottomRightContainer}`;\r\n\r\n return (\r\n <div {...getRootProps()}>\r\n <HeaderView toggleLeftNav={toggleLeftNav} showLeftNavToggle={showNav} />\r\n {showNav && <LeftNavView navState={navState.state}/>}\r\n <div className={`${styles.content} ${navState.contentClass}`}>\r\n <div className='container'>\r\n {contentChild}\r\n </div>\r\n </div>\r\n {popupChild}\r\n {navState.showMask && <div className={`modal-backdrop show ${styles.mask}`}></div>}\r\n <div className={alertPlayerContainerClassName}>\r\n {!!alertChild && <div className={alertContainerClassName}>{alertChild}</div>}\r\n <FloatingPlayer />\r\n </div>\r\n {isDragActive && <DragMask />}\r\n <input {...getInputProps()} />\r\n </div>\r\n );\r\n};\r\n\r\nfunction WrapLayoutWithProviders(props: TeacherLayoutComponentProps): React.ReactElement {\r\n return (\r\n <Provider store={props.store}>\r\n <SearchAppContextProvider>\r\n <PlayerContextProvider>\r\n <TeacherLayoutComponent {...props} />\r\n </PlayerContextProvider>\r\n </SearchAppContextProvider>\r\n </Provider>\r\n );\r\n}\r\n\r\nexport { WrapLayoutWithProviders as TeacherLayoutComponent };","import * as React from 'react';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { ReactLayoutView, ReactLayoutViewOptions } from '@clickview/common';\r\n\r\nimport { Layouts, LayoutRegions } from 'shared/constants';\r\n\r\nimport { TeacherLayoutComponent, TeacherLayoutComponentProps } from './TeacherLayoutComponent';\r\nimport TeacherLayoutTemplate from './TeacherLayout.hbs';\r\n\r\nexport interface TeacherLayoutViewOptions extends ReactLayoutViewOptions {\r\n showNav: boolean;\r\n}\r\n\r\nexport class TeacherLayoutView extends ReactLayoutView {\r\n protected options: TeacherLayoutViewOptions;\r\n protected childComponents: { [index: string]: React.ReactNode} = {};\r\n\r\n constructor(options?: TeacherLayoutViewOptions) {\r\n super(options);\r\n }\r\n\r\n public get title(): boolean {\r\n return false;\r\n }\r\n\r\n public get name(): string {\r\n return 'TeacherLayoutView';\r\n }\r\n\r\n public get template(): any {\r\n return TeacherLayoutTemplate;\r\n }\r\n\r\n public static getCacheKey(options: TeacherLayoutViewOptions): string {\r\n return `${Layouts.TEACHER_LAYOUT}:${options.showNav}`;\r\n }\r\n\r\n public regions(): ObjectHash {\r\n return {\r\n layout: {\r\n el: '.layout-region',\r\n replaceEl: true\r\n }\r\n };\r\n }\r\n\r\n private getChildComponents(): TeacherLayoutComponentProps {\r\n return {\r\n showNav: this.options.showNav,\r\n contentChild: this.childComponents[LayoutRegions.CONTENT],\r\n popupChild: this.childComponents[LayoutRegions.POPUP],\r\n alertChild: this.childComponents[LayoutRegions.ALERT],\r\n store: this.options.store\r\n };\r\n }\r\n\r\n protected unsetRegion(region: string): void {\r\n delete this.childComponents[region];\r\n\r\n this.renderLayout();\r\n }\r\n\r\n public closePopup(): void {\r\n this.unsetRegion(LayoutRegions.POPUP);\r\n }\r\n\r\n public showChildView(region: string, component: React.ReactElement): void {\r\n this.childComponents[region] = component;\r\n\r\n this.renderLayout();\r\n }\r\n\r\n public renderLayout(): void {\r\n super.showChildView('layout', <TeacherLayoutComponent {...this.getChildComponents()} />);\r\n }\r\n}","import * as React from 'react';\r\nimport { Text } from '@clickview/shared';\r\n\r\nimport styles from './drag-mask.scss';\r\n\r\nexport function DragMask(): React.ReactElement {\r\n return (\r\n <>\r\n <div className={styles.dropMask}></div>\r\n <div className={styles.dropContent}>\r\n <div className={styles.border}>\r\n <h1><Text namespace={'shared.dragMask'} phrase={'message'} /></h1>\r\n </div>\r\n </div>\r\n <div className={styles.dropArea}></div>\r\n </>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"dropMask\":\"cv--dropMask--3bFev\",\"dropContent\":\"cv--dropContent--2_7SU\",\"dropArea\":\"cv--dropArea--3oOzB\",\"border\":\"cv--border--1IoKS\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"content\":\"cv--content--1SX2l\",\"collapsedNavContent\":\"cv--collapsedNavContent--3LJFz\",\"openNavContent\":\"cv--openNavContent--34Pt4\",\"hiddenNavContent\":\"cv--hiddenNavContent--1gZ0J\",\"mask\":\"cv--mask--mE2Dq\",\"fixedBottomRightContainer\":\"cv--fixedBottomRightContainer--Sgmex\"};","import { Store } from 'redux';\r\nimport { Radio } from 'backbone';\r\n\r\nimport { Flight, Core } from '@clickview/common';\r\nimport { BaseLibraryDataService, SharedDataServices, SharedWithStatements, Folder, LibraryAPIResponse } from '@clickview/shared';\r\n\r\nconst requests = {\r\n getLibraries: (success?: (data: LibraryAPIResponse[]) => void): Flight.Request => {\r\n return {\r\n url: '/api/domain/v2/me/libraries?type=customlibrary&type=unpublishedcustomlibrary',\r\n key: 'libraries',\r\n success,\r\n normalize: false\r\n };\r\n },\r\n\r\n getFolder: (id: string, success?: (data: Core.Model) => void): Flight.Request => {\r\n return {\r\n url: `/api/domain/v2/objects/${id}?query=${SharedWithStatements.FOLDER}`,\r\n key: `folder:${id}`,\r\n success\r\n };\r\n }\r\n};\r\n\r\ninterface FlightLibraryDataServiceOptions {\r\n store: Store;\r\n}\r\n\r\nexport class FlightLibraryDataService implements BaseLibraryDataService {\r\n private store: Store;\r\n\r\n constructor(options: FlightLibraryDataServiceOptions) {\r\n this.store = options.store;\r\n }\r\n\r\n public get name(): string {\r\n return SharedDataServices.Library;\r\n }\r\n\r\n public get channelName(): string {\r\n return 'library:data:service';\r\n }\r\n\r\n public getLibraries(callback?: (data: Core.Collection) => void): Core.Collection {\r\n const request = requests.getLibraries((libraries: LibraryAPIResponse[]) => {\r\n Radio.channel(this.channelName).trigger('libraries:sync', libraries);\r\n\r\n callback && callback(new Core.Collection(libraries));\r\n });\r\n\r\n const flightResponse = Flight.getResponse<LibraryAPIResponse[]>(this.store.getState(), request.key);\r\n\r\n if (flightResponse.shouldFetch)\r\n Flight.fetch(this.store.dispatch, request);\r\n\r\n return flightResponse.data && new Core.Collection(flightResponse.data.map(res => res.data));\r\n }\r\n\r\n public getFolder(id: string, callback?: (data: Core.Model) => void): Core.Model {\r\n const request = requests.getFolder(id, (folder: Folder) => callback && callback(new Core.Model(folder)));\r\n const flightResponse = Flight.getResponse<Folder>(this.store.getState(), request.key);\r\n\r\n if (flightResponse.shouldFetch)\r\n Flight.fetch(this.store.dispatch, request);\r\n\r\n return flightResponse.data && new Core.Model(flightResponse.data);\r\n }\r\n}","import { Store } from 'redux';\r\n\r\nimport { Flight, Core } from '@clickview/common';\r\nimport { BaseSeriesDataService, SharedDataServices, SharedWithStatements, SharedDataChannels, Series } from '@clickview/shared';\r\n\r\nconst requests = {\r\n getOne(id: string, success?: (data: Series) => void): Flight.Request {\r\n return {\r\n url: `/api/domain/v2/objects/${id}?query=${SharedWithStatements.SERIES}`,\r\n key: `series:${id}`,\r\n success\r\n };\r\n }\r\n};\r\n\r\ninterface FlightSeriesDataServiceOptions {\r\n store: Store;\r\n}\r\n\r\nexport class FlightSeriesDataService implements BaseSeriesDataService {\r\n private store: Store;\r\n\r\n constructor(options: FlightSeriesDataServiceOptions) {\r\n this.store = options.store;\r\n }\r\n\r\n public get name(): string {\r\n return SharedDataServices.Series;\r\n }\r\n\r\n public get channelName(): string {\r\n return SharedDataChannels.SERIES;\r\n }\r\n\r\n public getSeries(id: string, callback?: (data: Core.Model) => void): Core.Model {\r\n const request = requests.getOne(id, (series: Series) => callback && callback(new Core.Model(series)));\r\n const flightResponse = Flight.getResponse<Series>(this.store.getState(), request.key);\r\n\r\n if (flightResponse.shouldFetch)\r\n Flight.fetch(this.store.dispatch, request);\r\n\r\n return flightResponse.data && new Core.Model(flightResponse.data);\r\n }\r\n}","import { Core, Flight, FunctionHelper } from '@clickview/common';\r\nimport { BaseVideoDataService, Video } from '@clickview/shared';\r\nimport { Store } from 'redux';\r\nimport { VideoRequests } from 'shared/flight-requests';\r\nimport { DataServices } from 'shared/constants';\r\n\r\ninterface FlightVideoDataServiceOptions {\r\n store: Store;\r\n}\r\n\r\nexport class FlightVideoDataService implements BaseVideoDataService<Core.Collection> {\r\n private store: Store;\r\n\r\n constructor(options: FlightVideoDataServiceOptions) {\r\n this.store = options.store;\r\n }\r\n\r\n public get name(): string {\r\n return DataServices.Video;\r\n }\r\n\r\n public clearVideoCache(): void {\r\n this.store.dispatch<Flight.InvalidateAction>({\r\n type: Flight.Actions.INVALIDATE,\r\n keys: ['video'],\r\n request: null\r\n });\r\n }\r\n public getVideos(\r\n ids: string[],\r\n callback?: (videos: Core.Collection<Core.Model>) => void\r\n ): Core.Collection {\r\n const wrappedCallback = (videos: Video[]) => {\r\n if (!FunctionHelper.isFunction(callback))\r\n return;\r\n\r\n callback(new Core.Collection(videos));\r\n };\r\n const request = VideoRequests.videos(ids, wrappedCallback);\r\n const response = Flight.getResponse<Video[]>(this.store.getState(), request.key);\r\n\r\n if (response.shouldFetch)\r\n Flight.fetch(this.store.dispatch, request);\r\n else\r\n wrappedCallback(response.data);\r\n return new Core.Collection(response.data);\r\n }\r\n}","export * from './FlightSeriesDataService';\r\nexport * from './FlightLibraryDataService';\r\nexport * from './FlightVideoDataService';","import React from 'react';\r\nimport { render, unmountComponentAtNode } from 'react-dom';\r\n\r\nimport { FunctionHelper, LanguageService } from '@clickview/common';\r\nimport { PopupButton, Popup, PopupButtons } from '@clickview/shared';\r\n\r\nconst namespace = 'shared.utils';\r\n\r\nexport interface DialogButton extends Omit<PopupButton, 'onClick'> {\r\n onClick?: () => void;\r\n success?: boolean;\r\n}\r\n\r\nfunction getDefaultButtons(): DialogButton[] {\r\n return [ DialogHelper.getConfirmDefault(), DialogHelper.getCancelDefault() ];\r\n}\r\n\r\ninterface DialogOptions {\r\n title: string;\r\n buttons?: DialogButton[];\r\n success?: () => void;\r\n cancel?: () => void;\r\n}\r\n\r\nexport const DialogHelper = {\r\n render: (children: React.SFCElement<any> | React.SFCElement<any>[], options: DialogOptions) => {\r\n const dialogRegion = document.getElementById('dialog-region');\r\n\r\n function onConfirm(): void {\r\n FunctionHelper.isFunction(options.success) && options.success();\r\n unmountComponentAtNode(dialogRegion);\r\n }\r\n\r\n function onCancel(): void {\r\n FunctionHelper.isFunction(options.cancel) && options.cancel();\r\n unmountComponentAtNode(dialogRegion);\r\n }\r\n\r\n const buttons = options.buttons || getDefaultButtons();\r\n\r\n const popupButtons: PopupButton[] = buttons.map(button => {\r\n const isSuccessButton = button.success;\r\n\r\n function onClick(): void {\r\n if (isSuccessButton)\r\n onConfirm();\r\n\r\n onCancel();\r\n FunctionHelper.isFunction(button.onClick) && button.onClick();\r\n }\r\n\r\n delete button.success;\r\n\r\n return {\r\n ...button,\r\n onClick\r\n };\r\n });\r\n\r\n render((\r\n <Popup title={options.title} closePopup={onCancel}>\r\n {children}\r\n <PopupButtons buttons={popupButtons} />\r\n </Popup>\r\n ), dialogRegion);\r\n },\r\n\r\n getCancelDefault(): DialogButton {\r\n return {\r\n variant: 'light',\r\n buttonText: LanguageService.getPhrase(namespace, 'cancel')\r\n };\r\n },\r\n\r\n getConfirmDefault(): DialogButton {\r\n return {\r\n variant: 'dark',\r\n success: true,\r\n buttonText: LanguageService.getPhrase(namespace, 'confirm')\r\n };\r\n }\r\n};","import { Core } from '@clickview/common';\r\nimport { Video, VideoAction } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nexport function getVideoActionAppLink(video: Video, action: VideoAction): Core.AppLink {\r\n switch (action) {\r\n case VideoAction.AddToPlaylist:\r\n return { application: AppChannels.PLAYLISTS, action: Actions.Playlists.ADD_TO_PLAYLIST, args: [video.id]};\r\n case VideoAction.Share:\r\n return { application: AppChannels.DEFAULT, action: Actions.Default.SHARE, args: [video.id], params: {\r\n entityType: 'video'\r\n }};\r\n }\r\n}","export * from './LiteAppLinkUtils';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight, useService } from '@clickview/common';\r\nimport { Video, Popup, PopupViewProps, UpdateVideoRequest, EditVideoDetails } from '@clickview/shared';\r\n\r\nimport { VideoRequests } from 'shared/flight-requests';\r\nimport { CombineUploadsService } from 'apps/upload/services/CombineUploadsService';\r\n\r\ninterface EditVideoViewProps {\r\n id: string;\r\n}\r\n\r\nexport function EditVideoView(props: EditVideoViewProps & PopupViewProps): JSX.Element {\r\n const { id, closePopup } = props;\r\n\r\n const combinedUploadService = useService<CombineUploadsService>('combine:uploads:service');\r\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(id));\r\n const dispatch = useDispatch();\r\n\r\n const saveVideo = (data: UpdateVideoRequest) => {\r\n data.id = video.data.id;\r\n const request = VideoRequests.updateVideo(data, () => {\r\n combinedUploadService.updateUploadMetadata(data.id, data.name);\r\n closePopup();\r\n });\r\n Flight.fetch(dispatch, request);\r\n };\r\n\r\n if (!video.data)\r\n return <></>;\r\n\r\n return (\r\n <Popup closePopup={closePopup} title={'Edit video details'}>\r\n <EditVideoDetails\r\n video={video.data}\r\n saveVideo={saveVideo}\r\n onClickCancel={closePopup} />\r\n </Popup>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { Core, LanguageService, Flight } from '@clickview/common';\r\nimport {\r\n BannerHeader,\r\n VideoActionsContext,\r\n Config,\r\n VideoList,\r\n VideoCollection,\r\n Video,\r\n Series,\r\n ConfigRequests\r\n} from '@clickview/shared';\r\n\r\nimport { VideoRequests } from 'shared/flight-requests';\r\nimport { getVideoActionAppLink } from 'shared/utils';\r\nimport { useVideoMixin } from 'shared/hooks';\r\n\r\nconst namespace = 'shared.favoriteVideos';\r\n\r\nconst getVideoAppLink = (video: Video): Core.AppLink => ({\r\n application: null,\r\n action: null,\r\n args: [video.id]\r\n});\r\n\r\nconst getSeriesAppLink = (series: Series): Core.AppLink => ({\r\n application: null,\r\n action: null,\r\n args: [series.id]\r\n});\r\n\r\ninterface FavoriteVideosViewProps {\r\n cursor?: string;\r\n}\r\n\r\nexport function FavoriteVideosView(props: FavoriteVideosViewProps): JSX.Element {\r\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config);\r\n const favoriteVideos = Flight.useBasicFetch<VideoCollection>(VideoRequests.favoriteVideos(props.cursor));\r\n\r\n useVideoMixin(favoriteVideos.data);\r\n\r\n return (\r\n <VideoActionsContext.Provider value={{ getActionAppLink: getVideoActionAppLink }}>\r\n {!!config.data &&\r\n <BannerHeader\r\n heading={LanguageService.getPhrase(namespace, 'header')}\r\n banner={null}\r\n imageCdnUrl={config.data.imageCdnUrl}\r\n />\r\n }\r\n {!!favoriteVideos.data &&\r\n <VideoList\r\n videos={favoriteVideos.data.data}\r\n cursors={favoriteVideos.data.pagination.cursors}\r\n getVideoAppLink={getVideoAppLink}\r\n getSeriesAppLink={getSeriesAppLink}\r\n />\r\n }\r\n </VideoActionsContext.Provider>\r\n );\r\n}","import * as React from 'react';\r\nimport { Flight, ViewModelService, BackboneViewWrapper } from '@clickview/common';\r\nimport { SvgContainer, cvSvgLibrary, CurrentUser, NotificationHeaderView, SearchBarView, Query, UserRequests, SearchAppContext } from '@clickview/shared';\r\n\r\nimport { UserOptions } from 'shared/components';\r\nimport { UploadFileSelect } from 'apps/upload/components/upload-file-select/UploadFileSelect';\r\n\r\nimport styles from './header.scss';\r\n\r\nfunction ClickViewLogo(): React.ReactElement {\r\n return (\r\n <svg viewBox='0 0 434 71'>\r\n <g>\r\n <path fill='#000000' d='M114.44 56.57l3.5 3.5a32.87 32.87 0 0 1-25.16 11.26c-19.63 0-33.62-15.54-33.62-35.16C59.16 16.55 73.16 1 92.78 1a32.31 32.31 0 0 1 24.19 10.4l-3.6 3.3a27.32 27.32 0 0 0-20.59-8.74c-16.91 0-28.39 13.5-28.39 30.21s11.48 30.21 28.39 30.21a28.08 28.08 0 0 0 21.66-9.81zM126.64 1h4.55v70.22h-4.73L126.64 1zm17.3 10.6a3.7 3.7 0 1 1 0 7.4 3.7 3.7 0 0 1 0-7.4zm-2.41 15.07h4.81v44.56h-4.81V26.67zm48 33.15l3.33 3.15a21.8 21.8 0 0 1-17.31 8.61c-12.59 0-21.76-10-21.76-22.22 0-12.22 9.17-22.22 21.76-22.22a21.84 21.84 0 0 1 16.85 8l-3.43 3.06a17.15 17.15 0 0 0-13.42-6.3c-10.09 0-16.76 8.15-16.76 17.5s6.67 17.5 16.76 17.5a17.38 17.38 0 0 0 13.98-7.08zm14.99-9.33v20.74h-4.73V1.01h4.73v47.75l20.74-19.02h6.64l-21.56 19.84L234 71.23h-7.01l-22.47-20.74z'/>\r\n <path fill='#F8981D' d='M304.09 19.4a5.56 5.56 0 1 1 0-11.12 5.56 5.56 0 0 1 0 11.12zm-5.56 7.27h11.11v44.56h-11.11V26.67zm61.42 22.15c0 .81 0 2.42-.09 4h-31.75c.8 3.77 5.2 8.61 11.93 8.61a17.11 17.11 0 0 0 11.66-4.31l5.38 8.16a27.23 27.23 0 0 1-17 6.1c-12.92 0-22.88-9.87-22.88-22.34s9.06-22.33 21.35-22.33c11.62-.04 21.4 9.02 21.4 22.11zm-10.77-3.76c-.18-3.68-3.58-8.62-10.67-8.62-6.91 0-10.05 4.85-10.4 8.62h21.07zM385.92 71h-6.42l-19.64-44.37h13.97l9.16 23.98 9.72-23.98h8.31l9.63 23.98 9.16-23.98h13.97L414.24 71h-6.52l-10.85-23.7L385.92 71zm-120.22.35h-6L226.11 1.01h17.01l19.42 44.18 18.08-44.18h16.91L265.7 71.35zM0 1l41 35L0 71V1z'/>\r\n </g>\r\n </svg>\r\n );\r\n}\r\n\r\ninterface HeaderViewProps {\r\n toggleLeftNav: () => void;\r\n showLeftNavToggle: boolean;\r\n}\r\n\r\nexport function HeaderView(props: HeaderViewProps): React.ReactElement {\r\n const userRequest = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser, { optimize: true });\r\n const user = userRequest.data;\r\n\r\n const searchCtx = React.useContext(SearchAppContext);\r\n const showSearch = searchCtx.getSearchInNav();\r\n\r\n return (\r\n <nav className={`navbar navbar-expanded sticky-top ${styles.nav}`}>\r\n\r\n <div className='justify-content-start'>\r\n {props.showLeftNavToggle &&\r\n <SvgContainer\r\n svgName={cvSvgLibrary.Handle}\r\n className={`${styles.hamburger} ml-2 mr-3`}\r\n onClick={props.toggleLeftNav}\r\n />}\r\n\r\n <a className={`navbar-brand text-hide align-top ${styles.logoContainer} d-inline-block'`} href='/'>\r\n <ClickViewLogo />\r\n </a>\r\n </div>\r\n\r\n {showSearch &&\r\n <div className='justify-content-center'>\r\n <BackboneViewWrapper\r\n className={`container ${styles.searchBarNavContainer}`}\r\n view={SearchBarView}\r\n options={{\r\n model: ViewModelService.get<Query>('search', { ctor: Query }),\r\n disableMask: true\r\n }}\r\n />\r\n </div>\r\n }\r\n\r\n <div className={`d-flex align-items-center justify-content-end pr-1 ${styles.actionButtons}`}>\r\n {\r\n !!user && <UploadFileSelect hideButtonText={showSearch}/>\r\n }\r\n <BackboneViewWrapper view={NotificationHeaderView} className='ml-2 pl-2' />\r\n\r\n <UserOptions user={user} />\r\n </div>\r\n </nav>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"nav\":\"cv--nav--3RLQ9\",\"logoContainer\":\"cv--logoContainer--UIlc9\",\"searchBar\":\"cv--searchBar--2E7RQ\",\"actionButtons\":\"cv--actionButtons--2HygL\",\"hamburger\":\"cv--hamburger--2BRko\",\"searchBarNavContainer\":\"cv--searchBarNavContainer--2bUnK\"};","export * from './favorite-videos/FavoriteVideosView';\r\nexport * from './header/HeaderView';\r\nexport * from './left-nav/LeftNavView';\r\nexport * from './play/PlayView';\r\nexport * from './series/SeriesView';\r\nexport * from './play-shared/PlaySharedView';\r\nexport * from './edit-video/EditVideoView';","import React from 'react';\r\nimport { Scrollbars } from 'react-custom-scrollbars';\r\n\r\nimport { LanguageService, Core } from '@clickview/common';\r\nimport { cvSvgLibrary } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { LeftNavItem, isAppLinkActive } from './LeftNavItem';\r\n\r\nimport styles from './left-nav.scss';\r\n\r\nconst namespace = 'shared.leftNav';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\nconst appLinks: {[key: string]: Core.AppLink} = {\r\n discover: { application: AppChannels.DASHBOARD, action: Actions.Dashboard.HOME },\r\n playlists: { application: AppChannels.PLAYLISTS, action: Actions.Playlists.HOME },\r\n myUploads: { application: AppChannels.DEFAULT, action: Actions.Upload.MY_UPLOADS },\r\n favouritedVideos: { application: AppChannels.DEFAULT, action: Actions.Default.FAVORITE_VIDEOS },\r\n watchHistory: { application: AppChannels.DEFAULT, action: Actions.Default.WATCH_HISTORY }\r\n};\r\n\r\nexport function CollapsedLeftNavView(): JSX.Element {\r\n return (\r\n <nav className={`${styles.leftNav} ${styles.leftNavCollapsed}`}>\r\n <Scrollbars height='100%'>\r\n <LeftNavItem\r\n name={getPhrase('discover')}\r\n appLink={appLinks.discover}\r\n className={styles.discover}\r\n svgName={cvSvgLibrary.Compass}\r\n collapsed\r\n />\r\n <LeftNavItem\r\n name={getPhrase('playlists')}\r\n appLink={appLinks.playlists}\r\n className={styles.playlists}\r\n svgName={cvSvgLibrary.Playlist}\r\n collapsed\r\n />\r\n <LeftNavItem\r\n name={getPhrase('myUploads')}\r\n appLink={appLinks.myUploads}\r\n className={styles.myUploads}\r\n svgName={cvSvgLibrary.Upload}\r\n collapsed\r\n />\r\n <LeftNavItem\r\n name={getPhrase('favouritedVideos')}\r\n appLink={appLinks.favouritedVideos}\r\n className={styles.favouritedVideos}\r\n svgName={isAppLinkActive(appLinks.favouritedVideos)\r\n ? cvSvgLibrary.Heart\r\n : cvSvgLibrary.HeartOutline\r\n }\r\n collapsed\r\n />\r\n <LeftNavItem\r\n name={getPhrase('watchHistory')}\r\n appLink={appLinks.watchHistory}\r\n className={styles.watchHistory}\r\n svgName={cvSvgLibrary.History}\r\n collapsed\r\n />\r\n </Scrollbars>\r\n </nav>\r\n );\r\n}","import React from 'react';\r\nimport { Scrollbars } from 'react-custom-scrollbars';\r\n\r\nimport { Flight, LanguageService, Core } from '@clickview/common';\r\nimport { cvSvgLibrary } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\r\nimport { MockClassroom } from 'apps/user-manager/interfaces';\r\n\r\nimport { LeftNavItem } from './LeftNavItem';\r\nimport { PartialLeftNavItem } from './partial-loading/PartialLeftNavItem';\r\n\r\nimport styles from './left-nav.scss';\r\n\r\nconst namespace = 'shared.leftNav';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\nfunction ClassroomSvg(): JSX.Element {\r\n return (\r\n <svg viewBox='0 0 24 24'>\r\n <g fill='none' fillRule='evenodd'>\r\n <g transform='translate(0.000000, 2.000000)'>\r\n <text id='ABC' fontFamily='Rubik-Black, Rubik Black' fontSize='6.6' fontWeight='700' fill='#ffffff'>\r\n <tspan x='4.5' y='10.8'>ABC</tspan>\r\n </text>\r\n <rect id='Rectangle' stroke='#ffffff' strokeWidth='1.2' x='3' y='1.8' width='18' height='13.2' rx='1.2'></rect>\r\n <line x1='0.6' y1='15' x2='23.4' y2='15' id='Line-2' stroke='#ffffff' strokeWidth='1.2' strokeLinecap='round'></line>\r\n <circle id='Oval' stroke='#ffffff' strokeWidth='1.2' fill='#000000' cx='12' cy='1.2' r='1'></circle>\r\n <line x1='11.4' y1='15' x2='7.8' y2='18.6' id='Line-3' stroke='#ffffff' strokeWidth='1.2' strokeLinecap='round'></line>\r\n <line x1='16.2' y1='15' x2='12.6' y2='18.6' id='Line-3' stroke='#ffffff' strokeWidth='1.2' strokeLinecap='round' transform='translate(14.400000, 16.800000) scale(-1, 1) translate(-14.400000, -16.800000) '></line>\r\n </g>\r\n </g>\r\n </svg>\r\n );\r\n}\r\n\r\nconst appLinks: {[key: string]: Core.AppLink} = {\r\n discover: { application: AppChannels.DASHBOARD, action: Actions.Dashboard.HOME },\r\n playlists: { application: AppChannels.PLAYLISTS, action: Actions.Playlists.HOME },\r\n myUploads: { application: AppChannels.DEFAULT, action: Actions.Upload.MY_UPLOADS },\r\n favouritedVideos: { application: AppChannels.DEFAULT, action: Actions.Default.FAVORITE_VIDEOS },\r\n classrooms: { application: AppChannels.CLASSROOMS, action: Actions.Classrooms.HOME },\r\n classroom: { application: AppChannels.CLASSROOMS, action: Actions.Classrooms.CLASSROOM },\r\n watchHistory: { application: AppChannels.DEFAULT, action: Actions.Default.WATCH_HISTORY },\r\n settings: { application: 'settings', action: 'settings' }\r\n};\r\n\r\nexport const ExpandedLeftNavView = React.memo(function(): JSX.Element {\r\n const starredClassrooms = Flight.useBasicFetch<MockClassroom[]>(ClassroomRequests.getStarredClassrooms());\r\n\r\n return (\r\n <nav className={`${styles.leftNav} ${styles.leftNavExpanded}`}>\r\n <Scrollbars height='100%'>\r\n <LeftNavItem\r\n name={getPhrase('discover')}\r\n appLink={appLinks.discover}\r\n className={styles.discover}\r\n svgName={cvSvgLibrary.Compass}\r\n />\r\n <LeftNavItem\r\n name={getPhrase('playlists')}\r\n appLink={appLinks.playlists}\r\n className={styles.playlists}\r\n svgName={cvSvgLibrary.Playlist}\r\n />\r\n <LeftNavItem\r\n name={getPhrase('myUploads')}\r\n appLink={appLinks.myUploads}\r\n className={styles.myUploads}\r\n svgName={cvSvgLibrary.Upload}\r\n />\r\n <LeftNavItem\r\n name={getPhrase('favouritedVideos')}\r\n appLink={appLinks.favouritedVideos}\r\n className={styles.favouritedVideos}\r\n svgName={cvSvgLibrary.Heart}\r\n />\r\n\r\n <hr />\r\n\r\n <LeftNavItem\r\n name={getPhrase('classrooms')}\r\n appLink={appLinks.classrooms}\r\n className={styles.classrooms}\r\n icon={ClassroomSvg}\r\n />\r\n {starredClassrooms.data\r\n ? starredClassrooms.data.map(classroom => (\r\n <LeftNavItem\r\n key={classroom.id}\r\n name={classroom.name}\r\n appLink={{ ...appLinks.classroom, args: [classroom.id]}}\r\n className={styles.classroom}\r\n svgName={cvSvgLibrary.Star}\r\n />\r\n ))\r\n : <PartialLeftNavItem />\r\n }\r\n\r\n <div className={styles.leftNavBottom}>\r\n <LeftNavItem\r\n name={getPhrase('watchHistory')}\r\n appLink={appLinks.watchHistory}\r\n className={styles.watchHistory}\r\n svgName={cvSvgLibrary.History}\r\n />\r\n <LeftNavItem\r\n name={getPhrase('settings')}\r\n appLink={appLinks.settings}\r\n className={styles.settings}\r\n svgName={cvSvgLibrary.Cog}\r\n />\r\n </div>\r\n </Scrollbars>\r\n </nav>\r\n );\r\n});","import React from 'react';\r\n\r\nimport { Core } from '@clickview/common';\r\nimport { ContextService, AppLink, SvgContainer2, SvgContainerSize, cvSvgLibrary, SvgContainer } from '@clickview/shared';\r\n\r\nimport styles from './left-nav.scss';\r\n\r\ninterface LeftNavItemProps {\r\n name: string;\r\n appLink: Core.AppLink;\r\n className: string;\r\n icon?: () => JSX.Element;\r\n svgName?: string;\r\n collapsed?: boolean;\r\n}\r\n\r\nexport function isAppLinkActive({ application, action }: Core.AppLink): boolean {\r\n let currentContext = ContextService.getCurrentRoute();\r\n if (!currentContext)\r\n currentContext = ContextService.getCurrentContext();\r\n\r\n return application === currentContext.appLink.application && action === currentContext.appLink.action;\r\n}\r\n\r\nexport function LeftNavItem(props: LeftNavItemProps): JSX.Element {\r\n const isActive = isAppLinkActive(props.appLink);\r\n\r\n const colorizeBg = !props.collapsed || isActive;\r\n const colorizeText = props.collapsed && isActive;\r\n\r\n const { icon: SvgIcon } = props;\r\n\r\n return (\r\n <AppLink\r\n className={`${styles.leftNavAnchor} ${props.className} ${colorizeBg ? styles.active : styles.iconGrey} mt-3`}\r\n appLink={props.appLink}\r\n >\r\n <span className={`${styles.leftNavIcon}`}>\r\n {props.icon\r\n ? <SvgContainer2 size={SvgContainerSize.Large}>\r\n <SvgIcon />\r\n </SvgContainer2>\r\n : <SvgContainer svgName={props.svgName} size={SvgContainerSize.Large} />\r\n }\r\n </span>\r\n <span className={`${styles.leftNavText} ${colorizeText ? styles.highlightText : ''}`}>{props.name}</span>\r\n </AppLink>\r\n );\r\n}","import React from 'react';\r\n\r\nimport { ExpandedLeftNavView } from './ExpandedLeftNav';\r\nimport { CollapsedLeftNavView } from './CollapsedLeftNav';\r\n\r\nexport enum LeftNavState {\r\n Open,\r\n Collapsed,\r\n Hidden\r\n}\r\n\r\ninterface LeftNavViewProps {\r\n navState: LeftNavState;\r\n}\r\n\r\nexport function LeftNavView(props: LeftNavViewProps): JSX.Element {\r\n if (props.navState === LeftNavState.Hidden)\r\n return <></>;\r\n\r\n return props.navState === LeftNavState.Collapsed\r\n ? <CollapsedLeftNavView />\r\n : <ExpandedLeftNavView />;\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"leftNav\":\"cv--leftNav--3jVyN\",\"leftNavExpanded\":\"cv--leftNavExpanded--Q3CCb\",\"leftNavAnchor\":\"cv--leftNavAnchor--3A_-8\",\"leftNavCollapsed\":\"cv--leftNavCollapsed--2idO9\",\"leftNavText\":\"cv--leftNavText--3qbRh\",\"leftNavBottom\":\"cv--leftNavBottom--1OHHF\",\"partialLeftNavItem\":\"cv--partialLeftNavItem--131rM\",\"iconGrey\":\"cv--iconGrey--2C2dq\",\"leftNavIcon\":\"cv--leftNavIcon--13OIc\",\"discover\":\"cv--discover--2dE5b\",\"active\":\"cv--active--3209B\",\"playlists\":\"cv--playlists--2l2O2\",\"myUploads\":\"cv--myUploads--_qXck\",\"favouritedVideos\":\"cv--favouritedVideos--mqsI_\",\"classrooms\":\"cv--classrooms--Zgkg3\",\"classroom\":\"cv--classroom--2K3g7\",\"watchHistory\":\"cv--watchHistory--ZMi6H\",\"settings\":\"cv--settings--YTaso\",\"highlightText\":\"cv--highlightText--3uRuV\"};","import React from 'react';\r\n\r\nimport styles from '../left-nav.scss';\r\n\r\nexport function PartialLeftNavItem(): JSX.Element {\r\n return (\r\n <div className={`${styles.leftNavAnchor} mt-3`}>\r\n <span className={`${styles.iconGrey} partial-loading-background`}></span>\r\n <span\r\n className={`${styles.leftNavText} ${styles.partialLeftNavItem} mx-1 partial-loading-background`}\r\n />\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { Flight } from '@clickview/common';\r\nimport { Video, VideoCollection } from '@clickview/shared';\r\n\r\nimport { PlayerContext } from 'shared/contexts';\r\nimport { PlayPage } from 'shared/components';\r\nimport { ShareRequests } from 'shared/flight-requests/ShareRequests';\r\nimport { VideoRequests } from 'shared/flight-requests';\r\n\r\ninterface PlayViewProps {\r\n shortCode: string;\r\n}\r\n\r\nexport function PlaySharedView(props: PlayViewProps): React.ReactElement {\r\n const { setVideo } = React.useContext(PlayerContext);\r\n\r\n const video = Flight.useBasicFetch<Video>(ShareRequests.sharedResource(props.shortCode));\r\n const relatedVideos = Flight.useBasicFetch<VideoCollection>(VideoRequests.favoriteVideos(null));\r\n\r\n React.useEffect(() => {\r\n if (!video.data)\r\n return;\r\n\r\n setVideo(video.data);\r\n }, [!!video.data]);\r\n\r\n if (!video.data)\r\n return <></>;\r\n\r\n return (\r\n <PlayPage\r\n video={video.data}\r\n relatedVideos={relatedVideos.data ? relatedVideos.data.data : null}\r\n />\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { Flight } from '@clickview/common';\r\nimport { Video, VideoCollection } from '@clickview/shared';\r\n\r\nimport { VideoRequests } from 'shared/flight-requests';\r\nimport { PlayerContext } from 'shared/contexts';\r\nimport { PlayPage } from 'shared/components';\r\n\r\ninterface PlayViewProps {\r\n id: string;\r\n}\r\n\r\nexport function PlayView(props: PlayViewProps): React.ReactElement {\r\n const { setVideo } = React.useContext(PlayerContext);\r\n\r\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.id));\r\n const relatedVideos = Flight.useBasicFetch<VideoCollection>(VideoRequests.favoriteVideos(null));\r\n\r\n React.useEffect(() => {\r\n setVideo(video.data);\r\n }, [!!video.data]);\r\n\r\n if (!video.data)\r\n return <></>;\r\n\r\n return (\r\n <PlayPage\r\n video={video.data}\r\n relatedVideos={relatedVideos.data ? relatedVideos.data.data : null}\r\n setFavorite={console.log}\r\n />\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { Flight, LanguageService, Core } from '@clickview/common';\r\nimport { BannerHeader, Series, Config, VideoList, Video, Breadcrumbs, BreadcrumbType, Classification, VideoCollection, ActionOptions, cvSvgLibrary, PartialBreadcrumbs, PartialVideoList, BaseObject, ConfigRequests } from '@clickview/shared';\r\n\r\nimport { SeriesRequests } from 'shared/flight-requests';\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\n/**\r\n * This will need to change when this is moved into its own application directory.\r\n */\r\nconst namespace = 'shared.series';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\n// Update this applink when we pull dashboard in\r\nconst getClassificationAppLink = (classification: Classification): Core.AppLink => ({\r\n application: null,\r\n action: null,\r\n args: [classification.id]\r\n});\r\n\r\nconst getVideoAppLink = (video: Video): Core.AppLink => ({\r\n application: null,\r\n action: null,\r\n args: [video.id]\r\n});\r\n\r\nconst getSeriesAppLink = (series: Series): Core.AppLink => ({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SERIES,\r\n args: [series.id]\r\n});\r\n\r\nconst getHeaderActions = (): ActionOptions[] => ([\r\n {\r\n label: LanguageService.getPhrase(namespace, 'share'),\r\n appLink: { application: AppChannels.DEFAULT, action: 'index' },\r\n svgName: cvSvgLibrary.Share,\r\n className: 'btn btn-light mr-2',\r\n button: true\r\n },\r\n {\r\n label: LanguageService.getPhrase(namespace, 'follow'),\r\n appLink: { application: AppChannels.DEFAULT, action: 'index' },\r\n svgName: cvSvgLibrary.Edit, // TODO: Change to \"Follow\" icon\r\n className: 'btn btn-light',\r\n button: true\r\n }\r\n]);\r\n\r\ninterface SeriesViewProps {\r\n id: string;\r\n classificationId?: string;\r\n cursor?: string;\r\n}\r\n\r\nexport function SeriesView(props: SeriesViewProps): JSX.Element {\r\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config);\r\n const series = Flight.useBasicFetch<Series>(SeriesRequests.series(props.id));\r\n const seriesVideos = Flight.useBasicFetch<VideoCollection>(SeriesRequests.seriesVideos(props.id, props.cursor));\r\n\r\n let breadcrumbs: BaseObject[] = [series.data];\r\n if (props.classificationId) {\r\n const subjectPath = Flight.useBasicFetch<Classification[]>(SeriesRequests.breadcrumbs(props.classificationId));\r\n if (subjectPath.data) {\r\n breadcrumbs.unshift(...subjectPath.data);\r\n }\r\n }\r\n\r\n if (!seriesVideos.data || !config.data)\r\n return <></>;\r\n\r\n const heading = getPhrase('series', { seriesName: series.data.name });\r\n\r\n return (\r\n <>\r\n <BannerHeader\r\n heading={heading}\r\n banner={null}\r\n imageCdnUrl={config.data.imageCdnUrl}\r\n backButtonAppLink={{\r\n application: AppChannels.DASHBOARD,\r\n action: Actions.Dashboard.HOME\r\n }}\r\n backButtonText='Home' // this needs to be changed eventually\r\n actions={getHeaderActions()}\r\n />\r\n <div>\r\n <div className='border-bottom py-3 mb-3'>\r\n {(props.classificationId && breadcrumbs.length < 2)\r\n ? <PartialBreadcrumbs />\r\n : <Breadcrumbs\r\n currentItem={series.data}\r\n type={BreadcrumbType.Static}\r\n getItemAppLink={getClassificationAppLink}\r\n data={breadcrumbs}\r\n rootItem={{\r\n label: getPhrase('dashboard'),\r\n appLink: {\r\n application: AppChannels.DASHBOARD,\r\n action: Actions.Dashboard.HOME\r\n }\r\n }}\r\n />\r\n }\r\n\r\n {series.data.description && (\r\n <p className='pt-3'>{series.data.description}</p>\r\n )}\r\n </div>\r\n\r\n {seriesVideos.data\r\n ? !seriesVideos.isFetching\r\n ? <VideoList\r\n videos={seriesVideos.data.data}\r\n cursors={seriesVideos.data.pagination.cursors}\r\n getVideoAppLink={getVideoAppLink}\r\n getSeriesAppLink={getSeriesAppLink}\r\n />\r\n : <PartialVideoList />\r\n : <>Empty State</>\r\n }\r\n </div>\r\n </>\r\n );\r\n}","import React from 'react';\r\n\r\nimport { LanguageService, Flight } from '@clickview/common';\r\nimport { PopupViewProps, Popup, LanguageNamespaceContext, Video, Share, Playlist, Classification, UserRequests, CurrentUser } from '@clickview/shared';\r\nimport { ClassificationRequests } from '@clickview/dashboard';\r\nimport { PlaylistRequests } from '@clickview/playlists';\r\n\r\nimport { VideoRequests, ShareRequests } from 'shared/flight-requests';\r\nimport { MainShareView } from 'shared/views/share/main-view/MainShareView';\r\nimport { ShareSettingsView } from 'shared/views/share/settings-view/ShareSettingsView';\r\n\r\nconst namespace = 'shared.share';\r\n\r\nexport type SharableEntity = 'video' | 'playlist' | 'subject';\r\n\r\nconst getFetchFunctionByType = (type: SharableEntity) => {\r\n switch (type) {\r\n case 'video': {\r\n return (id: string) => Flight.useBasicFetch<Video>(VideoRequests.video(id));\r\n }\r\n\r\n case 'playlist': {\r\n return (id: string) => Flight.useBasicFetch<Playlist>(PlaylistRequests.getPlaylist(id));\r\n }\r\n\r\n case 'subject': {\r\n return (id: string, userId: string) => {\r\n return Flight.useBasicFetch<Classification>(ClassificationRequests.classification(id, userId));\r\n };\r\n }\r\n }\r\n};\r\n\r\ninterface ShareViewProps extends PopupViewProps {\r\n entityId: string;\r\n entityType: SharableEntity;\r\n}\r\n\r\nexport function ShareView(props: ShareViewProps): JSX.Element {\r\n const [ showSettings, setShowSettings ] = React.useState(false);\r\n\r\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser);\r\n\r\n const fetchFunction = getFetchFunctionByType(props.entityType);\r\n const entity = fetchFunction(props.entityId, currentUser.data?.id);\r\n\r\n const shareData = Flight.useBasicFetch<Share>(ShareRequests.getShareData(entity.data?.id));\r\n\r\n const popupTitle = !showSettings\r\n ? LanguageService.getPhrase(namespace, 'mainTitle', { name: entity.data?.name || '' })\r\n : LanguageService.getPhrase(namespace, 'settingsTitle', { name: entity.data?.name || '' });\r\n\r\n return (\r\n <LanguageNamespaceContext.Provider value={namespace}>\r\n <Popup\r\n title={popupTitle}\r\n closePopup={props.closePopup}\r\n showLoadingSpinner={!shareData.data}\r\n >\r\n {(() => {\r\n if (!shareData.data)\r\n return <></>;\r\n\r\n return !showSettings\r\n ? <MainShareView\r\n shareData={shareData.data}\r\n entity={entity.data}\r\n entityType={props.entityType}\r\n onClickShowSettings={() => setShowSettings(true)}\r\n />\r\n : <ShareSettingsView\r\n shareData={shareData.data}\r\n showMain={() => setShowSettings(false)}\r\n />;\r\n })()}\r\n </Popup>\r\n </LanguageNamespaceContext.Provider>\r\n );\r\n}","import React from 'react';\r\nimport * as CopyToClipboard from 'react-copy-to-clipboard';\r\n\r\nimport { LanguageService } from '@clickview/common';\r\nimport { BaseObject, Share, DivButton, Text, SvgContainer, cvSvgLibrary, useAlerts } from '@clickview/shared';\r\n\r\nimport { TokenizedTypeahead } from 'shared/components/share/tokenized-typeahead/TokenizedTypeahead';\r\nimport { ShareeItem } from 'shared/components/share/sharee-item/ShareeItem';\r\n\r\nimport { SharableEntity } from '../ShareView';\r\n\r\nimport styles from './main-share.scss';\r\nimport mockUsers from '../mocks/instant-search-users.json';\r\n\r\nconst namespace = 'shared.share';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\ninterface MainShareViewProps {\r\n shareData: Share;\r\n entity: BaseObject;\r\n entityType: SharableEntity;\r\n onClickShowSettings: () => void;\r\n}\r\n\r\n// This will need to be updated a fair bit probs once we work out how the backend will look\r\nexport function MainShareView(props: MainShareViewProps): JSX.Element {\r\n const [ showingShareLink, setShowingShareLink ] = React.useState(false);\r\n const [ showCopiedText, setShowCopiedText ] = React.useState(false);\r\n const [ searchSuggestions, setSearchSuggestions ] = React.useState<BaseObject[]>([]);\r\n const [ selections, setSelections ] = React.useState<BaseObject[]>([]);\r\n const [ entitiesSharedTo, setEntitiesSharedTo ] = React.useState<BaseObject[]>([]);\r\n\r\n const alerts = useAlerts();\r\n\r\n React.useEffect(() => {\r\n // Filter out any suggestions that are currently selected\r\n const selectedIds = selections.map(s => s.id);\r\n const filteredSuggestions = mockUsers.filter(user => !selectedIds.includes(user.id));\r\n\r\n setSearchSuggestions(filteredSuggestions);\r\n }, [selections]);\r\n\r\n function onClickShare(): void {\r\n setEntitiesSharedTo([ ...entitiesSharedTo, ...selections ]);\r\n setSelections([]);\r\n\r\n alerts.success(LanguageService.getPhrase(namespace, 'success', { name: props.entity.name }));\r\n }\r\n\r\n function onCopy(): void {\r\n if (showCopiedText)\r\n return;\r\n\r\n setShowCopiedText(true);\r\n setTimeout(() => setShowCopiedText(false), 2000);\r\n }\r\n\r\n return (\r\n <>\r\n <div className='d-flex justify-content-between align-items-center pb-3'>\r\n <TokenizedTypeahead\r\n localSuggestions={searchSuggestions}\r\n selections={selections}\r\n updateSelections={selection => setSelections([ ...selections, selection ])}\r\n removeSelection={id => setSelections(selections.filter(s => s.id !== id))}\r\n placeholder={getPhrase('searchPlaceholder')}\r\n />\r\n {props.entityType === 'playlist' &&\r\n <p className='text-secondary pl-3 mb-0 text-center text-nowrap'><Text phrase='viewOnly' /></p>\r\n }\r\n </div>\r\n\r\n {entitiesSharedTo.length\r\n ? <div>\r\n <h3 className='font-size-normal'><Text phrase='sharedTo' /></h3>\r\n <ul className='list-unstyled'>\r\n {entitiesSharedTo.map(e => (\r\n <li className='mb-2'>\r\n <ShareeItem key={e.id} entity={e} />\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n : <></>\r\n }\r\n\r\n <div className='mx-n3 px-3 pt-3 border-top'>\r\n {selections.length\r\n ? <button onClick={onClickShare} className='btn btn-dark float-right'>\r\n <Text phrase='share' />\r\n </button>\r\n : <>\r\n <div className={showingShareLink ? 'd-flex justify-content-between' : ''}>\r\n <h3 className='h6 mr-auto'><Text phrase='shareLinkInstead' /></h3>\r\n {showingShareLink &&\r\n <DivButton className='cursor-pointer' onClick={props.onClickShowSettings}>\r\n <SvgContainer svgName={cvSvgLibrary.Cog} />\r\n </DivButton>\r\n }\r\n </div>\r\n\r\n <div className='d-flex justify-content-between align-items-center'>\r\n <div className={`d-flex align-items-center ${showingShareLink ? 'w-100' : 'w-75'}`}>\r\n {showingShareLink\r\n ? <>\r\n <input\r\n type='text'\r\n id='share-link'\r\n autoComplete='off'\r\n className={`form-control bg-white border-dark ${styles.shareLink}`}\r\n spellCheck={false}\r\n value={props.shareData.shortUrl}\r\n readOnly\r\n />\r\n <CopyToClipboard text={props.shareData.shortUrl}>\r\n <DivButton\r\n className={`input-group-append border border-dark text-nowrap px-2 py-1 ${styles.copyBtn}`}\r\n onClick={onCopy}\r\n >\r\n <Text phrase={showCopiedText ? 'copiedLink' : 'copyLink'} />\r\n </DivButton>\r\n </CopyToClipboard>\r\n </>\r\n : <>\r\n <SvgContainer className='mr-1 svg-container' svgName={cvSvgLibrary.VisibleOn} />\r\n <Text phrase='publicLinkInfo' />\r\n </>\r\n }\r\n </div>\r\n {!showingShareLink &&\r\n <DivButton className='info-link' onClick={() => setShowingShareLink(true)}>\r\n <Text phrase='createLink' />\r\n </DivButton>\r\n }\r\n </div>\r\n </>\r\n }\r\n </div>\r\n </>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"shareLink\":\"cv--shareLink--cFx7z\",\"copyBtn\":\"cv--copyBtn--mrGX3\"};","import React from 'react';\r\n\r\nimport { LanguageService } from '@clickview/common';\r\nimport { PopupButtons, SvgContainer, cvSvgLibrary, Text, Share, DivButton } from '@clickview/shared';\r\n\r\nimport { ToggleSwitch } from 'shared/components/toggle-switch/ToggleSwitch';\r\nimport { CopyEmbedHtml } from 'shared/components/share/copy-embed-html/CopyEmbedHtml';\r\n\r\nimport styles from './share-settings.scss';\r\n\r\nconst namespace = 'shared.share';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\ninterface ShareSettingsViewProps {\r\n shareData: Share;\r\n showMain: () => void;\r\n}\r\n\r\nexport function ShareSettingsView(props: ShareSettingsViewProps): JSX.Element {\r\n const [ expireLink, setExpireLink ] = React.useState(false);\r\n const [ passwordProtectLink, setPasswordProtectLink ] = React.useState(false);\r\n const [ revealPassword, setRevealPassword ] = React.useState(false);\r\n const [ linkPassword, setLinkPassword ] = React.useState('');\r\n\r\n function onClickDeleteLink(): void {\r\n // TODO: delete link\r\n props.showMain();\r\n }\r\n\r\n function onClickSave(): void {\r\n console.log('save');\r\n\r\n props.showMain();\r\n }\r\n\r\n function onChangePassword(e: React.ChangeEvent<HTMLInputElement>): void {\r\n setLinkPassword(e.currentTarget.value);\r\n }\r\n\r\n return (\r\n <>\r\n <div className='d-flex align-items-center pb-3'>\r\n <SvgContainer className='mr-1 svg-container' svgName={cvSvgLibrary.VisibleOn} />\r\n <div className='mr-auto'><Text phrase='publicLinkInfo' /></div>\r\n <DivButton onClick={onClickDeleteLink} className='info-link'>\r\n <Text phrase='deleteLink' />\r\n </DivButton>\r\n </div>\r\n\r\n <div className='d-flex justify-content-between align-items-center pb-3'>\r\n <div>\r\n <label className='m-0' htmlFor=''><Text phrase='linkExpirationHeading' /></label>\r\n <p className='m-0'><Text phrase='linkExpirationInfo' /></p>\r\n </div>\r\n <ToggleSwitch onClick={() => setExpireLink(!expireLink)} on={expireLink} />\r\n </div>\r\n\r\n <div className='pb-3'>\r\n <div className='d-flex justify-content-between align-items-center'>\r\n <div>\r\n <label className='m-0' htmlFor=''><Text phrase='passwordProtectHeading' /></label>\r\n <p className='m-0'><Text phrase='passwordProtectInfo' /></p>\r\n </div>\r\n <ToggleSwitch onClick={() => setPasswordProtectLink(!passwordProtectLink)} on={passwordProtectLink} />\r\n </div>\r\n\r\n {passwordProtectLink &&\r\n <div className='position-relative w-75 mt-2'>\r\n <input\r\n className='form-control'\r\n value={linkPassword}\r\n onChange={onChangePassword}\r\n type={revealPassword ? 'text' : 'password'}\r\n placeholder={getPhrase('passwordPlaceholder')}\r\n />\r\n <DivButton className={styles.passwordVisibilityToggle} onClick={() => setRevealPassword(!revealPassword)}>\r\n <SvgContainer svgName={revealPassword ? cvSvgLibrary.VisibleOn : cvSvgLibrary.VisibleOff} />\r\n </DivButton>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div className='pb-3'>\r\n <CopyEmbedHtml shortCode={props.shareData.shortCode} />\r\n </div>\r\n\r\n <PopupButtons buttons={[\r\n {\r\n variant: 'outline-dark',\r\n onClick: props.showMain,\r\n buttonText: getPhrase('cancel')\r\n },\r\n {\r\n variant: 'dark',\r\n onClick: onClickSave,\r\n buttonText: getPhrase('save')\r\n }\r\n ]} />\r\n </>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"passwordVisibilityToggle\":\"cv--passwordVisibilityToggle--4X-7U\"};","import './theme-overrides.scss';","// extracted by mini-css-extract-plugin","module.exports = __WEBPACK_EXTERNAL_MODULE__clickview_common__;","module.exports = __WEBPACK_EXTERNAL_MODULE__clickview_dashboard__;","module.exports = __WEBPACK_EXTERNAL_MODULE__clickview_playlists__;","module.exports = __WEBPACK_EXTERNAL_MODULE__clickview_shared__;","module.exports = __WEBPACK_EXTERNAL_MODULE__microsoft_immersive_reader_sdk__;","module.exports = __WEBPACK_EXTERNAL_MODULE_backbone__;","module.exports = __WEBPACK_EXTERNAL_MODULE_formik__;","module.exports = __WEBPACK_EXTERNAL_MODULE_handlebars__;","module.exports = __WEBPACK_EXTERNAL_MODULE_marked__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_bootstrap__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_custom_scrollbars__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_dom__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_dropzone__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_intersection_observer__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_redux__;","module.exports = __WEBPACK_EXTERNAL_MODULE_yup__;"],"sourceRoot":""}
|