UNPKG

@instructure/quiz-grading

Version:

The Quiz React SDK by Instructure Inc.

151 lines 5.95 kB
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck"; import _createClass from "@babel/runtime/helpers/esm/createClass"; import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn"; import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf"; import _inherits from "@babel/runtime/helpers/esm/inherits"; import _defineProperty from "@babel/runtime/helpers/esm/defineProperty"; function _callSuper(_this, derived, args) { function isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { return !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (e) { return false; } } derived = _getPrototypeOf(derived); return _possibleConstructorReturn(_this, isNativeReflectConstruct() ? Reflect.construct(derived, args || [], _getPrototypeOf(_this).constructor) : derived.apply(_this, args)); } import React, { Component } from 'react'; import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; import { extractTextFromHtml, substituteVars } from '@instructure/quiz-interactions'; import { generateDisplayPositions, StimulusView as Stimulus, Sidebar, onPhone } from '@instructure/quiz-core'; import SidebarItem from './SidebarItem'; import { SIDEBAR_ITEM_REF, FORMULA_SLUG, withI18nSupport } from '@instructure/quiz-common'; export var GradingSidebar = /*#__PURE__*/function (_withI18nSupport) { function GradingSidebar() { var _this2; _classCallCheck(this, GradingSidebar); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this2 = _callSuper(this, GradingSidebar, [].concat(args)); _defineProperty(_this2, "scrollToItem", function (position) { return function (itemId) { _this2.props.scrollToItem(itemId); if (onPhone() && _this2.props.sidebarOpen) { _this2.props.toggleSidebar(); } }; }); _defineProperty(_this2, "renderSidebarItem", function (sessionItem, _displayPosition) { var item = sessionItem.getItem(); var key = _this2.generateItemKey(item.id); var sidebarOpen = _this2.props.sidebarOpen; return /*#__PURE__*/React.createElement(SidebarItem, { inStimulus: sessionItem.isStimulus, isGraded: sessionItem.sessionItemResult.get('score') !== null, itemBody: _this2.getItemBody(item, _this2.locale), itemId: item.id, itemName: item.getInteractionType().name, key: key, pointsPossible: sessionItem.pointsPossible, position: sessionItem.questionNumber, sessionItemId: sessionItem.id, ref: _this2.generateItemKey(item.id), scrollToItem: _this2.scrollToItem, sidebarOpen: sidebarOpen }); }); return _this2; } _inherits(GradingSidebar, _withI18nSupport); return _createClass(GradingSidebar, [{ key: "generateItemKey", value: function generateItemKey(id) { return "".concat(SIDEBAR_ITEM_REF, "_").concat(id); } }, { key: "setRef", value: function setRef(key) { var _this3 = this; return function (node) { _this3[key] = node; }; } }, { key: "getItemBody", value: function getItemBody(item, locale) { var itemBody = item.getItemBody(); if (item.getInteractionType().slug === FORMULA_SLUG) { var variables = item.toJS().interactionData.variables; itemBody = substituteVars(itemBody, variables, locale); } return extractTextFromHtml(itemBody || ''); } }, { key: "renderSidebarItems", value: function renderSidebarItems() { var _this4 = this; var sessionItems = this.props.sessionItems; return generateDisplayPositions(sessionItems).map(function (si) { var sessionItem = si.record; var sidebarOpen = _this4.props.sidebarOpen; if (sessionItem.isStimulus) { var key = _this4.generateItemKey(si.record.id); return /*#__PURE__*/React.createElement(Stimulus, { displayPosition: sessionItem.questionNumber, itemId: sessionItem.id, key: key, ref: _this4.setRef(key), renderSidebarItem: _this4.renderSidebarItem, scrollToItem: _this4.scrollToItem(sessionItem.position), sidebarOpen: sidebarOpen, stimulusParent: sessionItem }); } return /*#__PURE__*/React.createElement("div", { key: sessionItem.id }, _this4.renderSidebarItem(sessionItem)); }); } }, { key: "render", value: function render() { if (this.props.sessionNotLoaded) { return null; } return /*#__PURE__*/React.createElement(Sidebar, { grading: true, role: this.props.role, scrollToItem: this.scrollToItem, sidebarOpen: this.props.sidebarOpen, toggleSidebar: this.props.toggleSidebar, screenreaderNotification: this.props.screenreaderNotification }, this.renderSidebarItems()); } }]); }(withI18nSupport(Component)); _defineProperty(GradingSidebar, "propTypes", { quizTitle: PropTypes.string.isRequired, role: PropTypes.string, screenreaderNotification: PropTypes.func.isRequired, scrollToItem: PropTypes.func.isRequired, sessionItems: ImmutablePropTypes.list.isRequired, sessionNotLoaded: PropTypes.bool.isRequired, sidebarOpen: PropTypes.bool, toggleSidebar: PropTypes.func.isRequired, locale: PropTypes.string }); _defineProperty(GradingSidebar, "defaultProps", { role: 'navigation', sidebarOpen: false, locale: null }); _defineProperty(GradingSidebar, "contextTypes", { locale: PropTypes.string }); export default GradingSidebar;