{"version":3,"sources":["components/pages/my-lessons/red.png","components/pages/my-lessons/green.png","components/pages/my-lessons/blue.png","components/pages/review/pineapple.gif","components/app/app.styles.js","components/main-menu/main-menu.jsx","components/pages/discover/discover.context.js","components/pages/discover/p365/p365.jsx","common/api/presentations.js","stores/discover/discover.actions.js","stores/discover/discover.selectors.js","components/pages/discover/p365/p365.container.js","components/pages/discover/preview-modal/preview-modal.jsx","components/pages/discover/discover.jsx","components/pages/discover/discover.styles.js","common/api/pupil-activity.js","stores/feed-items/feed-items.actions.js","stores/feed-items/feed-items.selectors.js","components/pages/discover/layout-holder/layout-holder.styles.js","components/pages/discover/layout-holder/layout-holder.jsx","components/feed-tile/feed-tile.jsx","components/pages/my-lessons/my-lessons.jsx","components/page-head/page-head.jsx","components/page-head/page-head.styles.js","components/add-work-dialog/add-work-dialog.styles.js","common/api/work.js","components/add-work-dialog/add-work-dialog.jsx","components/pages/lesson-view/lesson-view.jsx","stores/work-upload/work-upload.actions.js","stores/work-upload/work-upload.selectors.js","components/pages/work-upload/work-upload.jsx","components/pages/teacher-feedback/teacher-feedback.styles.js","components/pages/teacher-feedback/teacher-feedback.jsx","components/editor/context.js","components/editor/controls.styles.js","components/editor/controls.jsx","components/editor/editor.jsx","components/editor/editor.styles.js","components/success-criteria/success-criteria.jsx","components/toolbox/toolbox.jsx","components/presentation-preview/presentation-preview.jsx","components/pages/write/write.jsx","components/pages/review/review.jsx","components/pages/discover/solo-session-dialog/solo-session-dialog.jsx","components/app/app.js","stores/discover/discover.reducer.js","stores/feed-items/feed-items.reducer.js","stores/work-upload/work-upload.reducer.js","reducer.js","index.js","common/api/profile.js"],"names":["module","exports","styles","container","maxWidth","margin","MenuLink","injectSheet","_ref","COLORS","link","color","textDecoration","height","display","alignItems","borderBottom","padding","paddingTop","GREEN","NORMAL","active","borderColor","_ref2","classes","props","React","createElement","NavLink","Object","assign","exact","className","activeClassName","position","zIndex","fontSize","boxShadow","background","justifyContent","menu","listStyle","addWork","marginLeft","marginRight","right","_ref3","setSoloSessionModal","useContext","AppContext","to","Button","action","opened","secondary","purple","icon","FontAwesomeIcon","faPlus","tall","green","DiscoverContext","createContext","P365","fetchingP365","p365pull","fetchP365","openPreview","P365Carousel","onClick","apiGetPresentation","id","params","apiClient","get","requestPrefix","request","apiGetP365Today","include","getState","state","DiscoverStore","getP365","p365","getFetchingP365","connect","dispatch","Preview","controls","marginTop","skeleton","paddingBottom","width","borderRadius","left","top","controlsSkeleton","presentation","setPresentation","useState","useEffect","then","res","data","PresentationPreview","PreviewModal","content","overflow","footer","bottom","isOpen","requestClose","previewStatus","Modal","closeButton","ModalHeader","title","ModalContent","ModalFooter","alignRight","childrenGap","simple","presentationId","Rows","categories","flexDirection","minHeight","body","flex","me","useMe","yearGroup","account","student_type","year_group","setPreviewStatus","useMemo","value","closePreview","Provider","MainMenu","P365Container","map","row","PresentationRow","key","tileProps","hidePremium","footerSlot","Fragment","apiSendToReview","post","apiCreateSoloSession","apiCreateSoloSessionWithoutPresentation","apiGetAction","fetchFeedItems","apiGetFeedItems","FeedItemsStore","getFeedItemsList","createSelector","result","entities","items","getLastWorkVersion","itemId","item","stateNow","getFeedItems","pa_action","pa_work_versions","length","layoutHolder","children","as","Component","classNames","FeedTileSkeleton","topBox","date","marginBottom","desc","borderTop","BORDERS","PRIMARY","button","Bone","feedTileStyles","transition","backgroundPosition","backgroundSize","lineHeight","description","noPresImage","objectFit","head","font","headIcon","hint","thumbnail","FeedTile","memo","history","useHistory","lastWorkVersion","useSelector","actionId","status","solo","pa_session","format","Date","accessible_at","student_solo_session","image","medium_url","lesson_overview","tabIndex","NoItemsPlaceholder","illustration","PresentationThumbnail","faSchool","work","push","faEye","faFileAlt","faUserFriends","faReply","LessonsList","gridGap","gridTemplateColumns","noItems","textAlign","buttons","gap","fontWeight","red","backgroundColor","RED","blue","BLUE","src","alt","Link","href","ButtonElement","Array","keys","_","index","myLessonsStyles","fullVHExceptHeaderMin","contentHolder","spinner","alignSelf","justifySelf","useDispatch","feedItems","catch","errorHandler","LayoutHolder","FONT_SIZES","HEADING_MEDIUM","STYLE","minWidth","pending","border","cursor","TEXT","DARK_GREY","FADED","apiCreateMedium","formData","FormData","append","order","apiDeleteWork","delete","apiReuploadWork","useAddWork","onError","onSuccess","workVersionId","reupload","arguments","undefined","setPending","apiEndpoint","type","options","upload","files","Promise","all","slice","file","e","response","pa_work_version","AddWorkDialog","legacy","Spinner","faKeyboard","FormFile","multiple","onChange","accept","faImage","Head","backLink","setModalState","PageHead","CarretLeftIcon","SlidesPreview","_ref5","borderLeft","list","overflowX","preview","flexShrink","activeSlideId","containerRef","useRef","Presentation","readOnly","multiSlides","_ref4","slides","slide","ref","role","LessonView","_ref6","fullVHExceptHeader","main","presentationHolder","presentationSkeleton","notFound","HEADING_LARGE","_ref7","useRouteMatch","setWorkVersionId","modalState","session","setSession","navigation","usePresentationNavigation","loop","pa_presentation_action","setActiveSlideId","last_pa_work_version","asset","prevSlide","faAngleLeft","nextSlide","faAngleRight","deleteMedia","apiDeleteMedia","rotateMedium","apiRotateMedium","put","degrees","reorderMedia","workId","ids","apiReorderMedia","media_ids","WorkUploadStore","getWorkVersion","workVersion","getMediaList","media","getMediaListInOrder","sortBy","WorkContext","Reorder","flexWrap","opacity","cell","setScreenState","onReorder","mediaCopy","Sortable","current","animation","ghostClass","onEnd","from","dataset","Holder","DarkButton","faCaretLeft","data-id","style","backgroundImage","image_url","actions","doneButton","onAction","window","location","reload","bleed","span","faFileUpload","faClipboardCheck","center","EditControls","rotateMediumRequest","getRotateMediumRequest","faUndo","PageControls","longLabel","currentMedia","onDelete","addMediaRequest","getAddMediaRequest","deleteWorkRequest","getDeleteWorkRequest","faBringForward","openConfirmationDialog","theme","bodyText","faTrashAlt","disabled","addMedia","faPlusCircle","WorkUpload","imageHolder","pageNavDesktop","pageNavMobile","match","getWorkVersionId","getWorkId","mediaNav","useMediaNav","previousPagesLength","usePrevious","mediaLength","screenState","useCallback","setActiveMediaIndex","activeMediaIndex","MediaPageNav","activeMedia","MediaLoader","actionButton","layout","details","feedback","feedbackBody","mediaNavDesktop","mediaLoader","pendingUpload","setPendingUpload","setAction","rejectedWorkVersion","lastWorkversion","faGraduationCap","comment","ControlPanel","sticky","holder","ControlButton","controlButtonStyles","b","onMouseDown","preventDefault","Bold","editorState","EditorContext","hasBold","getCurrentInlineStyle","has","newState","RichUtils","toggleInlineStyle","faBold","Italic","hasItalic","faItalic","Underline","faUnderline","UnorderedList","blockType","anchorKey","getSelection","getAnchorKey","getCurrentContent","getBlockForKey","getType","toggleBlockType","faListUl","OrderedList","faListOl","Panel","Separator","separator","stateToHTML","convertToHTML","EditorProvider","EditorCore","OFF_BLACK","counterReset","counterIncrement","pointerEvents","MID_GREY","error","Editor","placeholder","stripPastedStyles","handleKeyCommand","command","WorkEditor","panel","EditorState","createEmpty","Controls","editor","useSuccessCriteria","successCriteria","setSuccessCriteria","success_criteria","toggle","target","checked","apiSetSuccessCriteria","criterion_id","SuccessCriteria","BODY_DEFAULT","criteria","criterion","checkbox","prompts","FormCheckbox","ToolBox","box","BODY_LARGE","close","windowSize","onClose","slidePosition","faTimes","PresentationPreviewModal","PresentationPreviewButton","LIGHT_GREY","BODY_SMALL","setPreview","contentWrapper","editorWrapper","tools","setEditorState","draftHTML","setDraftHTML","successCriteriaProps","typed_body_cache","text","contentState","convertFromHTML","createWithContent","createStateFromHtml","typed_body","saveDraft","html","apiCacheTypedBody","tm","setTimeout","clearTimeout","redirect","apiTypeMedium","getCursorStyle","size","r","PeerRevieweWarningModal","peerReviewModeProps","InfoModal","setShowCommentWarning","showCommentWarning","faCommentSmile","minw","usePeerReviewMode","reviews","enabled","setState","hasCommented","loopReviews","i","j","pa_review_comments","author","onSendBack","apiSendToStudentAfterPeerReview","FinishModal","borderTopLeftRadius","borderTopRightRadius","pineapple","SendToTeacherButton","faPaperPlane","SendToPeerReviewButton","SendBackToPeerButton","activeTool","toolSettings","colors","markerColor","sizes","transform","HEADING_NANO","textTransform","setActiveTool","setToolSettings","showToolSettings","setShowToolSettings","onUndo","listener","node","hide","parentNode","document","addEventListener","removeEventListener","faHighlighter","faPen","faEraser","WORK_HIGHLIGHT_SETTINGS","markerColors","faCheck","markerSizes","markerSize","penColors","penColor","penSizes","penSize","_ref8","activeFeedback","_ref9","onEdit","onSend","onComment","nextStepIsPeerReview","peer_review","faPencilAlt","_ref10","page","reviewTools","presentationTools","controlsPanel","workHolder","feedbackHint","workWrapper","peerReviewWarning","_ref11","workReviewsProps","useWorkReviews","canvasRefs","highlighter","useWorkHighlighter","useControls","undo","WorkReviews","medium","WorkHighlighter","authorId","preloadData","pa_highlight_canva","h","apiSetHighlightData","mediumId","getSaveData","canvasRef","el","canvasWidth","canvasHeight","light","SoloSessionForm","modalContent","inset","typeChoice","appearance","checkIcon","teachers","setTeachers","selectedTeacher","setSelectedTeacher","Cookies","setTitle","setDescription","typeOfWork","setTypeOfWork","isValid","createSession","teacher_id","presentation_id","reject","toast","school","teacher_types","onSubmit","set","expires","FormRow","FormLabel","small","required","btn","FormSelect","teacher","display_name","FormInput","FormTextArea","name","faCheckCircle","faCircle","SoloSessionDialog","modal","overlayClassName","meError","soloSessionModal","appContextValue","UserProvider","fetchMe","resolve","EnvironmentLine","Router","basename","process","Header","activePage","student","Switch","ErrorBoundary","UserInspector","haveRights","policy","can_see_pupil_lessons","appHolder","Route","path","component","MyLessons","Discover","TeacherFeedback","Write","Review","PageNotFound","ConfirmationDialog","ToastContainer","DiscoverReducer","combineReducers","fetching","createRequestReducer","fetchingRecommended","fetchingNews","createMappedRequestReducer","count","side","Math","floor","createReducer","DISCOVER:FETCH_P365_REQUEST_SUCCESS","presentations","shift","forEach","MyLessonsReducer","FEED_ITEMS:FETCH_REQUEST_SUCCESS","schema","Entity","normalize","normalizeFeedItems","pa_action_feed_items","WORK_UPLOAD:FETCH_REQUEST","WORK_UPLOAD:FETCH_REQUEST_SUCCESS","normalizeMedia","WORK_UPLOAD:ADD_MEDIA_REQUEST_SUCCESS","WORK_UPLOAD:DELETE_MEDIA_REQUEST","filter","WORK_UPLOAD:ROTATE_MEDIUM_REQUEST_SUCCESS","WORK_UPLOAD:REORDER_MEDIA_REQUEST","Reducer","StyledApp","App","store","createStore","rootReducer","applyMiddleware","requestMiddleware","thunk","render","ReactDOM","PobbleStyles","getElementById"],"mappings":"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","file":"static/js/main.00d33885.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/red.f2e351ed.png\";","module.exports = __webpack_public_path__ + \"static/media/green.6a03e100.png\";","module.exports = __webpack_public_path__ + \"static/media/blue.d55eb9ae.png\";","module.exports = __webpack_public_path__ + \"static/media/pineapple.c74f27c1.gif\";","const styles = {\n container: {\n maxWidth: '500px',\n margin: '100px auto'\n }\n}\n\nexport default styles\n","import React, { useContext } from 'react'\nimport injectSheet from 'react-jss'\nimport { NavLink } from 'react-router-dom'\nimport Button from 'pobble-components/dist/button'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faPlus } from '@fortawesome/pro-solid-svg-icons/faPlus'\nimport { AppContext } from '../app/app'\n\nconst menuLinkStyles = ({ COLORS }) => ({\n link: {\n color: '#9B9B9B',\n textDecoration: 'none',\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n borderBottom: '.3em solid transparent',\n padding: '0 1.55em',\n paddingTop: '.2em',\n '&:hover': {\n color: COLORS.GREEN.NORMAL\n }\n },\n active: {\n borderColor: COLORS.GREEN.NORMAL\n }\n})\n\nconst MenuLink = injectSheet(menuLinkStyles)(({ classes, ...props }) => {\n return (\n \n )\n})\n\nconst menuStyles = {\n container: {\n position: 'relative',\n zIndex: '10',\n fontSize: '18px',\n height: '70px',\n boxShadow: '0 2px 4px rgba(0, 0, 0, 0.2)',\n background: '#fff',\n display: 'flex',\n alignItems: 'center',\n '@media (min-width: 575px)': {\n justifyContent: 'center'\n },\n '@media (max-width: 767px)': {\n height: '50px',\n fontSize: '14px'\n }\n },\n menu: {\n height: '100%',\n margin: '0',\n padding: '0',\n listStyle: 'none',\n display: 'flex',\n '& li': {\n height: '100%'\n }\n },\n addWork: {\n marginLeft: 'auto',\n marginRight: '20px',\n '@media (min-width: 575px)': {\n marginLeft: '0',\n position: 'absolute',\n right: '0'\n }\n }\n}\n\nconst MainMenu = ({ classes }) => {\n const { setSoloSessionModal } = useContext(AppContext)\n\n return (\n
\n \n setSoloSessionModal({ opened: true })}\n secondary\n purple\n className={classes.addWork}\n icon={}\n tall\n green>\n Add work\n \n
\n )\n}\n\nexport default injectSheet(menuStyles)(MainMenu)\n","import { createContext } from 'react'\n\nconst DiscoverContext = createContext(null)\n\nexport default DiscoverContext\n","import React, { useContext } from 'react'\nimport P365Carousel from 'pobble-components/dist/p365-carousel'\nimport DiscoverContext from '../discover.context'\n\nconst P365 = ({ fetchingP365, p365pull, fetchP365 }) => {\n const { openPreview } = useContext(DiscoverContext)\n return (\n \n )\n}\n\nexport default P365\n","import { apiClient } from 'pobble-components/dist/api'\n\nconst apiPresentationSearch = params =>\n apiClient.get(`/v3/presentations/search`, { params })\n\nconst apiGetPresentation = (id, params) =>\n apiClient.get(`/v3/presentations/${id}`, { params })\n\nconst apiGetP365Today = params => apiClient.get('/v3/p365/today', { params })\n\nexport { apiPresentationSearch, apiGetP365Today, apiGetPresentation }\n","import { apiGetP365Today } from '../../common/api/presentations'\n\nconst fetchP365 = params => ({\n requestPrefix: 'DISCOVER:FETCH_P365',\n params: params,\n request: () =>\n apiGetP365Today({\n ...params,\n include: 'presentation.names,presentation.image'\n })\n})\n\nexport { fetchP365 }\n","const getState = state => state.DiscoverStore\n\nconst getP365 = state => getState(state).p365\nconst getFetchingP365 = state => getState(state).fetchingP365\n\nexport { getP365, getFetchingP365 }\n","import { connect } from 'react-redux'\nimport P365 from './p365'\nimport { fetchP365 } from '../../../../stores/discover/discover.actions'\nimport {\n getP365,\n getFetchingP365\n} from '../../../../stores/discover/discover.selectors'\n\nconst mapStateToProps = state => ({\n p365pull: getP365(state),\n fetchingP365: getFetchingP365(state)\n})\n\nconst mapDispatchToProps = dispatch => ({\n fetchP365: params => dispatch(fetchP365(params))\n})\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(P365)\n","import React, { useContext, useState, useEffect } from 'react'\nimport injectSheet from 'react-jss'\nimport {\n Modal,\n ModalHeader,\n ModalContent,\n ModalFooter\n} from 'pobble-components/dist/modal'\nimport Button from 'pobble-components/dist/button'\nimport DiscoverContext from '../discover.context'\nimport { apiGetPresentation } from '../../../../common/api/presentations'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faPlus } from '@fortawesome/pro-solid-svg-icons/faPlus'\nimport { PresentationPreview } from 'pobble-components/dist/presentation/preview'\nimport { AppContext } from '../../../app/app'\n\nconst Preview = injectSheet({\n controls: {\n display: 'flex',\n justifyContent: 'center',\n marginTop: '20px'\n },\n skeleton: {\n paddingBottom: '56%',\n position: 'relative',\n '& > *': {\n height: '100%',\n width: '100%',\n borderRadius: '0',\n position: 'absolute',\n left: '0',\n top: '0'\n }\n },\n controlsSkeleton: {\n height: '72px'\n }\n})(({ id, classes }) => {\n const [presentation, setPresentation] = useState(null)\n\n useEffect(\n () => {\n if (id) {\n apiGetPresentation(id, {\n include:\n 'presentation.image,presentation.year_groups,presentation.year_group.order,presentation.details,presentation.slides,presentation.slide.type,presentation.slide.details,presentation.names'\n }).then(res => {\n setPresentation(res.data.presentation)\n })\n }\n },\n [id]\n )\n\n return \n})\n\nconst PreviewModal = injectSheet({\n content: {\n padding: '0',\n background: '#e9ecf2',\n overflow: 'hidden',\n maxWidth: '1100px'\n },\n footer: {\n position: 'sticky',\n bottom: '-40px'\n }\n})(({ classes, isOpen, requestClose }) => {\n const { previewStatus } = useContext(DiscoverContext)\n const { setSoloSessionModal } = useContext(AppContext)\n\n return (\n \n {previewStatus.title}\n \n \n \n \n \n {\n setSoloSessionModal({\n opened: true,\n presentationId: previewStatus.id\n })\n }}\n tall\n icon={}>\n Add work\n \n \n \n )\n})\n\nexport default PreviewModal\n","import React, { useMemo, useState } from 'react'\nimport injectSheet from 'react-jss'\nimport styles from './discover.styles'\nimport MainMenu from '../../main-menu/main-menu'\nimport P365Container from './p365/p365.container'\nimport PreviewModal from './preview-modal/preview-modal'\nimport DiscoverContext from './discover.context'\nimport { useMe } from 'pobble-components/dist/pobble-user'\nimport { PresentationRow } from 'pobble-components/dist/tiles/row'\nimport Button from 'pobble-components/dist/button'\n\nconst Rows = [\n {\n id: 'news',\n title: 'Pobble News',\n params: { categories: ['news'] }\n }\n]\n\nconst Discover = ({ classes }) => {\n const { me } = useMe()\n\n const yearGroup = me.account.student_type.year_group.id\n\n const yearGroups = useMemo(() => [yearGroup], []) // eslint-disable-line\n\n const [previewStatus, setPreviewStatus] = useState({\n opened: false,\n id: null,\n title: ''\n })\n\n const value = useMemo(\n () => ({\n previewStatus,\n openPreview: data => setPreviewStatus({ opened: true, ...data }),\n closePreview: () => setPreviewStatus({ ...previewStatus, opened: false })\n }),\n [previewStatus, setPreviewStatus]\n )\n\n return (\n \n
\n \n \n
\n {Rows.map(row => {\n return (\n (\n <>\n value.openPreview(presentation)}>\n Preview\n \n \n )\n }}\n />\n )\n })}\n
\n \n setPreviewStatus({ ...previewStatus, opened: false })\n }\n isOpen={previewStatus.opened}\n id={previewStatus.id}\n />\n
\n
\n )\n}\n\nexport default injectSheet(styles)(Discover)\n","export default {\n container: {\n display: 'flex',\n flexDirection: 'column',\n minHeight: '100vh'\n },\n body: {\n background: '#F1F4F9',\n overflow: 'hidden',\n flex: '1',\n paddingBottom: '80px'\n }\n}\n","import { apiClient } from 'pobble-components/dist/api'\n\nexport const apiGetFeedItems = params =>\n apiClient.get('/v3/me/pa_action_feed_items', { params })\n\nexport const apiGetFeedItem = (id, params) =>\n apiClient.get(`/v3/pa_action_feed_items/${id}`, { params })\n\nexport const apiSendToReview = id =>\n apiClient.post(`/v3/pa_work_versions/${id}/send_to_review`)\n\nexport const apiCreateSoloSession = (data, params) =>\n apiClient.post(`/v3/pa_sessions/create_student_solo_session`, data, {\n params\n })\n\nexport const apiCreateSoloSessionWithoutPresentation = (data, params) =>\n apiClient.post(\n `/v3/pa_sessions/create_student_solo_session_without_presentation`,\n data,\n { params }\n )\n\nexport const apiGetAction = (id, params) =>\n apiClient.get(`/v3/pa_presentation_actions/${id}`, { params })\n\nexport const apiTypeMedium = (id, data) =>\n apiClient.post(`/v3/pa_work_versions/${id}/type_medium`, data)\n\nexport const apiCacheTypedBody = (id, data) =>\n apiClient.post(`/v3/pa_work_versions/${id}/cache_typed_body`, data)\n\nexport const apiSetSuccessCriteria = (id, data) =>\n apiClient.put(`/v3/pa_work_versions/${id}/set_success_criterion`, data)\n\nexport const apiSetHighlightData = (mediumId, data) =>\n apiClient.post(`/v3/media/${mediumId}/pa_highlight_canvas/set_data`, data)\n\nexport const apiSendToStudentAfterPeerReview = (workVersionId, data) =>\n apiClient.post(\n `v3/pa_work_versions/${workVersionId}/send_to_student_after_peer_review`,\n data\n )\n","import { apiGetFeedItems } from '../../common/api/pupil-activity'\n\nconst fetchFeedItems = () => ({\n requestPrefix: 'FEED_ITEMS:FETCH',\n request: () =>\n apiGetFeedItems({\n include:\n 'collection.limit.20,collection.order.desc,pa_action_feed_item.pa_action.teacher.names,pa_action_feed_item.pa_action.presentation,pa_action_feed_item.pa_action.presentation.details,pa_action_feed_item.pa_action.presentation.asset_data,pa_action_feed_item.pa_action.presentation.names,pa_action_feed_item.pa_action.presentation.image,pa_session.timestamps,pa_action_feed_item.pa_action.pa_work_versions,pa_action_feed_item.pa_action.pa_work_version.work,pa_action_feed_item.pa_action.pa_work_version.details,pa_action_feed_item.pa_action.pa_session.details,pa_action_feed_item.pa_action.status'\n })\n})\n\nexport { fetchFeedItems }\n","import { createSelector } from 'reselect'\n\nconst getState = state => state.FeedItemsStore\nconst getData = state => getState(state).data\n\nconst getFeedItems = state => {\n const stateNow = getState(state)\n return !stateNow.data ? {} : stateNow.data.entities.items\n}\n\nexport const getFeedItemsList = createSelector(\n [getData],\n data => (!data ? null : data.result.map(id => data.entities.items[id]))\n)\n\nexport const getLastWorkVersion = (state, itemId) => {\n const feedItems = getFeedItems(state)\n const item = feedItems[itemId]\n if (!item) return null\n return item.pa_action.pa_work_versions[\n item.pa_action.pa_work_versions.length - 1\n ]\n}\n","export default {\n layoutHolder: {\n width: '1153px',\n margin: '0 auto',\n display: 'flex',\n '@media (max-width: 1279px)': {\n width: '960px',\n maxWidth: 'calc(100% - 40px)'\n }\n }\n}\n","import React, { useMemo } from 'react'\nimport injectSheet from 'react-jss'\nimport styles from './layout-holder.styles'\nimport classNames from 'classnames'\n\nconst LayoutHolder = ({\n classes,\n children,\n className,\n as = 'div',\n ...props\n}) => {\n const Component = useMemo(() => as, [as])\n return (\n \n {children}\n \n )\n}\n\nexport default injectSheet(styles)(LayoutHolder)\n","import React, { memo, useMemo } from 'react'\nimport injectSheet from 'react-jss'\nimport Button from 'pobble-components/dist/button'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faEye } from '@fortawesome/pro-solid-svg-icons/faEye'\nimport { faFileAlt } from '@fortawesome/pro-solid-svg-icons/faFileAlt'\nimport { faReply } from '@fortawesome/pro-solid-svg-icons/faReply'\nimport { faUserFriends } from '@fortawesome/pro-solid-svg-icons/faUserFriends'\nimport { faSchool } from '@fortawesome/pro-solid-svg-icons/faSchool'\nimport Bone from 'pobble-components/dist/bone'\nimport { useHistory } from 'react-router-dom'\nimport { useSelector } from 'react-redux'\nimport { getLastWorkVersion } from '../../stores/feed-items/feed-items.selectors'\nimport NoItemsPlaceholder from 'pobble-components/dist/no-items-placeholder'\nimport { format } from 'date-fns'\nimport { PresentationThumbnail } from 'pobble-components/dist/presentation'\n\nconst feedTileSkeletonStyles = ({ COLORS }) => ({\n container: {\n borderRadius: '8px',\n background: '#fff',\n boxShadow: '0 2px 12px rgba(0, 0, 0, 0.2)',\n overflow: 'hidden'\n },\n topBox: {\n width: '100%',\n paddingBottom: '56.25%',\n position: 'relative',\n background: '#f3f3f3'\n },\n body: {\n padding: '1.43em',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start'\n },\n date: {\n width: '30%',\n marginBottom: '8px'\n },\n title: {\n marginBottom: '.6em',\n width: '90%'\n },\n desc: {\n width: '70%',\n marginBottom: '.5em'\n },\n footer: {\n padding: '1.34em',\n borderTop: `1px solid ${COLORS.BORDERS.PRIMARY.NORMAL}`\n },\n button: {\n height: '40px',\n borderRadius: '4px',\n width: '125px'\n }\n})\n\nexport const FeedTileSkeleton = injectSheet(feedTileSkeletonStyles)(\n ({ classes }) => {\n return (\n
\n
\n
\n \n \n \n
\n
\n \n
\n
\n )\n }\n)\n\nconst feedTileStyles = {\n container: {\n borderRadius: '8px',\n background: '#fff',\n boxShadow: '0 2px 12px rgba(0, 0, 0, 0.2)',\n overflow: 'hidden',\n transition: 'box-shadow .2s',\n display: 'flex',\n flexDirection: 'column'\n },\n topBox: {\n width: '100%',\n paddingBottom: '56.25%',\n position: 'relative',\n background: '#f3f3f3',\n backgroundPosition: 'center',\n backgroundSize: 'cover'\n },\n body: {\n fontSize: '14px',\n padding: '1.43em',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start'\n },\n title: {\n fontSize: '1.28em',\n lineHeight: '1.22',\n margin: '0 0 .2em'\n },\n description: {\n fontSize: '1em',\n lineHeight: '1.22',\n margin: '0 0 0.5em'\n },\n footer: {\n marginTop: 'auto',\n padding: '1.34em',\n borderTop: `1px solid #ececec`\n },\n noPresImage: {\n position: 'absolute',\n left: '0',\n top: '0',\n width: '100%',\n height: '100%',\n padding: '20px 0',\n '& img': {\n width: '100%',\n height: '100%',\n margin: '0',\n objectFit: 'contain'\n }\n },\n head: {\n color: 'var(--gray---)',\n font: 'var(--body--)',\n margin: '0 0 4px',\n display: 'flex'\n },\n headIcon: {\n color: 'var(--green)',\n marginLeft: '8px'\n },\n hint: {\n position: 'absolute',\n bottom: '0',\n left: '0',\n width: '100%',\n background: '#fef2a2',\n color: '#837201',\n margin: '0',\n padding: '10px 20px',\n zIndex: '100'\n },\n thumbnail: {\n position: 'absolute',\n left: '0',\n top: '0',\n width: '100%'\n }\n}\n\nconst FeedTile = memo(({ classes, data, onClick }) => {\n const history = useHistory()\n const lastWorkVersion = useSelector(state =>\n getLastWorkVersion(state, data.id)\n )\n const {\n title,\n id,\n presentation,\n description,\n actionId,\n status,\n date,\n solo\n } = useMemo(\n () => {\n const { pa_action } = data\n const { presentation, pa_session } = pa_action\n\n return {\n id: !presentation ? null : presentation.id,\n actionId: pa_action.id,\n status: pa_action.status,\n date: format(new Date(pa_session.accessible_at), 'D MMMM YYYY'),\n solo: pa_session.student_solo_session,\n image: !presentation\n ? null\n : presentation.image && presentation.image.medium_url,\n title: pa_session\n ? pa_session.title\n : !presentation\n ? ''\n : presentation.title,\n description: pa_session\n ? pa_session.description\n : !presentation\n ? ''\n : presentation.lesson_overview,\n presentation\n }\n },\n [data]\n )\n\n return (\n onClick && onClick({ id, title })}>\n
\n {status === 'peer_review' && (\n

Peer review

\n )}\n {!presentation && (\n \n )}\n {presentation && (\n \n )}\n
\n
\n

\n {date}{' '}\n {!solo && (\n \n )}\n

\n

{title}

\n

{description}

\n
\n
\n <>\n {status === 'student_first_interaction' && (\n <>\n {!lastWorkVersion.work && (\n history.push(`/item/${actionId}/lesson`)}\n tall\n icon={}>\n View lesson\n \n )}\n {!!lastWorkVersion.work && (\n history.push(`/item/${actionId}/review`)}\n tall\n icon={}>\n Review your work\n \n )}\n \n )}\n {status !== 'student_first_interaction' && (\n <>\n {status === 'peer_review' ? (\n history.push(`/item/${actionId}/review/peer`)}\n tall\n icon={}>\n Review peer's work\n \n ) : (\n history.push(`/item/${actionId}/review`)}\n tall\n icon={}>\n Respond to review\n \n )}\n \n )}\n \n
\n
\n )\n})\n\nexport default injectSheet(feedTileStyles)(FeedTile)\n","import React, { useContext, useEffect } from 'react'\nimport injectSheet from 'react-jss'\nimport MainMenu from '../../main-menu/main-menu'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { fetchFeedItems } from '../../../stores/feed-items/feed-items.actions'\nimport { errorHandler } from 'pobble-components/dist/error-handler'\nimport { getFeedItemsList } from '../../../stores/feed-items/feed-items.selectors'\nimport LayoutHolder from '../discover/layout-holder/layout-holder'\nimport FeedTile, { FeedTileSkeleton } from '../../feed-tile/feed-tile'\nimport { Link } from 'react-router-dom'\nimport { fullVHExceptHeaderMin } from 'pobble-components/dist/jss-mixins'\nimport ButtonElement from 'pobble-components/dist/button-element'\nimport red from './red.png'\nimport green from './green.png'\nimport blue from './blue.png'\nimport { AppContext } from '../../app/app'\n\nconst lessonListStyles = ({ COLORS }) => ({\n container: {\n flex: '1',\n padding: '20px 0',\n display: 'grid',\n gridGap: '32px',\n gridTemplateColumns: '1fr 1fr 1fr 1fr',\n '@media (max-width: 1279px)': {\n gridTemplateColumns: '1fr 1fr 1fr',\n '& >:last-child': {\n display: 'none'\n }\n },\n '@media (max-width: 1023px)': {\n gridTemplateColumns: '1fr 1fr',\n '& >:last-child': {\n display: 'block'\n }\n },\n '@media (max-width: 767px)': {\n gridTemplateColumns: '1fr'\n }\n },\n noItems: {\n textAlign: 'center',\n margin: '0 auto 32px',\n '& h2': {\n margin: '32px 0',\n '@media (min-width: 768px)': {\n margin: '48px 0'\n }\n }\n },\n buttons: {\n display: 'grid',\n gap: '20px',\n maxWidth: '726px',\n '@media (min-width: 768px)': {\n gridTemplateColumns: '1fr 1fr 1fr'\n },\n '& > *': {\n padding: '24px 24px 48px',\n background: '#fff',\n borderRadius: '8px'\n },\n '& a, button': {\n display: 'inline-block',\n textDecoration: 'none',\n padding: '16px 24px',\n borderRadius: '4px',\n fontWeight: 'bold',\n color: '#fff'\n },\n '& img': {\n margin: '16px 0 24px',\n maxWidth: '100%',\n height: 'auto'\n }\n },\n red: {\n backgroundColor: COLORS.RED.NORMAL\n },\n green: {\n backgroundColor: COLORS.GREEN.NORMAL\n },\n blue: {\n backgroundColor: COLORS.BLUE.NORMAL\n }\n})\n\nconst LessonsList = injectSheet(lessonListStyles)(({ items, classes }) => {\n const { setSoloSessionModal } = useContext(AppContext)\n\n return items && !items.length ? (\n
\n

You have no lessons yet. Let’s go and find one.

\n
\n
\n \"Pobble\n \n Discover lessons\n \n
\n \n
\n \"Create\n setSoloSessionModal({ opened: true })}\n className={classes.blue}>\n Start some work\n \n
\n
\n
\n ) : (\n
\n {!items &&\n [...Array(4).keys()].map((_, index) => (\n \n ))}\n {!!items && items.map(data => )}\n
\n )\n})\n\nconst myLessonsStyles = {\n container: {\n display: 'flex',\n flexDirection: 'column',\n ...fullVHExceptHeaderMin\n },\n contentHolder: {\n flex: '1',\n alignItems: 'flex-start'\n },\n spinner: {\n alignSelf: 'center',\n justifySelf: 'center'\n }\n}\n\nconst MyLessons = ({ classes }) => {\n const dispatch = useDispatch()\n const feedItems = useSelector(getFeedItemsList)\n useEffect(\n () => {\n dispatch(fetchFeedItems()).catch(errorHandler)\n },\n [dispatch]\n )\n return (\n
\n \n \n \n \n
\n )\n}\n\nexport default injectSheet(myLessonsStyles)(MyLessons)\n","import React from 'react'\nimport injectSheet from 'react-jss'\nimport styles from './page-head.styles'\nimport classNames from 'classnames'\n\nconst PageHead = ({ classes, className, ...props }) => (\n
\n)\n\nexport default injectSheet(styles)(PageHead)\n","export default {\n container: {\n height: '70px',\n boxShadow: '0 2px 4px 0 rgba(0, 0, 0, 0.1)',\n alignItems: 'center',\n backgroundColor: '#fff',\n position: 'relative',\n zIndex: '20',\n padding: '20px',\n display: 'flex',\n justifyContent: 'space-between'\n }\n}\n","export default ({ COLORS, FONT_SIZES }) => ({\n content: {\n width: '355px',\n height: '242px',\n ...FONT_SIZES.HEADING_MEDIUM.STYLE,\n minWidth: '0',\n padding: '60px 40px 50px',\n display: 'grid',\n gridTemplateColumns: '1fr 1fr',\n gap: '30px',\n '& > *': {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center'\n },\n '& p': {\n margin: '10px 0 0'\n }\n },\n pending: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n },\n spinner: {\n color: COLORS.GREEN.NORMAL\n },\n button: {\n background: 'none',\n border: 'none',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n cursor: 'pointer',\n color: COLORS.TEXT.DARK_GREY.NORMAL,\n '&:active $icon': {\n background: COLORS.GREEN.FADED\n }\n },\n icon: {\n width: '100px',\n height: '100px',\n borderRadius: '100px',\n background: COLORS.GREEN.NORMAL,\n border: `4px solid #91ac15`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: '#fff',\n fontSize: '40px'\n }\n})\n","import { apiClient } from 'pobble-components/dist/api'\n\nexport const apiCreateMedium = (id, data, params) => {\n const formData = new FormData()\n formData.append('image', data.image)\n data.order && formData.append('order', data.order)\n data.include && formData.append('include', data.include)\n return apiClient.post(`/v3/pa_work_versions/${id}/create_medium`, formData, {\n params\n })\n}\n\nexport const apiDeleteMedia = id => apiClient.delete(`/v3/media/${id}`)\n\nexport const apiGetWork = (id, params) => apiClient.get(`/v3/works/${id}`)\n\nexport const apiDeleteWork = id => apiClient.delete(`/v3/works/${id}`)\n\nexport const apiRotateMedium = (id, data, params) =>\n apiClient.put(`/v3/media/${id}/rotate`, data, { params })\n\nexport const apiReorderMedia = (id, data) =>\n apiClient.put(`/v3/works/${id}/reorder_media`, data)\n\nexport const apiReuploadWork = (id, data, params) => {\n const formData = new FormData()\n formData.append('image', data.image)\n data.order && formData.append('order', data.order)\n data.include && formData.append('include', data.include)\n return apiClient.post(`v3/pa_work_versions/${id}/reupload_work`, formData, {\n params\n })\n}\n","import React, { useState } from 'react'\nimport injectSheet from 'react-jss'\nimport styles from './add-work-dialog.styles'\nimport { Modal, ModalContent } from 'pobble-components/dist/modal'\nimport classNames from 'classnames'\nimport Spinner from 'pobble-components/dist/spinner'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faImage } from '@fortawesome/pro-solid-svg-icons/faImage'\nimport { faKeyboard } from '@fortawesome/pro-solid-svg-icons/faKeyboard'\nimport { useHistory } from 'react-router-dom'\nimport FormFile from 'pobble-components/dist/form-elements/form-file'\nimport {\n apiCreateMedium,\n apiDeleteWork,\n apiReuploadWork\n} from '../../common/api/work'\nimport { errorHandler } from 'pobble-components/dist/error-handler'\n\nexport const useAddWork = ({\n onError,\n onSuccess,\n actionId,\n workVersionId,\n reupload\n} = {}) => {\n const [pending, setPending] = useState(false)\n const history = useHistory()\n const apiEndpoint = reupload ? apiReuploadWork : apiCreateMedium\n return {\n pending,\n type: options =>\n history.push(`/item/${options.actionId || actionId}/write`),\n upload: (files, options) => {\n setPending(true)\n return apiEndpoint(\n options.workVersionId || workVersionId,\n {\n image: files[0]\n },\n {\n include: 'pa_work_version.work'\n }\n )\n .then(res => {\n if (files.length > 1) {\n Promise.all(\n files.slice(1, files.length).map(file => {\n return apiCreateMedium(options.workVersionId || workVersionId, {\n image: file\n })\n })\n )\n .then(() => {\n history.push(`/item/${options.actionId || actionId}/work`)\n onSuccess && onSuccess()\n })\n .catch(e => {\n onError && onError()\n setPending(false)\n if (e.response.status === 400) {\n apiDeleteWork(res.data.pa_work_version.work.id)\n }\n errorHandler(e)\n })\n } else {\n history.push(`/item/${options.actionId || actionId}/work`)\n onSuccess && onSuccess()\n }\n })\n .catch(e => {\n onError && onError()\n setPending(false)\n errorHandler(e)\n })\n }\n }\n}\n\nconst AddWorkDialog = injectSheet(styles)(\n ({\n classes,\n workVersionId,\n actionId,\n requestClose,\n isOpen,\n onError,\n ...props\n }) => {\n const { pending, type, upload } = useAddWork({\n actionId,\n workVersionId,\n onError: () => {\n requestClose()\n onError && onError()\n }\n })\n return (\n <>\n \n \n {pending && }\n {!pending && (\n <>\n
\n \n
\n
\n \n
\n
\n \n
\n

Add photo

\n
\n \n
\n \n )}\n \n \n \n )\n }\n)\n\nexport default injectSheet(styles)(AddWorkDialog)\n","import React, { useEffect, useState, useRef } from 'react'\nimport injectSheet from 'react-jss'\nimport {\n Presentation,\n usePresentationNavigation\n} from 'pobble-components/dist/presentation'\nimport classNames from 'classnames'\nimport { useRouteMatch, useHistory } from 'react-router-dom'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faPlus } from '@fortawesome/pro-solid-svg-icons/faPlus'\nimport { faAngleLeft } from '@fortawesome/pro-solid-svg-icons/faAngleLeft'\nimport { faAngleRight } from '@fortawesome/pro-solid-svg-icons/faAngleRight'\nimport Bone from 'pobble-components/dist/bone'\nimport Button from 'pobble-components/dist/button'\nimport PageHead from '../../page-head/page-head'\nimport { apiGetAction } from '../../../common/api/pupil-activity'\nimport CarretLeftIcon from 'react-icons/lib/fa/caret-left'\nimport NoItemsPlaceholder from 'pobble-components/dist/no-items-placeholder'\nimport AddWorkDialog from '../../add-work-dialog/add-work-dialog'\nimport { fullVHExceptHeader } from 'pobble-components/dist/jss-mixins'\nimport ButtonElement from 'pobble-components/dist/button-element'\n\nconst headStyles = ({ COLORS }) => ({\n backLink: {\n color: COLORS.GREEN.NORMAL,\n fontWeight: 'bold',\n textDecoration: 'none',\n display: 'flex',\n alignItems: 'center',\n '&:hover': {\n color: COLORS.GREEN.FADED\n },\n '&:active': {\n color: COLORS.BLUE.NORMAL\n },\n '& svg': {\n marginRight: '.2em'\n }\n }\n})\n\nconst Head = injectSheet(headStyles)(({ classes, setModalState }) => {\n const history = useHistory()\n return (\n \n \n setModalState({ type: 'addWorkOptions' })}\n green\n tall\n icon={}>\n Add work\n \n \n )\n})\n\nconst SlidesPreviewComponent = ({\n classes,\n presentation,\n onClick,\n activeSlideId\n}) => {\n const containerRef = useRef(null)\n\n return (\n
\n

Slides

\n
\n \n {({ slides }) =>\n slides.map(slide => (\n onClick(slide.props.id)}>\n {slide}\n
\n ))\n }\n \n
\n
\n )\n}\n\nconst slidesPreviewStyles = ({ COLORS }) => ({\n container: {\n flex: '1',\n borderTop: '2px solid #D8D8D8',\n borderBottom: '2px solid #D8D8D8',\n '@media screen and (orientation:landscape)': {\n flexDirection: 'column',\n display: 'flex',\n position: 'relative',\n border: 'none',\n borderLeft: '1px solid #d8d8d8'\n }\n },\n list: {\n display: 'flex',\n background: '#fff',\n overflowX: 'auto',\n padding: '1em',\n '@media screen and (orientation:landscape)': {\n flexDirection: 'column',\n overflow: 'auto',\n flex: '1'\n }\n },\n preview: {\n cursor: 'pointer',\n width: '30%',\n flexShrink: '0',\n border: '1px solid #D8D8D8',\n marginLeft: '1em',\n borderRadius: '8px',\n overflow: 'hidden',\n '&:first-child': {\n marginLeft: '0'\n },\n '@media screen and (orientation:landscape)': {\n width: '100%',\n marginLeft: '0',\n marginTop: '1em',\n '&:first-child': {\n marginTop: '0'\n }\n }\n },\n active: {\n position: 'relative',\n borderColor: COLORS.GREEN.NORMAL,\n '&:after': {\n borderRadius: '8px',\n content: '\"\"',\n left: '0',\n top: '0',\n zIndex: '100',\n position: 'absolute',\n width: 'calc(100% - 8px)',\n height: 'calc(100% - 8px)',\n border: `4px solid ${COLORS.GREEN.NORMAL}`\n }\n },\n head: {\n fontSize: '1em',\n lineHeight: '1.2',\n background: '#fff',\n padding: '1em',\n margin: '0',\n boxShadow: '0 2px 4px 0 rgba(0, 0, 0, 0.1)',\n position: 'relative',\n zIndex: '10'\n }\n})\n\nconst lessonViewStyles = ({ FONT_SIZES, COLORS }) => ({\n container: {\n display: 'flex',\n flexDirection: 'column',\n '@media screen and (orientation:landscape)': {\n ...fullVHExceptHeader\n }\n },\n content: {\n display: 'flex',\n flexDirection: 'column',\n flex: '1',\n '@media screen and (orientation:landscape)': {\n flexDirection: 'row',\n overflow: 'hidden'\n }\n },\n main: {\n flex: '1',\n '@media screen and (orientation:landscape)': {\n overflow: 'auto'\n }\n },\n secondary: {\n display: 'flex',\n '@media screen and (orientation:landscape)': {\n width: '20%',\n height: '100%'\n }\n },\n presentationHolder: {\n position: 'relative'\n },\n controls: {\n position: 'absolute',\n right: '16px',\n bottom: '16px',\n display: 'flex',\n zIndex: '200',\n '& > button': {\n background: '#fff',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n border: `2px solid ${COLORS.GREEN.NORMAL}`,\n borderRadius: '32px',\n width: '32px',\n height: '32px',\n fontSize: '24px',\n color: COLORS.GREEN.NORMAL,\n marginLeft: '8px',\n '@media (min-width: 575px)': {\n width: '48px',\n height: '48px',\n fontSize: '32px',\n marginLeft: '16px'\n }\n }\n },\n presentationSkeleton: {\n width: '100%',\n paddingBottom: '56%',\n position: 'relative',\n '& > *': {\n position: 'absolute',\n left: '0',\n top: '0',\n width: '100%',\n height: '100%',\n borderRadius: '0'\n }\n },\n notFound: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n textAlign: 'center',\n padding: '20vh 40px',\n '& > p': {\n margin: '0',\n ...FONT_SIZES.HEADING_LARGE.STYLE,\n fontWeight: 'bold'\n }\n },\n noItems: {\n '& > div': {\n maxWidth: '300px'\n },\n '& h3': {\n ...FONT_SIZES.HEADING_MEDIUM.STYLE,\n margin: '0 0 10px'\n }\n }\n})\n\nconst SlidesPreview = injectSheet(slidesPreviewStyles)(SlidesPreviewComponent)\n\nconst LessonView = injectSheet(lessonViewStyles)(({ classes }) => {\n const match = useRouteMatch()\n\n const actionId = match.params.itemId\n\n const [presentation, setPresentation] = useState(null)\n const [workVersionId, setWorkVersionId] = useState(null)\n const [modalState, setModalState] = useState({ type: null })\n const [session, setSession] = useState(null)\n\n const navigation = usePresentationNavigation(\n presentation !== 'not-found' && presentation,\n { loop: true }\n )\n\n useEffect(\n () => {\n apiGetAction(actionId, {\n include:\n 'pa_action.presentation.image,pa_action.presentation.year_groups,pa_action.presentation.year_group.order,pa_action.presentation.details,pa_action.presentation.slides,pa_action.presentation.slide.type,pa_action.presentation.slide.details,pa_action.presentation.names,pa_action.last_pa_work_version,pa_action.pa_session.details'\n }).then(res => {\n const presentation = res.data.pa_presentation_action.presentation\n presentation && navigation.setActiveSlideId(presentation.slides[0].id)\n setSession(res.data.pa_presentation_action.pa_session)\n setPresentation(presentation || 'not-found')\n setWorkVersionId(\n res.data.pa_presentation_action.last_pa_work_version.id\n )\n })\n },\n [actionId] // eslint-disable-line\n )\n\n return (\n
\n \n {presentation === 'not-found' && (\n
\n \n
\n

{session.title}

\n

{session.description}

\n
\n \n
\n )}\n {presentation !== 'not-found' && (\n
\n
\n {presentation &&\n navigation.activeSlideId && (\n
\n \n {!presentation.asset && (\n
\n \n \n \n \n \n \n
\n )}\n
\n )}\n {!presentation && (\n
\n \n
\n )}\n
\n {presentation &&\n !presentation.asset && (\n
\n navigation.setActiveSlideId(id)}\n presentation={presentation !== 'not-found' && presentation}\n />\n
\n )}\n
\n )}\n setModalState({ type: null })}\n actionId={actionId}\n workVersionId={workVersionId}\n isOpen={modalState.type === 'addWorkOptions'}\n />\n
\n )\n})\n\nexport default LessonView\n","import { errorHandler } from 'pobble-components/dist/error-handler'\nimport { apiGetAction } from '../../common/api/pupil-activity'\nimport {\n apiDeleteMedia,\n apiCreateMedium,\n apiDeleteWork,\n apiRotateMedium,\n apiReorderMedia\n} from '../../common/api/work'\n\nexport const fetchWorkUploadData = id => ({\n requestPrefix: 'WORK_UPLOAD:FETCH',\n request: () =>\n apiGetAction(id, {\n include:\n 'pa_action.last_pa_work_version.work.media,pa_action.last_pa_work_version.work.medium,pa_action.last_pa_work_version.work.medium.image,pa_action.last_pa_work_version.work.medium.details'\n })\n})\n\nexport const deleteMedia = id => ({\n requestPrefix: 'WORK_UPLOAD:DELETE_MEDIA',\n params: { id },\n request: () => apiDeleteMedia(id)\n})\n\nexport const addMedia = (workVersionId, data) => ({\n requestPrefix: 'WORK_UPLOAD:ADD_MEDIA',\n request: () =>\n apiCreateMedium(workVersionId, data, {\n include: 'medium.image,medium.details'\n })\n})\n\nexport const deleteWork = id => ({\n requestPrefix: 'WORK_UPLOAD:DELETE_WORK',\n request: () => apiDeleteWork(id)\n})\n\nexport const rotateMedium = id => ({\n requestPrefix: 'WORK_UPLOAD:ROTATE_MEDIUM',\n params: { id },\n request: () =>\n apiRotateMedium(\n id,\n {\n degrees: -90\n },\n {\n include: 'medium.image,medium.details'\n }\n )\n})\n\nexport const reorderMedia = (workId, ids) => ({\n requestPrefix: 'WORK_UPLOAD:REORDER_MEDIA',\n params: { ids },\n request: () =>\n apiReorderMedia(workId, {\n media_ids: ids\n }).catch(errorHandler)\n})\n","import { createSelector } from 'reselect'\nimport sortBy from 'lodash/sortBy'\n\nconst getState = state => state.WorkUploadStore\n\nexport const getWork = state => getState(state).work\n\nexport const getAddMediaRequest = state => getState(state).addMediaRequest\n\nexport const getDeleteWorkRequest = state => getState(state).deleteWorkRequest\n\nexport const getRotateMediumRequest = state =>\n getState(state).rotateMediumRequest\n\nconst getMedia = state => getState(state).media\n\nconst getWorkVersion = state => getState(state).workVersion\n\nexport const getWorkVersionId = state => {\n const workVersion = getWorkVersion(state)\n return !workVersion ? null : workVersion.id\n}\n\nexport const getWorkId = state => {\n const workVersion = getWorkVersion(state)\n return !workVersion || !workVersion.work ? null : workVersion.work.id\n}\n\nexport const getMediaItems = state => {\n const stateNow = getState(state)\n return !stateNow.media ? {} : stateNow.media.entities.media\n}\n\nexport const getMediaList = createSelector(\n [getMedia],\n media => (!media ? null : media.result.map(id => media.entities.media[id]))\n)\n\nexport const getMediaListInOrder = createSelector([getMediaList], media =>\n sortBy(media, 'order')\n)\n","import React, {\n useEffect,\n useState,\n memo,\n createContext,\n useContext,\n useRef,\n useCallback,\n useMemo\n} from 'react'\nimport injectSheet from 'react-jss'\nimport PageHead from '../../page-head/page-head'\nimport Button from 'pobble-components/dist/button'\nimport { useRouteMatch, useHistory } from 'react-router-dom'\nimport { useDispatch, useSelector } from 'react-redux'\nimport {\n fetchWorkUploadData,\n deleteMedia,\n addMedia,\n deleteWork,\n rotateMedium,\n reorderMedia\n} from '../../../stores/work-upload/work-upload.actions'\nimport {\n getMediaListInOrder,\n getWorkVersionId,\n getAddMediaRequest,\n getWorkId,\n getDeleteWorkRequest,\n getRotateMediumRequest\n} from '../../../stores/work-upload/work-upload.selectors'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faTrashAlt } from '@fortawesome/pro-solid-svg-icons/faTrashAlt'\nimport { faPlusCircle } from '@fortawesome/pro-solid-svg-icons/faPlusCircle'\nimport { faUndo } from '@fortawesome/pro-solid-svg-icons/faUndo'\nimport classNames from 'classnames'\nimport { openConfirmationDialog } from 'pobble-components/dist/modal/confirmation-dialog'\nimport { errorHandler } from 'pobble-components/dist/error-handler'\nimport FormFile from 'pobble-components/dist/form-elements/form-file'\nimport { usePrevious } from 'pobble-components/dist/utils'\nimport {\n useMediaNav,\n MediaLoader,\n MediaPageNav\n} from 'pobble-components/dist/work'\nimport { faClipboardCheck } from '@fortawesome/pro-solid-svg-icons/faClipboardCheck'\nimport Sortable from 'sortablejs'\nimport { faCaretLeft } from '@fortawesome/pro-solid-svg-icons/faCaretLeft'\nimport { faBringForward } from '@fortawesome/pro-solid-svg-icons/faBringForward'\nimport { faFileUpload } from '@fortawesome/pro-solid-svg-icons/faFileUpload'\nimport { useAddWork } from '../../add-work-dialog/add-work-dialog'\n\nconst WorkContext = createContext(null)\n\nconst reorderStyles = {\n head: {\n padding: '20px 0',\n display: 'flex',\n '@media (min-width: 575px)': {\n paddingTop: '30px'\n }\n },\n container: {\n display: 'flex',\n flexWrap: 'wrap',\n margin: '0 -10px',\n '& .work-reorder-ghost': {\n opacity: '0'\n }\n },\n cell: {\n width: '33.3333%',\n padding: '10px',\n '@media (min-width: 575px)': {\n width: '25%'\n }\n },\n media: {\n background: '#454545',\n paddingBottom: '133%',\n backgroundPosition: 'center',\n backgroundSize: 'cover',\n borderRadius: '8px',\n '&:hover': {\n cursor: 'grab'\n }\n }\n}\n\nconst Reorder = injectSheet(reorderStyles)(({ classes }) => {\n const { media, setScreenState, onReorder } = useContext(WorkContext)\n const container = useRef(null)\n\n const [mediaCopy] = useState(media)\n\n useEffect(\n () => {\n new Sortable(container.current, {\n animation: 150,\n ghostClass: 'work-reorder-ghost',\n onEnd: e => {\n const ids = Array.from(e.to.children).map(item => item.dataset.id)\n onReorder(ids)\n }\n })\n },\n [onReorder]\n )\n\n return (\n <>\n \n
\n setScreenState('page')}\n tall\n icon={}>\n Back\n \n
\n
\n \n
\n {mediaCopy.map(media => (\n
\n \n
\n ))}\n
\n
\n \n )\n})\n\nconst darkButtonStyles = {\n button: {\n background: '#282828',\n borderColor: '#282828',\n transition: 'none',\n '&:hover': {\n background: '#1f1f1f',\n borderColor: '#1f1f1f'\n },\n '&:active': {\n boxShadow: 'none',\n background: '#000',\n borderColor: '#000'\n },\n '& span': {\n display: 'none',\n '@media (min-width: 575px)': {\n display: 'inline'\n }\n },\n '& > div': {\n display: 'flex',\n justifyContent: 'center',\n marginRight: '0 !important',\n '@media (min-width: 575px)': {\n marginRight: '6px !important'\n }\n }\n }\n}\n\nconst DarkButton = injectSheet(darkButtonStyles)(\n ({ classes, children, active, ...props }) => (\n \n {children}\n \n )\n)\n\nconst holderStyles = {\n container: {\n maxWidth: '768px',\n margin: '0 auto',\n padding: '0 20px'\n }\n}\n\nconst Holder = injectSheet(holderStyles)(({ classes, className, ...props }) => (\n
\n))\n\nconst headStyles = {\n container: {\n justifyContent: 'space-between'\n },\n actions: {\n display: 'flex'\n },\n doneButton: {\n minWidth: '100px',\n display: 'flex',\n justifyContent: 'center',\n marginLeft: '16px'\n }\n}\n\nconst Head = injectSheet(headStyles)(\n ({ classes, onAction, actionId, workVersionId }) => {\n const history = useHistory()\n const { pending, upload } = useAddWork({\n actionId,\n workVersionId,\n reupload: true,\n onSuccess: () => window.location.reload()\n })\n return (\n \n \n
\n \n }>\n Reupload work\n \n \n }\n center>\n Review\n \n
\n
\n )\n }\n)\n\nconst editControlsStyles = {\n container: {\n marginRight: 'auto',\n '@media (min-width: 575px)': {\n marginRight: '1em'\n }\n }\n}\n\nconst EditControls = injectSheet(editControlsStyles)(({ classes, media }) => {\n const dispatch = useDispatch()\n const rotateMediumRequest = useSelector(state =>\n getRotateMediumRequest(state)\n )\n return (\n
\n dispatch(rotateMedium(media.id)).catch(errorHandler)}\n tall\n icon={}>\n Rotate\n \n
\n )\n})\n\nconst pageControlsStyles = {\n container: {\n '& button': {\n marginRight: '1em'\n }\n },\n longLabel: {\n display: 'none',\n '@media (min-width: 575px)': {\n display: 'inline'\n }\n }\n}\n\nconst PageControls = injectSheet(pageControlsStyles)(\n ({ classes, currentMedia, workVersionId, onDelete }) => {\n const dispatch = useDispatch()\n const addMediaRequest = useSelector(state => getAddMediaRequest(state))\n const deleteWorkRequest = useSelector(state => getDeleteWorkRequest(state))\n const { setScreenState, media } = useContext(WorkContext)\n return (\n
\n {media.length > 1 && (\n <>\n setScreenState('reorder')}\n tall\n icon={}>\n Reorder\n \n \n openConfirmationDialog({\n theme: 'green',\n bodyText: 'Are you sure you want to delete this page?',\n action: onDelete\n })\n }\n tall\n icon={}>\n Delete\n  page\n \n \n )}\n\n {\n dispatch(\n addMedia(workVersionId, {\n image: files[0]\n })\n ).catch(errorHandler)\n }}\n accept=\"image/jpeg, image/png, .pdf\">\n }>\n Add  page\n \n \n
\n )\n }\n)\n\nconst workUploadStyles = {\n container: {\n minHeight: '100vh',\n backgroundColor: '#333'\n },\n imageHolder: {\n padding: '20px 20px 40px',\n '& > div': {\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n },\n '& img': {\n position: 'relative',\n zIndex: '10',\n width: '100%',\n background: '#000'\n }\n },\n controls: {\n display: 'flex',\n justifyContent: 'flex-end',\n padding: '20px 20px 0',\n '@media (min-width: 575px)': {\n paddingTop: '30px'\n }\n },\n pageNavDesktop: {\n display: 'none',\n marginRight: 'auto',\n '@media (min-width: 575px)': {\n display: 'flex'\n }\n },\n pageNavMobile: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n margin: '-10px 0 30px',\n '@media (min-width: 575px)': {\n display: 'none'\n }\n }\n}\n\nconst WorkUpload = injectSheet(workUploadStyles)(\n memo(({ classes }) => {\n const match = useRouteMatch()\n const history = useHistory()\n const dispatch = useDispatch()\n const media = useSelector(state => getMediaListInOrder(state))\n const workVersionId = useSelector(state => getWorkVersionId(state))\n const workId = useSelector(state => getWorkId(state))\n const mediaNav = useMediaNav(media)\n const previousPagesLength = usePrevious(mediaNav.mediaLength)\n const [screenState, setScreenState] = useState('page')\n\n const onReorder = useCallback(\n ids => {\n dispatch(reorderMedia(workId, ids))\n },\n [dispatch, workId]\n )\n\n const value = useMemo(\n () => ({\n media,\n screenState,\n setScreenState,\n workId,\n onReorder\n }),\n [media, screenState, setScreenState, workId, onReorder]\n )\n\n // Update page navigation when new media added\n useEffect(\n () => {\n if (mediaNav.mediaLength && previousPagesLength) {\n if (previousPagesLength < mediaNav.mediaLength) {\n mediaNav.setActiveMediaIndex(mediaNav.mediaLength - 1)\n }\n if (mediaNav.activeMediaIndex > mediaNav.mediaLength - 1) {\n mediaNav.setActiveMediaIndex(mediaNav.mediaLength - 1)\n }\n }\n },\n [mediaNav.mediaLength] //eslint-disable-line\n )\n\n useEffect(\n () => {\n dispatch(fetchWorkUploadData(match.params.itemId))\n },\n [match.params.itemId, dispatch]\n )\n\n return (\n
\n \n history.push(`/item/${match.params.itemId}/review`)}\n />\n {!!media.length && (\n <>\n {screenState === 'page' && (\n
\n \n \n \n {\n if (media.length > 1) {\n dispatch(deleteMedia(mediaNav.activeMedia.id)).catch(\n errorHandler\n )\n } else {\n dispatch(deleteWork(workId))\n .then(() => history.push('/'))\n .catch(errorHandler)\n }\n }}\n workVersionId={workVersionId}\n currentMedia={mediaNav.activeMedia}\n />\n \n \n {mediaNav.activeMedia && (\n \n )}\n \n \n \n \n
\n )}\n {screenState === 'reorder' && }\n \n )}\n
\n
\n )\n })\n)\n\nexport default WorkUpload\n","import { fullVHExceptHeader } from 'pobble-components/dist/jss-mixins'\n\nexport default {\n actionButton: {\n marginLeft: 'auto'\n },\n container: {\n ...fullVHExceptHeader,\n display: 'flex',\n flexDirection: 'column',\n background: '#333'\n },\n layout: {\n flex: '1',\n overflow: 'auto',\n paddingBottom: '2em',\n '@media (min-width: 824px)': {\n display: 'flex',\n flexDirection: 'row-reverse',\n justifyContent: 'center'\n }\n },\n pending: {\n flex: '1',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n },\n details: {\n padding: '20px',\n '@media (min-width: 824px)': {\n flex: '1',\n paddingTop: '80px',\n maxWidth: '30em'\n }\n },\n feedback: {\n background: '#fff',\n fontSize: '14px',\n lineHeight: '1.2',\n borderRadius: '.5em',\n border: '1px solid #eee',\n padding: '0 0.7em 1em',\n '& h4': {\n margin: '0',\n fontSize: '1em',\n padding: '.4em 0',\n '& svg': {\n marginRight: '.3em'\n }\n }\n },\n feedbackBody: {\n border: '1px solid #ececec',\n borderRadius: '.3em',\n padding: '.5em'\n },\n work: {\n padding: '0 20px',\n width: '100%',\n '@media (min-width: 824px)': {\n padding: '30px 0 20px 20px',\n maxWidth: '768px'\n }\n },\n mediaNav: {\n display: 'flex',\n justifyContent: 'center',\n marginTop: '1em',\n '@media (min-width: 824px)': {\n display: 'none'\n }\n },\n mediaNavDesktop: {\n display: 'none',\n '@media (min-width: 824px)': {\n display: 'flex',\n paddingBottom: '1em'\n }\n },\n mediaLoader: {\n '@media (min-width: 824px)': {\n marginBottom: '20px'\n }\n }\n}\n","import React, { useState, useEffect, useMemo } from 'react'\nimport injectSheet from 'react-jss'\nimport styles from './teacher-feedback.styles'\nimport PageHead from '../../page-head/page-head'\nimport Button from 'pobble-components/dist/button'\nimport { useRouteMatch, useHistory } from 'react-router-dom'\nimport { apiGetAction } from '../../../common/api/pupil-activity'\nimport { errorHandler } from 'pobble-components/dist/error-handler'\nimport Spinner from 'pobble-components/dist/spinner'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faGraduationCap } from '@fortawesome/pro-solid-svg-icons/faGraduationCap'\nimport { faPlus } from '@fortawesome/pro-solid-svg-icons/faPlus'\nimport {\n useMediaNav,\n MediaLoader,\n MediaPageNav\n} from 'pobble-components/dist/work'\nimport { apiCreateMedium } from '../../../common/api/work'\nimport FormFile from 'pobble-components/dist/form-elements/form-file'\n\nconst TeacherFeedback = ({ classes }) => {\n const match = useRouteMatch()\n const history = useHistory()\n const [pendingUpload, setPendingUpload] = useState(false)\n const [action, setAction] = useState(null)\n\n const rejectedWorkVersion = useMemo(\n () => {\n if (!action || !action.pa_work_versions.length) return null\n return action.pa_work_versions[action.pa_work_versions.length - 2]\n },\n [action]\n )\n\n const lastWorkversion = useMemo(\n () => {\n return !action\n ? null\n : action.pa_work_versions[action.pa_work_versions.length - 1]\n },\n [action]\n )\n\n const mediaNav = useMediaNav(\n rejectedWorkVersion && rejectedWorkVersion.work.media\n )\n\n useEffect(\n () => {\n apiGetAction(match.params.itemId, {\n include:\n 'pa_action.pa_work_versions,pa_action.pa_work_version.details,pa_action.pa_work_version.work.media,pa_action.pa_work_version.work.medium,pa_action.pa_work_version.work.medium.image,pa_action.pa_work_version.work.medium.details'\n })\n .catch(errorHandler)\n .then(res => setAction(res.data.pa_presentation_action))\n },\n [match.params.itemId]\n )\n\n return (\n
\n \n \n {lastWorkversion && (\n <>\n {lastWorkversion.type === 'typed' && (\n history.push(`/item/${action.id}/write`)}>\n Edit work\n \n )}\n {lastWorkversion.type === 'uploaded' && (\n {\n setPendingUpload(true)\n apiCreateMedium(lastWorkversion.id, {\n image: files[0]\n }).then(res => {\n setPendingUpload(false)\n history.push(`/item/${match.params.itemId}/work`)\n })\n }}\n accept=\"image/jpeg, image/png\">\n }>\n Add new version\n \n \n )}\n \n )}\n \n {!action && (\n
\n \n
\n )}\n {action && (\n
\n
\n
\n

\n \n Teacher's feedback\n

\n
\n {rejectedWorkVersion.comment}\n
\n
\n
\n
\n
\n \n
\n \n
\n \n
\n
\n
\n )}\n
\n )\n}\n\nexport default injectSheet(styles)(TeacherFeedback)\n","import React from 'react'\n\nexport default React.createContext(null)\n","export const controlPanelStyles = {\n container: {\n fontSize: '40px'\n },\n sticky: {\n position: 'sticky',\n top: '0',\n borderRadius: '4px 4px 0 0',\n padding: '.2em'\n },\n holder: {\n display: 'flex',\n alignItems: 'center'\n }\n}\n\nexport const controlButtonStyles = ({ COLORS }, b) => ({\n button: {\n cursor: 'pointer',\n width: '1em',\n height: '1em',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: COLORS.TEXT.DARK_GREY.NORMAL,\n borderRadius: '.1em',\n '&:active': {\n background: 'rgba(0, 0, 0, 0.1)'\n }\n },\n active: {\n color: COLORS.GREEN.NORMAL\n },\n content: {\n fontSize: '.5em',\n '& svg': {\n display: 'block'\n }\n }\n})\n\nexport const separatorStyles = {\n separator: {\n width: '1px',\n backgroundColor: '#ccc',\n height: '.5em',\n margin: '0 .2em'\n }\n}\n","import React, { useContext, useMemo } from 'react'\nimport { RichUtils } from 'draft-js'\nimport EditorContext from './context'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faBold } from '@fortawesome/pro-solid-svg-icons/faBold'\nimport { faItalic } from '@fortawesome/pro-solid-svg-icons/faItalic'\nimport { faUnderline } from '@fortawesome/pro-solid-svg-icons/faUnderline'\nimport { faListUl } from '@fortawesome/pro-solid-svg-icons/faListUl'\nimport { faListOl } from '@fortawesome/pro-solid-svg-icons/faListOl'\nimport injectSheet from 'react-jss'\nimport {\n controlButtonStyles,\n controlPanelStyles,\n separatorStyles\n} from './controls.styles'\nimport classNames from 'classnames'\n\nconst ControlPanel = injectSheet(controlPanelStyles)(\n ({ children, classes, className, sticky }) => (\n \n
{children}
\n
\n )\n)\n\nconst ControlButton = injectSheet(controlButtonStyles)(\n ({ children, action, classes, active }) => (\n {\n e.preventDefault()\n action && action()\n }}>\n {children}\n \n )\n)\n\nconst ControlSeparator = injectSheet(separatorStyles)(({ classes }) => (\n
\n))\n\nconst Bold = () => {\n const { editorState, onChange } = useContext(EditorContext)\n const hasBold = useMemo(\n () => {\n return editorState.getCurrentInlineStyle().has('BOLD')\n },\n [editorState]\n )\n return (\n {\n const newState = RichUtils.toggleInlineStyle(editorState, 'BOLD')\n onChange(newState)\n }}>\n \n \n )\n}\n\nconst Italic = () => {\n const { editorState, onChange } = useContext(EditorContext)\n const hasItalic = useMemo(\n () => {\n return editorState.getCurrentInlineStyle().has('ITALIC')\n },\n [editorState]\n )\n return (\n {\n const newState = RichUtils.toggleInlineStyle(editorState, 'ITALIC')\n onChange(newState)\n }}>\n \n \n )\n}\n\nconst Underline = () => {\n const { editorState, onChange } = useContext(EditorContext)\n const hasItalic = useMemo(\n () => {\n return editorState.getCurrentInlineStyle().has('UNDERLINE')\n },\n [editorState]\n )\n return (\n {\n const newState = RichUtils.toggleInlineStyle(editorState, 'UNDERLINE')\n onChange(newState)\n }}>\n \n \n )\n}\n\nconst UnorderedList = () => {\n const { editorState, onChange } = useContext(EditorContext)\n const blockType = useMemo(\n () => {\n const selectionState = editorState.getSelection()\n const anchorKey = selectionState.getAnchorKey()\n const currentContent = editorState.getCurrentContent()\n const currentContentBlock = currentContent.getBlockForKey(anchorKey)\n return currentContentBlock.getType()\n },\n [editorState]\n )\n return (\n {\n const newState = RichUtils.toggleBlockType(\n editorState,\n 'unordered-list-item'\n )\n onChange(newState)\n }}>\n \n \n )\n}\n\nconst OrderedList = () => {\n const { editorState, onChange } = useContext(EditorContext)\n const blockType = useMemo(\n () => {\n const selectionState = editorState.getSelection()\n const anchorKey = selectionState.getAnchorKey()\n const currentContent = editorState.getCurrentContent()\n const currentContentBlock = currentContent.getBlockForKey(anchorKey)\n return currentContentBlock.getType()\n },\n [editorState]\n )\n return (\n {\n const newState = RichUtils.toggleBlockType(\n editorState,\n 'ordered-list-item'\n )\n onChange(newState)\n }}>\n \n \n )\n}\n\nexport default {\n Bold,\n Italic,\n Underline,\n UnorderedList,\n OrderedList,\n Panel: ControlPanel,\n Separator: ControlSeparator\n}\n","import React, { useContext, useMemo } from 'react'\nimport { Editor, RichUtils, EditorState } from 'draft-js'\nimport injectSheet from 'react-jss'\nimport { editorStyles, workEditorStyles } from './editor.styles'\nimport classNames from 'classnames'\nimport { convertToHTML, convertFromHTML } from 'draft-convert'\nimport Controls from './controls'\nimport EditorContext from './context'\n\nconst sanitizeHtml = t => t\n\nexport const createStateFromHtml = text => {\n const contentState = convertFromHTML(sanitizeHtml(text))\n return EditorState.createWithContent(contentState)\n}\n\nexport const stateToHTML = editorState =>\n sanitizeHtml(convertToHTML(editorState.getCurrentContent()))\n\nexport const EditorProvider = ({ children, editorState, onChange }) => {\n const value = useMemo(\n () => ({\n editorState,\n onChange\n }),\n [editorState, onChange]\n )\n return (\n {children}\n )\n}\n\nexport const EditorCore = injectSheet(editorStyles)(\n ({ classes, className, error, ...props }) => {\n const { editorState, onChange } = useContext(EditorContext)\n\n const handleKeyCommand = (command, editorState) => {\n const newState = RichUtils.handleKeyCommand(editorState, command)\n if (newState) {\n onChange(newState)\n return 'handled'\n }\n return 'not-handled'\n }\n return (\n \n \n
\n )\n }\n)\n\nexport const WorkEditor = injectSheet(workEditorStyles)(\n ({\n classes,\n editorState,\n onChange,\n controls,\n className,\n error,\n ...props\n }) => {\n editorState = editorState || EditorState.createEmpty()\n return (\n \n
\n \n \n \n \n \n \n \n \n \n
\n
\n )\n }\n)\n","export const editorStyles = ({ COLORS, FONT_SIZES }) => ({\n container: {\n fontSize: '16px',\n '@media (min-width: 575px)': {\n fontSize: '20px'\n },\n '& .public-DraftEditor-content': {\n border: 'none',\n padding: '3em',\n borderRadius: '0 0 8px 8px',\n background: '#fff',\n color: COLORS.TEXT.OFF_BLACK.NORMAL,\n fontSize: '16px',\n lineHeight: '1.5',\n '@media (min-width: 575px)': {\n fontSize: '24px'\n },\n '& ul': {\n margin: '1em 0',\n padding: '0',\n listStyle: 'none',\n '& > li': {\n position: 'relative',\n padding: '0 0 0 1em',\n marginTop: '.4em',\n '&:first-child': {\n marginTop: '0'\n },\n '&:after': {\n content: '\"\"',\n position: 'absolute',\n left: '0',\n top: '.6em',\n width: '.4em',\n height: '.4em',\n borderRadius: '.4em',\n background: COLORS.BLUE.NORMAL\n }\n }\n },\n '& ol': {\n margin: '1em 0',\n listStyle: 'none',\n counterReset: 'item',\n padding: '0 0 0 1.5em',\n '& > li': {\n position: 'relative',\n marginTop: '.4em',\n '&:first-child': {\n marginTop: '0'\n },\n '&:after': {\n top: '0',\n left: '-1.5em',\n color: COLORS.BLUE.NORMAL,\n content: 'counter(item) \". \"',\n position: 'absolute',\n fontWeight: 'bold',\n counterIncrement: 'item'\n }\n }\n }\n },\n '& .public-DraftEditorPlaceholder-root': {\n position: 'absolute',\n padding: '20px',\n pointerEvents: 'none',\n color: COLORS.TEXT.MID_GREY.NORMAL,\n '@media (min-width: 575px)': {\n padding: '60px'\n }\n },\n '& .public-DraftEditorPlaceholder-hasFocus': {\n display: 'none'\n }\n },\n error: {\n '& .public-DraftEditor-content': {\n border: `1px solid ${COLORS.RED.NORMAL}`\n }\n }\n})\n\nexport const workEditorStyles = {\n container: {\n background: '#fff',\n maxWidth: '724px',\n width: '100%',\n minHeight: '842px',\n boxShadow:\n '0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)',\n borderRadius: '8px'\n },\n panel: {\n zIndex: '100',\n position: 'sticky',\n top: '0',\n background: '#f5f5f5',\n padding: '8px',\n borderRadius: '8px 8px 0 0',\n '@media (min-width: 575px)': {\n top: '-20px'\n }\n }\n}\n","import React, { useEffect, useState } from 'react'\nimport injectSheet from 'react-jss'\nimport FormCheckbox from 'pobble-components/dist/form-elements/form-checkbox'\nimport { apiSetSuccessCriteria } from '../../common/api/pupil-activity'\nimport { errorHandler } from 'pobble-components/dist/error-handler'\n\nconst successCriteriaStyles = ({ FONT_SIZES }) => ({\n container: {\n border: '1px solid #4a4a4a',\n borderRadius: '8px',\n overflow: 'hidden',\n background: '#fff',\n ...FONT_SIZES.BODY_DEFAULT.STYLE,\n '& ul': {\n listStyle: 'none',\n padding: '0',\n margin: '0'\n },\n '& li': {\n display: 'flex',\n padding: '16px 20px',\n borderTop: '1px solid #4a4a4a',\n '&:first-child': {\n borderTop: '0'\n }\n },\n '& p': {\n margin: '0'\n }\n },\n head: {\n background: '#4a4a4a',\n padding: '16px 20px',\n color: '#fff',\n display: 'block',\n fontWeight: 'bold',\n ...FONT_SIZES.BODY_DEFAULT.STYLE\n },\n criteria: {\n flex: '1',\n '& p': {\n marginTop: '8px',\n '&:first-child': {\n margin: '0'\n }\n }\n },\n criterion: {\n fontWeight: 'bold'\n },\n checkbox: {\n margin: '2px 0 0 12px'\n }\n})\n\nexport const useSuccessCriteria = action => {\n const [successCriteria, setSuccessCriteria] = useState(null)\n\n useEffect(\n () => {\n if (action) {\n setSuccessCriteria(action.last_pa_work_version.success_criteria)\n }\n },\n [action]\n )\n\n const toggleSuccessCriteria = target => {\n const id = target.id\n const value = !target.checked\n setSuccessCriteria(\n successCriteria.map(item => {\n return item.id !== id ? item : { ...item, checked: value }\n })\n )\n apiSetSuccessCriteria(action.last_pa_work_version.id, {\n criterion_id: id,\n checked: value\n }).catch(errorHandler)\n }\n\n return {\n data: successCriteria,\n toggle: toggleSuccessCriteria\n }\n}\n\nexport const SuccessCriteria = injectSheet(successCriteriaStyles)(\n ({ classes, data, toggle, readOnly, disabled }) => {\n return !data ? null : (\n
\n Have I...\n
    \n {data.map(item => {\n return (\n
  • \n
    \n

    {item.criterion}

    \n

    {item.prompts}

    \n
    \n {!readOnly && (\n
    \n toggle && toggle(item)}\n checked={item.checked}\n />\n
    \n )}\n
  • \n )\n })}\n
\n
\n )\n }\n)\n","import React from 'react'\nimport injectSheet from 'react-jss/lib/injectSheet'\n\nconst boxStyles = ({ FONT_SIZES }) => ({\n box: {\n background: '#f8f8f8',\n padding: '20px',\n overflow: 'hidden',\n borderBottom: '1px solid #ececec',\n '&:last-child': {\n border: 'none'\n },\n '& > h2': {\n margin: '-20px -20px 20px',\n padding: '20px',\n background: '#fff',\n ...FONT_SIZES.BODY_DEFAULT.STYLE,\n fontWeight: 'bold'\n },\n '@media (min-width: 575px)': {\n borderRadius: '8px',\n marginTop: '20px',\n boxShadow: '0 2px 4px rgb(0 0 0 / 10%)'\n },\n '@media (min-width: 821px)': {\n borderRadius: '0',\n marginTop: '0',\n boxShadow: 'none'\n }\n }\n})\n\nexport const ToolBox = injectSheet(boxStyles)(\n ({ title, classes, children }) => {\n return (\n
\n

{title}

\n {children}\n
\n )\n }\n)\n","import React, { useEffect, useState } from 'react'\nimport injectSheet from 'react-jss/lib/injectSheet'\nimport {\n Presentation,\n PresentationThumbnail,\n usePresentationNavigation\n} from 'pobble-components/dist/presentation'\nimport ButtonElement from 'pobble-components/dist/button-element'\nimport { Modal, ModalContent } from 'pobble-components/dist/modal'\nimport { apiGetPresentation } from '../../common/api/presentations'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faAngleLeft } from '@fortawesome/pro-solid-svg-icons/faAngleLeft'\nimport { faAngleRight } from '@fortawesome/pro-solid-svg-icons/faAngleRight'\nimport { faTimes } from '@fortawesome/pro-solid-svg-icons/faTimes'\nimport Bone from 'pobble-components/dist/bone'\n\nconst presentationPreviewStyles = ({ COLORS, FONT_SIZES }) => ({\n controls: {\n display: 'flex',\n alignItems: 'center',\n '& > button': {\n background: '#fff',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n border: `2px solid ${COLORS.GREEN.NORMAL}`,\n borderRadius: '32px',\n width: '32px',\n height: '32px',\n fontSize: '24px',\n color: COLORS.GREEN.NORMAL,\n '@media (min-width: 575px)': {\n width: '48px',\n height: '48px',\n fontSize: '32px'\n }\n },\n '& span': {\n width: '64px',\n textAlign: 'center'\n }\n },\n panel: {\n position: 'relative',\n padding: '20px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n ...FONT_SIZES.BODY_LARGE.STYLE\n },\n close: {\n position: 'absolute',\n right: '16px',\n top: '16px',\n zIndex: '100',\n background: '#fff',\n width: '28px',\n height: '28px',\n borderRadius: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: COLORS.GREEN.NORMAL,\n border: `1px solid ${COLORS.GREEN.NORMAL}`\n },\n skeleton: {\n paddingBottom: '56%',\n borderRadius: '0'\n }\n})\n\nconst PresentationPreview = injectSheet(presentationPreviewStyles)(\n ({ classes, id, windowSize, onClose }) => {\n const [presentation, setPresentation] = useState(null)\n\n const navigation = usePresentationNavigation(presentation, { loop: true })\n\n useEffect(\n () => {\n apiGetPresentation(id, {\n include:\n 'presentation.names,presentation.details,presentation.image,presentation.year_groups,presentation.year_group.order,presentation.year_group.names,presentation.slides,presentation.slide.type,presentation.slide.details'\n }).then(res => setPresentation(res.data.presentation))\n },\n [id]\n )\n\n return (\n
\n {navigation.activeSlideId && (\n \n )}\n {!navigation.activeSlideId && }\n {presentation &&\n !presentation.asset && (\n
\n \n \n \n \n {navigation.slidePosition}\n \n \n \n
\n
\n )}\n \n \n \n \n )\n }\n)\n\nconst presentationPreviewModalStyles = {\n content: {\n padding: '0',\n maxWidth: '768px',\n overflow: 'hidden',\n borderRadius: '8px'\n }\n}\n\nconst PresentationPreviewModal = injectSheet(presentationPreviewModalStyles)(\n ({ presentationId, classes, ...props }) => {\n return (\n \n \n \n \n \n )\n }\n)\n\nconst presentationPreviewButtonStyles = ({ COLORS, FONT_SIZES }) => ({\n button: {\n width: '100%'\n },\n thumbnail: {\n borderRadius: '8px',\n overflow: 'hidden'\n },\n hint: {\n margin: '16px 0 0',\n textAlign: 'center',\n color: COLORS.TEXT.LIGHT_GREY.NORMAL,\n ...FONT_SIZES.BODY_SMALL.STYLE\n }\n})\n\nexport const PresentationPreviewButton = injectSheet(\n presentationPreviewButtonStyles\n)(({ classes, presentation }) => {\n const [preview, setPreview] = useState(null)\n return (\n <>\n setPreview(presentation.id)}\n className={classes.button}>\n \n

Click to view

\n \n setPreview(null)}\n presentationId={preview}\n isOpen={!!preview}\n />\n \n )\n})\n","import React, { useCallback, useEffect, useState } from 'react'\nimport injectSheet from 'react-jss'\nimport PageHead from '../../page-head/page-head'\nimport Button from 'pobble-components/dist/button'\nimport {\n apiCacheTypedBody,\n apiGetAction,\n apiTypeMedium\n} from '../../../common/api/pupil-activity'\nimport { errorHandler } from 'pobble-components/dist/error-handler'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faClipboardCheck } from '@fortawesome/pro-solid-svg-icons/faClipboardCheck'\nimport { useHistory, useRouteMatch } from 'react-router-dom'\nimport {\n WorkEditor,\n stateToHTML,\n createStateFromHtml\n} from '../../editor/editor'\nimport Bone from 'pobble-components/dist/bone'\nimport {\n SuccessCriteria,\n useSuccessCriteria\n} from '../../success-criteria/success-criteria'\nimport { fullVHExceptHeader } from 'pobble-components/dist/jss-mixins'\nimport { ToolBox } from '../../toolbox/toolbox'\nimport { PresentationPreviewButton } from '../../presentation-preview/presentation-preview'\n\nconst styles = ({ FONT_SIZES }) => ({\n container: {\n background: '#e6e6e6',\n '@media (min-width: 769px)': {\n ...fullVHExceptHeader,\n display: 'flex',\n flexDirection: 'column'\n }\n },\n contentWrapper: {\n padding: '0 0 70px',\n '@media (min-width: 769px)': {\n flex: '1',\n overflow: 'hidden',\n padding: '0',\n display: 'flex',\n flexDirection: 'row-reverse'\n }\n },\n editorWrapper: {\n marginTop: '20px',\n padding: '0 20px',\n '@media (min-width: 769px)': {\n height: '100%',\n flex: '1',\n display: 'flex',\n padding: '20px',\n justifyContent: 'center',\n overflow: 'auto'\n }\n },\n skeleton: {\n borderRadius: '0',\n width: '100%',\n display: 'block',\n maxWidth: '724px',\n minHeight: '824px',\n '@media (min-width: 575px)': {\n margin: '20px auto',\n borderRadius: '8px'\n }\n },\n tools: {\n '@media (min-width: 575px)': {\n padding: '0 20px'\n },\n '@media (min-width: 821px)': {\n padding: '0',\n width: '360px',\n flexShrink: '0',\n height: '100%',\n overflow: 'auto',\n background: '#f8f8f8'\n },\n '@media (min-width: 575px) and (max-width: 821px)': {\n display: 'flex',\n '& > *': {\n flex: '1',\n '&:nth-child(2)': {\n marginLeft: '20px'\n }\n }\n }\n }\n})\n\nconst Head = ({ action, pending }) => {\n const history = useHistory()\n return (\n \n \n }\n center>\n Review\n \n \n )\n}\n\nconst Write = ({ classes }) => {\n const [editorState, setEditorState] = useState(null)\n const [pending, setPending] = useState(false)\n const [action, setAction] = useState(null)\n const match = useRouteMatch()\n const history = useHistory()\n const workVersionId = action && action.last_pa_work_version.id\n const [draftHTML, setDraftHTML] = useState(null)\n\n const successCriteriaProps = useSuccessCriteria(action)\n\n useEffect(\n () => {\n apiGetAction(match.params.itemId, {\n include:\n 'pa_action.presentation.names,pa_action.presentation.details,pa_action.presentation.asset_data,pa_action.presentation.image,pa_action.last_pa_work_version.details,pa_action.last_pa_work_version.work.media,pa_action.last_pa_work_version.work.medium,pa_action.last_pa_work_version.work.medium.image,pa_action.last_pa_work_version.work.medium.details,pa_action.last_pa_work_version.typed_body,pa_action.last_pa_work_version.success_criteria'\n })\n .catch(errorHandler)\n .then(res => {\n const draftHTML =\n res.data.pa_presentation_action.last_pa_work_version\n .typed_body_cache || '

'\n setDraftHTML(draftHTML)\n setAction(res.data.pa_presentation_action)\n })\n },\n [match.params.itemId]\n )\n\n useEffect(\n () => {\n if (action) {\n setEditorState(\n createStateFromHtml(\n action.last_pa_work_version.typed_body_cache ||\n action.last_pa_work_version.typed_body ||\n ''\n )\n )\n }\n },\n [action]\n )\n\n const saveDraft = useCallback(\n html => {\n if (!!draftHTML && html !== draftHTML) {\n setDraftHTML(html)\n apiCacheTypedBody(workVersionId, {\n body: html\n }).catch(errorHandler)\n }\n },\n [workVersionId, draftHTML]\n )\n\n useEffect(\n () => {\n if (editorState) {\n const tm = setTimeout(() => {\n saveDraft(stateToHTML(editorState))\n }, 1000)\n\n return () => {\n clearTimeout(tm)\n }\n }\n },\n [editorState, saveDraft]\n )\n\n return (\n
\n {\n setPending(true)\n const redirect = () => history.push(`/item/${action.id}/review`)\n if (\n action.last_pa_work_version.typed_body === stateToHTML(editorState)\n ) {\n redirect()\n } else {\n apiTypeMedium(workVersionId, {\n body: stateToHTML(editorState)\n })\n .then(redirect)\n .catch(errorHandler)\n }\n }}\n />\n
\n {action &&\n action.presentation && (\n
\n {action &&\n action.presentation && (\n \n \n \n )}\n {successCriteriaProps.data &&\n !!successCriteriaProps.data.length && (\n \n \n \n )}\n
\n )}\n
\n {editorState ? (\n {\n setEditorState(newState)\n }}\n />\n ) : (\n \n )}\n
\n
\n
\n )\n}\n\nexport default injectSheet(styles)(Write)\n","import React, { useEffect, useMemo, useRef, useState } from 'react'\nimport injectSheet from 'react-jss'\nimport PageHead from '../../page-head/page-head'\nimport Button from 'pobble-components/dist/button'\nimport { useHistory, useRouteMatch } from 'react-router-dom'\nimport {\n apiGetAction,\n apiSendToReview,\n apiSendToStudentAfterPeerReview,\n apiSetHighlightData\n} from '../../../common/api/pupil-activity'\nimport { fullVHExceptHeader } from 'pobble-components/dist/jss-mixins'\nimport { MediaLoader } from 'pobble-components/dist/work'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faPencilAlt } from '@fortawesome/pro-solid-svg-icons/faPencilAlt'\nimport { faCheck } from '@fortawesome/pro-solid-svg-icons/faCheck'\nimport { faHighlighter } from '@fortawesome/pro-solid-svg-icons/faHighlighter'\nimport { faPen } from '@fortawesome/pro-solid-svg-icons/faPen'\nimport { faEraser } from '@fortawesome/pro-solid-svg-icons/faEraser'\nimport { faUndo } from '@fortawesome/pro-solid-svg-icons/faUndo'\nimport { faPaperPlane } from '@fortawesome/pro-solid-svg-icons/faPaperPlane'\nimport { faCommentSmile } from '@fortawesome/pro-regular-svg-icons/faCommentSmile'\nimport ButtonElement from 'pobble-components/dist/button-element'\nimport { FONT_SIZES } from 'pobble-components/dist/theme'\nimport {\n WORK_HIGHLIGHT_SETTINGS,\n WorkHighlighter,\n useWorkHighlighter\n} from 'pobble-components/dist/work/highlighter'\nimport {\n SuccessCriteria,\n useSuccessCriteria\n} from '../../success-criteria/success-criteria'\nimport {\n useWorkReviews,\n WorkReviews\n} from 'pobble-components/dist/work/reviews'\nimport { PresentationPreviewButton } from '../../presentation-preview/presentation-preview'\nimport { ToolBox } from '../../toolbox/toolbox'\nimport { openConfirmationDialog } from 'pobble-components/dist/modal/confirmation-dialog'\nimport { errorHandler } from 'pobble-components/dist/error-handler'\nimport { Modal, ModalContent } from 'pobble-components/dist/modal'\nimport InfoModal from 'pobble-components/dist/modal/info-modal'\nimport pineapple from './pineapple.gif'\nimport { useMe } from 'pobble-components/dist/pobble-user'\n\nconst getCursorStyle = (size, color) => {\n size = size < 10 ? 10 : size\n const r = size / 2\n return `url(\"data:image/svg+xml,%3Csvg width='${size}' height='${size}' viewBox='0 0 ${size} ${size}' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='${r}' cy='${r}' r='${r}' fill='${color}' /%3E%3C/svg%3E%0A\") ${r} ${r}, auto`\n}\n\nconst finishModalStyles = {\n content: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n textAlign: 'center',\n fontSize: '20px',\n lineHeight: '1.2',\n padding: '0 0 40px',\n borderTopLeftRadius: '8px',\n borderTopRightRadius: '8px',\n overflow: 'hidden',\n width: '100%',\n '@media (min-width: 575px)': {\n width: '500px'\n },\n '& img': {\n marginBottom: '40px',\n width: '100%'\n },\n '& p': {\n margin: '0'\n },\n '& button': {\n marginTop: '2em'\n }\n }\n}\n\nconst PeerRevieweWarningModal = ({ peerReviewModeProps }) => {\n return (\n peerReviewModeProps.setShowCommentWarning(false)}\n isOpen={peerReviewModeProps.showCommentWarning}\n green\n icon={}>\n

\n Please, add a comment before returning\n
\n your work back to peer\n

\n peerReviewModeProps.setShowCommentWarning(false)}\n green\n tall>\n Close\n \n \n )\n}\n\nconst usePeerReviewMode = (action, reviews) => {\n const { me } = useMe()\n const match = useRouteMatch()\n const enabled = match.params.action === 'peer'\n const [state, setState] = useState(null)\n const [showCommentWarning, setShowCommentWarning] = useState(null)\n const workVersionId = action && action.last_pa_work_version.id\n\n /**\n * Peer can only send the work back to pupil\n * after he did the review (left a comment)\n */\n const hasCommented = useMemo(\n () => {\n if (!enabled || !reviews || !reviews.length) return false\n let result = false\n loopReviews: for (let i = 0; i < reviews.length; i++) {\n for (let j = 0; j < reviews[i].pa_review_comments.length; j++) {\n const comment = reviews[i].pa_review_comments[j]\n if (comment.author.id === me.account.id) {\n result = true\n break loopReviews\n }\n }\n }\n return result\n },\n [reviews, enabled, me.account.id]\n )\n\n const onSendBack = () => {\n if (!hasCommented) {\n setShowCommentWarning(true)\n } else {\n openConfirmationDialog({\n theme: 'green',\n bodyText: 'Are you sure you want to send this work back to your peer?',\n action: () => {\n setState('pending')\n apiSendToStudentAfterPeerReview(workVersionId)\n .then(() => setState('done'))\n .catch(errorHandler)\n }\n })\n }\n }\n return !action\n ? {}\n : {\n enabled,\n showCommentWarning,\n setShowCommentWarning,\n state,\n onSendBack\n }\n}\n\nconst FinishModal = injectSheet(finishModalStyles)(\n ({ classes, children, ...props }) => {\n const history = useHistory()\n return (\n \n \n \"Pineapple\"\n {children}\n \n \n \n )\n }\n)\n\nexport const SendToTeacherButton = ({ workVersionId }) => {\n const [state, setState] = useState(null)\n return (\n <>\n {\n openConfirmationDialog({\n theme: 'green',\n bodyText:\n 'Are you sure you want to send this work to your teacher?',\n action: () => {\n setState('pending')\n apiSendToReview(workVersionId)\n .then(() => setState('done'))\n .catch(errorHandler)\n }\n })\n }}\n tall\n icon={}>\n Send to teacher\n \n \n

\n Well done!\n
\n You've submitted your work.\n
\n It has been sent to your teacher.\n

\n
\n \n )\n}\n\nconst SendToPeerReviewButton = ({ workVersionId }) => {\n const [state, setState] = useState('null')\n return (\n <>\n {\n openConfirmationDialog({\n theme: 'green',\n bodyText:\n 'Are you sure you want to send this work for peer review?',\n action: () => {\n setState('pending')\n apiSendToReview(workVersionId)\n .then(() => setState('done'))\n .catch(errorHandler)\n }\n })\n }}\n tall\n green\n icon={}>\n Send for peer review\n \n \n

\n Well done!\n
\n You've sent your work for peer review.\n

\n
\n \n )\n}\n\nconst SendBackToPeerButton = ({ peerReviewModeProps }) => {\n return (\n <>\n }>\n Send back to classmate\n \n \n

\n Well done!\n
\n You've reviewed your peer's work.\n

\n
\n \n )\n}\n\nconst controlsStyles = ({ COLORS }) => ({\n container: {\n position: 'relative',\n '& > ul': {\n padding: '0',\n margin: '0',\n listStyle: 'none',\n display: 'flex',\n fontSize: '20px',\n color: COLORS.TEXT.DARK_GREY.NORMAL,\n '& li': {\n marginLeft: '8px',\n '&:first-child': {\n marginLeft: '0'\n }\n },\n '& button': {\n borderRadius: '8px',\n display: 'flex',\n width: '40px',\n height: '40px',\n justifyContent: 'center',\n alignItems: 'center'\n }\n }\n },\n activeTool: {\n background: '#ECECEC'\n },\n toolSettings: {\n position: 'absolute',\n left: '0',\n bottom: '100%',\n padding: '24px 24px 16px',\n marginBottom: '16px',\n background: '#fff',\n boxShadow: '0 2px 12px rgba(0, 0, 0, .2)',\n borderRadius: '8px',\n '& ul': {\n listStyle: 'none',\n padding: '0',\n margin: '0',\n display: 'flex',\n '& > li': {\n border: '2px solid transparent',\n width: '38px',\n height: '38px',\n borderRadius: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginLeft: '16px',\n '&:first-child': {\n marginLeft: '0'\n }\n }\n },\n '@media (min-width: 1025px)': {\n bottom: 'auto',\n top: '100%',\n margin: '16px 0 0'\n }\n },\n colors: {\n borderBottom: '1px solid #ececec',\n paddingBottom: '16px !important',\n marginBottom: '16px !important',\n '& button': {\n width: '32px',\n height: '32px',\n borderRadius: '32px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: '#fff',\n '& > *': {\n marginTop: '3px'\n }\n }\n },\n markerColor: {\n color: '#333 !important'\n },\n sizes: {\n '& button': {\n borderRadius: '100%',\n width: '32px',\n height: '32px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n '& span': {\n display: 'block',\n background: COLORS.TEXT.LIGHT_GREY.NORMAL,\n height: '48px !important',\n transform: 'rotate(45deg)',\n borderRadius: '16px'\n }\n }\n },\n active: {\n borderColor: '#ececec !important'\n },\n close: {\n display: 'flex',\n justifyContent: 'center',\n marginTop: '24px',\n '& button': {\n ...FONT_SIZES.HEADING_NANO.STYLE,\n color: COLORS.TEXT.LIGHT_GREY.NORMAL,\n fontWeight: 'bold',\n textTransform: 'uppercase'\n }\n }\n})\n\nconst useControls = () => {\n const [showToolSettings, setShowToolSettings] = useState(false)\n const [activeTool, setActiveTool] = useState(null)\n const [toolSettings, setToolSettings] = useState({\n markerColor: WORK_HIGHLIGHT_SETTINGS.markerColors[0],\n markerSize: WORK_HIGHLIGHT_SETTINGS.markerSizes[1],\n penColor: WORK_HIGHLIGHT_SETTINGS.penColors[0],\n penSize: WORK_HIGHLIGHT_SETTINGS.penSizes[1]\n })\n\n return {\n activeTool,\n setActiveTool,\n toolSettings,\n setToolSettings,\n showToolSettings,\n setShowToolSettings\n }\n}\n\nconst Controls = injectSheet(controlsStyles)(\n ({\n classes,\n activeTool,\n setActiveTool,\n toolSettings,\n setToolSettings,\n showToolSettings,\n setShowToolSettings,\n onUndo\n }) => {\n const containerRef = useRef(null)\n\n /**\n * Hide brush settings on click outside\n */\n useEffect(\n () => {\n const listener = e => {\n if (showToolSettings) {\n let node = e.target\n let hide = true\n while (node.parentNode) {\n if (node === containerRef.current) {\n hide = false\n break\n }\n node = node.parentNode\n }\n if (hide) setShowToolSettings(false)\n }\n }\n document.addEventListener('mousedown', listener)\n document.addEventListener('touchstart', listener)\n return () => {\n document.removeEventListener('mousedown', listener)\n document.addEventListener('touchstart', listener)\n }\n },\n [showToolSettings, setShowToolSettings]\n )\n\n return (\n
\n
    \n
  • \n {\n setShowToolSettings('marker')\n setActiveTool('marker')\n }}\n className={activeTool === 'marker' && classes.activeTool}>\n \n \n
  • \n
  • \n {\n setShowToolSettings('pen')\n setActiveTool('pen')\n }}\n className={activeTool === 'pen' && classes.activeTool}>\n \n \n
  • \n
  • \n {\n setShowToolSettings(false)\n setActiveTool('eraser')\n }}\n className={activeTool === 'eraser' && classes.activeTool}>\n \n \n
  • \n
  • \n {\n setShowToolSettings(false)\n onUndo()\n }}>\n \n \n
  • \n
\n {showToolSettings === 'marker' && (\n
\n
    \n {WORK_HIGHLIGHT_SETTINGS.markerColors.map(color => {\n return (\n
  • \n \n setToolSettings({\n ...toolSettings,\n markerColor: color\n })\n }\n style={{ backgroundColor: color }}>\n {toolSettings.markerColor === color && (\n \n )}\n \n
  • \n )\n })}\n
\n
    \n {WORK_HIGHLIGHT_SETTINGS.markerSizes.map(size => {\n return (\n
  • \n \n setToolSettings({ ...toolSettings, markerSize: size })\n }>\n \n \n
  • \n )\n })}\n
\n
\n setShowToolSettings(false)}>\n Close\n \n
\n
\n )}\n {showToolSettings === 'pen' && (\n
\n
    \n {WORK_HIGHLIGHT_SETTINGS.penColors.map(color => {\n return (\n
  • \n \n setToolSettings({\n ...toolSettings,\n penColor: color\n })\n }\n style={{ backgroundColor: color }}>\n {toolSettings.penColor === color && (\n \n )}\n \n
  • \n )\n })}\n
\n
    \n {WORK_HIGHLIGHT_SETTINGS.penSizes.map(size => {\n return (\n
  • \n \n setToolSettings({ ...toolSettings, penSize: size })\n }>\n \n \n
  • \n )\n })}\n
\n
\n setShowToolSettings(false)}>\n Close\n \n
\n
\n )}\n
\n )\n }\n)\n\nconst headStyles = ({ COLORS }) => ({\n container: {\n '& > *': {\n flexShrink: '0'\n }\n },\n activeFeedback: {\n color: `${COLORS.GREEN.NORMAL} !important`,\n transition: 'none !important'\n }\n})\n\nconst Head = injectSheet(headStyles)(\n ({\n action,\n classes,\n onEdit,\n onSend,\n pending,\n onComment,\n children,\n peerReviewModeProps\n }) => {\n const nextStepIsPeerReview =\n action &&\n action.pa_session.peer_review &&\n action.status === 'student_first_interaction'\n return (\n <>\n \n {!peerReviewModeProps.enabled && (\n }>\n Edit work\n \n )}\n {peerReviewModeProps.enabled && }\n {children}\n {peerReviewModeProps.enabled ? (\n \n ) : (\n <>\n {nextStepIsPeerReview && (\n \n )}\n {!nextStepIsPeerReview && (\n \n )}\n \n )}\n \n \n )\n }\n)\n\nconst reviewStyles = ({ FONT_SIZES, COLORS }) => ({\n page: {\n background: '#e6e6e6',\n display: 'flex',\n flexDirection: 'column',\n ...fullVHExceptHeader,\n '& > *': {\n flexShrink: '0'\n }\n },\n container: {\n flex: '1',\n overflow: 'auto',\n '@media (min-width: 821px)': {\n overflow: 'hidden',\n padding: '0',\n display: 'flex',\n flexDirection: 'row-reverse'\n }\n },\n reviewTools: {\n '@media (min-width: 575px)': {\n padding: '0 20px'\n },\n '@media (min-width: 821px)': {\n padding: '0',\n width: '360px',\n flexShrink: '0',\n height: '100%',\n overflow: 'auto',\n background: '#f8f8f8'\n }\n },\n presentationTools: {\n '@media (min-width: 575px) and (max-width: 821px)': {\n display: 'flex',\n '& > *': {\n flex: '1',\n '&:nth-child(2)': {\n marginLeft: '20px'\n }\n }\n }\n },\n media: {\n display: 'block',\n overflow: 'hidden',\n width: '100%'\n },\n controlsPanel: {\n background: '#fff',\n padding: '10px 20px',\n position: 'fixed',\n bottom: '0',\n left: '0',\n width: '100%',\n zIndex: '100',\n borderTop: '1px solid #ececec',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n height: '70px',\n '@media (min-width: 1024px)': {\n position: 'static',\n width: 'auto'\n }\n },\n work: {\n padding: '20px 20px 70px',\n '@media (min-width: 821px)': {\n padding: '20px',\n height: '100%',\n overflow: 'auto',\n flex: '1'\n }\n },\n workHolder: {\n maxWidth: '724px',\n margin: '0 auto'\n },\n feedbackHint: {\n ...FONT_SIZES.BODY_SMALL.STYLE,\n color: COLORS.TEXT.MID_GREY.NORMAL,\n fontWeight: 'bold',\n marginBottom: '8px',\n display: 'block'\n },\n workWrapper: {\n margin: '0 auto',\n boxShadow: '0 2px 4px rgba(0, 0, 0, .1)',\n borderRadius: '8px',\n marginBottom: '20px',\n position: 'relative'\n },\n peerReviewWarning: {\n background: '#fef2a2',\n color: '#837201',\n padding: '20px',\n '@media (min-width: 575px) and (max-width: 821px)': {\n marginTop: '20px',\n borderRadius: '8px'\n }\n }\n})\n\nconst Review = ({ classes }) => {\n const match = useRouteMatch()\n const { me } = useMe()\n\n const history = useHistory()\n const [action, setAction] = useState(null)\n const successCriteriaProps = useSuccessCriteria(action)\n const workReviewsProps = useWorkReviews(action)\n const canvasRefs = useRef({})\n\n const highlighter = useWorkHighlighter()\n\n const controls = useControls()\n\n const peerReviewModeProps = usePeerReviewMode(\n action,\n workReviewsProps.reviews\n )\n\n useEffect(\n () => {\n apiGetAction(match.params.itemId, {\n include:\n 'pa_action.presentation.names,pa_action.presentation.details,pa_action.presentation.asset_data,pa_action.presentation.image,pa_action.last_pa_work_version.details,pa_action.last_pa_work_version.work.media,pa_action.last_pa_work_version.work.medium,pa_action.last_pa_work_version.work.medium.image,pa_action.last_pa_work_version.work.medium.details,pa_action.last_pa_work_version.success_criteria,pa_action.last_pa_work_version.work.medium.pa_highlight_canva.data,pa_action.pa_reviews,pa_action.pa_review.type,pa_action.pa_review.pa_review_comments,pa_action.pa_review.pa_review_comment.content,pa_action.pa_review.pa_review_comment.author.names,pa_action.pa_review.pa_review_comment.author.avatar,pa_action.pa_session.details,pa_action.status'\n }).then(res => {\n setAction(res.data.pa_presentation_action)\n })\n },\n [match.params.itemId]\n )\n\n return (\n
\n {\n history.push(\n `/item/${action.id}/${\n action.last_pa_work_version.type === 'typed'\n ? 'write'\n : 'work'\n }`\n )\n }\n }>\n
\n highlighter.undo()} />\n
\n \n
\n
\n {peerReviewModeProps.enabled && (\n
\n You are reviewing your peer's work\n
\n )}\n
\n {action &&\n action.presentation && (\n \n \n \n )}\n {successCriteriaProps.data &&\n !!successCriteriaProps.data.length && (\n \n \n \n )}\n
\n {workReviewsProps.reviews && (\n \n \n \n )}\n
\n
\n {action && (\n \n {action.last_pa_work_version.work &&\n action.last_pa_work_version.work.media.map(medium => {\n return (\n
\n {\n apiSetHighlightData(medium.id, {\n data: h.getSaveData()\n })\n }}\n onAction={highlighter.onAction}\n canvasRef={el => (canvasRefs.current[medium.id] = el)}\n canvasWidth={medium.width}\n canvasHeight={medium.height}\n controls={controls}\n />\n \n
\n )\n })}\n
\n )}\n
\n
\n {peerReviewModeProps.enabled && (\n \n )}\n \n )\n}\n\nexport default injectSheet(reviewStyles)(Review)\n","import React, { useState, useEffect } from 'react'\nimport injectSheet from 'react-jss'\nimport {\n Modal,\n ModalHeader,\n ModalContent,\n ModalFooter\n} from 'pobble-components/dist/modal'\nimport FormSelect from 'pobble-components/dist/form-elements/form-select'\nimport { apiClient } from 'pobble-components/dist/api'\nimport Bone from 'pobble-components/dist/bone'\nimport Button from 'pobble-components/dist/button'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faPlus } from '@fortawesome/pro-solid-svg-icons/faPlus'\nimport { faImage } from '@fortawesome/pro-solid-svg-icons/faImage'\nimport { faKeyboard } from '@fortawesome/pro-solid-svg-icons/faKeyboard'\nimport { faCircle } from '@fortawesome/pro-regular-svg-icons/faCircle'\nimport { faCheckCircle } from '@fortawesome/pro-solid-svg-icons/faCheckCircle'\nimport {\n apiCreateSoloSession,\n apiCreateSoloSessionWithoutPresentation\n} from '../../../../common/api/pupil-activity'\nimport { errorHandler } from 'pobble-components/dist/error-handler'\nimport FormLabel from 'pobble-components/dist/form-elements/form-label'\nimport FormRow from 'pobble-components/dist/form-elements/form-row'\nimport FormInput from 'pobble-components/dist/form-elements/form-input'\nimport FormTextArea from 'pobble-components/dist/form-elements/form-text-area'\nimport { useAddWork } from '../../../add-work-dialog/add-work-dialog'\nimport Cookies from 'js-cookie'\nimport FormFile from 'pobble-components/dist/form-elements/form-file'\nimport Spinner from 'pobble-components/dist/spinner'\nimport { toast } from 'pobble-components/dist/toast'\n\nconst SoloSessionForm = injectSheet({\n modalContent: {\n width: '360px',\n minWidth: 0,\n position: 'relative'\n },\n pending: {\n position: 'absolute',\n inset: '0',\n background: '#fff',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: '100',\n '& > *': {\n color: 'var(--green)'\n }\n },\n typeChoice: {\n display: 'grid',\n gridTemplateColumns: '1fr 1fr',\n gap: '16px',\n '& input': {\n appearance: 'none',\n backgroundColor: '#fff',\n margin: 0,\n '& + *': {\n cursor: 'pointer',\n border: '1px solid #ddd',\n padding: '16px',\n borderRadius: '4px',\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'column',\n position: 'relative'\n },\n '&:checked + *': {\n borderColor: 'var(--green)',\n '& svg': {\n color: 'var(--green)'\n }\n }\n }\n },\n icon: {\n fontSize: '40px',\n marginTop: '8px',\n color: 'var(--gray--)'\n },\n checkIcon: {\n position: 'absolute',\n right: '8px',\n top: '8px',\n color: '#ddd',\n fontSize: '16px'\n }\n})(({ classes, requestClose, presentationId }) => {\n const [teachers, setTeachers] = useState(null)\n const [selectedTeacher, setSelectedTeacher] = useState(\n Cookies.get('paSessionSelectedTeacher')\n )\n const [title, setTitle] = useState('')\n const [description, setDescription] = useState('')\n const [typeOfWork, setTypeOfWork] = useState(null)\n const [pending, setPending] = useState(false)\n\n const { type, upload } = useAddWork({\n onError: () => setPending(false)\n })\n\n const isValid = !!typeOfWork && (presentationId || (!!title && !!description))\n\n const createSession = () => {\n setPending(true)\n const endpoint = presentationId\n ? apiCreateSoloSession\n : apiCreateSoloSessionWithoutPresentation\n\n if (!presentationId && (!title || !description))\n return Promise.reject(\n toast.error('Please provide title and desription to your work')\n )\n\n return endpoint(\n {\n teacher_id: selectedTeacher,\n presentation_id: presentationId,\n title: title || null,\n description: description || null\n },\n {\n include: 'pa_action.last_pa_work_version'\n }\n ).catch(e => {\n errorHandler(e)\n setPending(false)\n })\n }\n\n useEffect(() => {\n apiClient\n .get('v3/me', {\n params: {\n include:\n 'account.student_type.school.teacher_types,account.student_type.school.teacher_type.account.names'\n }\n })\n .then(res =>\n setTeachers(res.data.account.student_type.school.teacher_types)\n )\n }, [])\n\n return (\n {\n e.preventDefault()\n Cookies.set('paSessionSelectedTeacher', selectedTeacher, {\n expires: 30\n })\n createSession().then(res => {\n requestClose()\n return type({\n actionId: res.data.pa_presentation_action.id\n })\n })\n }}>\n \n \n \n Select your teacher\n \n {!teachers && }\n {!!teachers && (\n setSelectedTeacher(e.target.value)}>\n \n {teachers.map(teacher => {\n return (\n \n )\n })}\n \n )}\n \n {!presentationId && (\n <>\n \n \n Title of the work\n \n setTitle(e.target.value)}\n required\n />\n \n \n \n Description of the work\n \n setDescription(e.target.value)}\n required\n />\n \n \n )}\n \n \n \n \n {pending && (\n
\n \n
\n )}\n
\n \n \n {typeOfWork !== 'photo' && (\n }\n tall>\n Add work\n \n )}\n {typeOfWork === 'photo' && (\n {\n createSession().then(res =>\n upload(files, {\n actionId: res.data.pa_presentation_action.id,\n workVersionId:\n res.data.pa_presentation_action.last_pa_work_version.id\n }).then(requestClose)\n )\n }}\n accept=\"image/jpeg, image/png, .pdf\">\n }\n tall>\n Add work\n \n \n )}\n \n \n )\n})\n\nconst SoloSessionDialog = injectSheet({\n modal: {\n zIndex: '2000'\n }\n})(({ classes, isOpen, requestClose, ...props }) => {\n return (\n <>\n \n Add work\n \n \n \n )\n})\n\nexport default SoloSessionDialog\n","import React, { createContext, useMemo, useState } from 'react'\nimport styles from './app.styles'\nimport injectSheet from 'react-jss'\nimport { UserProvider, UserInspector } from 'pobble-components/dist/pobble-user'\nimport EnvironmentLine from 'pobble-components/dist/environment-line'\nimport Header from 'pobble-components/dist/pobble-header'\nimport Discover from '../pages/discover/discover'\nimport MyLessons from '../pages/my-lessons/my-lessons'\nimport { Switch, Route, BrowserRouter as Router } from 'react-router-dom'\nimport PageNotFound from 'pobble-components/dist/page-not-found'\nimport LessonView from '../pages/lesson-view/lesson-view'\nimport WorkUpload from '../pages/work-upload/work-upload'\nimport { ConfirmationDialog } from 'pobble-components/dist/modal/confirmation-dialog'\nimport TeacherFeedback from '../pages/teacher-feedback/teacher-feedback'\nimport Write from '../pages/write/write'\nimport { ToastContainer } from 'pobble-components/dist/toast'\nimport Review from '../pages/review/review'\nimport { ErrorBoundary } from 'pobble-components/dist/error-boundary'\nimport SoloSessionDialog from '../pages/discover/solo-session-dialog/solo-session-dialog'\n\nexport const AppContext = createContext(null)\n\nconst APP_PATH = process.env.REACT_APP_PATH || '/'\n\nconst App = ({ classes, me, meError }) => {\n const [soloSessionModal, setSoloSessionModal] = useState({\n opened: false,\n presentationId: null\n })\n\n const appContextValue = useMemo(\n () => {\n return {\n soloSessionModal,\n setSoloSessionModal\n }\n },\n [soloSessionModal, setSoloSessionModal]\n )\n\n return (\n (me ? Promise.resolve(me) : Promise.reject(meError))}>\n \n \n \n
\n \n \n me.account.policy.can_see_pupil_lessons}>\n
\n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n
\n \n setSoloSessionModal({ ...soloSessionModal, opened: false })\n }\n isOpen={soloSessionModal.opened}\n />\n \n \n \n \n \n )\n}\n\nexport default injectSheet(styles)(App)\n","import {\n createReducer,\n createRequestReducer,\n createMappedRequestReducer\n} from 'pobble-components/dist/redux-helpers'\nimport { combineReducers } from 'redux'\n\nconst DiscoverReducer = combineReducers({\n fetching: createRequestReducer('DISCOVER:FETCH'),\n fetchingRecommended: createRequestReducer('DISCOVER:FETCH_RECOMMENDED'),\n fetchingNews: createRequestReducer('DISCOVER:FETCH_NEWS'),\n fetchingP365: createMappedRequestReducer(\n 'DISCOVER:FETCH_P365',\n (state, params, status) => {\n const { count, from } = params\n const newState = { ...state }\n const side = Math.floor(count / 2)\n for (let i = from - side; i <= from + side; i++) {\n newState[i] = status\n }\n return newState\n }\n ),\n p365: createReducer(null, {\n 'DISCOVER:FETCH_P365_REQUEST_SUCCESS': (state, { response, params }) => {\n const presentations = response.data.presentations\n const { count, from } = params\n const newState = { ...state }\n const range = Math.floor(count / 2)\n const shift = from - range\n presentations.forEach((presentation, index) => {\n newState[shift + index] = presentation\n })\n return newState\n }\n })\n})\n\nexport default DiscoverReducer\n","import { createReducer } from 'pobble-components/dist/redux-helpers'\nimport { combineReducers } from 'redux'\nimport { schema, normalize } from 'normalizr'\n\nconst normalizeFeedItems = data => {\n const items = new schema.Entity('items')\n return normalize(data, [items])\n}\n\nconst MyLessonsReducer = combineReducers({\n data: createReducer(null, {\n 'FEED_ITEMS:FETCH_REQUEST_SUCCESS': (state, { response }) =>\n normalizeFeedItems(response.data.pa_action_feed_items)\n })\n})\n\nexport default MyLessonsReducer\n","import {\n createReducer,\n createRequestReducer\n} from 'pobble-components/dist/redux-helpers'\nimport { combineReducers } from 'redux'\nimport { schema, normalize } from 'normalizr'\n\nconst normalizeMedia = data => {\n const media = new schema.Entity('media')\n return normalize(data, [media])\n}\n\nconst WorkUpload = combineReducers({\n addMediaRequest: createRequestReducer('WORK_UPLOAD:ADD_MEDIA'),\n deleteWorkRequest: createRequestReducer('WORK_UPLOAD:DELETE_WORK'),\n rotateMediumRequest: createRequestReducer('WORK_UPLOAD:ROTATE_MEDIUM'),\n workVersion: createReducer(null, {\n 'WORK_UPLOAD:FETCH_REQUEST': () => null,\n 'WORK_UPLOAD:FETCH_REQUEST_SUCCESS': (state, { response }) =>\n response.data.pa_presentation_action.last_pa_work_version\n }),\n work: createReducer(null, {\n 'WORK_UPLOAD:FETCH_REQUEST': () => null,\n 'WORK_UPLOAD:FETCH_REQUEST_SUCCESS': (state, { response }) => {\n return response.data.pa_presentation_action.last_pa_work_version.work\n }\n }),\n media: createReducer(null, {\n 'WORK_UPLOAD:FETCH_REQUEST': () => null,\n 'WORK_UPLOAD:FETCH_REQUEST_SUCCESS': (state, { response }) => {\n return normalizeMedia(\n response.data.pa_presentation_action.last_pa_work_version.work.media\n )\n },\n 'WORK_UPLOAD:ADD_MEDIA_REQUEST_SUCCESS': (state, { response }) => {\n const media = response.data.media\n const newState = {\n entities: { media: { ...state.entities.media } },\n result: [...state.result]\n }\n\n media.forEach(item => {\n newState.entities.media[item.id] = item\n newState.result.push(item.id)\n })\n\n return newState\n },\n 'WORK_UPLOAD:DELETE_MEDIA_REQUEST': (state, { params }) => {\n return {\n ...state,\n result: state.result.filter(id => id !== params.id)\n }\n },\n 'WORK_UPLOAD:ROTATE_MEDIUM_REQUEST_SUCCESS': (state, { response }) => {\n return {\n ...state,\n entities: {\n media: {\n ...state.entities.media,\n [response.data.medium.id]: response.data.medium\n }\n }\n }\n },\n 'WORK_UPLOAD:REORDER_MEDIA_REQUEST': (state, { params }) => {\n const mediaCopy = { ...state.entities.media }\n params.ids.forEach((id, index) => {\n mediaCopy[id].order = index\n })\n return {\n ...state,\n entities: {\n media: mediaCopy\n }\n }\n }\n })\n})\n\nexport default WorkUpload\n","import { combineReducers } from 'redux'\nimport DiscoverStore from './stores/discover/discover.reducer'\nimport FeedItemsStore from './stores/feed-items/feed-items.reducer'\nimport WorkUploadStore from './stores/work-upload/work-upload.reducer'\n\nconst Reducer = combineReducers({\n DiscoverStore,\n FeedItemsStore,\n WorkUploadStore\n})\n\nexport default Reducer\n","import 'pobble-components/dist/setup/sentry'\n\nimport React from 'react'\nimport ReactDOM from 'react-dom'\nimport App from './components/app/app'\n\nimport { Provider } from 'react-redux'\nimport { createStore, applyMiddleware } from 'redux'\nimport thunk from 'redux-thunk'\nimport rootReducer from './reducer'\nimport { requestMiddleware } from 'pobble-components/dist/redux-helpers'\n\nimport injectSheet from 'react-jss'\nimport 'normalize.css'\nimport { apiGetMe } from './common/api/profile'\nimport { PobbleStyles } from 'pobble-components/dist/styles'\n\nconst StyledApp = injectSheet({\n '@global': {\n body: {\n backgroundColor: '#F1F4F9'\n }\n }\n})(App)\n\nconst store = createStore(\n rootReducer,\n applyMiddleware(requestMiddleware, thunk)\n)\n\nconst render = ({ me, meError }) => {\n ReactDOM.render(\n \n \n \n \n ,\n document.getElementById('root')\n )\n}\n\napiGetMe({\n include:\n 'account.names,account.finish_signup_status,account.policy,account.pobbler_type,account.avatar,account.student_type.school,account.student_type.year_group.order'\n}).then(res => render({ me: res }), e => render({ meError: e }))\n\n// Lazy load external tools\nsetTimeout(() => import('pobble-components/dist/setup/external-tools'), 1000)\n","import { apiClient } from 'pobble-components/dist/api'\n\nconst apiGetMe = params => apiClient.get('v3/me', { params })\n\nexport { apiGetMe }\n"],"sourceRoot":""}