@pie-element/select-text 9.6.2-beta.1 → 9.6.2-beta.2

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.
@@ -224,109 +224,52 @@ exports.model = (id, element) => {
224
224
  '<p>Select the sentence from&#160;&#34;The Gymnast&#34; that <span class="relative-emphasis">best</span> represents the theme.</p>',
225
225
  rationale:
226
226
  '<p>The final sentence of the passage best exemplifies the theme of the short story because Natasha&#39;s practice and determination finally pays off.</p>',
227
- // tokens: [
228
- // {
229
- // text: 'She thought about what she had to do, struggling to rein in her wild, fearful thoughts.',
230
- // end: 90,
231
- // start: 3,
232
- // correct: false,
233
- // },
234
- // {
235
- // start: 449,
236
- // end: 585,
237
- // text: 'Just for a hair of a moment, Natasha wondered if she really wanted a perfect 10, so weary was she of trying for but never achieving one.',
238
- // correct: false,
239
- // },
240
- // {
241
- // end: 627,
242
- // correct: false,
243
- // text: 'At last Natasha\'s moment arrived.',
244
- // start: 594,
245
- // },
246
- // {
247
- // end: 743,
248
- // text: 'The faces of past giants of gymnastics swam before her mind\'s eye, now razor&#8211;sharp with fierce determination.',
249
- // correct: false,
250
- // start: 628,
251
- // },
252
- // {
253
- // text: 'Suddenly, the din of the gymnasium was silent to her.',
254
- // end: 997,
255
- // correct: false,
256
- // start: 944,
257
- // },
258
- // {
259
- // end: 1087,
260
- // start: 998,
261
- // correct: false,
262
- // text: 'Forcing all sound out of her mind, she focused on the gleaming balance beam ahead of her.',
263
- // },
264
- // {
265
- // correct: true,
266
- // start: 1088,
267
- // end: 1225,
268
- // text: 'Taking a deep breath, Natasha made her graceful, yet powerful approach, mounted the beam flawlessly, and...executed her first perfect 10.',
269
- // },
270
- // ],
271
- // "element": "select-text",
272
- // text: '<p>She thought about what she had to do, struggling to rein in her wild, fearful thoughts. Coach Cummings always said that an undisciplined mind never scored a perfect 10. Natasha wanted to please her Coach, yet sometimes his approval wasn\'t as exciting as his anger. The gymnasts were unanimous about one thing: Coach Cummings\'s fits of disapproving rage were much more humorous to witness than his infrequent, backslapping moments of high praise. Just for a hair of a moment, Natasha wondered if she really wanted a perfect 10, so weary was she of trying for but never achieving one.</p>\n\n<p>At last Natasha\'s moment arrived. The faces of past giants of gymnastics swam before her mind\'s eye, now razor&#8211;sharp with fierce determination. "I am talented. I am not afraid. I will make a perfect 10," she spoke aloud to herself, as she approached the mat, dusted her hands with chalk to prevent slippage, and returned to her starting point. Suddenly, the din of the gymnasium was silent to her. Forcing all sound out of her mind, she focused on the gleaming balance beam ahead of her. Taking a deep breath, Natasha made her graceful, yet powerful approach, mounted the beam flawlessly, and...executed her first perfect 10.</p>\n',
273
227
  tokens: [
274
- // {
275
- // id: '0-30-1751440197593',
276
- // quote: 'She thought about what she had',
277
- // start: 0,
278
- // end: 30,
279
- // },
280
- // {
281
- // id: '185-206-1751440199435',
282
- // quote: 'o please her Coach, y',
283
- // start: 185,
284
- // end: 206,
285
- // },
286
- // {
287
- // id: '356-379-1751440202337',
288
- // quote: 'e much more humorous to',
289
- // start: 356,
290
- // end: 379,
291
- // },
292
- // {
293
- // id: '0-88-1751443110733',
294
- // quote: 'She thought about what she had to do, struggling to rein in her wild, fearful thoughts. ',
295
- // start: 0,
296
- // end: 88,
297
- // },
298
- // {
299
- // id: '590-607-1751443116013',
300
- // quote: "Át last Ñatasha's",
301
- // start: 590,
302
- // end: 607,
303
- // },
304
- // {
305
- // id: '624-641-1751443118643',
306
- // quote: 'The faces of past',
307
- // start: 624,
308
- // end: 641,
309
- // },
310
- // {
311
- // id: '1223-1231-1751443121777',
312
- // quote: 'header 2',
313
- // start: 1223,
314
- // end: 1231,
315
- // },
316
- // {
317
- // id: '358-376-1751443129379',
318
- // quote: '»»» were much more',
319
- // start: 358,
320
- // end: 376,
321
- // },
322
- // {
323
- // id: '137-154-1751443132310',
324
- // quote: 'mind never scored',
325
- // start: 137,
326
- // end: 154,
327
- // },
228
+ {
229
+ text: 'She thought about what she had to do, struggling to rein in her wild, fearful thoughts.',
230
+ end: 90,
231
+ start: 3,
232
+ correct: false,
233
+ },
234
+ {
235
+ start: 449,
236
+ end: 585,
237
+ text: 'Just for a hair of a moment, Natasha wondered if she really wanted a perfect 10, so weary was she of trying for but never achieving one.',
238
+ correct: false,
239
+ },
240
+ {
241
+ end: 627,
242
+ correct: false,
243
+ text: "At last Natasha's moment arrived.",
244
+ start: 594,
245
+ },
246
+ {
247
+ end: 743,
248
+ text: "The faces of past giants of gymnastics swam before her mind's eye, now razor&#8211;sharp with fierce determination.",
249
+ correct: false,
250
+ start: 628,
251
+ },
252
+ {
253
+ text: 'Suddenly, the din of the gymnasium was silent to her.',
254
+ end: 997,
255
+ correct: false,
256
+ start: 944,
257
+ },
258
+ {
259
+ end: 1087,
260
+ start: 998,
261
+ correct: false,
262
+ text: 'Forcing all sound out of her mind, she focused on the gleaming balance beam ahead of her.',
263
+ },
264
+ {
265
+ correct: true,
266
+ start: 1088,
267
+ end: 1225,
268
+ text: 'Taking a deep breath, Natasha made her graceful, yet powerful approach, mounted the beam flawlessly, and...executed her first perfect 10.',
269
+ },
328
270
  ],
329
- text: '<p>She thought about what she had to do, <u>struggling to rein</u> in her wild, <b>fearful thoughts</b>. Coach Cummings always said that an undisciplined mind <sup>never scored </sup>a perfect 10. Natasha €€€ wanted to please her Coach, yet sometimes his approval wasn&#x27;t as exciting as his anger. The gymnasts were unanimous about one thing: Coach Cummings&#x27;s fits of disapproving rage »»» were much more humorous to witness than his infrequent, backslapping moments of high praise. Just for a hair of a moment, Natasha wondered if she really wanted a perfect 10, so weary was she of trying for but never achieving one</p><p><em>Át last Ñatasha&#x27;s moment arrived.</em> The <s>faces</s> of past giants of gymnastics swam before her mind&#x27;s eye, now razor–sharp with fierce determination. &quot;I am talented. I am not afraid. I will make a perfect 10,&quot; she spoke aloud to herself, as she approached the mat, dusted her hands with chalk to prevent slippage, and returned to her starting point. Suddenly, the din of the gymnasium was silent to her. Forcing all sound out of her mind, she focused on the gleaming balance beam ahead of her. Taking a deep breath, Natasha made her graceful, yet powerful approach, mounted the beam flawlessly, and...executed her first perfect 10.</p><p></p><table border="1"><tbody><tr><td><p>header 1</p></td><td><p>header 2</p></td></tr><tr><td><p>row </p></td><td><p>row</p></td></tr></tbody></table><div></div>',
271
+ // "element": "select-text",
272
+ text: "<p>She thought about what she had to do, struggling to rein in her wild, fearful thoughts. Coach Cummings always said that an undisciplined mind never scored a perfect 10. Natasha wanted to please her Coach, yet sometimes his approval wasn't as exciting as his anger. The gymnasts were unanimous about one thing: Coach Cummings's fits of disapproving rage were much more humorous to witness than his infrequent, backslapping moments of high praise. Just for a hair of a moment, Natasha wondered if she really wanted a perfect 10, so weary was she of trying for but never achieving one.</p>\n\n<p>At last Natasha's moment arrived. The faces of past giants of gymnastics swam before her mind's eye, now razor&#8211;sharp with fierce determination. \"I am talented. I am not afraid. I will make a perfect 10,\" she spoke aloud to herself, as she approached the mat, dusted her hands with chalk to prevent slippage, and returned to her starting point. Suddenly, the din of the gymnasium was silent to her. Forcing all sound out of her mind, she focused on the gleaming balance beam ahead of her. Taking a deep breath, Natasha made her graceful, yet powerful approach, mounted the beam flawlessly, and...executed her first perfect 10.</p>\n",
330
273
  rubricEnabled: false,
331
274
  }),
332
275
  );
package/lib/index.js CHANGED
@@ -29,7 +29,7 @@ var _piePlayerEvents = require("@pie-framework/pie-player-events");
29
29
 
30
30
  var _main = _interopRequireDefault(require("./main"));
31
31
 
32
- var _mathRendering = require("@pie-lib/pie-toolbox/math-rendering");
32
+ var _mathRendering = require("@pie-lib/math-rendering");
33
33
 
34
34
  var _utils = _interopRequireDefault(require("./utils"));
35
35
 
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["SelectText","m","_model","render","dispatchEvent","ModelSetEvent","tagName","toLowerCase","isSessionComplete","undefined","_session","s","generatedModel","tokens","selectedTokens","selectedTokenExistsInGeneratedTokens","find","tStart","start","tEnd","end","allAreCorrect","reduce","acc","selectedToken","Array","isArray","length","selection","SessionChangedEvent","el","React","createElement","Main","model","session","onSelectionChange","selectionChanged","bind","ReactDOM","HTMLElement"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { SessionChangedEvent, ModelSetEvent } from '@pie-framework/pie-player-events';\nimport Main from './main';\nimport { renderMath } from '@pie-lib/pie-toolbox/math-rendering';\nimport generateModel from './utils';\n\nexport default class SelectText extends HTMLElement {\n constructor() {\n super();\n }\n\n set model(m) {\n this._model = m;\n\n this.render();\n this.dispatchEvent(\n new ModelSetEvent(this.tagName.toLowerCase(), this.isSessionComplete(), this._model !== undefined),\n );\n }\n\n set session(s) {\n this._session = s;\n\n if (this._model) {\n const generatedModel = generateModel(this._model) || {};\n const { tokens } = generatedModel;\n let { selectedTokens } = s || {};\n\n selectedTokens = selectedTokens || [];\n\n // This case was introduced mostly for createCorrectSession:\n // make sure initial session tokens are parsed and have correct start and end (according to the regenerated model)\n const selectedTokenExistsInGeneratedTokens = (s) =>\n tokens.find(({ start: tStart, end: tEnd }) => s.start === tStart && s.end === tEnd);\n\n // check if ALL the selectedTokens have the correct start and end\n const allAreCorrect = selectedTokens.reduce(\n (acc, selectedToken) => acc && selectedTokenExistsInGeneratedTokens(selectedToken),\n true,\n );\n\n if (!allAreCorrect) {\n // otherwise, make sure to parse selectedTokens as well\n const generatedModel = generateModel({ ...this._model, tokens: selectedTokens }) || {};\n const { tokens } = generatedModel;\n\n if (tokens) {\n this._session.selectedTokens = tokens;\n }\n }\n }\n\n if (!Array.isArray(this._session.selectedTokens)) {\n this._session.selectedTokens = [];\n }\n this.render();\n }\n\n get session() {\n return this._session;\n }\n\n isSessionComplete() {\n const { selectedTokens } = this._session || {};\n return Array.isArray(selectedTokens) && selectedTokens.length > 0;\n }\n\n selectionChanged(selection) {\n this._session.selectedTokens = selection;\n\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), this.isSessionComplete()));\n }\n\n connectedCallback() {\n this.render();\n }\n\n render() {\n if (this._model && this._session) {\n const el = React.createElement(Main, {\n model: this._model,\n session: this._session,\n onSelectionChange: this.selectionChanged.bind(this),\n });\n\n ReactDOM.render(el, this, () => {\n renderMath(this);\n });\n }\n }\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.js"],"names":["SelectText","m","_model","render","dispatchEvent","ModelSetEvent","tagName","toLowerCase","isSessionComplete","undefined","_session","s","generatedModel","tokens","selectedTokens","selectedTokenExistsInGeneratedTokens","find","tStart","start","tEnd","end","allAreCorrect","reduce","acc","selectedToken","Array","isArray","length","selection","SessionChangedEvent","el","React","createElement","Main","model","session","onSelectionChange","selectionChanged","bind","ReactDOM","HTMLElement"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { SessionChangedEvent, ModelSetEvent } from '@pie-framework/pie-player-events';\nimport Main from './main';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport generateModel from './utils';\n\nexport default class SelectText extends HTMLElement {\n constructor() {\n super();\n }\n\n set model(m) {\n this._model = m;\n\n this.render();\n this.dispatchEvent(\n new ModelSetEvent(this.tagName.toLowerCase(), this.isSessionComplete(), this._model !== undefined),\n );\n }\n\n set session(s) {\n this._session = s;\n\n if (this._model) {\n const generatedModel = generateModel(this._model) || {};\n const { tokens } = generatedModel;\n let { selectedTokens } = s || {};\n\n selectedTokens = selectedTokens || [];\n\n // This case was introduced mostly for createCorrectSession:\n // make sure initial session tokens are parsed and have correct start and end (according to the regenerated model)\n const selectedTokenExistsInGeneratedTokens = (s) =>\n tokens.find(({ start: tStart, end: tEnd }) => s.start === tStart && s.end === tEnd);\n\n // check if ALL the selectedTokens have the correct start and end\n const allAreCorrect = selectedTokens.reduce(\n (acc, selectedToken) => acc && selectedTokenExistsInGeneratedTokens(selectedToken),\n true,\n );\n\n if (!allAreCorrect) {\n // otherwise, make sure to parse selectedTokens as well\n const generatedModel = generateModel({ ...this._model, tokens: selectedTokens }) || {};\n const { tokens } = generatedModel;\n\n if (tokens) {\n this._session.selectedTokens = tokens;\n }\n }\n }\n\n if (!Array.isArray(this._session.selectedTokens)) {\n this._session.selectedTokens = [];\n }\n this.render();\n }\n\n get session() {\n return this._session;\n }\n\n isSessionComplete() {\n const { selectedTokens } = this._session || {};\n return Array.isArray(selectedTokens) && selectedTokens.length > 0;\n }\n\n selectionChanged(selection) {\n this._session.selectedTokens = selection;\n\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), this.isSessionComplete()));\n }\n\n connectedCallback() {\n this.render();\n }\n\n render() {\n if (this._model && this._session) {\n const el = React.createElement(Main, {\n model: this._model,\n session: this._session,\n onSelectionChange: this.selectionChanged.bind(this),\n });\n\n ReactDOM.render(el, this, () => {\n renderMath(this);\n });\n }\n }\n}\n"],"file":"index.js"}
package/lib/main.js CHANGED
@@ -25,18 +25,16 @@ var _react = _interopRequireDefault(require("react"));
25
25
 
26
26
  var _propTypes = _interopRequireDefault(require("prop-types"));
27
27
 
28
- var _textSelect = require("@pie-lib/pie-toolbox/text-select");
28
+ var _textSelect = require("@pie-lib/text-select");
29
29
 
30
- var _correctAnswerToggle = require("@pie-lib/pie-toolbox/correct-answer-toggle");
30
+ var _correctAnswerToggle = _interopRequireDefault(require("@pie-lib/correct-answer-toggle"));
31
31
 
32
- var _renderUi = require("@pie-lib/pie-toolbox/render-ui");
32
+ var _renderUi = require("@pie-lib/render-ui");
33
33
 
34
34
  var _styles = require("@material-ui/core/styles");
35
35
 
36
36
  var _utils = _interopRequireDefault(require("./utils"));
37
37
 
38
- var _classnames = _interopRequireDefault(require("classnames"));
39
-
40
38
  var _debug = _interopRequireDefault(require("debug"));
41
39
 
42
40
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
@@ -75,26 +73,9 @@ var Main = /*#__PURE__*/function (_React$Component) {
75
73
  return t.correct;
76
74
  });
77
75
  });
78
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "initializeTokenizedText", function (html, onClick) {
79
- var classes = _this.props.classes;
80
- var container = document.createElement('div');
81
- container.innerHTML = html;
82
- var spans = container.querySelectorAll('span');
83
- spans.forEach(function (span) {
84
- span.className = (0, _classnames["default"])(classes.token); // span.addEventListener('click', (e) => onClick(e));
85
- });
86
- return container.innerHTML;
87
- });
88
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleTokenClick", function (event) {
89
- console.log('event click', event.target.id);
90
- event.target.classList.toggle('selected');
91
- });
92
76
  _this.state = {
93
77
  showCorrectAnswer: _this.props.model.alwaysShowCorrect || false,
94
- model: _objectSpread(_objectSpread({}, (0, _utils["default"])(props.model)), {}, {
95
- tokenizedText: _this.initializeTokenizedText(props.model.tokenizedText || props.model.text, _this.handleTokenClick)
96
- }),
97
- selectedTokens: []
78
+ model: (0, _utils["default"])(props.model)
98
79
  };
99
80
  return _this;
100
81
  }
@@ -104,9 +85,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
104
85
  value: function UNSAFE_componentWillReceiveProps(nextProps) {
105
86
  this.setState({
106
87
  showCorrectAnswer: !!nextProps.model.alwaysShowCorrect,
107
- model: _objectSpread(_objectSpread({}, (0, _utils["default"])(nextProps.model)), {}, {
108
- tokenizedText: this.initializeTokenizedText(nextProps.model.tokenizedText || nextProps.model.text, this.handleTokenClick)
109
- })
88
+ model: (0, _utils["default"])(nextProps.model)
110
89
  });
111
90
  }
112
91
  }, {
@@ -148,7 +127,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
148
127
  className: classes.prompt
149
128
  }, /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
150
129
  prompt: model.prompt
151
- })), !model.alwaysShowCorrect && /*#__PURE__*/_react["default"].createElement(_correctAnswerToggle.CorrectAnswerToggle, {
130
+ })), !model.alwaysShowCorrect && /*#__PURE__*/_react["default"].createElement(_correctAnswerToggle["default"], {
152
131
  show: model.disabled && model.incorrect,
153
132
  toggled: showCorrectAnswer,
154
133
  onToggle: this.toggleShowCorrect,
@@ -156,7 +135,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
156
135
  }), /*#__PURE__*/_react["default"].createElement(_textSelect.TextSelect, {
157
136
  className: classes.textSelect,
158
137
  disabled: model.disabled,
159
- text: model.tokenizedText || model.text,
138
+ text: model.text,
160
139
  tokens: model.tokens,
161
140
  selectedTokens: selectedTokens,
162
141
  onChange: function onChange(selection) {
@@ -179,7 +158,8 @@ var Main = /*#__PURE__*/function (_React$Component) {
179
158
  maxNoOfSelections: model.maxSelections,
180
159
  animationsDisabled: model.animationsDisabled
181
160
  }), mode === 'evaluate' && /*#__PURE__*/_react["default"].createElement(_textSelect.Legend, {
182
- language: model.language
161
+ language: model.language,
162
+ showOnlyCorrect: showCorrectAnswer
183
163
  }), showRationale && (!model.animationsDisabled ? /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
184
164
  labels: {
185
165
  hidden: 'Show Rationale',
@@ -223,20 +203,6 @@ var StyledMain = (0, _styles.withStyles)(function (theme) {
223
203
  },
224
204
  collapsible: {
225
205
  marginBottom: theme.spacing.unit * 2
226
- },
227
- token: {
228
- position: 'relative',
229
- cursor: 'pointer',
230
- border: 'dashed 2px grey',
231
- lineHeight: '24px',
232
- // backgroundColor: '#fff9c4',
233
- '&:hover': {
234
- backgroundColor: '#9fa8da'
235
- },
236
- '&.selected': {
237
- backgroundColor: '#9fa8da',
238
- border: 'none'
239
- }
240
206
  }
241
207
  };
242
208
  })(Main);
@@ -295,4 +261,4 @@ var Stateful = /*#__PURE__*/function (_React$Component2) {
295
261
 
296
262
  exports["default"] = Stateful;
297
263
  (0, _defineProperty2["default"])(Stateful, "propTypes", Types);
298
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLmpzeCJdLCJuYW1lcyI6WyJsb2ciLCJUeXBlcyIsIm1vZGVsIiwiUHJvcFR5cGVzIiwib2JqZWN0Iiwic2Vzc2lvbiIsIm9uU2VsZWN0aW9uQ2hhbmdlIiwiZnVuYyIsImlzUmVxdWlyZWQiLCJNYWluIiwicHJvcHMiLCJzZXRTdGF0ZSIsInNob3dDb3JyZWN0QW5zd2VyIiwic3RhdGUiLCJ0b2tlbnMiLCJmaWx0ZXIiLCJ0IiwiY29ycmVjdCIsImh0bWwiLCJvbkNsaWNrIiwiY2xhc3NlcyIsImNvbnRhaW5lciIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImlubmVySFRNTCIsInNwYW5zIiwicXVlcnlTZWxlY3RvckFsbCIsImZvckVhY2giLCJzcGFuIiwiY2xhc3NOYW1lIiwidG9rZW4iLCJldmVudCIsImNvbnNvbGUiLCJ0YXJnZXQiLCJpZCIsImNsYXNzTGlzdCIsInRvZ2dsZSIsImFsd2F5c1Nob3dDb3JyZWN0IiwidG9rZW5pemVkVGV4dCIsImluaXRpYWxpemVUb2tlbml6ZWRUZXh0IiwidGV4dCIsImhhbmRsZVRva2VuQ2xpY2siLCJzZWxlY3RlZFRva2VucyIsIm5leHRQcm9wcyIsImVudiIsImV4dHJhQ1NTUnVsZXMiLCJtb2RlIiwiY29ycmVjdEFuc3dlciIsInNob3dSYXRpb25hbGUiLCJyYXRpb25hbGUiLCJzaG93VGVhY2hlckluc3RydWN0aW9ucyIsInRlYWNoZXJJbnN0cnVjdGlvbnMiLCJtYWluQ29udGFpbmVyIiwiYW5pbWF0aW9uc0Rpc2FibGVkIiwiaGlkZGVuIiwidmlzaWJsZSIsImNvbGxhcHNpYmxlIiwicHJvbXB0IiwiZGlzYWJsZWQiLCJpbmNvcnJlY3QiLCJ0b2dnbGVTaG93Q29ycmVjdCIsImxhbmd1YWdlIiwidGV4dFNlbGVjdCIsInNlbGVjdGlvbiIsIm5ld1NlbGVjdGlvbnMiLCJtYXAiLCJzZWxlY3QiLCJmaW5kIiwic3RhcnQiLCJlbmQiLCJoaWdobGlnaHRDaG9pY2VzIiwibWF4U2VsZWN0aW9ucyIsImNvcnJlY3RuZXNzIiwiZmVlZGJhY2siLCJSZWFjdCIsIkNvbXBvbmVudCIsIlN0eWxlZE1haW4iLCJ0aGVtZSIsImNvbG9yIiwiYmFja2dyb3VuZENvbG9yIiwiYmFja2dyb3VuZCIsIm1hcmdpbkJvdHRvbSIsInNwYWNpbmciLCJ1bml0IiwibWFyZ2luVG9wIiwid2hpdGVTcGFjZSIsInZlcnRpY2FsQWxpZ24iLCJwb3NpdGlvbiIsImN1cnNvciIsImJvcmRlciIsImxpbmVIZWlnaHQiLCJTdGF0ZWZ1bCIsImNoYW5nZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFTQTs7QUFDQTs7QUFDQTs7QUFFQTs7Ozs7Ozs7OztBQUVBLElBQU1BLEdBQUcsR0FBRyx1QkFBTSxxQkFBTixDQUFaO0FBRUEsSUFBTUMsS0FBSyxHQUFHO0FBQ1pDLEVBQUFBLEtBQUssRUFBRUMsc0JBQVVDLE1BREw7QUFFWkMsRUFBQUEsT0FBTyxFQUFFRixzQkFBVUMsTUFGUDtBQUdaRSxFQUFBQSxpQkFBaUIsRUFBRUgsc0JBQVVJLElBQVYsQ0FBZUM7QUFIdEIsQ0FBZDs7SUFNYUMsSTs7Ozs7QUFLWCxnQkFBWUMsS0FBWixFQUFtQjtBQUFBOztBQUFBO0FBQ2pCLDhCQUFNQSxLQUFOO0FBRGlCLDBHQTZCQyxZQUFNO0FBQ3hCLFlBQUtDLFFBQUwsQ0FBYztBQUFFQyxRQUFBQSxpQkFBaUIsRUFBRSxDQUFDLE1BQUtDLEtBQUwsQ0FBV0Q7QUFBakMsT0FBZDtBQUNELEtBL0JrQjtBQUFBLHNHQWlDSCxZQUFNO0FBQ3BCLFVBQVFWLEtBQVIsR0FBa0IsTUFBS1csS0FBdkIsQ0FBUVgsS0FBUjtBQUVBLGFBQU9BLEtBQUssQ0FBQ1ksTUFBTixDQUFhQyxNQUFiLENBQW9CLFVBQUNDLENBQUQ7QUFBQSxlQUFPQSxDQUFDLENBQUNDLE9BQVQ7QUFBQSxPQUFwQixDQUFQO0FBQ0QsS0FyQ2tCO0FBQUEsZ0hBdUNPLFVBQUNDLElBQUQs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TCxDQUFXSixpQkFBWCxDQUE2QixPQUFLTyxLQUFMLENBQVdSLE9BQVgsQ0FBbUJxQyxjQUFoRDtBQUNELE9BRkQ7QUFHRCxLQWpCa0I7QUFFakIsV0FBSzdCLEtBQUwsR0FBYTtBQUNYWCxNQUFBQSxLQUFLLEVBQUVRLEtBQUssQ0FBQ1IsS0FERjtBQUVYRyxNQUFBQSxPQUFPLEVBQUVLLEtBQUssQ0FBQ0w7QUFGSixLQUFiO0FBRmlCO0FBTWxCOzs7O1dBRUQsMENBQWlDc0MsU0FBakMsRUFBNEM7QUFDMUMsV0FBS2hDLFFBQUwsQ0FBYztBQUFFVCxRQUFBQSxLQUFLLEVBQUV5QyxTQUFTLENBQUN6QyxLQUFuQjtBQUEwQkcsUUFBQUEsT0FBTyxFQUFFc0MsU0FBUyxDQUFDdEM7QUFBN0MsT0FBZDtBQUNEOzs7V0FTRCxrQkFBUztBQUNQLHlCQUEyQixLQUFLUSxLQUFoQztBQUFBLFVBQVFYLEtBQVIsZ0JBQVFBLEtBQVI7QUFBQSxVQUFlRyxPQUFmLGdCQUFlQSxPQUFmO0FBQ0EsMEJBQU8sZ0NBQUMsVUFBRDtBQUFZLFFBQUEsS0FBSyxFQUFFSCxLQUFuQjtBQUEwQixRQUFBLE9BQU8sRUFBRUcsT0FBbkM7QUFBNEMsUUFBQSxpQkFBaUIsRUFBRSxLQUFLdUY7QUFBcEUsUUFBUDtBQUNEOzs7RUF6Qm1DbEIsa0JBQU1DLFM7OztpQ0FBdkJnQixRLGVBQ0ExRixLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyBUZXh0U2VsZWN0LCBMZWdlbmQgfSBmcm9tICdAcGllLWxpYi9waWUtdG9vbGJveC90ZXh0LXNlbGVjdCc7XG5pbXBvcnQgeyBDb3JyZWN0QW5zd2VyVG9nZ2xlIH0gZnJvbSAnQHBpZS1saWIvcGllLXRvb2xib3gvY29ycmVjdC1hbnN3ZXItdG9nZ2xlJztcbmltcG9ydCB7XG4gIGNvbG9yLFxuICBGZWVkYmFjayxcbiAgQ29sbGFwc2libGUsXG4gIGhhc1RleHQsXG4gIGhhc01lZGlhLFxuICBQcmV2aWV3UHJvbXB0LFxuICBVaUxheW91dCxcbn0gZnJvbSAnQHBpZS1saWIvcGllLXRvb2xib3gvcmVuZGVyLXVpJztcbmltcG9ydCB7IHdpdGhTdHlsZXMgfSBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9zdHlsZXMnO1xuaW1wb3J0IGdlbmVyYXRlTW9kZWwgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcblxuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcblxuY29uc3QgbG9nID0gZGVidWcoJ0BwaWUtdWk6c2VsZWN0LXRleHQnKTtcblxuY29uc3QgVHlwZXMgPSB7XG4gIG1vZGVsOiBQcm9wVHlwZXMub2JqZWN0LFxuICBzZXNzaW9uOiBQcm9wVHlwZXMub2JqZWN0LFxuICBvblNlbGVjdGlvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbn07XG5cbmV4cG9ydCBjbGFzcyBNYWluIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHsgLi4uVHlwZXMsIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCB9O1xuXG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7fTtcblxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBzaG93Q29ycmVjdEFuc3dlcjogdGhpcy5wcm9wcy5tb2RlbC5hbHdheXNTaG93Q29ycmVjdCB8fCBmYWxzZSxcbiAgICAgIG1vZGVsOiB7XG4gICAgICAgIC4uLmdlbmVyYXRlTW9kZWwocHJvcHMubW9kZWwpLFxuICAgICAgICB0b2tlbml6ZWRUZXh0OiB0aGlzLmluaXRpYWxpemVUb2tlbml6ZWRUZXh0KFxuICAgICAgICAgIHByb3BzLm1vZGVsLnRva2VuaXplZFRleHQgfHwgcHJvcHMubW9kZWwudGV4dCxcbiAgICAgICAgICB0aGlzLmhhbmRsZVRva2VuQ2xpY2ssXG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAgc2VsZWN0ZWRUb2tlbnM6IFtdLFxuICAgIH07XG4gIH1cblxuICBVTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0UHJvcHMpIHtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIHNob3dDb3JyZWN0QW5zd2VyOiAhIW5leHRQcm9wcy5tb2RlbC5hbHdheXNTaG93Q29ycmVjdCxcbiAgICAgIG1vZGVsOiB7XG4gICAgICAgIC4uLmdlbmVyYXRlTW9kZWwobmV4dFByb3BzLm1vZGVsKSxcbiAgICAgICAgdG9rZW5pemVkVGV4dDogdGhpcy5pbml0aWFsaXplVG9rZW5pemVkVGV4dChcbiAgICAgICAgICBuZXh0UHJvcHMubW9kZWwudG9rZW5pemVkVGV4dCB8fCBuZXh0UHJvcHMubW9kZWwudGV4dCxcbiAgICAgICAgICB0aGlzLmhhbmRsZVRva2VuQ2xpY2ssXG4gICAgICAgICksXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgdG9nZ2xlU2hvd0NvcnJlY3QgPSAoKSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7IHNob3dDb3JyZWN0QW5zd2VyOiAhdGhpcy5zdGF0ZS5zaG93Q29ycmVjdEFuc3dlciB9KTtcbiAgfTtcblxuICBjb3JyZWN0QW5zd2VyID0gKCkgPT4ge1xuICAgIGNvbnN0IHsgbW9kZWwgfSA9IHRoaXMuc3RhdGU7XG5cbiAgICByZXR1cm4gbW9kZWwudG9rZW5zLmZpbHRlcigodCkgPT4gdC5jb3JyZWN0KTtcbiAgfTtcblxuICBpbml0aWFsaXplVG9rZW5pemVkVGV4dCA9IChodG1sLCBvbkNsaWNrKSA9PiB7XG4gICAgY29uc3QgeyBjbGFzc2VzIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSBodG1sO1xuXG4gICAgY29uc3Qgc3BhbnMgPSBjb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgnc3BhbicpO1xuXG4gICAgc3BhbnMuZm9yRWFjaCgoc3BhbikgPT4ge1xuICAgICAgc3Bhbi5jbGFzc05hbWUgPSBjbGFzc05hbWVzKGNsYXNzZXMudG9rZW4pO1xuICAgICAgLy8gc3Bhbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiBvbkNsaWNrKGUpKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBjb250YWluZXIuaW5uZXJIVE1MO1xuICB9O1xuXG4gIGhhbmRsZVRva2VuQ2xpY2sgPSAoZXZlbnQpID0+IHtcbiAgICBjb25zb2xlLmxvZygnZXZlbnQgY2xpY2snLCBldmVudC50YXJnZXQuaWQpO1xuXG4gICAgZXZlbnQudGFyZ2V0LmNsYXNzTGlzdC50b2dnbGUoJ3NlbGVjdGVkJyk7XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgc2Vzc2lvbiwgb25TZWxlY3Rpb25DaGFuZ2UsIGNsYXNzZXMgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgeyBzaG93Q29ycmVjdEFuc3dlciwgbW9kZWwgfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3QgeyBlbnYsIGV4dHJhQ1NTUnVsZXMgfSA9IG1vZGVsO1xuICAgIGNvbnN0IHsgbW9kZSB9ID0gZW52IHx8IHt9O1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRUb2tlbnMgPSBzaG93Q29ycmVjdEFuc3dlciA/IHRoaXMuY29ycmVjdEFuc3dlcigpIDogc2Vzc2lvbi5zZWxlY3RlZFRva2VucztcbiAgICBjb25zdCBzaG93UmF0aW9uYWxlID0gbW9kZWwucmF0aW9uYWxlICYmIChoYXNUZXh0KG1vZGVsLnJhdGlvbmFsZSkgfHwgaGFzTWVkaWEobW9kZWwucmF0aW9uYWxlKSk7XG4gICAgY29uc3Qgc2hvd1RlYWNoZXJJbnN0cnVjdGlvbnMgPVxuICAgICAgbW9kZWwudGVhY2hlckluc3RydWN0aW9ucyAmJiAoaGFzVGV4dChtb2RlbC50ZWFjaGVySW5zdHJ1Y3Rpb25zKSB8fCBoYXNNZWRpYShtb2RlbC50ZWFjaGVySW5zdHJ1Y3Rpb25zKSk7XG5cbiAgICBsb2coJ1tyZW5kZXJdIHNlbGVjdGVkVG9rZW5zOicsIHNlbGVjdGVkVG9rZW5zKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8VWlMYXlvdXQgZXh0cmFDU1NSdWxlcz17ZXh0cmFDU1NSdWxlc30gY2xhc3NOYW1lPXtjbGFzc2VzLm1haW5Db250YWluZXJ9PlxuICAgICAgICB7c2hvd1RlYWNoZXJJbnN0cnVjdGlvbnMgJiZcbiAgICAgICAgICAoIW1vZGVsLmFuaW1hdGlvbnNEaXNhYmxlZCA/IChcbiAgICAgICAgICAgIDxDb2xsYXBzaWJsZVxuICAgICAgICAgICAgICBsYWJlbHM9e3sgaGlkZGVuOiAnU2hvdyBUZWFjaGVyIEluc3RydWN0aW9ucycsIHZpc2libGU6ICdIaWRlIFRlYWNoZXIgSW5zdHJ1Y3Rpb25zJyB9fVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMuY29sbGFwc2libGV9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxQcmV2aWV3UHJvbXB0IHByb21wdD17bW9kZWwudGVhY2hlckluc3RydWN0aW9uc30gLz5cbiAgICAgICAgICAgIDwvQ29sbGFwc2libGU+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLnByb21wdH0+XG4gICAgICAgICAgICAgIDxQcmV2aWV3UHJvbXB0IHByb21wdD17bW9kZWwudGVhY2hlckluc3RydWN0aW9uc30gLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICkpfVxuXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLnByb21wdH0+XG4gICAgICAgICAgPFByZXZpZXdQcm9tcHQgcHJvbXB0PXttb2RlbC5wcm9tcHR9IC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIHshbW9kZWwuYWx3YXlzU2hvd0NvcnJlY3QgJiYgKFxuICAgICAgICAgIDxDb3JyZWN0QW5zd2VyVG9nZ2xlXG4gICAgICAgICAgICBzaG93PXttb2RlbC5kaXNhYmxlZCAmJiBtb2RlbC5pbmNvcnJlY3R9XG4gICAgICAgICAgICB0b2dnbGVkPXtzaG93Q29ycmVjdEFuc3dlcn1cbiAgICAgICAgICAgIG9uVG9nZ2xlPXt0aGlzLnRvZ2dsZVNob3dDb3JyZWN0fVxuICAgICAgICAgICAgbGFuZ3VhZ2U9e21vZGVsLmxhbmd1YWdlfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG5cbiAgICAgICAgPFRleHRTZWxlY3RcbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMudGV4dFNlbGVjdH1cbiAgICAgICAgICBkaXNhYmxlZD17bW9kZWwuZGlzYWJsZWR9XG4gICAgICAgICAgdGV4dD17bW9kZWwudG9rZW5pemVkVGV4dCB8fCBtb2RlbC50ZXh0fVxuICAgICAgICAgIHRva2Vucz17bW9kZWwudG9rZW5zfVxuICAgICAgICAgIHNlbGVjdGVkVG9rZW5zPXtzZWxlY3RlZFRva2Vuc31cbiAgICAgICAgICBvbkNoYW5nZT17KHNlbGVjdGlvbikgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3U2VsZWN0aW9ucyA9IHNlbGVjdGlvbi5tYXAoKHNlbGVjdCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB0b2tlbiA9IG1vZGVsLnRva2Vucy5maW5kKCh7IHN0YXJ0LCBlbmQgfSkgPT4gc2VsZWN0LnN0YXJ0ID09PSBzdGFydCAmJiBzZWxlY3QuZW5kID09PSBlbmQpO1xuXG4gICAgICAgICAgICAgIC8vIG5lZWRlZCBmb3IgZ2V0U2NvcmUgd2hlbiB0b2tlbnMgcG9zaXRpb24gaXMgcmVjYWxjdWxhdGVkLCB0byBrZWVwIG9sZFN0YXJ0IGFuZCBvbGRFbmRcbiAgICAgICAgICAgICAgaWYgKHRva2VuKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdDtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBvblNlbGVjdGlvbkNoYW5nZShuZXdTZWxlY3Rpb25zKTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIGhpZ2hsaWdodENob2ljZXM9e21vZGVsLmhpZ2hsaWdodENob2ljZXN9XG4gICAgICAgICAgbWF4Tm9PZlNlbGVjdGlvbnM9e21vZGVsLm1heFNlbGVjdGlvbnN9XG4gICAgICAgICAgYW5pbWF0aW9uc0Rpc2FibGVkPXttb2RlbC5hbmltYXRpb25zRGlzYWJsZWR9XG4gICAgICAgIC8+XG4gICAgICAgIHttb2RlID09PSAnZXZhbHVhdGUnICYmIDxMZWdlbmQgbGFuZ3VhZ2U9e21vZGVsLmxhbmd1YWdlfSAvPn1cblxuICAgICAgICB7c2hvd1JhdGlvbmFsZSAmJlxuICAgICAgICAgICghbW9kZWwuYW5pbWF0aW9uc0Rpc2FibGVkID8gKFxuICAgICAgICAgICAgPENvbGxhcHNpYmxlXG4gICAgICAgICAgICAgIGxhYmVscz17eyBoaWRkZW46ICdTaG93IFJhdGlvbmFsZScsIHZpc2libGU6ICdIaWRlIFJhdGlvbmFsZScgfX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLmNvbGxhcHNpYmxlfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8UHJldmlld1Byb21wdCBwcm9tcHQ9e21vZGVsLnJhdGlvbmFsZX0gLz5cbiAgICAgICAgICAgIDwvQ29sbGFwc2libGU+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLnByb21wdH0+XG4gICAgICAgICAgICAgIDxQcmV2aWV3UHJvbXB0IHByb21wdD17bW9kZWwucmF0aW9uYWxlfSAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKSl9XG5cbiAgICAgICAge21vZGVsLmNvcnJlY3RuZXNzICYmIG1vZGVsLmZlZWRiYWNrICYmICFzaG93Q29ycmVjdEFuc3dlciAmJiAoXG4gICAgICAgICAgPEZlZWRiYWNrIGNvcnJlY3RuZXNzPXttb2RlbC5jb3JyZWN0bmVzc30gZmVlZGJhY2s9e21vZGVsLmZlZWRiYWNrfSAvPlxuICAgICAgICApfVxuICAgICAgPC9VaUxheW91dD5cbiAgICApO1xuICB9XG59XG5cbmNvbnN0IFN0eWxlZE1haW4gPSB3aXRoU3R5bGVzKCh0aGVtZSkgPT4gKHtcbiAgbWFpbkNvbnRhaW5lcjoge1xuICAgIGNvbG9yOiBjb2xvci50ZXh0KCksXG4gICAgYmFja2dyb3VuZENvbG9yOiBjb2xvci5iYWNrZ3JvdW5kKCksXG4gIH0sXG4gIHRleHRTZWxlY3Q6IHtcbiAgICBtYXJnaW5Cb3R0b206IHRoZW1lLnNwYWNpbmcudW5pdCxcbiAgICBtYXJnaW5Ub3A6IHRoZW1lLnNwYWNpbmcudW5pdCAqIDIsXG4gICAgd2hpdGVTcGFjZTogJ25vcm1hbCcsXG4gIH0sXG4gIHByb21wdDoge1xuICAgIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnLFxuICAgIG1hcmdpbkJvdHRvbTogdGhlbWUuc3BhY2luZy51bml0LFxuICB9LFxuICBjb2xsYXBzaWJsZToge1xuICAgIG1hcmdpbkJvdHRvbTogdGhlbWUuc3BhY2luZy51bml0ICogMixcbiAgfSxcbiAgdG9rZW46IHtcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICBib3JkZXI6ICdkYXNoZWQgMnB4IGdyZXknLFxuICAgIGxpbmVIZWlnaHQ6ICcyNHB4JyxcbiAgICAvLyBiYWNrZ3JvdW5kQ29sb3I6ICcjZmZmOWM0JyxcblxuICAgICcmOmhvdmVyJzoge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiAnIzlmYThkYScsXG4gICAgfSxcblxuICAgICcmLnNlbGVjdGVkJzoge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiAnIzlmYThkYScsXG4gICAgICBib3JkZXI6ICdub25lJyxcbiAgICB9LFxuICB9LFxufSkpKE1haW4pO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdGF0ZWZ1bCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSBUeXBlcztcblxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgbW9kZWw6IHByb3BzLm1vZGVsLFxuICAgICAgc2Vzc2lvbjogcHJvcHMuc2Vzc2lvbixcbiAgICB9O1xuICB9XG5cbiAgVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobmV4dFByb3BzKSB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7IG1vZGVsOiBuZXh0UHJvcHMubW9kZWwsIHNlc3Npb246IG5leHRQcm9wcy5zZXNzaW9uIH0pO1xuICB9XG5cbiAgY2hhbmdlID0gKHNlbGVjdGVkVG9rZW5zKSA9PiB7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IHsgLi4udGhpcy5zdGF0ZS5zZXNzaW9uLCBzZWxlY3RlZFRva2VucyB9O1xuICAgIHRoaXMuc2V0U3RhdGUoeyBzZXNzaW9uIH0sICgpID0+IHtcbiAgICAgIHRoaXMucHJvcHMub25TZWxlY3Rpb25DaGFuZ2UodGhpcy5zdGF0ZS5zZXNzaW9uLnNlbGVjdGVkVG9rZW5zKTtcbiAgICB9KTtcbiAgfTtcblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyBtb2RlbCwgc2Vzc2lvbiB9ID0gdGhpcy5zdGF0ZTtcbiAgICByZXR1cm4gPFN0eWxlZE1haW4gbW9kZWw9e21vZGVsfSBzZXNzaW9uPXtzZXNzaW9ufSBvblNlbGVjdGlvbkNoYW5nZT17dGhpcy5jaGFuZ2V9IC8+O1xuICB9XG59XG4iXX0=
264
+ //# sourceMappingURL=main.js.map
package/lib/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/main.jsx"],"names":["log","Types","model","PropTypes","object","session","onSelectionChange","func","isRequired","Main","props","setState","showCorrectAnswer","state","tokens","filter","t","correct","html","onClick","classes","container","document","createElement","innerHTML","spans","querySelectorAll","forEach","span","className","token","event","console","target","id","classList","toggle","alwaysShowCorrect","tokenizedText","initializeTokenizedText","text","handleTokenClick","selectedTokens","nextProps","env","extraCSSRules","mode","correctAnswer","showRationale","rationale","showTeacherInstructions","teacherInstructions","mainContainer","animationsDisabled","hidden","visible","collapsible","prompt","disabled","incorrect","toggleShowCorrect","language","textSelect","selection","newSelections","map","select","find","start","end","highlightChoices","maxSelections","correctness","feedback","React","Component","StyledMain","theme","color","backgroundColor","background","marginBottom","spacing","unit","marginTop","whiteSpace","verticalAlign","position","cursor","border","lineHeight","Stateful","change"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { TextSelect, Legend } from '@pie-lib/pie-toolbox/text-select';\nimport { CorrectAnswerToggle } from '@pie-lib/pie-toolbox/correct-answer-toggle';\nimport {\n color,\n Feedback,\n Collapsible,\n hasText,\n hasMedia,\n PreviewPrompt,\n UiLayout,\n} from '@pie-lib/pie-toolbox/render-ui';\nimport { withStyles } from '@material-ui/core/styles';\nimport generateModel from './utils';\nimport classNames from 'classnames';\n\nimport debug from 'debug';\n\nconst log = debug('@pie-ui:select-text');\n\nconst Types = {\n model: PropTypes.object,\n session: PropTypes.object,\n onSelectionChange: PropTypes.func.isRequired,\n};\n\nexport class Main extends React.Component {\n static propTypes = { ...Types, classes: PropTypes.object.isRequired };\n\n static defaultProps = {};\n\n constructor(props) {\n super(props);\n\n this.state = {\n showCorrectAnswer: this.props.model.alwaysShowCorrect || false,\n model: {\n ...generateModel(props.model),\n tokenizedText: this.initializeTokenizedText(\n props.model.tokenizedText || props.model.text,\n this.handleTokenClick,\n ),\n },\n selectedTokens: [],\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n this.setState({\n showCorrectAnswer: !!nextProps.model.alwaysShowCorrect,\n model: {\n ...generateModel(nextProps.model),\n tokenizedText: this.initializeTokenizedText(\n nextProps.model.tokenizedText || nextProps.model.text,\n this.handleTokenClick,\n ),\n },\n });\n }\n\n toggleShowCorrect = () => {\n this.setState({ showCorrectAnswer: !this.state.showCorrectAnswer });\n };\n\n correctAnswer = () => {\n const { model } = this.state;\n\n return model.tokens.filter((t) => t.correct);\n };\n\n initializeTokenizedText = (html, onClick) => {\n const { classes } = this.props;\n const container = document.createElement('div');\n container.innerHTML = html;\n\n const spans = container.querySelectorAll('span');\n\n spans.forEach((span) => {\n span.className = classNames(classes.token);\n // span.addEventListener('click', (e) => onClick(e));\n });\n\n return container.innerHTML;\n };\n\n handleTokenClick = (event) => {\n console.log('event click', event.target.id);\n\n event.target.classList.toggle('selected');\n };\n\n render() {\n const { session, onSelectionChange, classes } = this.props;\n const { showCorrectAnswer, model } = this.state;\n const { env, extraCSSRules } = model;\n const { mode } = env || {};\n\n const selectedTokens = showCorrectAnswer ? this.correctAnswer() : session.selectedTokens;\n const showRationale = model.rationale && (hasText(model.rationale) || hasMedia(model.rationale));\n const showTeacherInstructions =\n model.teacherInstructions && (hasText(model.teacherInstructions) || hasMedia(model.teacherInstructions));\n\n log('[render] selectedTokens:', selectedTokens);\n\n return (\n <UiLayout extraCSSRules={extraCSSRules} className={classes.mainContainer}>\n {showTeacherInstructions &&\n (!model.animationsDisabled ? (\n <Collapsible\n labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}\n className={classes.collapsible}\n >\n <PreviewPrompt prompt={model.teacherInstructions} />\n </Collapsible>\n ) : (\n <div className={classes.prompt}>\n <PreviewPrompt prompt={model.teacherInstructions} />\n </div>\n ))}\n\n <div className={classes.prompt}>\n <PreviewPrompt prompt={model.prompt} />\n </div>\n\n {!model.alwaysShowCorrect && (\n <CorrectAnswerToggle\n show={model.disabled && model.incorrect}\n toggled={showCorrectAnswer}\n onToggle={this.toggleShowCorrect}\n language={model.language}\n />\n )}\n\n <TextSelect\n className={classes.textSelect}\n disabled={model.disabled}\n text={model.tokenizedText || model.text}\n tokens={[]}\n selectedTokens={[]}\n onChange={(selection) => {\n const newSelections = selection.map((select) => {\n const token = model.tokens.find(({ start, end }) => select.start === start && select.end === end);\n\n // needed for getScore when tokens position is recalculated, to keep oldStart and oldEnd\n if (token) {\n return token;\n }\n\n return select;\n });\n\n onSelectionChange(newSelections);\n }}\n highlightChoices={model.highlightChoices}\n maxNoOfSelections={model.maxSelections}\n animationsDisabled={model.animationsDisabled}\n />\n {mode === 'evaluate' && <Legend language={model.language} showOnlyCorrect={showCorrectAnswer} />}\n\n {showRationale &&\n (!model.animationsDisabled ? (\n <Collapsible\n labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}\n className={classes.collapsible}\n >\n <PreviewPrompt prompt={model.rationale} />\n </Collapsible>\n ) : (\n <div className={classes.prompt}>\n <PreviewPrompt prompt={model.rationale} />\n </div>\n ))}\n\n {model.correctness && model.feedback && !showCorrectAnswer && (\n <Feedback correctness={model.correctness} feedback={model.feedback} />\n )}\n </UiLayout>\n );\n }\n}\n\nconst StyledMain = withStyles((theme) => ({\n mainContainer: {\n color: color.text(),\n backgroundColor: color.background(),\n },\n textSelect: {\n marginBottom: theme.spacing.unit,\n marginTop: theme.spacing.unit * 2,\n whiteSpace: 'normal',\n },\n prompt: {\n verticalAlign: 'middle',\n marginBottom: theme.spacing.unit,\n },\n collapsible: {\n marginBottom: theme.spacing.unit * 2,\n },\n token: {\n position: 'relative',\n cursor: 'pointer',\n border: 'dashed 2px grey',\n lineHeight: '24px',\n\n '&:hover': {\n backgroundColor: '#9fa8da',\n },\n\n '&.selected': {\n backgroundColor: '#9fa8da',\n border: 'none',\n },\n },\n}))(Main);\n\nexport default class Stateful extends React.Component {\n static propTypes = Types;\n\n constructor(props) {\n super(props);\n this.state = {\n model: props.model,\n session: props.session,\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n this.setState({ model: nextProps.model, session: nextProps.session });\n }\n\n change = (selectedTokens) => {\n const session = { ...this.state.session, selectedTokens };\n this.setState({ session }, () => {\n this.props.onSelectionChange(this.state.session.selectedTokens);\n });\n };\n\n render() {\n const { model, session } = this.state;\n return <StyledMain model={model} session={session} onSelectionChange={this.change} />;\n }\n}\n"],"file":"main.js"}
1
+ {"version":3,"sources":["../src/main.jsx"],"names":["log","Types","model","PropTypes","object","session","onSelectionChange","func","isRequired","Main","props","setState","showCorrectAnswer","state","tokens","filter","t","correct","alwaysShowCorrect","nextProps","classes","env","extraCSSRules","mode","selectedTokens","correctAnswer","showRationale","rationale","showTeacherInstructions","teacherInstructions","mainContainer","animationsDisabled","hidden","visible","collapsible","prompt","disabled","incorrect","toggleShowCorrect","language","textSelect","text","selection","newSelections","map","select","token","find","start","end","highlightChoices","maxSelections","correctness","feedback","React","Component","StyledMain","theme","color","backgroundColor","background","marginBottom","spacing","unit","marginTop","whiteSpace","verticalAlign","Stateful","change"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { TextSelect, Legend } from '@pie-lib/text-select';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { color, Feedback, Collapsible, hasText, hasMedia, PreviewPrompt, UiLayout } from '@pie-lib/render-ui';\nimport { withStyles } from '@material-ui/core/styles';\nimport generateModel from './utils';\n\nimport debug from 'debug';\n\nconst log = debug('@pie-ui:select-text');\n\nconst Types = {\n model: PropTypes.object,\n session: PropTypes.object,\n onSelectionChange: PropTypes.func.isRequired,\n};\n\nexport class Main extends React.Component {\n static propTypes = { ...Types, classes: PropTypes.object.isRequired };\n\n static defaultProps = {};\n\n constructor(props) {\n super(props);\n\n this.state = {\n showCorrectAnswer: this.props.model.alwaysShowCorrect || false,\n model: generateModel(props.model),\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n this.setState({\n showCorrectAnswer: !!nextProps.model.alwaysShowCorrect,\n model: generateModel(nextProps.model),\n });\n }\n\n toggleShowCorrect = () => {\n this.setState({ showCorrectAnswer: !this.state.showCorrectAnswer });\n };\n\n correctAnswer = () => {\n const { model } = this.state;\n\n return model.tokens.filter((t) => t.correct);\n };\n\n render() {\n const { session, onSelectionChange, classes } = this.props;\n const { showCorrectAnswer, model } = this.state;\n const { env, extraCSSRules } = model;\n const { mode } = env || {};\n\n const selectedTokens = showCorrectAnswer ? this.correctAnswer() : session.selectedTokens;\n const showRationale = model.rationale && (hasText(model.rationale) || hasMedia(model.rationale));\n const showTeacherInstructions =\n model.teacherInstructions && (hasText(model.teacherInstructions) || hasMedia(model.teacherInstructions));\n\n log('[render] selectedTokens:', selectedTokens);\n\n return (\n <UiLayout extraCSSRules={extraCSSRules} className={classes.mainContainer}>\n {showTeacherInstructions &&\n (!model.animationsDisabled ? (\n <Collapsible\n labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}\n className={classes.collapsible}\n >\n <PreviewPrompt prompt={model.teacherInstructions} />\n </Collapsible>\n ) : (\n <div className={classes.prompt}>\n <PreviewPrompt prompt={model.teacherInstructions} />\n </div>\n ))}\n\n <div className={classes.prompt}>\n <PreviewPrompt prompt={model.prompt} />\n </div>\n\n {!model.alwaysShowCorrect && (\n <CorrectAnswerToggle\n show={model.disabled && model.incorrect}\n toggled={showCorrectAnswer}\n onToggle={this.toggleShowCorrect}\n language={model.language}\n />\n )}\n\n <TextSelect\n className={classes.textSelect}\n disabled={model.disabled}\n text={model.text}\n tokens={model.tokens}\n selectedTokens={selectedTokens}\n onChange={(selection) => {\n const newSelections = selection.map((select) => {\n const token = model.tokens.find(({ start, end }) => select.start === start && select.end === end);\n\n // needed for getScore when tokens position is recalculated, to keep oldStart and oldEnd\n if (token) {\n return token;\n }\n\n return select;\n });\n\n onSelectionChange(newSelections);\n }}\n highlightChoices={model.highlightChoices}\n maxNoOfSelections={model.maxSelections}\n animationsDisabled={model.animationsDisabled}\n />\n {mode === 'evaluate' && <Legend language={model.language} showOnlyCorrect={showCorrectAnswer} />}\n\n {showRationale &&\n (!model.animationsDisabled ? (\n <Collapsible\n labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}\n className={classes.collapsible}\n >\n <PreviewPrompt prompt={model.rationale} />\n </Collapsible>\n ) : (\n <div className={classes.prompt}>\n <PreviewPrompt prompt={model.rationale} />\n </div>\n ))}\n\n {model.correctness && model.feedback && !showCorrectAnswer && (\n <Feedback correctness={model.correctness} feedback={model.feedback} />\n )}\n </UiLayout>\n );\n }\n}\n\nconst StyledMain = withStyles((theme) => ({\n mainContainer: {\n color: color.text(),\n backgroundColor: color.background(),\n },\n textSelect: {\n marginBottom: theme.spacing.unit,\n marginTop: theme.spacing.unit * 2,\n whiteSpace: 'normal',\n },\n prompt: {\n verticalAlign: 'middle',\n marginBottom: theme.spacing.unit,\n },\n collapsible: {\n marginBottom: theme.spacing.unit * 2,\n },\n}))(Main);\n\nexport default class Stateful extends React.Component {\n static propTypes = Types;\n\n constructor(props) {\n super(props);\n this.state = {\n model: props.model,\n session: props.session,\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n this.setState({ model: nextProps.model, session: nextProps.session });\n }\n\n change = (selectedTokens) => {\n const session = { ...this.state.session, selectedTokens };\n this.setState({ session }, () => {\n this.props.onSelectionChange(this.state.session.selectedTokens);\n });\n };\n\n render() {\n const { model, session } = this.state;\n return <StyledMain model={model} session={session} onSelectionChange={this.change} />;\n }\n}\n"],"file":"main.js"}
package/lib/print.js CHANGED
@@ -29,7 +29,7 @@ var _debounce = _interopRequireDefault(require("lodash/debounce"));
29
29
 
30
30
  var _main = _interopRequireDefault(require("./main"));
31
31
 
32
- var _mathRendering = require("@pie-lib/pie-toolbox/math-rendering");
32
+ var _mathRendering = require("@pie-lib/math-rendering");
33
33
 
34
34
  var _debug = _interopRequireDefault(require("debug"));
35
35
 
package/lib/print.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/print.js"],"names":["log","preparePrintModel","model","opts","instr","role","prompt","promptEnabled","undefined","teacherInstructions","teacherInstructionsEnabled","rationale","rationaleEnabled","showTeacherInstructions","alwaysShowCorrect","mode","disabled","animationsDisabled","highlightChoices","feedback","SelectTextPrint","_options","_model","_session","selectedTokens","_rerender","printModel","element","React","createElement","Main","session","onSelectionChange","ReactDOM","render","leading","trailing","o","s","HTMLElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,+BAAN,CAAZ;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,KAAD,EAAQC,IAAR,EAAiB;AACzC,MAAMC,KAAK,GAAGD,IAAI,CAACE,IAAL,KAAc,YAA5B;AAEAH,EAAAA,KAAK,CAACI,MAAN,GAAeJ,KAAK,CAACK,aAAN,KAAwB,KAAxB,GAAgCL,KAAK,CAACI,MAAtC,GAA+CE,SAA9D;AACAN,EAAAA,KAAK,CAACO,mBAAN,GACEL,KAAK,IAAIF,KAAK,CAACQ,0BAAN,KAAqC,KAA9C,GAAsDR,KAAK,CAACO,mBAA5D,GAAkFD,SADpF;AAEAN,EAAAA,KAAK,CAACS,SAAN,GAAkBP,KAAK,IAAIF,KAAK,CAACU,gBAAN,KAA2B,KAApC,GAA4CV,KAAK,CAACS,SAAlD,GAA8DH,SAAhF;AACAN,EAAAA,KAAK,CAACW,uBAAN,GAAgCT,KAAhC;AACAF,EAAAA,KAAK,CAACY,iBAAN,GAA0BV,KAA1B;AACAF,EAAAA,KAAK,CAACa,IAAN,GAAaX,KAAK,GAAG,UAAH,GAAgBF,KAAK,CAACa,IAAxC;AAEAb,EAAAA,KAAK,CAACc,QAAN,GAAiB,IAAjB;AACAd,EAAAA,KAAK,CAACe,kBAAN,GAA2B,IAA3B;AACAf,EAAAA,KAAK,CAACgB,gBAAN,GAAyB,IAAzB;AACAhB,EAAAA,KAAK,CAACiB,QAAN,GAAiBX,SAAjB;AAEA,SAAON,KAAP;AACD,CAjBD;;IAmBqBkB,e;;;;;AACnB,6BAAc;AAAA;;AAAA;AACZ;AACA,UAAKC,QAAL,GAAgB,IAAhB;AACA,UAAKC,MAAL,GAAc,IAAd;AACA,UAAKC,QAAL,GAAgB,EAAhB;AACA,UAAKA,QAAL,CAAcC,cAAd,GAA+B,EAA/B;AACA,UAAKC,SAAL,GAAiB,0BACf,YAAM;AACJ,UAAI,MAAKH,MAAL,IAAe,MAAKC,QAAxB,EAAkC;AAChC,YAAMG,UAAU,GAAGzB,iBAAiB,CAAC,MAAKqB,MAAN,EAAc,MAAKD,QAAnB,CAApC;;AAEA,YAAMM,OAAO,GACX,MAAKN,QAAL,iBACAO,kBAAMC,aAAN,CAAoBC,gBAApB,EAA0B;AACxB5B,UAAAA,KAAK,EAAEwB,UADiB;AAExBK,UAAAA,OAAO,EAAE;AAAEP,YAAAA,cAAc,EAAE;AAAlB,WAFe;AAGxBQ,UAAAA,iBAAiB,EAAE,6BAAM,CAAE;AAHH,SAA1B,CAFF;;AAQAC,6BAASC,MAAT,CAAgBP,OAAhB,kDAA+B,YAAM;AACnC3B,UAAAA,GAAG,CAAC,+BAAD,CAAH;AACA;AACD,SAHD;AAID,OAfD,MAeO;AACLA,QAAAA,GAAG,CAAC,MAAD,CAAH;AACD;AACF,KApBc,EAqBf,EArBe,EAsBf;AAAEmC,MAAAA,OAAO,EAAE,KAAX;AAAkBC,MAAAA,QAAQ,EAAE;AAA5B,KAtBe,CAAjB;AANY;AA8Bb;;;;SACD,aAAYC,CAAZ,EAAe;AACb,WAAKhB,QAAL,GAAgBgB,CAAhB;AACD;;;SAED,aAAUC,CAAV,EAAa;AACX,WAAKhB,MAAL,GAAcgB,CAAd;;AACA,WAAKb,SAAL;AACD;;;WAED,6BAAoB,CAAE;;;kDAzCqBc,W","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport debounce from 'lodash/debounce';\nimport Main from './main';\nimport { renderMath } from '@pie-lib/pie-toolbox/math-rendering';\nimport debug from 'debug';\n\nconst log = debug('pie-element:select-text:print');\n\n/**\n * Live in same package as main element - so we can access some of the shared comps!\n *\n * - update pslb to build print if src/print.js is there\n * - update demo el\n * - get configure/controller building\n */\n\nconst preparePrintModel = (model, opts) => {\n const instr = opts.role === 'instructor';\n\n model.prompt = model.promptEnabled !== false ? model.prompt : undefined;\n model.teacherInstructions =\n instr && model.teacherInstructionsEnabled !== false ? model.teacherInstructions : undefined;\n model.rationale = instr && model.rationaleEnabled !== false ? model.rationale : undefined;\n model.showTeacherInstructions = instr;\n model.alwaysShowCorrect = instr;\n model.mode = instr ? 'evaluate' : model.mode;\n\n model.disabled = true;\n model.animationsDisabled = true;\n model.highlightChoices = true;\n model.feedback = undefined;\n\n return model;\n};\n\nexport default class SelectTextPrint extends HTMLElement {\n constructor() {\n super();\n this._options = null;\n this._model = null;\n this._session = {};\n this._session.selectedTokens = [];\n this._rerender = debounce(\n () => {\n if (this._model && this._session) {\n const printModel = preparePrintModel(this._model, this._options);\n\n const element =\n this._options &&\n React.createElement(Main, {\n model: printModel,\n session: { selectedTokens: [] },\n onSelectionChange: () => {},\n });\n\n ReactDOM.render(element, this, () => {\n log('render complete - render math');\n renderMath(this);\n });\n } else {\n log('skip');\n }\n },\n 50,\n { leading: false, trailing: true },\n );\n }\n set options(o) {\n this._options = o;\n }\n\n set model(s) {\n this._model = s;\n this._rerender();\n }\n\n connectedCallback() {}\n}\n"],"file":"print.js"}
1
+ {"version":3,"sources":["../src/print.js"],"names":["log","preparePrintModel","model","opts","instr","role","prompt","promptEnabled","undefined","teacherInstructions","teacherInstructionsEnabled","rationale","rationaleEnabled","showTeacherInstructions","alwaysShowCorrect","mode","disabled","animationsDisabled","highlightChoices","feedback","SelectTextPrint","_options","_model","_session","selectedTokens","_rerender","printModel","element","React","createElement","Main","session","onSelectionChange","ReactDOM","render","leading","trailing","o","s","HTMLElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,+BAAN,CAAZ;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,KAAD,EAAQC,IAAR,EAAiB;AACzC,MAAMC,KAAK,GAAGD,IAAI,CAACE,IAAL,KAAc,YAA5B;AAEAH,EAAAA,KAAK,CAACI,MAAN,GAAeJ,KAAK,CAACK,aAAN,KAAwB,KAAxB,GAAgCL,KAAK,CAACI,MAAtC,GAA+CE,SAA9D;AACAN,EAAAA,KAAK,CAACO,mBAAN,GACEL,KAAK,IAAIF,KAAK,CAACQ,0BAAN,KAAqC,KAA9C,GAAsDR,KAAK,CAACO,mBAA5D,GAAkFD,SADpF;AAEAN,EAAAA,KAAK,CAACS,SAAN,GAAkBP,KAAK,IAAIF,KAAK,CAACU,gBAAN,KAA2B,KAApC,GAA4CV,KAAK,CAACS,SAAlD,GAA8DH,SAAhF;AACAN,EAAAA,KAAK,CAACW,uBAAN,GAAgCT,KAAhC;AACAF,EAAAA,KAAK,CAACY,iBAAN,GAA0BV,KAA1B;AACAF,EAAAA,KAAK,CAACa,IAAN,GAAaX,KAAK,GAAG,UAAH,GAAgBF,KAAK,CAACa,IAAxC;AAEAb,EAAAA,KAAK,CAACc,QAAN,GAAiB,IAAjB;AACAd,EAAAA,KAAK,CAACe,kBAAN,GAA2B,IAA3B;AACAf,EAAAA,KAAK,CAACgB,gBAAN,GAAyB,IAAzB;AACAhB,EAAAA,KAAK,CAACiB,QAAN,GAAiBX,SAAjB;AAEA,SAAON,KAAP;AACD,CAjBD;;IAmBqBkB,e;;;;;AACnB,6BAAc;AAAA;;AAAA;AACZ;AACA,UAAKC,QAAL,GAAgB,IAAhB;AACA,UAAKC,MAAL,GAAc,IAAd;AACA,UAAKC,QAAL,GAAgB,EAAhB;AACA,UAAKA,QAAL,CAAcC,cAAd,GAA+B,EAA/B;AACA,UAAKC,SAAL,GAAiB,0BACf,YAAM;AACJ,UAAI,MAAKH,MAAL,IAAe,MAAKC,QAAxB,EAAkC;AAChC,YAAMG,UAAU,GAAGzB,iBAAiB,CAAC,MAAKqB,MAAN,EAAc,MAAKD,QAAnB,CAApC;;AAEA,YAAMM,OAAO,GACX,MAAKN,QAAL,iBACAO,kBAAMC,aAAN,CAAoBC,gBAApB,EAA0B;AACxB5B,UAAAA,KAAK,EAAEwB,UADiB;AAExBK,UAAAA,OAAO,EAAE;AAAEP,YAAAA,cAAc,EAAE;AAAlB,WAFe;AAGxBQ,UAAAA,iBAAiB,EAAE,6BAAM,CAAE;AAHH,SAA1B,CAFF;;AAQAC,6BAASC,MAAT,CAAgBP,OAAhB,kDAA+B,YAAM;AACnC3B,UAAAA,GAAG,CAAC,+BAAD,CAAH;AACA;AACD,SAHD;AAID,OAfD,MAeO;AACLA,QAAAA,GAAG,CAAC,MAAD,CAAH;AACD;AACF,KApBc,EAqBf,EArBe,EAsBf;AAAEmC,MAAAA,OAAO,EAAE,KAAX;AAAkBC,MAAAA,QAAQ,EAAE;AAA5B,KAtBe,CAAjB;AANY;AA8Bb;;;;SACD,aAAYC,CAAZ,EAAe;AACb,WAAKhB,QAAL,GAAgBgB,CAAhB;AACD;;;SAED,aAAUC,CAAV,EAAa;AACX,WAAKhB,MAAL,GAAcgB,CAAd;;AACA,WAAKb,SAAL;AACD;;;WAED,6BAAoB,CAAE;;;kDAzCqBc,W","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport debounce from 'lodash/debounce';\nimport Main from './main';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport debug from 'debug';\n\nconst log = debug('pie-element:select-text:print');\n\n/**\n * Live in same package as main element - so we can access some of the shared comps!\n *\n * - update pslb to build print if src/print.js is there\n * - update demo el\n * - get configure/controller building\n */\n\nconst preparePrintModel = (model, opts) => {\n const instr = opts.role === 'instructor';\n\n model.prompt = model.promptEnabled !== false ? model.prompt : undefined;\n model.teacherInstructions =\n instr && model.teacherInstructionsEnabled !== false ? model.teacherInstructions : undefined;\n model.rationale = instr && model.rationaleEnabled !== false ? model.rationale : undefined;\n model.showTeacherInstructions = instr;\n model.alwaysShowCorrect = instr;\n model.mode = instr ? 'evaluate' : model.mode;\n\n model.disabled = true;\n model.animationsDisabled = true;\n model.highlightChoices = true;\n model.feedback = undefined;\n\n return model;\n};\n\nexport default class SelectTextPrint extends HTMLElement {\n constructor() {\n super();\n this._options = null;\n this._model = null;\n this._session = {};\n this._session.selectedTokens = [];\n this._rerender = debounce(\n () => {\n if (this._model && this._session) {\n const printModel = preparePrintModel(this._model, this._options);\n\n const element =\n this._options &&\n React.createElement(Main, {\n model: printModel,\n session: { selectedTokens: [] },\n onSelectionChange: () => {},\n });\n\n ReactDOM.render(element, this, () => {\n log('render complete - render math');\n renderMath(this);\n });\n } else {\n log('skip');\n }\n },\n 50,\n { leading: false, trailing: true },\n );\n }\n set options(o) {\n this._options = o;\n }\n\n set model(s) {\n this._model = s;\n this._rerender();\n }\n\n connectedCallback() {}\n}\n"],"file":"print.js"}