@pie-element/passage 5.3.4-next.0 → 6.0.0-beta.0

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.
@@ -1,122 +1,65 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
- exports["default"] = void 0;
9
-
10
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
-
12
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
-
14
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
15
-
16
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
-
18
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
-
20
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
-
7
+ exports.default = void 0;
22
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
23
-
24
9
  var _react = _interopRequireDefault(require("react"));
25
-
26
10
  var _propTypes = _interopRequireDefault(require("prop-types"));
27
-
28
- var _Tabs = _interopRequireDefault(require("@material-ui/core/Tabs"));
29
-
30
- var _Tab = _interopRequireDefault(require("@material-ui/core/Tab"));
31
-
32
- var _styles = require("@material-ui/core/styles");
33
-
11
+ var _Tabs = _interopRequireDefault(require("@mui/material/Tabs"));
12
+ var _Tab = _interopRequireDefault(require("@mui/material/Tab"));
13
+ var _styles = require("@mui/material/styles");
34
14
  var _renderUi = require("@pie-lib/render-ui");
35
-
36
- var _classnames = _interopRequireDefault(require("classnames"));
37
-
38
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
39
-
40
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
41
-
42
- var styles = function styles(theme) {
43
- return {
44
- passages: {
45
- flexGrow: 1,
46
- backgroundColor: _renderUi.color.background(),
47
- color: _renderUi.color.text(),
48
- '&:not(.MathJax) table': {
49
- borderCollapse: 'collapse'
50
- },
51
- '&:not(.MathJax) table td, &:not(.MathJax) table th': {
52
- padding: '.6em 1em',
53
- textAlign: 'left'
54
- }
55
- },
56
- passage: {
57
- backgroundColor: _renderUi.color.background(),
58
- color: _renderUi.color.text(),
59
- padding: theme.spacing.unit * 2
60
- },
61
- passageTitle: {
62
- fontSize: '1.75rem'
63
- },
64
- passageSubtitle: {
65
- fontSize: '1.5rem'
66
- },
67
- passageAuthor: {
68
- fontSize: '1.25rem'
69
- },
70
- passageText: {},
71
- stickyTabs: {
72
- background: _renderUi.color.background(),
73
- position: 'sticky',
74
- top: 0
75
- },
76
- tab: {
77
- background: theme.palette.common.white,
78
- // replace with color.background() once PD-2801 is DONE
79
- fontSize: 'inherit',
80
- color: theme.palette.common.black // remove when PD-2801 is DONE
81
-
82
- },
83
- tabButton: {
84
- background: theme.palette.common.white // replace with color.background() once PD-2801 is DONE
85
-
86
- },
87
- teacherInstructions: {
88
- marginBottom: theme.spacing.unit * 2
89
- }
90
- };
91
- };
92
-
93
- var StimulusTabs = /*#__PURE__*/function (_React$Component) {
94
- (0, _inherits2["default"])(StimulusTabs, _React$Component);
95
-
96
- var _super = _createSuper(StimulusTabs);
97
-
98
- function StimulusTabs() {
99
- var _this;
100
-
101
- (0, _classCallCheck2["default"])(this, StimulusTabs);
102
-
103
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
104
- args[_key] = arguments[_key];
105
- }
106
-
107
- _this = _super.call.apply(_super, [this].concat(args));
108
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
15
+ const PassagesContainer = (0, _styles.styled)('div')({
16
+ flexGrow: 1,
17
+ backgroundColor: _renderUi.color.background(),
18
+ color: _renderUi.color.text(),
19
+ '&:not(.MathJax) table': {
20
+ borderCollapse: 'collapse'
21
+ },
22
+ '&:not(.MathJax) table td, &:not(.MathJax) table th': {
23
+ padding: '.6em 1em',
24
+ textAlign: 'left'
25
+ }
26
+ });
27
+ const Passage = (0, _styles.styled)('div')(({
28
+ theme
29
+ }) => ({
30
+ backgroundColor: _renderUi.color.background(),
31
+ color: _renderUi.color.text(),
32
+ padding: theme.spacing(2)
33
+ }));
34
+ const PassageTitle = (0, _styles.styled)('div')({
35
+ fontSize: '1.75rem'
36
+ });
37
+ const PassageSubtitle = (0, _styles.styled)('div')({
38
+ fontSize: '1.5rem'
39
+ });
40
+ const PassageAuthor = (0, _styles.styled)('div')({
41
+ fontSize: '1.25rem'
42
+ });
43
+ const TabStyled = (0, _styles.styled)(_Tab.default)(({
44
+ theme
45
+ }) => ({
46
+ background: theme.palette.common.white,
47
+ // replace with color.background() once PD-2801 is DONE
48
+ fontSize: 'inherit',
49
+ color: theme.palette.common.black // remove when PD-2801 is DONE
50
+ }));
51
+ class StimulusTabs extends _react.default.Component {
52
+ constructor(...args) {
53
+ super(...args);
54
+ (0, _defineProperty2.default)(this, "state", {
109
55
  activeTab: 0
110
56
  });
111
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleChange", function (event, activeTab) {
112
- _this.setState(function () {
113
- return {
114
- activeTab: activeTab
115
- };
116
- });
117
-
118
- setTimeout(function () {
119
- var tabChangeEvent = new CustomEvent('pie-ui-passage-tabChanged', {
57
+ (0, _defineProperty2.default)(this, "handleChange", (event, activeTab) => {
58
+ this.setState(() => ({
59
+ activeTab
60
+ }));
61
+ setTimeout(() => {
62
+ const tabChangeEvent = new CustomEvent('pie-ui-passage-tabChanged', {
120
63
  detail: {
121
64
  tab: activeTab
122
65
  }
@@ -124,20 +67,20 @@ var StimulusTabs = /*#__PURE__*/function (_React$Component) {
124
67
  window.dispatchEvent(tabChangeEvent);
125
68
  });
126
69
  });
127
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleKeyDown", function (event, currentTabId) {
128
- var key = event.key;
129
- var tabs = _this.props.tabs;
130
- var newTabIndex = -1;
131
- var currentIndex = tabs.findIndex(function (tab) {
132
- return tab.id === currentTabId;
133
- });
134
-
70
+ (0, _defineProperty2.default)(this, "handleKeyDown", (event, currentTabId) => {
71
+ const {
72
+ key
73
+ } = event;
74
+ const {
75
+ tabs
76
+ } = this.props;
77
+ let newTabIndex = -1;
78
+ const currentIndex = tabs.findIndex(tab => tab.id === currentTabId);
135
79
  switch (key) {
136
80
  case 'ArrowRight':
137
81
  // Move to the next tab
138
82
  newTabIndex = (currentIndex + 1) % tabs.length;
139
83
  break;
140
-
141
84
  case 'ArrowLeft':
142
85
  // Move to the previous tab
143
86
  newTabIndex = (currentIndex - 1 + tabs.length) % tabs.length;
@@ -151,201 +94,158 @@ var StimulusTabs = /*#__PURE__*/function (_React$Component) {
151
94
  // // Move to the previous tab (for vertical alignment)
152
95
  // newTabIndex = (currentIndex - 1 + tabs.length) % tabs.length;
153
96
  // break;
154
-
155
97
  case 'Home':
156
98
  // Move to the first tab
157
99
  newTabIndex = 0;
158
100
  break;
159
-
160
101
  case 'End':
161
102
  // Move to the last tab
162
103
  newTabIndex = tabs.length - 1;
163
104
  break;
164
-
165
105
  case 'Enter':
166
106
  case ' ':
167
107
  // Activate the current tab
168
108
  newTabIndex = currentIndex;
169
109
  break;
170
-
171
110
  default:
172
111
  break;
173
112
  }
174
-
175
113
  if (newTabIndex !== -1) {
176
114
  event.preventDefault();
177
-
178
- _this.handleChange(event, tabs[newTabIndex].id);
179
-
180
- document.getElementById("button-".concat(tabs[newTabIndex].id)).focus();
115
+ this.handleChange(event, tabs[newTabIndex].id);
116
+ document.getElementById(`button-${tabs[newTabIndex].id}`).focus();
181
117
  }
182
118
  });
183
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "parsedText", function () {
184
- var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
119
+ (0, _defineProperty2.default)(this, "parsedText", (text = '') => {
185
120
  // fix imported audio content for Safari PD-1391
186
- var div = document.createElement('div');
121
+ const div = document.createElement('div');
187
122
  div.innerHTML = text.replace(/(<br\/>\n)/g, '<br/>');
188
- var audio = div.querySelector('audio');
189
-
123
+ const audio = div.querySelector('audio');
190
124
  if (audio) {
191
- var source = document.createElement('source');
125
+ const source = document.createElement('source');
192
126
  source.setAttribute('type', 'audio/mp3');
193
127
  source.setAttribute('src', audio.getAttribute('src'));
194
128
  audio.removeAttribute('src');
195
129
  audio.appendChild(source);
196
130
  }
197
-
198
131
  return div.innerHTML;
199
132
  });
200
- return _this;
201
133
  }
202
-
203
- (0, _createClass2["default"])(StimulusTabs, [{
204
- key: "renderInstructions",
205
- value: function renderInstructions(teacherInstructions) {
206
- var disabledTabs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
207
-
208
- if (!teacherInstructions) {
209
- return;
134
+ renderInstructions(teacherInstructions, disabledTabs = false) {
135
+ if (!teacherInstructions) {
136
+ return;
137
+ }
138
+ const teacherInstructionsDiv = /*#__PURE__*/_react.default.createElement(_renderUi.PreviewPrompt, {
139
+ tagName: "div",
140
+ className: "prompt",
141
+ defaultClassName: "teacher-instructions",
142
+ prompt: teacherInstructions
143
+ });
144
+ if (disabledTabs) {
145
+ return teacherInstructionsDiv;
146
+ }
147
+ return /*#__PURE__*/_react.default.createElement(_renderUi.Collapsible, {
148
+ labels: {
149
+ hidden: 'Show Teacher Instructions',
150
+ visible: 'Hide Teacher Instructions'
210
151
  }
211
-
212
- var teacherInstructionsDiv = /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
213
- tagName: "div",
214
- className: "prompt",
215
- defaultClassName: "teacher-instructions",
216
- prompt: teacherInstructions
217
- });
218
-
219
- if (disabledTabs) {
220
- return teacherInstructionsDiv;
152
+ }, teacherInstructionsDiv);
153
+ }
154
+ renderTab(tab, disabledTabs) {
155
+ return /*#__PURE__*/_react.default.createElement(Passage, {
156
+ key: tab.id,
157
+ id: `tabpanel-${tab.id}`,
158
+ role: "tabpanel",
159
+ "aria-labelledby": `button-${tab.id}`
160
+ }, this.renderInstructions(tab.teacherInstructions, disabledTabs), (tab.title || tab.subtitle) && /*#__PURE__*/_react.default.createElement("h2", null, tab.title && /*#__PURE__*/_react.default.createElement(_renderUi.Purpose, {
161
+ purpose: "passage-title"
162
+ }, /*#__PURE__*/_react.default.createElement(PassageTitle, {
163
+ dangerouslySetInnerHTML: {
164
+ __html: this.parsedText(tab.title)
221
165
  }
222
-
223
- return /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
224
- labels: {
225
- hidden: 'Show Teacher Instructions',
226
- visible: 'Hide Teacher Instructions'
227
- }
228
- }, teacherInstructionsDiv);
166
+ })), tab.subtitle && /*#__PURE__*/_react.default.createElement(_renderUi.Purpose, {
167
+ purpose: "passage-subtitle"
168
+ }, /*#__PURE__*/_react.default.createElement(PassageSubtitle, {
169
+ dangerouslySetInnerHTML: {
170
+ __html: this.parsedText(tab.subtitle)
171
+ }
172
+ }))), tab.author && /*#__PURE__*/_react.default.createElement(_renderUi.Purpose, {
173
+ purpose: "passage-author"
174
+ }, /*#__PURE__*/_react.default.createElement(PassageAuthor, {
175
+ className: "author",
176
+ dangerouslySetInnerHTML: {
177
+ __html: this.parsedText(tab.author)
178
+ }
179
+ })), tab.text && /*#__PURE__*/_react.default.createElement(_renderUi.Purpose, {
180
+ purpose: "passage-text"
181
+ }, /*#__PURE__*/_react.default.createElement("div", {
182
+ key: tab.id,
183
+ className: "text",
184
+ dangerouslySetInnerHTML: {
185
+ __html: this.parsedText(tab.text)
186
+ }
187
+ })));
188
+ }
189
+ render() {
190
+ const {
191
+ model,
192
+ tabs,
193
+ disabledTabs
194
+ } = this.props;
195
+ const {
196
+ activeTab
197
+ } = this.state;
198
+ if (!tabs?.length) {
199
+ return;
229
200
  }
230
- }, {
231
- key: "renderTab",
232
- value: function renderTab(tab, disabledTabs) {
233
- var classes = this.props.classes;
234
- return /*#__PURE__*/_react["default"].createElement("div", {
235
- className: (0, _classnames["default"])(classes.passage, 'passage'),
236
- key: tab.id,
237
- id: "tabpanel-".concat(tab.id),
238
- role: "tabpanel",
239
- "aria-labelledby": "button-".concat(tab.id)
240
- }, this.renderInstructions(tab.teacherInstructions, disabledTabs), (tab.title || tab.subtitle) && /*#__PURE__*/_react["default"].createElement("h2", null, tab.title && /*#__PURE__*/_react["default"].createElement(_renderUi.Purpose, {
241
- purpose: "passage-title"
242
- }, /*#__PURE__*/_react["default"].createElement("div", {
243
- className: (0, _classnames["default"])(classes.passageTitle, 'title'),
244
- dangerouslySetInnerHTML: {
245
- __html: this.parsedText(tab.title)
246
- }
247
- })), tab.subtitle && /*#__PURE__*/_react["default"].createElement(_renderUi.Purpose, {
248
- purpose: "passage-subtitle"
249
- }, /*#__PURE__*/_react["default"].createElement("div", {
250
- className: (0, _classnames["default"])(classes.passageSubtitle, 'subtitle'),
251
- dangerouslySetInnerHTML: {
252
- __html: this.parsedText(tab.subtitle)
253
- }
254
- }))), tab.author && /*#__PURE__*/_react["default"].createElement(_renderUi.Purpose, {
255
- purpose: "passage-author"
256
- }, /*#__PURE__*/_react["default"].createElement("div", {
257
- className: (0, _classnames["default"])(classes.passageAuthor, 'author'),
258
- dangerouslySetInnerHTML: {
259
- __html: this.parsedText(tab.author)
260
- }
261
- })), tab.text && /*#__PURE__*/_react["default"].createElement(_renderUi.Purpose, {
262
- purpose: "passage-text"
263
- }, /*#__PURE__*/_react["default"].createElement("div", {
264
- key: tab.id,
265
- className: (0, _classnames["default"])(classes.passageText, 'text'),
201
+ const {
202
+ extraCSSRules
203
+ } = model || {};
204
+ const selectedTab = (tabs || []).find(tab => tab.id === activeTab);
205
+ return /*#__PURE__*/_react.default.createElement(_renderUi.UiLayout, {
206
+ extraCSSRules: extraCSSRules
207
+ }, /*#__PURE__*/_react.default.createElement(PassagesContainer, {
208
+ className: "passages"
209
+ }, disabledTabs || tabs.length === 1 ? tabs.map(tab => this.renderTab(tab, disabledTabs)) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Tabs.default, {
210
+ sx: {
211
+ position: 'sticky',
212
+ top: 0,
213
+ background: _renderUi.color.background(),
214
+ color: _renderUi.color.text()
215
+ },
216
+ value: activeTab,
217
+ onChange: this.handleChange
218
+ }, tabs.map(tab => /*#__PURE__*/_react.default.createElement(TabStyled, {
219
+ key: tab.id,
220
+ id: `button-${tab.id}`,
221
+ label: /*#__PURE__*/_react.default.createElement(_renderUi.Purpose, {
222
+ purpose: "passage-label"
223
+ }, /*#__PURE__*/_react.default.createElement("span", {
266
224
  dangerouslySetInnerHTML: {
267
- __html: this.parsedText(tab.text)
225
+ __html: this.parsedText(tab.label)
268
226
  }
269
- })));
270
- }
271
- }, {
272
- key: "render",
273
- value: function render() {
274
- var _this2 = this;
275
-
276
- var _this$props = this.props,
277
- classes = _this$props.classes,
278
- model = _this$props.model,
279
- tabs = _this$props.tabs,
280
- disabledTabs = _this$props.disabledTabs;
281
- var activeTab = this.state.activeTab;
282
-
283
- if (!(tabs !== null && tabs !== void 0 && tabs.length)) {
284
- return;
285
- }
286
-
287
- var _ref = model || {},
288
- extraCSSRules = _ref.extraCSSRules;
289
-
290
- var selectedTab = (tabs || []).find(function (tab) {
291
- return tab.id === activeTab;
292
- });
293
- return /*#__PURE__*/_react["default"].createElement(_renderUi.UiLayout, {
294
- extraCSSRules: extraCSSRules,
295
- className: (0, _classnames["default"])(classes.passages, 'passages')
296
- }, disabledTabs || tabs.length === 1 ? tabs.map(function (tab) {
297
- return _this2.renderTab(tab, disabledTabs);
298
- }) : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_Tabs["default"], {
299
- classes: {
300
- root: classes.stickyTabs,
301
- flexContainer: classes.tabButton
302
- },
303
- value: activeTab,
304
- onChange: this.handleChange
305
- }, tabs.map(function (tab) {
306
- return /*#__PURE__*/_react["default"].createElement(_Tab["default"], {
307
- className: classes.tab,
308
- key: tab.id,
309
- id: "button-".concat(tab.id),
310
- label: /*#__PURE__*/_react["default"].createElement(_renderUi.Purpose, {
311
- purpose: "passage-label"
312
- }, /*#__PURE__*/_react["default"].createElement("span", {
313
- dangerouslySetInnerHTML: {
314
- __html: _this2.parsedText(tab.label)
315
- }
316
- })),
317
- value: tab.id,
318
- tabIndex: activeTab === tab.id ? 0 : -1,
319
- "aria-controls": "tabpanel-".concat(tab.id),
320
- "aria-selected": activeTab === tab.id,
321
- onFocus: function onFocus() {
322
- return _this2.handleChange(null, tab.id);
323
- },
324
- onKeyDown: function onKeyDown(event) {
325
- return _this2.handleKeyDown(event, tab.id);
326
- }
327
- });
328
- })), selectedTab ? this.renderTab(selectedTab, disabledTabs) : null));
329
- }
330
- }]);
331
- return StimulusTabs;
332
- }(_react["default"].Component);
333
-
227
+ })),
228
+ value: tab.id,
229
+ tabIndex: activeTab === tab.id ? 0 : -1,
230
+ "aria-controls": `tabpanel-${tab.id}`,
231
+ "aria-selected": activeTab === tab.id,
232
+ onFocus: () => this.handleChange(null, tab.id),
233
+ onKeyDown: event => this.handleKeyDown(event, tab.id)
234
+ }))), selectedTab ? this.renderTab(selectedTab, disabledTabs) : null)));
235
+ }
236
+ }
334
237
  StimulusTabs.propTypes = {
335
- classes: _propTypes["default"].object.isRequired,
336
- tabs: _propTypes["default"].arrayOf(_propTypes["default"].shape({
337
- id: _propTypes["default"].number.isRequired,
338
- label: _propTypes["default"].string.isRequired,
339
- title: _propTypes["default"].string.isRequired,
340
- subtitle: _propTypes["default"].string,
341
- author: _propTypes["default"].string,
342
- text: _propTypes["default"].string.isRequired,
343
- teacherInstructions: _propTypes["default"].string
238
+ tabs: _propTypes.default.arrayOf(_propTypes.default.shape({
239
+ id: _propTypes.default.number.isRequired,
240
+ label: _propTypes.default.string.isRequired,
241
+ title: _propTypes.default.string.isRequired,
242
+ subtitle: _propTypes.default.string,
243
+ author: _propTypes.default.string,
244
+ text: _propTypes.default.string.isRequired,
245
+ teacherInstructions: _propTypes.default.string
344
246
  }).isRequired).isRequired,
345
- disabledTabs: _propTypes["default"].bool
247
+ disabledTabs: _propTypes.default.bool,
248
+ model: _propTypes.default.object
346
249
  };
347
-
348
- var _default = (0, _styles.withStyles)(styles)(StimulusTabs);
349
-
350
- exports["default"] = _default;
250
+ var _default = exports.default = StimulusTabs;
351
251
  //# sourceMappingURL=stimulus-tabs.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/stimulus-tabs.jsx"],"names":["styles","theme","passages","flexGrow","backgroundColor","color","background","text","borderCollapse","padding","textAlign","passage","spacing","unit","passageTitle","fontSize","passageSubtitle","passageAuthor","passageText","stickyTabs","position","top","tab","palette","common","white","black","tabButton","teacherInstructions","marginBottom","StimulusTabs","activeTab","event","setState","setTimeout","tabChangeEvent","CustomEvent","detail","window","dispatchEvent","currentTabId","key","tabs","props","newTabIndex","currentIndex","findIndex","id","length","preventDefault","handleChange","document","getElementById","focus","div","createElement","innerHTML","replace","audio","querySelector","source","setAttribute","getAttribute","removeAttribute","appendChild","disabledTabs","teacherInstructionsDiv","hidden","visible","classes","renderInstructions","title","subtitle","__html","parsedText","author","model","state","extraCSSRules","selectedTab","find","map","renderTab","root","flexContainer","label","handleKeyDown","React","Component","propTypes","PropTypes","object","isRequired","arrayOf","shape","number","string","bool"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Tabs from '@material-ui/core/Tabs';\nimport Tab from '@material-ui/core/Tab';\nimport { withStyles } from '@material-ui/core/styles';\nimport { Collapsible, color, PreviewPrompt, Purpose, UiLayout } from '@pie-lib/render-ui';\nimport classNames from 'classnames';\n\nconst styles = (theme) => ({\n passages: {\n flexGrow: 1,\n backgroundColor: color.background(),\n color: color.text(),\n '&:not(.MathJax) table': {\n borderCollapse: 'collapse',\n },\n '&:not(.MathJax) table td, &:not(.MathJax) table th': {\n padding: '.6em 1em',\n textAlign: 'left',\n },\n },\n passage: {\n backgroundColor: color.background(),\n color: color.text(),\n padding: theme.spacing.unit * 2,\n },\n passageTitle: {\n fontSize: '1.75rem',\n },\n passageSubtitle: {\n fontSize: '1.5rem',\n },\n passageAuthor: {\n fontSize: '1.25rem',\n },\n passageText: {},\n stickyTabs: {\n background: color.background(),\n position: 'sticky',\n top: 0,\n },\n tab: {\n background: theme.palette.common.white, // replace with color.background() once PD-2801 is DONE\n fontSize: 'inherit',\n color: theme.palette.common.black, // remove when PD-2801 is DONE\n },\n tabButton: {\n background: theme.palette.common.white, // replace with color.background() once PD-2801 is DONE\n },\n teacherInstructions: {\n marginBottom: theme.spacing.unit * 2,\n },\n});\n\nclass StimulusTabs extends React.Component {\n state = {\n activeTab: 0,\n };\n\n handleChange = (event, activeTab) => {\n this.setState(() => ({ activeTab }));\n\n setTimeout(() => {\n const tabChangeEvent = new CustomEvent('pie-ui-passage-tabChanged', {\n detail: { tab: activeTab },\n });\n\n window.dispatchEvent(tabChangeEvent);\n });\n };\n\n handleKeyDown = (event, currentTabId) => {\n const { key } = event;\n const { tabs } = this.props;\n\n let newTabIndex = -1;\n const currentIndex = tabs.findIndex((tab) => tab.id === currentTabId);\n\n switch (key) {\n case 'ArrowRight':\n // Move to the next tab\n newTabIndex = (currentIndex + 1) % tabs.length;\n break;\n case 'ArrowLeft':\n // Move to the previous tab\n newTabIndex = (currentIndex - 1 + tabs.length) % tabs.length;\n break;\n // Commented out ArrowDown and ArrowUp for future vertical tab navigation\n // case 'ArrowDown':\n // // Move to the next tab (for vertical alignment)\n // newTabIndex = (currentIndex + 1) % tabs.length;\n // break;\n // case 'ArrowUp':\n // // Move to the previous tab (for vertical alignment)\n // newTabIndex = (currentIndex - 1 + tabs.length) % tabs.length;\n // break;\n case 'Home':\n // Move to the first tab\n newTabIndex = 0;\n break;\n case 'End':\n // Move to the last tab\n newTabIndex = tabs.length - 1;\n break;\n case 'Enter':\n case ' ':\n // Activate the current tab\n newTabIndex = currentIndex;\n break;\n default:\n break;\n }\n\n if (newTabIndex !== -1) {\n event.preventDefault();\n this.handleChange(event, tabs[newTabIndex].id);\n document.getElementById(`button-${tabs[newTabIndex].id}`).focus();\n }\n };\n\n parsedText = (text = '') => {\n // fix imported audio content for Safari PD-1391\n const div = document.createElement('div');\n div.innerHTML = text.replace(/(<br\\/>\\n)/g, '<br/>');\n\n const audio = div.querySelector('audio');\n\n if (audio) {\n const source = document.createElement('source');\n\n source.setAttribute('type', 'audio/mp3');\n source.setAttribute('src', audio.getAttribute('src'));\n\n audio.removeAttribute('src');\n audio.appendChild(source);\n }\n\n return div.innerHTML;\n };\n\n renderInstructions(teacherInstructions, disabledTabs = false) {\n if (!teacherInstructions) {\n return;\n }\n\n const teacherInstructionsDiv = (\n <PreviewPrompt\n tagName=\"div\"\n className=\"prompt\"\n defaultClassName=\"teacher-instructions\"\n prompt={teacherInstructions}\n />\n );\n\n if (disabledTabs) {\n return teacherInstructionsDiv;\n }\n\n return (\n <Collapsible\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions',\n }}\n >\n {teacherInstructionsDiv}\n </Collapsible>\n );\n }\n\n renderTab(tab, disabledTabs) {\n const { classes } = this.props;\n\n return (\n <div\n className={classNames(classes.passage, 'passage')}\n key={tab.id}\n id={`tabpanel-${tab.id}`}\n role=\"tabpanel\"\n aria-labelledby={`button-${tab.id}`}\n >\n {this.renderInstructions(tab.teacherInstructions, disabledTabs)}\n\n {(tab.title || tab.subtitle) && (\n <h2>\n {tab.title && (\n <Purpose purpose=\"passage-title\">\n <div\n className={classNames(classes.passageTitle, 'title')}\n dangerouslySetInnerHTML={{ __html: this.parsedText(tab.title) }}\n />\n </Purpose>\n )}\n {tab.subtitle && (\n <Purpose purpose=\"passage-subtitle\">\n <div\n className={classNames(classes.passageSubtitle, 'subtitle')}\n dangerouslySetInnerHTML={{ __html: this.parsedText(tab.subtitle) }}\n />\n </Purpose>\n )}\n </h2>\n )}\n\n {tab.author && (\n <Purpose purpose=\"passage-author\">\n <div\n className={classNames(classes.passageAuthor, 'author')}\n dangerouslySetInnerHTML={{ __html: this.parsedText(tab.author) }}\n />\n </Purpose>\n )}\n\n {tab.text && (\n <Purpose purpose=\"passage-text\">\n <div\n key={tab.id}\n className={classNames(classes.passageText, 'text')}\n dangerouslySetInnerHTML={{ __html: this.parsedText(tab.text) }}\n />\n </Purpose>\n )}\n </div>\n );\n }\n\n render() {\n const { classes, model, tabs, disabledTabs } = this.props;\n const { activeTab } = this.state;\n\n if (!tabs?.length) {\n return;\n }\n\n const { extraCSSRules } = model || {};\n const selectedTab = (tabs || []).find((tab) => tab.id === activeTab);\n\n return (\n <UiLayout extraCSSRules={extraCSSRules} className={classNames(classes.passages, 'passages')}>\n {disabledTabs || tabs.length === 1 ? (\n tabs.map((tab) => this.renderTab(tab, disabledTabs))\n ) : (\n <>\n <Tabs\n classes={{\n root: classes.stickyTabs,\n flexContainer: classes.tabButton,\n }}\n value={activeTab}\n onChange={this.handleChange}\n >\n {tabs.map((tab) => (\n <Tab\n className={classes.tab}\n key={tab.id}\n id={`button-${tab.id}`}\n label={\n <Purpose purpose=\"passage-label\">\n <span dangerouslySetInnerHTML={{ __html: this.parsedText(tab.label) }} />\n </Purpose>\n }\n value={tab.id}\n tabIndex={activeTab === tab.id ? 0 : -1}\n aria-controls={`tabpanel-${tab.id}`}\n aria-selected={activeTab === tab.id}\n onFocus={() => this.handleChange(null, tab.id)}\n onKeyDown={(event) => this.handleKeyDown(event, tab.id)}\n />\n ))}\n </Tabs>\n {selectedTab ? this.renderTab(selectedTab, disabledTabs) : null}\n </>\n )}\n </UiLayout>\n );\n }\n}\n\nStimulusTabs.propTypes = {\n classes: PropTypes.object.isRequired,\n tabs: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.number.isRequired,\n label: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n subtitle: PropTypes.string,\n author: PropTypes.string,\n text: PropTypes.string.isRequired,\n teacherInstructions: PropTypes.string,\n }).isRequired,\n ).isRequired,\n disabledTabs: PropTypes.bool,\n};\n\nexport default withStyles(styles)(StimulusTabs);\n"],"file":"stimulus-tabs.js"}
1
+ {"version":3,"file":"stimulus-tabs.js","names":["_react","_interopRequireDefault","require","_propTypes","_Tabs","_Tab","_styles","_renderUi","PassagesContainer","styled","flexGrow","backgroundColor","color","background","text","borderCollapse","padding","textAlign","Passage","theme","spacing","PassageTitle","fontSize","PassageSubtitle","PassageAuthor","TabStyled","Tab","palette","common","white","black","StimulusTabs","React","Component","constructor","args","_defineProperty2","default","activeTab","event","setState","setTimeout","tabChangeEvent","CustomEvent","detail","tab","window","dispatchEvent","currentTabId","key","tabs","props","newTabIndex","currentIndex","findIndex","id","length","preventDefault","handleChange","document","getElementById","focus","div","createElement","innerHTML","replace","audio","querySelector","source","setAttribute","getAttribute","removeAttribute","appendChild","renderInstructions","teacherInstructions","disabledTabs","teacherInstructionsDiv","PreviewPrompt","tagName","className","defaultClassName","prompt","Collapsible","labels","hidden","visible","renderTab","role","title","subtitle","Purpose","purpose","dangerouslySetInnerHTML","__html","parsedText","author","render","model","state","extraCSSRules","selectedTab","find","UiLayout","map","Fragment","sx","position","top","value","onChange","label","tabIndex","onFocus","onKeyDown","handleKeyDown","propTypes","PropTypes","arrayOf","shape","number","isRequired","string","bool","object","_default","exports"],"sources":["../src/stimulus-tabs.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Tabs from '@mui/material/Tabs';\nimport Tab from '@mui/material/Tab';\nimport { styled } from '@mui/material/styles';\nimport { Collapsible, color, PreviewPrompt, Purpose, UiLayout } from '@pie-lib/render-ui';\n\nconst PassagesContainer = styled('div')({\n flexGrow: 1,\n backgroundColor: color.background(),\n color: color.text(),\n '&:not(.MathJax) table': {\n borderCollapse: 'collapse',\n },\n '&:not(.MathJax) table td, &:not(.MathJax) table th': {\n padding: '.6em 1em',\n textAlign: 'left',\n },\n});\n\nconst Passage = styled('div')(({ theme }) => ({\n backgroundColor: color.background(),\n color: color.text(),\n padding: theme.spacing(2),\n}));\n\nconst PassageTitle = styled('div')({\n fontSize: '1.75rem',\n});\n\nconst PassageSubtitle = styled('div')({\n fontSize: '1.5rem',\n});\n\nconst PassageAuthor = styled('div')({\n fontSize: '1.25rem',\n});\n\nconst TabStyled = styled(Tab)(({ theme }) => ({\n background: theme.palette.common.white, // replace with color.background() once PD-2801 is DONE\n fontSize: 'inherit',\n color: theme.palette.common.black, // remove when PD-2801 is DONE\n}));\n\nclass StimulusTabs extends React.Component {\n state = {\n activeTab: 0,\n };\n\n handleChange = (event, activeTab) => {\n this.setState(() => ({ activeTab }));\n\n setTimeout(() => {\n const tabChangeEvent = new CustomEvent('pie-ui-passage-tabChanged', {\n detail: { tab: activeTab },\n });\n\n window.dispatchEvent(tabChangeEvent);\n });\n };\n\n handleKeyDown = (event, currentTabId) => {\n const { key } = event;\n const { tabs } = this.props;\n\n let newTabIndex = -1;\n const currentIndex = tabs.findIndex((tab) => tab.id === currentTabId);\n\n switch (key) {\n case 'ArrowRight':\n // Move to the next tab\n newTabIndex = (currentIndex + 1) % tabs.length;\n break;\n case 'ArrowLeft':\n // Move to the previous tab\n newTabIndex = (currentIndex - 1 + tabs.length) % tabs.length;\n break;\n // Commented out ArrowDown and ArrowUp for future vertical tab navigation\n // case 'ArrowDown':\n // // Move to the next tab (for vertical alignment)\n // newTabIndex = (currentIndex + 1) % tabs.length;\n // break;\n // case 'ArrowUp':\n // // Move to the previous tab (for vertical alignment)\n // newTabIndex = (currentIndex - 1 + tabs.length) % tabs.length;\n // break;\n case 'Home':\n // Move to the first tab\n newTabIndex = 0;\n break;\n case 'End':\n // Move to the last tab\n newTabIndex = tabs.length - 1;\n break;\n case 'Enter':\n case ' ':\n // Activate the current tab\n newTabIndex = currentIndex;\n break;\n default:\n break;\n }\n\n if (newTabIndex !== -1) {\n event.preventDefault();\n this.handleChange(event, tabs[newTabIndex].id);\n document.getElementById(`button-${tabs[newTabIndex].id}`).focus();\n }\n };\n\n parsedText = (text = '') => {\n // fix imported audio content for Safari PD-1391\n const div = document.createElement('div');\n div.innerHTML = text.replace(/(<br\\/>\\n)/g, '<br/>');\n\n const audio = div.querySelector('audio');\n\n if (audio) {\n const source = document.createElement('source');\n\n source.setAttribute('type', 'audio/mp3');\n source.setAttribute('src', audio.getAttribute('src'));\n\n audio.removeAttribute('src');\n audio.appendChild(source);\n }\n\n return div.innerHTML;\n };\n\n renderInstructions(teacherInstructions, disabledTabs = false) {\n if (!teacherInstructions) {\n return;\n }\n\n const teacherInstructionsDiv = (\n <PreviewPrompt\n tagName=\"div\"\n className=\"prompt\"\n defaultClassName=\"teacher-instructions\"\n prompt={teacherInstructions}\n />\n );\n\n if (disabledTabs) {\n return teacherInstructionsDiv;\n }\n\n return (\n <Collapsible\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions',\n }}\n >\n {teacherInstructionsDiv}\n </Collapsible>\n );\n }\n\n renderTab(tab, disabledTabs) {\n return (\n <Passage key={tab.id} id={`tabpanel-${tab.id}`} role=\"tabpanel\" aria-labelledby={`button-${tab.id}`}>\n {this.renderInstructions(tab.teacherInstructions, disabledTabs)}\n\n {(tab.title || tab.subtitle) && (\n <h2>\n {tab.title && (\n <Purpose purpose=\"passage-title\">\n <PassageTitle dangerouslySetInnerHTML={{ __html: this.parsedText(tab.title) }}/>\n </Purpose>\n )}\n {tab.subtitle && (\n <Purpose purpose=\"passage-subtitle\">\n <PassageSubtitle dangerouslySetInnerHTML={{ __html: this.parsedText(tab.subtitle) }}\n />\n </Purpose>\n )}\n </h2>\n )}\n\n {tab.author && (\n <Purpose purpose=\"passage-author\">\n <PassageAuthor className=\"author\" dangerouslySetInnerHTML={{ __html: this.parsedText(tab.author) }}/>\n </Purpose>\n )}\n\n {tab.text && (\n <Purpose purpose=\"passage-text\">\n <div\n key={tab.id}\n className=\"text\"\n dangerouslySetInnerHTML={{ __html: this.parsedText(tab.text) }}\n />\n </Purpose>\n )}\n </Passage>\n );\n }\n\n render() {\n const { model, tabs, disabledTabs } = this.props;\n const { activeTab } = this.state;\n\n if (!tabs?.length) {\n return;\n }\n\n const { extraCSSRules } = model || {};\n const selectedTab = (tabs || []).find((tab) => tab.id === activeTab);\n\n return (\n <UiLayout extraCSSRules={extraCSSRules}>\n <PassagesContainer className=\"passages\">\n {disabledTabs || tabs.length === 1 ? (\n tabs.map((tab) => this.renderTab(tab, disabledTabs))\n ) : (\n <>\n <Tabs\n sx={{ position: 'sticky', top: 0, background: color.background(), color: color.text() }}\n value={activeTab}\n onChange={this.handleChange}\n >\n {tabs.map((tab) => (\n <TabStyled\n key={tab.id}\n id={`button-${tab.id}`}\n label={\n <Purpose purpose=\"passage-label\">\n <span dangerouslySetInnerHTML={{ __html: this.parsedText(tab.label) }}/>\n </Purpose>\n }\n value={tab.id}\n tabIndex={activeTab === tab.id ? 0 : -1}\n aria-controls={`tabpanel-${tab.id}`}\n aria-selected={activeTab === tab.id}\n onFocus={() => this.handleChange(null, tab.id)}\n onKeyDown={(event) => this.handleKeyDown(event, tab.id)}\n />\n ))}\n </Tabs>\n {selectedTab ? this.renderTab(selectedTab, disabledTabs) : null}\n </>\n )}\n </PassagesContainer>\n </UiLayout>\n );\n }\n}\n\nStimulusTabs.propTypes = {\n tabs: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.number.isRequired,\n label: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n subtitle: PropTypes.string,\n author: PropTypes.string,\n text: PropTypes.string.isRequired,\n teacherInstructions: PropTypes.string,\n }).isRequired,\n ).isRequired,\n disabledTabs: PropTypes.bool,\n model: PropTypes.object,\n};\n\nexport default StimulusTabs;\n"],"mappings":"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","ignoreList":[]}