@instructure/quiz-core 17.58.2-rc.0 → 17.58.2-rc.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/es/banks/api/banks.js +35 -1
  2. package/es/banks/components/Bank/index.js +16 -7
  3. package/es/banks/components/Bank/presenter.js +198 -18
  4. package/es/building/components/layout/header/BuildingButtons/index.js +2 -0
  5. package/es/building/components/layout/header/BuildingButtons/presenter.js +8 -0
  6. package/es/building/components/resources/BanksTray/presenter.js +2 -1
  7. package/es/common/actions/sharedBanks.js +2 -2
  8. package/es/index.js +1 -0
  9. package/es/moderating/components/events/Event.js +1 -1
  10. package/es/moderating/components/resources/AccommodationsModal/index.js +1 -1
  11. package/es/moderating/components/resources/ModerateTable/presenter.js +2 -2
  12. package/es/moderating/components/resources/ModerateTableRow/index.js +1 -1
  13. package/es/reporting/components/charts/QuintileDistribution/presenter.js +15 -2
  14. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/index.js +2 -0
  15. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/presenter.js +64 -0
  16. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/theme.js +3 -0
  17. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisPopoverMetric/index.js +2 -0
  18. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisPopoverMetric/presenter.js +75 -0
  19. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisPopoverMetric/theme.js +6 -0
  20. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/index.js +2 -0
  21. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/popoverContent.js +18 -0
  22. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +262 -0
  23. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/theme.js +12 -0
  24. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewQuizAnalysis/presenter.js +59 -58
  25. package/es/reporting/components/resources/NewQuizAndItemAnalysis/ReportCard/index.js +68 -0
  26. package/es/reporting/components/resources/NewQuizAndItemAnalysis/charts/ScoreDistribution/index.js +2 -0
  27. package/es/reporting/components/resources/NewQuizAndItemAnalysis/charts/ScoreDistribution/presenter.js +84 -0
  28. package/es/reporting/components/resources/NewQuizAndItemAnalysis/charts/ScoreDistribution/theme.js +12 -0
  29. package/es/reporting/components/resources/NewQuizAndItemAnalysis/presenter.js +13 -18
  30. package/es/reporting/components/resources/NewQuizAndItemAnalysis/utils.js +1 -1
  31. package/es/reporting/components/resources/ReportCard/index.js +1 -1
  32. package/lib/banks/api/banks.js +40 -2
  33. package/lib/banks/components/Bank/index.js +15 -2
  34. package/lib/banks/components/Bank/presenter.js +203 -17
  35. package/lib/building/components/layout/header/BuildingButtons/index.js +3 -0
  36. package/lib/building/components/layout/header/BuildingButtons/presenter.js +8 -0
  37. package/lib/building/components/resources/BanksTray/presenter.js +2 -1
  38. package/lib/common/actions/sharedBanks.js +2 -2
  39. package/lib/index.js +107 -98
  40. package/lib/moderating/components/events/Event.js +1 -1
  41. package/lib/moderating/components/resources/AccommodationsModal/index.js +1 -1
  42. package/lib/moderating/components/resources/ModerateTable/presenter.js +2 -2
  43. package/lib/moderating/components/resources/ModerateTableRow/index.js +1 -1
  44. package/lib/reporting/components/charts/QuintileDistribution/presenter.js +15 -2
  45. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/index.js +11 -0
  46. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/presenter.js +83 -0
  47. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/theme.js +10 -0
  48. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisPopoverMetric/index.js +11 -0
  49. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisPopoverMetric/presenter.js +95 -0
  50. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisPopoverMetric/theme.js +13 -0
  51. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/index.js +11 -0
  52. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/popoverContent.js +27 -0
  53. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +291 -0
  54. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/theme.js +19 -0
  55. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewQuizAnalysis/presenter.js +64 -63
  56. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/ReportCard/index.js +91 -0
  57. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/charts/ScoreDistribution/index.js +11 -0
  58. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/charts/ScoreDistribution/presenter.js +106 -0
  59. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/charts/ScoreDistribution/theme.js +19 -0
  60. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/presenter.js +15 -20
  61. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/utils.js +1 -1
  62. package/lib/reporting/components/resources/ReportCard/index.js +1 -1
  63. package/package.json +9 -9
@@ -0,0 +1,68 @@
1
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
2
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
3
+ import _inherits from "@babel/runtime/helpers/esm/inherits";
4
+ import _createSuper from "@babel/runtime/helpers/esm/createSuper";
5
+
6
+ var _dec, _class, _class2, _temp;
7
+
8
+ import React, { Component } from 'react';
9
+ import PropTypes from 'prop-types';
10
+ import t from '@instructure/quiz-i18n/es/format-message';
11
+ import { Text } from '@instructure/ui-text';
12
+ import { Link } from '@instructure/ui-link';
13
+ import { Flex } from '@instructure/ui-flex';
14
+ import { themeable } from '@instructure/ui-themeable';
15
+ import Card from "../../../../../common/components/shared/Card/index.js";
16
+ var styles = {
17
+ componentId: 'eRzKS',
18
+ template: function template(theme) {
19
+ return "\n\n.eRzKS_fbIL{border-radius:".concat(theme.cardBorderRadius || 'inherit', ";box-shadow:").concat(theme.cardBoxShadow || 'inherit', ";display:inline-flex;flex-direction:column;height:").concat(theme.cardHeight || 'inherit', ";margin:").concat(theme.cardMargin || 'inherit', ";padding:").concat(theme.cardPadding || 'inherit', ";width:").concat(theme.cardWidth || 'inherit', "}\n\n.eRzKS_ebWM{padding-top:").concat(theme.detailPadding || 'inherit', "}");
20
+ },
21
+ 'card': 'eRzKS_fbIL',
22
+ 'details': 'eRzKS_ebWM'
23
+ };
24
+ import theme from "../../ReportCard/theme.js";
25
+ export var NewQuizAndItemAnalysisReportCard = (_dec = themeable(theme, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
26
+ _inherits(NewQuizAndItemAnalysisReportCard, _Component);
27
+
28
+ var _super = _createSuper(NewQuizAndItemAnalysisReportCard);
29
+
30
+ function NewQuizAndItemAnalysisReportCard() {
31
+ _classCallCheck(this, NewQuizAndItemAnalysisReportCard);
32
+
33
+ return _super.apply(this, arguments);
34
+ }
35
+
36
+ _createClass(NewQuizAndItemAnalysisReportCard, [{
37
+ key: "render",
38
+ value: function render() {
39
+ var _this$props = this.props,
40
+ name = _this$props.name,
41
+ href = _this$props.href;
42
+ return /*#__PURE__*/React.createElement(Card, {
43
+ className: styles.card
44
+ }, /*#__PURE__*/React.createElement(Flex, {
45
+ direction: "column"
46
+ }, /*#__PURE__*/React.createElement(Flex.Item, null, /*#__PURE__*/React.createElement(Text, {
47
+ size: "medium",
48
+ weight: "bold"
49
+ }, name)), /*#__PURE__*/React.createElement(Flex.Item, {
50
+ align: "end"
51
+ }, /*#__PURE__*/React.createElement(Link, {
52
+ href: href
53
+ }, /*#__PURE__*/React.createElement(Text, {
54
+ size: "small"
55
+ }, t('View Report'))))));
56
+ }
57
+ }]);
58
+
59
+ NewQuizAndItemAnalysisReportCard.displayName = "NewQuizAndItemAnalysisReportCard";
60
+ return NewQuizAndItemAnalysisReportCard;
61
+ }(Component), _class2.propTypes = {
62
+ name: PropTypes.node,
63
+ href: PropTypes.string
64
+ }, _class2.defaultProps = {
65
+ name: void 0,
66
+ href: void 0
67
+ }, _temp)) || _class);
68
+ export default NewQuizAndItemAnalysisReportCard;
@@ -0,0 +1,2 @@
1
+ import { ScoreDistribution } from "./presenter.js";
2
+ export default ScoreDistribution;
@@ -0,0 +1,84 @@
1
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
2
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
3
+ import _inherits from "@babel/runtime/helpers/esm/inherits";
4
+ import _createSuper from "@babel/runtime/helpers/esm/createSuper";
5
+
6
+ var _dec, _class, _temp;
7
+
8
+ import React, { Component } from 'react';
9
+ import QuintileDistribution from "../../../../charts/QuintileDistribution/index.js";
10
+ import { themeable } from '@instructure/ui-themeable';
11
+ import theme from "./theme.js";
12
+ var styles = {
13
+ componentId: 'eRgoL',
14
+ template: function template(theme) {
15
+ return "\n\n.eRgoL_YBfL{background-color:".concat(theme.legendRectFillColor || 'inherit', "}\n\n.eRgoL_eDZF{column-gap:10px;display:inline-flex;padding:").concat(theme.legendPadding || 'inherit', " 0}\n\n.eRgoL_dVXF{margin:").concat(theme.legendMargin || 'inherit', " 0}\n\n.eRgoL_dxZa,[dir=ltr] .eRgoL_dxZa,[dir=rtl] .eRgoL_dxZa{text-align:center}");
16
+ },
17
+ 'legendRect': 'eRgoL_YBfL',
18
+ 'legendContainer': 'eRgoL_eDZF',
19
+ 'headingContainer': 'eRgoL_dVXF',
20
+ 'chartLabel': 'eRgoL_dxZa'
21
+ };
22
+ import t from '@instructure/quiz-i18n/es/format-message';
23
+ import { Text } from '@instructure/ui-text';
24
+ import { Heading } from '@instructure/ui-heading';
25
+ import Legend from "../../../../charts/Legend/index.js";
26
+ export var ScoreDistribution = (_dec = themeable(theme, styles), _dec(_class = (_temp = /*#__PURE__*/function (_Component) {
27
+ _inherits(ScoreDistribution, _Component);
28
+
29
+ var _super = _createSuper(ScoreDistribution);
30
+
31
+ function ScoreDistribution() {
32
+ var _this;
33
+
34
+ _classCallCheck(this, ScoreDistribution);
35
+
36
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
37
+ args[_key] = arguments[_key];
38
+ }
39
+
40
+ _this = _super.call.apply(_super, [this].concat(args));
41
+
42
+ _this.calculateLabelForColumn = function (index, length) {
43
+ var label = Math.floor(index * 100 / length);
44
+ return t('{label, number}%', {
45
+ label: label
46
+ });
47
+ };
48
+
49
+ return _this;
50
+ }
51
+
52
+ _createClass(ScoreDistribution, [{
53
+ key: "render",
54
+ value: function render() {
55
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
56
+ className: styles.headingContainer
57
+ }, /*#__PURE__*/React.createElement(Heading, {
58
+ level: "h2",
59
+ theme: {
60
+ h2FontWeight: 300
61
+ }
62
+ }, t('Score Distribution'))), /*#__PURE__*/React.createElement(QuintileDistribution, {
63
+ animateDelay: 1000,
64
+ animateDuration: 1000,
65
+ visualDistribution: this.props.decileDistribution,
66
+ calculateLabelForColumn: this.calculateLabelForColumn
67
+ }), /*#__PURE__*/React.createElement("div", {
68
+ className: styles.chartLabel
69
+ }, /*#__PURE__*/React.createElement(Text, {
70
+ size: "small"
71
+ }, t('Score'))), /*#__PURE__*/React.createElement("div", {
72
+ className: styles.legendContainer
73
+ }, /*#__PURE__*/React.createElement(Legend, {
74
+ series: [{
75
+ className: styles.legendRect,
76
+ label: t('Number of Students')
77
+ }]
78
+ })));
79
+ }
80
+ }]);
81
+
82
+ ScoreDistribution.displayName = "ScoreDistribution";
83
+ return ScoreDistribution;
84
+ }(Component), _temp)) || _class);
@@ -0,0 +1,12 @@
1
+ export default function generator(_ref) {
2
+ var colors = _ref.colors,
3
+ spacing = _ref.spacing,
4
+ typography = _ref.typography;
5
+ return {
6
+ legendRectFillColor: colors.electric,
7
+ legendPadding: spacing.small,
8
+ legendBorderColor: colors.ash,
9
+ legendFontSize: typography.fontSizeXSmall,
10
+ legendMargin: spacing.medium
11
+ };
12
+ }
@@ -4,7 +4,7 @@ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
4
4
  import React, { useEffect, useState } from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import { Heading } from '@instructure/ui-heading';
7
- import { Metric, MetricGroup } from '@instructure/ui-metric';
7
+ import NewItemAnalysis from "./NewItemAnalysis/index.js";
8
8
  import Spinner from "../../../../common/components/shared/spinner/Spinner.js";
9
9
  import NewQuizAnalysis from "./NewQuizAnalysis/index.js";
10
10
 
@@ -43,7 +43,10 @@ export var NewQuizAndItemAnalysis = function NewQuizAndItemAnalysis(_ref) {
43
43
 
44
44
  case 2:
45
45
  response = _context.sent;
46
- setQuizAnalysis(response.last_successful_analysis);
46
+
47
+ if (response) {
48
+ setQuizAnalysis(response.last_successful_analysis);
49
+ }
47
50
 
48
51
  case 4:
49
52
  case "end":
@@ -73,7 +76,10 @@ export var NewQuizAndItemAnalysis = function NewQuizAndItemAnalysis(_ref) {
73
76
 
74
77
  case 2:
75
78
  response = _context2.sent;
76
- setItemAnalyses(response.last_successful_analysis);
79
+
80
+ if (response) {
81
+ setItemAnalyses(response.last_successful_analysis);
82
+ }
77
83
 
78
84
  case 4:
79
85
  case "end":
@@ -100,21 +106,10 @@ export var NewQuizAndItemAnalysis = function NewQuizAndItemAnalysis(_ref) {
100
106
  return /*#__PURE__*/React.createElement("div", {
101
107
  className: "fs-mask"
102
108
  }, _ref4, _ref5, itemAnalyses === null || itemAnalyses === void 0 ? void 0 : itemAnalyses.map(function (itemAnalysis) {
103
- return /*#__PURE__*/React.createElement(MetricGroup, {
104
- key: itemAnalysis.metadata.item_id
105
- }, /*#__PURE__*/React.createElement(Metric, {
106
- key: "itemdifficulty",
107
- renderLabel: "ITEM DIFFICULTY",
108
- renderValue: itemAnalysis.scores.difficulty_index
109
- }), /*#__PURE__*/React.createElement(Metric, {
110
- key: "responded",
111
- renderLabel: "RESPONDED",
112
- renderValue: itemAnalysis.attempts.students_responded
113
- }), /*#__PURE__*/React.createElement(Metric, {
114
- key: "skipped",
115
- renderLabel: "SKIPPED/NO RESPONSE",
116
- renderValue: itemAnalysis.attempts.students_without_response
117
- }));
109
+ return /*#__PURE__*/React.createElement(NewItemAnalysis, {
110
+ key: itemAnalysis.metadata.item_id,
111
+ itemAnalysis: itemAnalysis
112
+ });
118
113
  }));
119
114
  /* eslint-enable react/jsx-no-literals */
120
115
  }; // TODO: distinguish between loading and empty item analyses (eg. when there is no items in a quiz)
@@ -5,7 +5,7 @@ var getSanitizedMetricValue = function getSanitizedMetricValue(value, suffix) {
5
5
  return t('N/A');
6
6
  }
7
7
 
8
- return value + (suffix ? suffix : '');
8
+ return suffix ? value + suffix : value;
9
9
  };
10
10
 
11
11
  export { getSanitizedMetricValue };
@@ -12,7 +12,7 @@ import { Link } from '@instructure/ui-link';
12
12
  import { themeable } from '@instructure/ui-themeable';
13
13
  import Card from "../../../../common/components/shared/Card/index.js";
14
14
  var styles = {
15
- componentId: 'eRzKS',
15
+ componentId: 'cNnNG',
16
16
  template: function template(theme) {
17
17
  return "\n\n.eRzKS_fbIL{border-radius:".concat(theme.cardBorderRadius || 'inherit', ";box-shadow:").concat(theme.cardBoxShadow || 'inherit', ";display:inline-flex;flex-direction:column;height:").concat(theme.cardHeight || 'inherit', ";margin:").concat(theme.cardMargin || 'inherit', ";padding:").concat(theme.cardPadding || 'inherit', ";width:").concat(theme.cardWidth || 'inherit', "}\n\n.eRzKS_ebWM{padding-top:").concat(theme.detailPadding || 'inherit', "}");
18
18
  },
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.getExistingBankAndEntries = getExistingBankAndEntries;
9
- exports.updateSharedBankPermission = exports.getSharedBanks = exports.shareBank = exports.deleteBank = exports.updateBank = exports.createBank = exports.getBank = exports.getAllBanks = exports.getBanks = void 0;
9
+ exports.updateSharedBankPermission = exports.getSharedBanks = exports.getSharedBank = exports.shareBank = exports.deleteBank = exports.updateBank = exports.createBank = exports.getBank = exports.getAllBanks = exports.getBanks = void 0;
10
10
 
11
11
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
12
12
 
@@ -34,6 +34,8 @@ var _helpers = require("../../common/api/helpers.js");
34
34
 
35
35
  var _quizCommon = require("@instructure/quiz-common");
36
36
 
37
+ var _lodash = require("lodash");
38
+
37
39
  var banksApiEndpoint = '/api/banks';
38
40
  var DEFAULT_PAGE_SIZE = 100;
39
41
 
@@ -211,7 +213,8 @@ var deleteBank = function deleteBank(bankId) {
211
213
 
212
214
  exports.deleteBank = deleteBank;
213
215
 
214
- var shareBank = function shareBank(_shareBank, getUserInfo) {
216
+ var shareBank = function shareBank(_shareBank) {
217
+ var getUserInfo = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : _lodash.noop;
215
218
  var url = "".concat(banksApiEndpoint, "/").concat(_shareBank.bankId, "/shared_banks");
216
219
  return function (dispatch, getState) {
217
220
  var shareBankData = JSON.stringify({
@@ -258,6 +261,41 @@ var shareBank = function shareBank(_shareBank, getUserInfo) {
258
261
 
259
262
  exports.shareBank = shareBank;
260
263
 
264
+ var getSharedBank = function getSharedBank(bankId, entityType, entityId) {
265
+ var url = "".concat(banksApiEndpoint, "/").concat(bankId, "/shared_banks");
266
+ var params = {
267
+ entity_type: entityType,
268
+ entity_id: entityId
269
+ };
270
+ return function (dispatch, getState) {
271
+ var fetcher = new _Fetcher.default({
272
+ onError: (0, _helpers.handleError)(dispatch, (0, _formatMessage.default)('Failed to fetch shared bank.'))
273
+ });
274
+ return fetcher.get(url, params).then(function (sharedBankInfo) {
275
+ // if the API returns no data, we manually add placeholder to the response
276
+ if (sharedBankInfo.length === 0) {
277
+ var placeholder = {
278
+ id: "notshared_".concat(bankId, "_").concat(entityId),
279
+ entityType: entityType,
280
+ entityId: entityId,
281
+ permission: _quizCommon.REMOVED_ACCESS,
282
+ bankId: bankId
283
+ };
284
+ sharedBankInfo.push(placeholder);
285
+ }
286
+
287
+ dispatch((0, _callHandlers.handleShareBanksResponse)(sharedBankInfo));
288
+ }).catch(function (err) {
289
+ if (err.response.status === 401) {
290
+ dispatch((0, _ui.clear)(_quizCommon.BANKS_BANK_PAGINATION));
291
+ throw err;
292
+ }
293
+ });
294
+ };
295
+ };
296
+
297
+ exports.getSharedBank = getSharedBank;
298
+
261
299
  var getSharedBanks = function getSharedBanks(bank, getUserInfo, getCourseInfo) {
262
300
  var url = "".concat(banksApiEndpoint, "/").concat(bank.id, "/shared_banks");
263
301
  var userSharedBanks = [];
@@ -7,6 +7,7 @@ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWild
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
10
+ exports.mapStateToProps = mapStateToProps;
10
11
  exports.default = exports.Bank = void 0;
11
12
 
12
13
  var immutable = _interopRequireWildcard(require("immutable"));
@@ -33,11 +34,16 @@ var _alerts = require("../../../common/actions/alerts.js");
33
34
 
34
35
  var _bankSearch = require("../../../common/actions/bankSearch.js");
35
36
 
37
+ var _sharedBanks = require("../../../common/actions/sharedBanks.js");
38
+
36
39
  var _featureCheck = require("../../../common/util/featureCheck.js");
37
40
 
38
41
  function mapStateToProps(state, props) {
39
42
  var bank = new _Bank.default(state.getIn(['banks', props.bankId]));
40
43
  var search = state.get('bankSearch', immutable.Map());
44
+ var courseSharedBank = state.get('sharedBanks', immutable.Map()).find(function (sharedBank) {
45
+ return sharedBank.get('bankId') === props.bankId && sharedBank.get('entityType') === props.scope.type && sharedBank.get('entityId') === props.scope.uuid;
46
+ });
41
47
  var activeQuiz = (0, _quizzes.getActiveQuiz)(state);
42
48
  var lockBlueprintContentEnabled = (0, _featureCheck.featureOn)('lock_blueprint_content');
43
49
  var isQuizContentLocked = activeQuiz && activeQuiz.originalQuizLockedByBlueprint && lockBlueprintContentEnabled;
@@ -45,10 +51,12 @@ function mapStateToProps(state, props) {
45
51
  bank: bank,
46
52
  isQuizContentLocked: isQuizContentLocked,
47
53
  search: search,
54
+ courseSharedBank: courseSharedBank,
48
55
  useBankSearch: (0, _featureCheck.featureOn)('item_bank_search'),
49
56
  position: state.getIn(['ui', _quizCommon.BUILD_TRAY_POSITION]),
50
57
  stimulusId: state.getIn(['ui', _quizCommon.BUILD_TRAY_STIMULUS_ID]),
51
- activeQuizId: state.getIn(['quizzes', 'activeQuizId'])
58
+ activeQuizId: state.getIn(['quizzes', 'activeQuizId']),
59
+ showShareBankFromTray: (0, _featureCheck.featureOn)('share_bank_from_tray')
52
60
  };
53
61
  }
54
62
 
@@ -56,9 +64,14 @@ var mapDispatchToProps = {
56
64
  addEntryToQuiz: _quizEntries.createQuizEntry,
57
65
  getBank: _banks.getBank,
58
66
  getBankEntries: _bankEntries.getBankEntries,
67
+ getSharedBank: _banks.getSharedBank,
59
68
  openModal: _modal.openModal,
69
+ removeSharedBank: _sharedBanks.removeSharedBank,
60
70
  resetSearch: _bankSearch.reset,
61
- screenreaderNotification: _alerts.screenreaderNotification
71
+ screenreaderNotification: _alerts.screenreaderNotification,
72
+ shareBank: _banks.shareBank,
73
+ updateSharedBankPermission: _banks.updateSharedBankPermission,
74
+ withConfirm: _modal.withConfirm
62
75
  };
63
76
  var Bank = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(_presenter.Bank);
64
77
  exports.Bank = Bank;