UNPKG

@instructure/quiz-taking

Version:

46 lines 2.32 kB
import { bindActionCreators } from 'redux'; import { List, Map } from 'immutable'; import { connect, getBacktrackingIsAllowed, isOneQuestionAtATime, getActiveQuizSession, toggleSidebar as toggleSidebarAction, scrollToItem as scrollToItemAction, screenreaderNotification as screenreaderNotificationAction, setCurrentSessionItemPosition, setFocusTitleAndInstructions as setFocusTitleAndInstructionsAction } from '@instructure/quiz-core'; import { TakingSidebar as Sidebar } from './presenter'; export var getPinnedItems = function getPinnedItems(state, quizSession) { if (state.getIn(['sessionItems'], Map()).size === 0) { return List(); } return quizSession.getIn(['takingData', 'pins'], List()).map(function (pinPosition) { var si = state.get('sessionItems').find(function (sessionItem) { return sessionItem.get('position') === pinPosition; }); return { position: pinPosition, sessionItemId: si.get('id') }; }); }; export var mapStateToProps = function mapStateToProps(state, props) { var quizSession = getActiveQuizSession(state); var pinnedItems = getPinnedItems(state, quizSession); return { allowBacktracking: getBacktrackingIsAllowed(state), isOneQuestionAtATime: isOneQuestionAtATime(state), pinnedItems: pinnedItems, quizTitle: quizSession.getQuiz().title, sessionItems: quizSession.getSessionItems(), sessionNotLoaded: quizSession.id === '0', sidebarOpen: props.sidebarOpen || state.getIn(['sidebar', 'isOpen']) }; }; export var mapDispatchToProps = function mapDispatchToProps(dispatch, props) { return { scrollToItem: props.scrollToItem || bindActionCreators(scrollToItemAction, dispatch), toggleSidebar: props.toggleSidebar || bindActionCreators(toggleSidebarAction, dispatch), screenreaderNotification: bindActionCreators(screenreaderNotificationAction, dispatch), goToItem: function goToItem(sessionItemPosition) { return bindActionCreators(setCurrentSessionItemPosition, dispatch)(sessionItemPosition); }, setFocusTitleAndInstructions: function setFocusTitleAndInstructions(bool) { return bindActionCreators(setFocusTitleAndInstructionsAction, dispatch)(bool); } }; }; export var TakingSidebar = connect(mapStateToProps, mapDispatchToProps)(Sidebar); export default TakingSidebar;