UNPKG

@instructure/quiz-taking

Version:
56 lines (55 loc) 2.82 kB
import { bindActionCreators } from 'redux'; import { List, Map } from 'immutable'; import { connect } from '@instructure/quiz-core/common/react-redux'; import { getBacktrackingIsAllowed, isOneQuestionAtATime, getActiveQuizSession } from '@instructure/quiz-core/common/selectors/quizSessions'; import { toggleSidebar as toggleSidebarAction } from '@instructure/quiz-core/common/actions/sidebar'; import { scrollToItem as scrollToItemAction } from '@instructure/quiz-core/common/actions/scrolling'; import { screenreaderNotification as screenreaderNotificationAction } from '@instructure/quiz-core/common/actions/alerts'; import { setCurrentSessionItemPosition, setFocusTitleAndInstructions as setFocusTitleAndInstructionsAction } from '@instructure/quiz-core/common/actions/taking'; import { TakingSidebar as Sidebar } from './presenter'; export var getPinnedItems = function(state, quizSession) { var _state_sessionItems; if (((_state_sessionItems = state.sessionItems) !== null && _state_sessionItems !== void 0 ? _state_sessionItems : Map()).size === 0) { return List(); } return quizSession.getIn([ 'takingData', 'pins' ], List()).map(function(pinPosition) { var si = state.sessionItems.find(function(sessionItem) { return sessionItem.get('position') === pinPosition; }); return { position: pinPosition, sessionItemId: si.get('id') }; }); }; export var mapStateToProps = function(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.sidebar.get('isOpen') }; }; export var mapDispatchToProps = function(dispatch, props) { return { scrollToItem: props.scrollToItem || bindActionCreators(scrollToItemAction, dispatch), toggleSidebar: props.toggleSidebar || bindActionCreators(toggleSidebarAction, dispatch), screenreaderNotification: bindActionCreators(screenreaderNotificationAction, dispatch), goToItem: function(sessionItemPosition) { return bindActionCreators(setCurrentSessionItemPosition, dispatch)(sessionItemPosition); }, setFocusTitleAndInstructions: function(bool) { return bindActionCreators(setFocusTitleAndInstructionsAction, dispatch)(bool); } }; }; export var TakingSidebar = connect(mapStateToProps, mapDispatchToProps)(Sidebar); export default TakingSidebar;