@pie-element/math-inline 7.9.1-next.25 → 7.10.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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [7.10.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-inline@7.9.0...@pie-element/math-inline@7.10.0) (2024-03-26)
7
+
8
+
9
+ ### Features
10
+
11
+ * extended the function that was searching for the data-keypad attribute PD-3593 ([b75c0e7](https://github.com/pie-framework/pie-elements/commit/b75c0e78bdce93db1ba5350b5c55572411e78eea))
12
+
13
+
14
+
15
+
16
+
6
17
  # [7.9.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-inline@7.8.0...@pie-element/math-inline@7.9.0) (2024-03-20)
7
18
 
8
19
 
@@ -11,7 +11,7 @@
11
11
  "@material-ui/icons": "^3.0.1",
12
12
  "@pie-framework/mathquill": "^1.1.3",
13
13
  "@pie-framework/pie-configure-events": "^1.3.0",
14
- "@pie-lib/pie-toolbox": "1.12.0",
14
+ "@pie-lib/pie-toolbox": "1.11.1",
15
15
  "classnames": "^2.2.5",
16
16
  "debug": "^3.1.0",
17
17
  "prop-types": "^15.6.2",
@@ -10,7 +10,7 @@
10
10
  },
11
11
  "dependencies": {
12
12
  "@pie-framework/math-validation": "^1.2.2",
13
- "@pie-lib/pie-toolbox": "1.12.0",
13
+ "@pie-lib/pie-toolbox": "1.11.1",
14
14
  "debug": "^3.1.0",
15
15
  "lodash": "^4.17.15"
16
16
  },
package/lib/main.js CHANGED
@@ -31,7 +31,7 @@ var _mathInput = require("@pie-lib/pie-toolbox/math-input");
31
31
 
32
32
  var _renderUi = require("@pie-lib/pie-toolbox/render-ui");
33
33
 
34
- var _mathRenderingAccessible = require("@pie-lib/pie-toolbox/math-rendering-accessible");
34
+ var _mathRendering = require("@pie-lib/pie-toolbox/math-rendering");
35
35
 
36
36
  var _styles = require("@material-ui/core/styles");
37
37
 
@@ -63,7 +63,13 @@ var translator = _translator["default"].translator;
63
63
  var registered = false;
64
64
  var NEWLINE_LATEX = /\\newline/g;
65
65
  var REGEX = /{{response}}/gm;
66
- var DEFAULT_KEYPAD_VARIANT = 6;
66
+ var DEFAULT_KEYPAD_VARIANT = 6; // !!! If you're using Chrome but have selected the "iPad" device in Chrome Developer Tools, the navigator.userAgent string may still report as
67
+ // Safari because Chrome on iOS actually uses the Safari rendering engine under the hood due to Apple's restrictions on third-party browser engines.
68
+ // When you select the "iPad" device in Chrome Developer Tools, you're essentially emulating the behavior of Safari on an iPad, including the user agent string.
69
+ // Therefore, even though you're using Chrome, the user agent string will resemble that of Safari on an iPad.
70
+ // Since the regular expression /^((?!chrome|android).)*safari/i checks for the presence of "safari" in the user agent string while excluding "chrome" and "android",
71
+ // it will return true in this case because "safari" is present in the user agent string emulated by Chrome when in iPad mode.
72
+
67
73
  var IS_SAFARI = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
68
74
 
69
75
  function generateAdditionalKeys() {
@@ -173,7 +179,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
173
179
  });
174
180
  }
175
181
 
176
- (0, _mathRenderingAccessible.renderMath)(_this.root);
182
+ (0, _mathRendering.renderMath)(_this.root);
177
183
  });
178
184
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "updateAria", function () {
179
185
  if (_this.root) {
@@ -295,17 +301,60 @@ var Main = /*#__PURE__*/function (_React$Component) {
295
301
  }
296
302
  });
297
303
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onBlur", function (e) {
298
- var _relatedTarget$offset, _relatedTarget$offset2, _relatedTarget$offset3, _relatedTarget$offset4, _relatedTarget$offset5, _relatedTarget$offset6, _relatedTarget$offset7;
299
-
300
304
  var _ref3 = e || {},
301
305
  relatedTarget = _ref3.relatedTarget,
302
306
  currentTarget = _ref3.currentTarget;
303
307
 
304
- if (!relatedTarget || !currentTarget || !IS_SAFARI && !(relatedTarget !== null && relatedTarget !== void 0 && (_relatedTarget$offset = relatedTarget.offsetParent) !== null && _relatedTarget$offset !== void 0 && (_relatedTarget$offset2 = _relatedTarget$offset.children[0]) !== null && _relatedTarget$offset2 !== void 0 && (_relatedTarget$offset3 = _relatedTarget$offset2.attributes) !== null && _relatedTarget$offset3 !== void 0 && _relatedTarget$offset3['data-keypad']) || IS_SAFARI && !(relatedTarget !== null && relatedTarget !== void 0 && (_relatedTarget$offset4 = relatedTarget.offsetParent) !== null && _relatedTarget$offset4 !== void 0 && (_relatedTarget$offset5 = _relatedTarget$offset4.children[0]) !== null && _relatedTarget$offset5 !== void 0 && (_relatedTarget$offset6 = _relatedTarget$offset5.children[0]) !== null && _relatedTarget$offset6 !== void 0 && (_relatedTarget$offset7 = _relatedTarget$offset6.attributes) !== null && _relatedTarget$offset7 !== void 0 && _relatedTarget$offset7['data-keypad'])) {
308
+ function getParentWithRoleTooltip(element) {
309
+ var depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
310
+ // only run this max 16 times
311
+ if (!element || depth >= 16) return null;
312
+ var parent = element.offsetParent;
313
+ if (!parent) return null;
314
+
315
+ if (parent.getAttribute('role') === 'tooltip') {
316
+ return parent;
317
+ }
318
+
319
+ return getParentWithRoleTooltip(parent, depth + 1);
320
+ }
321
+
322
+ function getDeepChildDataKeypad(element) {
323
+ var _element$children;
324
+
325
+ var depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
326
+ // only run this max 4 times
327
+ if (!element || depth >= 4) return null;
328
+ var child = element === null || element === void 0 ? void 0 : (_element$children = element.children) === null || _element$children === void 0 ? void 0 : _element$children[0];
329
+ if (!child) return null;
330
+
331
+ if (child.attributes && child.attributes['data-keypad']) {
332
+ return child;
333
+ }
334
+
335
+ return getDeepChildDataKeypad(child, depth + 1);
336
+ }
337
+
338
+ var parentWithTooltipRole = getParentWithRoleTooltip(relatedTarget);
339
+ var childWithDataKeypad = parentWithTooltipRole ? getDeepChildDataKeypad(parentWithTooltipRole) : null;
340
+
341
+ if (!relatedTarget || !currentTarget || !(childWithDataKeypad !== null && childWithDataKeypad !== void 0 && childWithDataKeypad.attributes['data-keypad'])) {
305
342
  _this.setState({
306
343
  activeAnswerBlock: ''
307
344
  });
308
- }
345
+ } // else {
346
+ // // Just for debugging purpose:
347
+ // console.log('\n\nNew childWithDataKeypad', childWithDataKeypad);
348
+ //
349
+ // if (IS_SAFARI) {
350
+ // // (IS_SAFARI && !relatedTarget?.offsetParent?.children[0]?.children[0]?.attributes?.['data-keypad'])
351
+ // console.log('What was being used', relatedTarget?.offsetParent?.children[0]?.children[0]);
352
+ // } else {
353
+ // // (!IS_SAFARI && !relatedTarget?.offsetParent?.children[0]?.attributes?.['data-keypad']) ||
354
+ // console.log('What was being used', relatedTarget?.offsetParent?.children[0]);
355
+ // }
356
+ // }
357
+
309
358
  });
310
359
  var _answers = {};
311
360
 
@@ -439,7 +488,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
439
488
  this.handleAnswerBlockDomUpdate();
440
489
  this.updateAria();
441
490
  setTimeout(function () {
442
- return (0, _mathRenderingAccessible.renderMath)(_this3.root);
491
+ return (0, _mathRendering.renderMath)(_this3.root);
443
492
  }, 100);
444
493
  }
445
494
  }, {
package/lib/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/main.jsx"],"names":["translator","Translator","registered","NEWLINE_LATEX","REGEX","DEFAULT_KEYPAD_VARIANT","IS_SAFARI","test","navigator","userAgent","generateAdditionalKeys","keyData","map","key","name","latex","write","label","getKeyPadWidth","additionalKeys","equationEditor","Math","floor","length","prepareForStatic","model","state","config","disabled","expression","responses","printMode","alwaysShowCorrect","modelExpression","showCorrect","answer","answerBlocks","replace","session","answers","blankSpace","repeat","value","Main","props","classes","root","Object","keys","forEach","answerId","el","querySelector","indexEl","MQ","MathQuill","getInterface","textContent","view","parentElement","classList","remove","correct","incorrect","StaticMath","selectableElements","querySelectorAll","elem","setAttribute","textareaElements","response","setState","callOnSessionChange","id","activeAnswerBlock","data","type","input","c","toNodeData","clear","Array","isArray","vv","cmd","keystroke","focus","onSessionChange","show","handleAnswerBlockDomUpdate","subfieldValue","completeAnswer","mqStatic","mathField","changeField","fields","find","k","tf","e","relatedTarget","currentTarget","offsetParent","children","attributes","window","registerEmbed","htmlString","blockContainer","blockResponse","blockMath","text","pattern","matches","match","nextProps","nextConfig","note","language","t","lng","env","mode","countResponseOccurrences","setTimeout","updateAria","newAnswers","nextState","sameModel","sameState","ref","div","document","firstChild","correctness","teacherInstructions","rationale","feedback","animationsDisabled","showNote","prompt","responseType","customKeys","role","displayNote","emptyResponse","showCorrectAnswerToggle","tooltipModeEnabled","staticLatex","viewMode","studentPrintMode","printView","printContainer","subFieldChanged","getFieldName","setInput","onSubFieldFocus","onBlur","midContent","main","srOnly","collapsible","hidden","visible","__html","promptContainer","inputAndKeypadContainer","ResponseTypes","simple","onSimpleResponseChange","advanced","showCorrectness","correctAnswerShown","printCorrect","setTooltipRef","tooltip","keypadTooltip","popper","keypadTooltipPopper","responseContainer","width","onClick","tooltipPopper","toggle","toggleShowCorrect","mainContainer","r","React","Component","PropTypes","object","isRequired","func","styles","theme","color","backgroundColor","background","display","primaryLight","padding","spacing","unit","border","secondary","fontSize","opacity","marginTop","paddingTop","marginBottom","position","title","paddingBottom","zIndex","minWidth","maxWidth","margin","top","borderColor","lineHeight","left","right","borderTop","letterSpacing","flex","palette","grey","alignItems","justifyContent","borderRight","pointerEvents","height","overflow"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;;;;;;;;;AACA,IAAQA,UAAR,GAAuBC,sBAAvB,CAAQD,UAAR;AACA,IAAIE,UAAU,GAAG,KAAjB;AAEA,IAAMC,aAAa,GAAG,YAAtB;AACA,IAAMC,KAAK,GAAG,gBAAd;AACA,IAAMC,sBAAsB,GAAG,CAA/B;AAEA,IAAMC,SAAS,GAAG,iCAAiCC,IAAjC,CAAsCC,SAAS,CAACC,SAAhD,CAAlB;;AAEA,SAASC,sBAAT,GAA8C;AAAA,MAAdC,OAAc,uEAAJ,EAAI;AAC5C,SAAOA,OAAO,CAACC,GAAR,CAAY,UAACC,GAAD;AAAA,WAAU;AAC3BC,MAAAA,IAAI,EAAED,GADqB;AAE3BE,MAAAA,KAAK,EAAEF,GAFoB;AAG3BG,MAAAA,KAAK,EAAEH,GAHoB;AAI3BI,MAAAA,KAAK,EAAEJ;AAJoB,KAAV;AAAA,GAAZ,CAAP;AAMD;;AAED,SAASK,cAAT,GAA6D;AAAA,MAArCC,cAAqC,uEAApB,EAAoB;AAAA,MAAhBC,cAAgB;AAC3D,SAAOC,IAAI,CAACC,KAAL,CAAWH,cAAc,CAACI,MAAf,GAAwB,CAAnC,IAAwC,EAAxC,IAA8CH,cAAc,KAAK,eAAnB,GAAqC,GAArC,GAA2C,GAAzF,CAAP;AACD;;AAED,SAASI,gBAAT,CAA0BC,KAA1B,EAAiCC,KAAjC,EAAwC;AACtC,aAA6BD,KAAK,IAAI,EAAtC;AAAA,MAAQE,MAAR,QAAQA,MAAR;AAAA,MAAgBC,QAAhB,QAAgBA,QAAhB;;AACA,cAAgED,MAAM,IAAI,EAA1E;AAAA,MAAQE,UAAR,SAAQA,UAAR;AAAA,MAAoBC,SAApB,SAAoBA,SAApB;AAAA,MAA+BC,SAA/B,SAA+BA,SAA/B;AAAA,MAA0CC,iBAA1C,SAA0CA,iBAA1C;;AAEA,MAAIL,MAAM,IAAIE,UAAd,EAA0B;AACxB,QAAMI,eAAe,GAAGJ,UAAxB;;AAEA,QAAIH,KAAK,CAACQ,WAAV,EAAuB;AACrB,aAAOJ,SAAS,IAAIA,SAAS,CAACP,MAAvB,IAAiCO,SAAS,CAAC,CAAD,CAAT,CAAaK,MAArD;AACD;;AAED,QAAIC,YAAY,GAAG,CAAnB,CAPwB,CAOF;AACtB;;AAEA,WAAO,CAACH,eAAe,IAAI,EAApB,EACJI,OADI,CACIjC,KADJ,EACW,YAAY;AAC1B,UAAM+B,MAAM,GAAGT,KAAK,CAACY,OAAN,CAAcC,OAAd,YAA0BH,YAA1B,EAAf;;AAEA,UAAIL,SAAS,IAAI,CAACC,iBAAlB,EAAqC;AACnC,YAAMQ,UAAU,GAAG,SAASC,MAAT,CAAgB,EAAhB,IAAsB,YAAzC;AAEA,+CAAgCL,YAAY,EAA5C,eAAmDI,UAAU,CAACC,MAAX,CAAkB,CAAlB,CAAnD;AACD;;AAED,UAAIb,QAAJ,EAAc;AACZ,+CAAgCQ,YAAY,EAA5C;AACD;;AAED,6CAAgCA,YAAY,EAA5C,eAAoDD,MAAM,IAAIA,MAAM,CAACO,KAAlB,IAA4B,EAA/E;AACD,KAfI,EAgBJL,OAhBI,CAgBIlC,aAhBJ,EAgBmB,oBAhBnB,CAAP;AAiBD;AACF;;IAEYwC,I;;;;;AAQX,gBAAYC,KAAZ,EAAmB;AAAA;;AAAA;AACjB,8BAAMA,KAAN;AADiB,mHAuDU,YAAM;AACjC,wBAA2B,MAAKA,KAAhC;AAAA,UAAQnB,KAAR,eAAQA,KAAR;AAAA,UAAeoB,OAAf,eAAeA,OAAf;AACA,wBAAiC,MAAKnB,KAAtC;AAAA,UAAQY,OAAR,eAAQA,OAAR;AAAA,UAAiBJ,WAAjB,eAAiBA,WAAjB;AACA,UAAMK,OAAO,GAAGD,OAAO,CAACC,OAAxB;;AAEA,UAAI,MAAKO,IAAL,IAAarB,KAAK,CAACG,QAAnB,IAA+B,CAACM,WAApC,EAAiD;AAC/Ca,QAAAA,MAAM,CAACC,IAAP,CAAYT,OAAZ,EAAqBU,OAArB,CAA6B,UAACC,QAAD,EAAc;AACzC,cAAMC,EAAE,GAAG,MAAKL,IAAL,CAAUM,aAAV,YAA4BF,QAA5B,EAAX;;AACA,cAAMG,OAAO,GAAG,MAAKP,IAAL,CAAUM,aAAV,YAA4BF,QAA5B,WAAhB,CAFyC,CAGzC;;;AAEA,cAAIC,EAAJ,EAAQ;AACN,gBAAIG,EAAE,GAAGC,sBAAUC,YAAV,CAAuB,CAAvB,CAAT;;AACA,gBAAMrB,MAAM,GAAGI,OAAO,CAACW,QAAD,CAAtB;AAEAC,YAAAA,EAAE,CAACM,WAAH,GAAkBtB,MAAM,IAAIA,MAAM,CAACO,KAAlB,IAA4B,EAA7C;;AAEA,gBAAI,CAACjB,KAAK,CAACiC,IAAX,EAAiB,CACf;AACA;AACA;AACA;AACA;AACD,aAND,MAMO;AACLP,cAAAA,EAAE,CAACQ,aAAH,CAAiBA,aAAjB,CAA+BC,SAA/B,CAAyCC,MAAzC,CAAgDhB,OAAO,CAACiB,OAAxD;AACAX,cAAAA,EAAE,CAACQ,aAAH,CAAiBA,aAAjB,CAA+BC,SAA/B,CAAyCC,MAAzC,CAAgDhB,OAAO,CAACkB,SAAxD;AACD;;AAEDT,YAAAA,EAAE,CAACU,UAAH,CAAcb,EAAd,EAjBM,CAmBN;AACA;AACA;;AACAE,YAAAA,OAAO,CAACI,WAAR,GAAsB,GAAtB;AACD;AACF,SA7BD;AA8BD;;AAED,+CAAW,MAAKX,IAAhB;AACD,KA9FkB;AAAA,mGAmLN,YAAM;AACjB,UAAI,MAAKA,IAAT,EAAe;AACb;AACA,YAAMmB,kBAAkB,GAAG,MAAKnB,IAAL,CAAUoB,gBAAV,CAA2B,gBAA3B,CAA3B;;AACAD,QAAAA,kBAAkB,CAAChB,OAAnB,CAA2B,UAAAkB,IAAI;AAAA,iBAAIA,IAAI,CAACC,YAAL,CAAkB,aAAlB,EAAiC,MAAjC,CAAJ;AAAA,SAA/B,EAHa,CAKb;;AACA,YAAMC,gBAAgB,GAAG,MAAKvB,IAAL,CAAUoB,gBAAV,CAA2B,UAA3B,CAAzB;;AACAG,QAAAA,gBAAgB,CAACpB,OAAjB,CAAyB,UAAAkB,IAAI,EAAI;AAC/BA,UAAAA,IAAI,CAACC,YAAL,CAAkB,YAAlB,EAAgC,qDAAhC;AACD,SAFD;AAGD;AACF,KA/LkB;AAAA,+FAiMV,YAAM,CAAE,CAjME;AAAA,+GAmMM,UAACE,QAAD,EAAc;AACrC,YAAKC,QAAL,CAAc,UAAC7C,KAAD;AAAA,eAAY;AAAEY,UAAAA,OAAO,kCAAOZ,KAAK,CAACY,OAAb;AAAsBgC,YAAAA,QAAQ,EAARA;AAAtB;AAAT,SAAZ;AAAA,OAAd,EAAwE,MAAKE,mBAA7E;AACD,KArMkB;AAAA,wGAuMD,UAACC,EAAD,EAAQ;AACxB,YAAKF,QAAL,CAAc;AAAEG,QAAAA,iBAAiB,EAAED;AAArB,OAAd;AACD,KAzMkB;AAAA,mGA2MN,UAACE,IAAD,EAAU;AACrB,UAAI,CAACA,IAAL,EAAW;AACT;AACD;;AAED,UAAQC,IAAR,GAAwBD,IAAxB,CAAQC,IAAR;AAAA,UAAclC,KAAd,GAAwBiC,IAAxB,CAAcjC,KAAd;;AAEA,UAAIkC,IAAI,KAAK,SAAT,IAAsBA,IAAI,KAAK,QAAnC,EAA6C;AAC3C,eAAOD,IAAP;AACD,OAFD,MAEO,IAAIC,IAAI,KAAK,QAAb,EAAuB;AAC5B;AAASA,UAAAA,IAAI,EAAE;AAAf,WAA4BD,IAA5B;AACD,OAFM,MAEA,IAAIjC,KAAK,KAAK,OAAd,EAAuB;AAC5B,eAAO;AAAEkC,UAAAA,IAAI,EAAE;AAAR,SAAP;AACD,OAFM,MAEA;AACL,eAAO;AAAEA,UAAAA,IAAI,EAAE,OAAR;AAAiBlC,UAAAA,KAAK,EAALA;AAAjB,SAAP;AACD;AACF,KA3NkB;AAAA,iGA6NR,UAACmC,KAAD,EAAW;AACpB,YAAKA,KAAL,GAAaA,KAAb;AACD,KA/NkB;AAAA,gGAiOT,UAACF,IAAD,EAAU;AAClB,UAAMG,CAAC,GAAG,MAAKC,UAAL,CAAgBJ,IAAhB,CAAV;;AAEA,UAAIG,CAAC,CAACF,IAAF,KAAW,OAAf,EAAwB;AACtB,cAAKC,KAAL,CAAWG,KAAX;AACD,OAFD,MAEO,IAAIF,CAAC,CAACF,IAAF,KAAW,SAAf,EAA0B;AAC/B,YAAIK,KAAK,CAACC,OAAN,CAAcJ,CAAC,CAACpC,KAAhB,CAAJ,EAA4B;AAC1BoC,UAAAA,CAAC,CAACpC,KAAF,CAAQO,OAAR,CAAgB,UAACkC,EAAD,EAAQ;AACtB,kBAAKN,KAAL,CAAWO,GAAX,CAAeD,EAAf;AACD,WAFD;AAGD,SAJD,MAIO;AACL,gBAAKN,KAAL,CAAWO,GAAX,CAAeN,CAAC,CAACpC,KAAjB;AACD;AACF,OARM,MAQA,IAAIoC,CAAC,CAACF,IAAF,KAAW,QAAf,EAAyB;AAC9B,cAAKC,KAAL,CAAWQ,SAAX,CAAqBP,CAAC,CAACpC,KAAvB;AACD,OAFM,MAEA;AACL,cAAKmC,KAAL,CAAW7D,KAAX,CAAiB8D,CAAC,CAACpC,KAAnB;AACD;;AAED,YAAKmC,KAAL,CAAWS,KAAX;AACD,KArPkB;AAAA,4GAuPG,YAAM;AAC1B,UAAQC,eAAR,GAA4B,MAAK3C,KAAjC,CAAQ2C,eAAR;;AAEA,UAAIA,eAAJ,EAAqB;AACnBA,QAAAA,eAAe,CAAC,MAAK7D,KAAL,CAAWY,OAAZ,CAAf;AACD;AACF,KA7PkB;AAAA,0GA+PC,UAACkD,IAAD,EAAU;AAC5B,YAAKjB,QAAL,CAAc;AAAErC,QAAAA,WAAW,EAAEsD;AAAf,OAAd,EAAqC,MAAKC,0BAA1C;AACD,KAjQkB;AAAA,wGAmQD,UAAC3E,IAAD,EAAO4E,aAAP,EAAyB;AACzC;;AAEA,UAAI5E,IAAJ,EAAU;AACR,cAAKyD,QAAL,CACE,UAAC7C,KAAD;AAAA,iBAAY;AACVY,YAAAA,OAAO,kCACFZ,KAAK,CAACY,OADJ;AAELqD,cAAAA,cAAc,EAAE,MAAKC,QAAL,IAAiB,MAAKA,QAAL,CAAcC,SAAd,CAAwB9E,KAAxB,EAF5B;AAGLwB,cAAAA,OAAO,kCACFb,KAAK,CAACY,OAAN,CAAcC,OADZ,4CAEJzB,IAFI,EAEG;AAAE4B,gBAAAA,KAAK,EAAEgD;AAAT,eAFH;AAHF;AADG,WAAZ;AAAA,SADF,EAWE,MAAKlB,mBAXP;AAaD;AACF,KArRkB;AAAA,qGAuRJ,UAACsB,WAAD,EAAcC,MAAd,EAAyB;AACtC,UAAQxD,OAAR,GAAoB,MAAKb,KAAL,CAAWY,OAA/B,CAAQC,OAAR;;AAEA,UAAIQ,MAAM,CAACC,IAAP,CAAYT,OAAO,IAAI,EAAvB,EAA2BhB,MAA/B,EAAuC;AACrC,YAAMyB,IAAI,GAAGD,MAAM,CAACC,IAAP,CAAYT,OAAZ,CAAb;AAEA,eAAOS,IAAI,CAACgD,IAAL,CAAU,UAACC,CAAD,EAAO;AACtB,cAAMC,EAAE,GAAGH,MAAM,CAACE,CAAD,CAAjB;AAEA,iBAAOC,EAAE,IAAIA,EAAE,CAACzB,EAAH,IAASqB,WAAW,CAACrB,EAAlC;AACD,SAJM,CAAP;AAKD;AACF,KAnSkB;AAAA,+FAqSV,UAAC0B,CAAD,EAAO;AAAA;;AACd,kBAAyCA,CAAC,IAAI,EAA9C;AAAA,UAAQC,aAAR,SAAQA,aAAR;AAAA,UAAuBC,aAAvB,SAAuBA,aAAvB;;AAEA,UACE,CAACD,aAAD,IACA,CAACC,aADD,IAEC,CAAC/F,SAAD,IAAc,EAAC8F,aAAD,aAACA,aAAD,wCAACA,aAAa,CAAEE,YAAhB,4EAAC,sBAA6BC,QAA7B,CAAsC,CAAtC,CAAD,6EAAC,uBAA0CC,UAA3C,mDAAC,uBAAuD,aAAvD,CAAD,CAFf,IAGClG,SAAS,IAAI,EAAC8F,aAAD,aAACA,aAAD,yCAACA,aAAa,CAAEE,YAAhB,6EAAC,uBAA6BC,QAA7B,CAAsC,CAAtC,CAAD,6EAAC,uBAA0CA,QAA1C,CAAmD,CAAnD,CAAD,6EAAC,uBAAuDC,UAAxD,mDAAC,uBAAoE,aAApE,CAAD,CAJhB,EAKE;AACA,cAAKjC,QAAL,CAAc;AAAEG,UAAAA,iBAAiB,EAAE;AAArB,SAAd;AACD;AACF,KAhTkB;AAGjB,QAAMnC,QAAO,GAAG,EAAhB;;AAEA,QAAIK,KAAK,CAACnB,KAAN,CAAYE,MAAZ,IAAsBiB,KAAK,CAACnB,KAAN,CAAYE,MAAZ,CAAmBE,UAA7C,EAAyD;AACvD,UAAIO,YAAY,GAAG,CAAnB,CADuD,CACjC;AACtB;;AAEA,OAACQ,KAAK,CAACnB,KAAN,CAAYE,MAAZ,CAAmBE,UAAnB,IAAiC,EAAlC,EAAsCQ,OAAtC,CAA8CjC,KAA9C,EAAqD,YAAM;AACzDmC,QAAAA,QAAO,YAAKH,YAAL,EAAP,GAA8B;AAC5BM,UAAAA,KAAK,EACFE,KAAK,CAACN,OAAN,IACCM,KAAK,CAACN,OAAN,CAAcC,OADf,IAECK,KAAK,CAACN,OAAN,CAAcC,OAAd,YAA0BH,YAA1B,EAFD,IAGCQ,KAAK,CAACN,OAAN,CAAcC,OAAd,YAA0BH,YAA1B,GAA0CM,KAH5C,IAIA;AAN0B,SAA9B;AASAN,QAAAA,YAAY,IAAI,CAAhB;AACD,OAXD;AAYD;;AAED,UAAKV,KAAL,GAAa;AACXY,MAAAA,OAAO,kCAAOM,KAAK,CAACN,OAAb;AAAsBC,QAAAA,OAAO,EAAPA;AAAtB,QADI;AAEXmC,MAAAA,iBAAiB,EAAE,EAFR;AAGXxC,MAAAA,WAAW,EAAE,MAAKU,KAAL,CAAWnB,KAAX,CAAiBE,MAAjB,CAAwBK,iBAAxB,IAA6C;AAH/C,KAAb;AAvBiB;AA4BlB;;;;WAED,qCAA4B;AAC1B,UAAQa,OAAR,GAAoB,KAAKD,KAAzB,CAAQC,OAAR;;AAEA,UAAI,OAAO4D,MAAP,KAAkB,WAAtB,EAAmC;AACjC,YAAInD,EAAE,GAAGC,sBAAUC,YAAV,CAAuB,CAAvB,CAAT;;AAEA,YAAI,CAACtD,UAAL,EAAiB;AACfoD,UAAAA,EAAE,CAACoD,aAAH,CAAiB,aAAjB,EAAgC,UAAC/B,IAAD,EAAU;AACxC,mBAAO;AACLgC,cAAAA,UAAU,yBAAiB9D,OAAO,CAAC+D,cAAzB,+CACQ/D,OAAO,CAACgE,aADhB,qBACsClC,IADtC,2DAEQ9B,OAAO,CAACiE,SAFhB,+CAGQnC,IAHR,6DADL;AAOLoC,cAAAA,IAAI,EAAE;AAAA,uBAAM,MAAN;AAAA,eAPD;AAQLhG,cAAAA,KAAK,EAAE;AAAA,sDAA8B4D,IAA9B;AAAA;AARF,aAAP;AAUD,WAXD;AAaAzE,UAAAA,UAAU,GAAG,IAAb;AACD;AACF;AACF;;;WA2CD,kCAAyB2B,UAAzB,EAAqC;AACnC,UAAMmF,OAAO,GAAG,mBAAhB;AACA,UAAMC,OAAO,GAAGpF,UAAU,CAACqF,KAAX,CAAiBF,OAAjB,CAAhB;AAEA,aAAOC,OAAO,GAAGA,OAAO,CAAC1F,MAAX,GAAoB,CAAlC;AACD;;;WAGD,0CAAiC4F,SAAjC,EAA4C;AAAA;;AAC1C,UAAQxF,MAAR,GAAmB,KAAKiB,KAAL,CAAWnB,KAA9B,CAAQE,MAAR;;AACA,kBAAoCwF,SAAS,CAAC1F,KAAV,IAAmB,EAAvD;AAAA,+BAAQE,MAAR;AAAA,UAAgByF,UAAhB,6BAA6B,EAA7B,gBAF0C,CAG1C;AACA;AACA;;;AACA,UACEzF,MAAM,CAAC0F,IAAP,IACA1F,MAAM,CAAC2F,QADP,IAEA3F,MAAM,CAAC2F,QAAP,KAAoBF,UAAU,CAACE,QAF/B,IAGA3F,MAAM,CAAC0F,IAAP,KAAgBrH,UAAU,CAACuH,CAAX,CAAa,yCAAb,EAAwD;AAAEC,QAAAA,GAAG,EAAE7F,MAAM,CAAC2F;AAAd,OAAxD,CAJlB,EAKE;AACA3F,QAAAA,MAAM,CAAC0F,IAAP,GAAcrH,UAAU,CAACuH,CAAX,CAAa,yCAAb,EAAwD;AAAEC,UAAAA,GAAG,EAAEJ,UAAU,CAACE;AAAlB,SAAxD,CAAd;AACD;;AAED,UAAK3F,MAAM,CAAC8F,GAAP,IAAc9F,MAAM,CAAC8F,GAAP,CAAWC,IAAX,KAAoB,UAAnC,IAAmDN,UAAU,CAACK,GAAX,IAAkBL,UAAU,CAACK,GAAX,CAAeC,IAAf,KAAwB,UAAjG,EAA8G;AAC5G,aAAKnD,QAAL,iCAAmB,KAAK7C,KAAL,CAAWY,OAA9B;AAAuCJ,UAAAA,WAAW,EAAE;AAApD;AACD;;AAED,UAAIkF,UAAU,CAACpF,iBAAf,EAAkC;AAChC,aAAKuC,QAAL,CAAc;AAAErC,UAAAA,WAAW,EAAE;AAAf,SAAd;AACD;;AAED,UAAG,KAAKyF,wBAAL,CAA8BhG,MAAM,CAACE,UAArC,IAAmD,KAAK8F,wBAAL,CAA8BP,UAAU,CAACvF,UAAzC,CAAtD,EAA4G;AAC1G+F,QAAAA,UAAU,CAAC;AAAA,iBAAM,MAAI,CAACC,UAAL,EAAN;AAAA,SAAD,EAA0B,GAA1B,CAAV;AACD;;AAED,UACGlG,MAAM,IAAIA,MAAM,CAACG,SAAjB,IAA8BH,MAAM,CAACG,SAAP,CAAiBP,MAAjB,KAA4B6F,UAAU,CAACtF,SAAX,CAAqBP,MAAhF,IACC,CAACI,MAAD,IAAWyF,UAAX,IAAyBA,UAAU,CAACtF,SADrC,IAECH,MAAM,IAAIyF,UAAV,IAAwBzF,MAAM,CAACE,UAAP,KAAsBuF,UAAU,CAACvF,UAH5D,EAIE;AACA,YAAMiG,UAAU,GAAG,EAAnB;AACA,YAAMvF,OAAO,GAAG,KAAKb,KAAL,CAAWY,OAAX,CAAmBC,OAAnC;AAEA,YAAIH,YAAY,GAAG,CAAnB,CAJA,CAIsB;AAEtB;;AACA,SAACgF,UAAU,CAACvF,UAAX,IAAyB,EAA1B,EAA8BQ,OAA9B,CAAsCjC,KAAtC,EAA6C,YAAM;AACjD0H,UAAAA,UAAU,YAAK1F,YAAL,EAAV,GAAiC;AAC/BM,YAAAA,KAAK,EAAGH,OAAO,IAAIA,OAAO,YAAKH,YAAL,EAAlB,IAA0CG,OAAO,YAAKH,YAAL,EAAP,CAA4BM,KAAvE,IAAiF;AADzD,WAAjC;AAGAN,UAAAA,YAAY;AACb,SALD;AAOA,aAAKmC,QAAL,CACE,UAAC7C,KAAD;AAAA,iBAAY;AACVY,YAAAA,OAAO,kCACFZ,KAAK,CAACY,OADJ;AAELqD,cAAAA,cAAc,EAAE,MAAI,CAACC,QAAL,IAAiB,MAAI,CAACA,QAAL,CAAcC,SAAd,CAAwB9E,KAAxB,EAF5B;AAGLwB,cAAAA,OAAO,EAAEuF;AAHJ;AADG,WAAZ;AAAA,SADF,EAQE,KAAKrC,0BARP;AAUD;AACF;;;WAED,+BAAsB0B,SAAtB,EAAiCY,SAAjC,EAA4C;AAC1C,UAAMC,SAAS,GAAG,yBAAQ,KAAKpF,KAAL,CAAWnB,KAAnB,EAA0B0F,SAAS,CAAC1F,KAApC,CAAlB;AACA,UAAMwG,SAAS,GAAG,yBAAQ,KAAKvG,KAAb,EAAoBqG,SAApB,CAAlB;AAEA,aAAO,CAACC,SAAD,IAAc,CAACC,SAAtB;AACD;;;WAED,6BAAoB;AAAA;;AAClB,WAAKxC,0BAAL;AACA,WAAKoC,UAAL;AACAD,MAAAA,UAAU,CAAC;AAAA,eAAM,yCAAW,MAAI,CAAC9E,IAAhB,CAAN;AAAA,OAAD,EAA8B,GAA9B,CAAV;AACD;;;WAED,8BAAqB;AACnB,WAAK2C,0BAAL;AACD;;;WAiID,uBAAcyC,GAAd,EAAmB;AACjB;AACAN,MAAAA,UAAU,CAAC,YAAM;AACf,YAAIM,GAAG,IAAI5H,SAAX,EAAsB;AACpB,cAAM6H,GAAG,GAAGC,QAAQ,CAAChF,aAAT,CAAuB,kBAAvB,CAAZ;;AAEA,cAAI+E,GAAJ,EAAS;AACP,gBAAMhF,EAAE,GAAGgF,GAAG,CAACE,UAAf;AACAlF,YAAAA,EAAE,CAACiB,YAAH,CAAgB,UAAhB,EAA4B,IAA5B;AACD;AACF;AACF,OATS,EASP,CATO,CAAV;AAUD;;;WAED,kBAAS;AAAA;AAAA;;AACP,yBAA2B,KAAKxB,KAAhC;AAAA,UAAQnB,KAAR,gBAAQA,KAAR;AAAA,UAAeoB,OAAf,gBAAeA,OAAf;AACA,yBAAoD,KAAKnB,KAAzD;AAAA,UAAQgD,iBAAR,gBAAQA,iBAAR;AAAA,UAA2BxC,WAA3B,gBAA2BA,WAA3B;AAAA,UAAwCI,OAAxC,gBAAwCA,OAAxC;;AACA,kBAYIb,KAAK,IAAI,EAZb;AAAA,UACEE,MADF,SACEA,MADF;AAAA,UAEE2G,WAFF,SAEEA,WAFF;AAAA,UAGE1G,QAHF,SAGEA,QAHF;AAAA,UAIE8B,IAJF,SAIEA,IAJF;AAAA,UAKE6E,mBALF,SAKEA,mBALF;AAAA,UAMEC,SANF,SAMEA,SANF;AAAA,UAOEC,QAPF,SAOEA,QAPF;AAAA,UAQEC,kBARF,SAQEA,kBARF;AAAA,UASE3G,SATF,SASEA,SATF;AAAA,UAUEC,iBAVF,SAUEA,iBAVF;AAAA,UAWEsF,QAXF,SAWEA,QAXF;;AAcA,UAAI,CAAC3F,MAAL,EAAa;AACX,eAAO,IAAP;AACD;;AAED,kBASIA,MAAM,IAAI,EATd;AAAA,UACEgH,QADF,SACEA,QADF;AAAA,UAEEtB,IAFF,SAEEA,IAFF;AAAA,UAGEuB,MAHF,SAGEA,MAHF;AAAA,UAIE9G,SAJF,SAIEA,SAJF;AAAA,UAKE+G,YALF,SAKEA,YALF;AAAA,UAMEzH,cANF,SAMEA,cANF;AAAA,UAOE0H,UAPF,SAOEA,UAPF;AAAA,4BAQErB,GARF;;AAAA,yCAQwB,EARxB;AAAA,UAQSC,IART,aAQSA,IART;AAAA,UAQeqB,IARf,aAQeA,IARf;AAUA,UAAMC,WAAW,GAAG,CAAC9G,WAAW,IAAKwF,IAAI,KAAK,MAAT,IAAmBqB,IAAI,KAAK,YAA7C,KAA+DJ,QAA/D,IAA2EtB,IAA/F;AACA,UAAM4B,aAAa,GAAG,yBAAQnH,SAAR,CAAtB;AACA,UAAMoH,uBAAuB,GAAG,CAACD,aAAD,IAAkBX,WAAlB,IAAiCA,WAAW,CAACA,WAAZ,KAA4B,SAA7F;AACA,UAAMa,kBAAkB,GAAGvH,QAAQ,IAAI0G,WAAvC;AACA,UAAMnH,cAAc,GAAGT,sBAAsB,CAACoI,UAAD,CAA7C;AACA,UAAMhF,OAAO,GAAGwE,WAAW,IAAIA,WAAW,CAACxE,OAA3C;AACA,UAAMsF,WAAW,GAAG5H,gBAAgB,CAACC,KAAD,EAAQ,KAAKC,KAAb,CAAhB,IAAuC,EAA3D;AACA,UAAM2H,QAAQ,GAAGzH,QAAQ,IAAI,CAAC0G,WAA9B;AACA,UAAMgB,gBAAgB,GAAGvH,SAAS,IAAI,CAACC,iBAAvC;;AAEA,UAAMuH,SAAS,gBACb;AAAK,QAAA,SAAS,EAAE1G,OAAO,CAAC2G;AAAxB,sBACE,gCAAC,aAAD,CAAI,MAAJ;AACE,QAAA,SAAS,EAAE3G,OAAO,UADpB;AAEE,QAAA,GAAG,EAAE,aAAC+C,QAAD;AAAA,iBAAe,MAAI,CAACA,QAAL,GAAgBA,QAAQ,IAAI,MAAI,CAACA,QAAhD;AAAA,SAFP;AAGE,QAAA,KAAK,EAAEwD,WAHT;AAIE,QAAA,gBAAgB,EAAE,KAAKK,eAJzB;AAKE,QAAA,YAAY,EAAE,KAAKC,YALrB;AAME,QAAA,QAAQ,EAAE,KAAKC,QANjB;AAOE,QAAA,eAAe,EAAE,KAAKC,eAPxB;AAQE,QAAA,MAAM,EAAE,KAAKC;AARf,QADF,CADF;;AAeA,UAAMC,UAAU,gBACd;AAAK,QAAA,SAAS,EAAEjH,OAAO,CAACkH;AAAxB,SACGrC,IAAI,KAAK,QAAT,iBAAqB;AAAI,QAAA,SAAS,EAAE7E,OAAO,CAACmH;AAAvB,2CADxB,EAGGX,QAAQ,IACPd,mBADD,IAEC,uBAAQA,mBAAR,CAFD,KAGE,CAACG,kBAAD,gBACC,gCAAC,qBAAD;AACE,QAAA,SAAS,EAAE7F,OAAO,CAACoH,WADrB;AAEE,QAAA,MAAM,EAAE;AAAEC,UAAAA,MAAM,EAAE,2BAAV;AAAuCC,UAAAA,OAAO,EAAE;AAAhD;AAFV,sBAIE;AAAK,QAAA,uBAAuB,EAAE;AAAEC,UAAAA,MAAM,EAAE7B;AAAV;AAA9B,QAJF,CADD,gBAQC;AAAK,QAAA,uBAAuB,EAAE;AAAE6B,UAAAA,MAAM,EAAE7B;AAAV;AAA9B,QAXH,CAHH,EAiBGK,MAAM,iBACL;AAAK,QAAA,SAAS,EAAE/F,OAAO,CAACwH;AAAxB,sBACE,gCAAC,uBAAD;AAAe,QAAA,MAAM,EAAEzB;AAAvB,QADF,CAlBJ,EAuBGU,gBAAgB,GACfC,SADe,gBAGf,gCAAC,kBAAD;AAAU;AAAV,sBACE;AAAK,QAAA,SAAS,EAAE1G,OAAO,CAACyH;AAAxB,SACGzB,YAAY,KAAK0B,qBAAcC,MAA/B,iBACC,gCAAC,+BAAD;AACE,QAAA,sBAAsB,EAAE,KAAKC,sBAD/B;AAEE,QAAA,WAAW,EAAEvI,WAFf;AAGE,QAAA,aAAa,EAAE+G,aAHjB;AAIE,QAAA,KAAK,EAAExH,KAJT;AAKE,QAAA,OAAO,EAAEa;AALX,QAFJ,EAWGuG,YAAY,KAAK0B,qBAAcG,QAA/B,iBACC;AACE,QAAA,SAAS,EAAE,4BAAG7H,OAAO,CAAChB,UAAX,mDACRgB,OAAO,CAACkB,SADA,EACY,CAACkF,aAAD,IAAkB,CAACnF,OAAnB,IAA8B,CAAC5B,WAD3C,yCAERW,OAAO,CAACiB,OAFA,EAEU,CAACmF,aAAD,KAAmBnF,OAAO,IAAI5B,WAA9B,CAFV,yCAGRW,OAAO,CAAC8H,eAHA,EAGkB,CAAC1B,aAAD,IAAkBrH,QAAlB,IAA8B0G,WAA9B,IAA6C,CAAC5E,IAHhE,yCAIRb,OAAO,CAAC+H,kBAJA,EAIqB1I,WAJrB,yCAKRW,OAAO,CAACgI,YALA,EAKe9I,SAAS,IAAIC,iBAL5B;AADb,sBASE,gCAAC,mBAAD;AACE,QAAA,GAAG,EAAE,aAACkG,KAAD;AAAA,iBAAS,MAAI,CAAC4C,aAAL,CAAmB5C,KAAnB,CAAT;AAAA,SADP;AAEE,QAAA,WAAW,MAFb;AAGE,QAAA,IAAI,EAAE,CAAC,CAACxD,iBAHV;AAIE,QAAA,OAAO,EAAE;AACPqG,UAAAA,OAAO,EAAElI,OAAO,CAACmI,aADV;AAEPC,UAAAA,MAAM,EAAEpI,OAAO,CAACqI;AAFT,SAJX;AAQE,QAAA,KAAK,EAAEnI,MAAM,CAACC,IAAP,CAAYV,OAAO,CAACC,OAApB,EAA6B3B,GAA7B,CACL,UAACsC,QAAD;AAAA,iBACGA,QAAQ,KAAKwB,iBAAb,IAAkC,EAAExC,WAAW,IAAIN,QAAjB,CAAlC,iBACC;AACE,2BAAa,IADf;AAEE,YAAA,GAAG,EAAEsB,QAFP;AAGE,YAAA,SAAS,EAAEL,OAAO,CAACsI,iBAHrB;AAIE,YAAA,KAAK,EAAE;AACL;AACAC,cAAAA,KAAK,EAAElK,cAAc,CAACC,cAAD,EAAiBC,cAAjB;AAFhB;AAJT,0BASE,gCAAC,2BAAD;AACE,YAAA,cAAc,EAAED,cADlB;AAEE,YAAA,IAAI,EAAEC,cAAc,IAAIf,sBAF1B;AAGE,YAAA,OAAO,EAAE,MAAI,CAACgL;AAHhB,YATF,CADF,IAiBA,IAlBF;AAAA,SADK;AART,sBA8BE,gCAAC,aAAD,CAAI,MAAJ;AACE,QAAA,SAAS,EAAExI,OAAO,UADpB;AAEE,QAAA,GAAG,EAAE,aAAC+C,QAAD;AAAA,iBAAe,MAAI,CAACA,QAAL,GAAgBA,QAAQ,IAAI,MAAI,CAACA,QAAhD;AAAA,SAFP;AAGE,QAAA,KAAK,EAAEwD,WAHT;AAIE,QAAA,gBAAgB,EAAE,KAAKK,eAJzB;AAKE,QAAA,YAAY,EAAE,KAAKC,YALrB;AAME,QAAA,QAAQ,EAAE,KAAKC,QANjB;AAOE,QAAA,eAAe,EAAE,KAAKC,eAPxB;AAQE,QAAA,MAAM,EAAE,KAAKC;AARf,QA9BF,CATF,CAZJ,CADF,CA1BJ,EA+FGR,QAAQ,IAAIL,WAAZ,iBACC;AAAK,QAAA,SAAS,EAAEnG,OAAO,CAACwE,IAAxB;AAA8B,QAAA,uBAAuB,EAAE;AAAE+C,UAAAA,MAAM,mCAA4B/C,IAA5B;AAAR;AAAvD,QAhGJ,EAmGGgC,QAAQ,IACPb,SADD,IAEC,uBAAQA,SAAR,CAFD,KAGE,CAACE,kBAAD,gBACC,gCAAC,qBAAD;AAAa,QAAA,MAAM,EAAE;AAAEwB,UAAAA,MAAM,EAAE,gBAAV;AAA4BC,UAAAA,OAAO,EAAE;AAArC;AAArB,sBACE;AAAK,QAAA,uBAAuB,EAAE;AAAEC,UAAAA,MAAM,EAAE5B;AAAV;AAA9B,QADF,CADD,gBAKC;AAAK,QAAA,uBAAuB,EAAE;AAAE4B,UAAAA,MAAM,EAAE5B;AAAV;AAA9B,QARH,CAnGH,CADF;;AAiHA,UACEW,kBAAkB,KACjBD,uBAAuB,IACrBX,mBAAmB,IAAI,uBAAQA,mBAAR,CADzB,IAEEC,SAAS,IAAI,uBAAQA,SAAR,CAFf,IAGCC,QAJgB,CADpB,EAME;AACA,4BACE,gCAAC,mBAAD;AACE,UAAA,WAAW,MADb;AAEE,UAAA,OAAO,EAAE;AACPsC,YAAAA,OAAO,EAAElI,OAAO,CAACkI,OADV;AAEPE,YAAAA,MAAM,EAAEpI,OAAO,CAACyI;AAFT,WAFX;AAME,UAAA,KAAK,eACH,0DACE;AAAK,YAAA,SAAS,EAAEzI,OAAO,CAACkH;AAAxB,aACGb,uBAAuB,iBACtB,gCAAC,wCAAD;AACE,YAAA,QAAQ,EAAE5B,QADZ;AAEE,YAAA,SAAS,EAAEzE,OAAO,CAAC0I,MAFrB;AAGE,YAAA,IAAI,MAHN;AAIE,YAAA,OAAO,EAAErJ,WAJX;AAKE,YAAA,QAAQ,EAAE,KAAKsJ;AALjB,YAFJ,CADF,EAaGjD,mBAAmB,IAAI,uBAAQA,mBAAR,CAAvB,iBACC,gCAAC,qBAAD;AACE,YAAA,SAAS,EAAE1F,OAAO,CAACoH,WADrB;AAEE,YAAA,GAAG,EAAC,kCAFN;AAGE,YAAA,MAAM,EAAE;AACNC,cAAAA,MAAM,EAAE,2BADF;AAENC,cAAAA,OAAO,EAAE;AAFH;AAHV,0BAQE,gCAAC,uBAAD;AAAe,YAAA,MAAM,EAAE5B;AAAvB,YARF,CAdJ,EAyBGS,WAAW,IAAI,uBAAQ3B,IAAR,CAAf,iBACC,gCAAC,qBAAD;AACE,YAAA,SAAS,EAAExE,OAAO,CAACoH,WADrB;AAEE,YAAA,GAAG,EAAC,kBAFN;AAGE,YAAA,MAAM,EAAE;AACNC,cAAAA,MAAM,EAAElK,UAAU,CAACuH,CAAX,CAAa,iBAAb,EAAgC;AAAEC,gBAAAA,GAAG,EAAEF;AAAP,eAAhC,CADF;AAEN6C,cAAAA,OAAO,EAAEnK,UAAU,CAACuH,CAAX,CAAa,iBAAb,EAAgC;AAAEC,gBAAAA,GAAG,EAAEF;AAAP,eAAhC;AAFH;AAHV,0BAQE,gCAAC,uBAAD;AAAe,YAAA,MAAM,EAAED;AAAvB,YARF,CA1BJ,EAsCGmB,SAAS,IAAI,uBAAQA,SAAR,CAAb,iBACC,gCAAC,qBAAD;AACE,YAAA,SAAS,EAAE3F,OAAO,CAACoH,WADrB;AAEE,YAAA,GAAG,EAAC,uBAFN;AAGE,YAAA,MAAM,EAAE;AACNC,cAAAA,MAAM,EAAE,gBADF;AAENC,cAAAA,OAAO,EAAE;AAFH;AAHV,0BAQE,gCAAC,uBAAD;AAAe,YAAA,MAAM,EAAE3B;AAAvB,YARF,CAvCJ,EAmDGC,QAAQ,iBAAI,gCAAC,kBAAD;AAAU,YAAA,WAAW,EAAEH,WAAW,CAACA,WAAnC;AAAgD,YAAA,QAAQ,EAAEG;AAA1D,YAnDf;AAPJ,wBA8DE;AAAK,UAAA,SAAS,EAAE5F,OAAO,CAAC4I,aAAxB;AAAuC,UAAA,GAAG,EAAE,aAACC,CAAD;AAAA,mBAAQ,MAAI,CAAC5I,IAAL,GAAY4I,CAAC,IAAI,MAAI,CAAC5I,IAA9B;AAAA;AAA5C,WACGgH,UADH,CA9DF,CADF;AAoED;;AAED,0BACE;AAAK,QAAA,SAAS,EAAEjH,OAAO,CAAC4I,aAAxB;AAAuC,QAAA,GAAG,EAAE,aAACC,CAAD;AAAA,iBAAQ,MAAI,CAAC5I,IAAL,GAAY4I,CAAC,IAAI,MAAI,CAAC5I,IAA9B;AAAA;AAA5C,SACGgH,UADH,CADF;AAKD;;;EAnkBuB6B,kBAAMC,S;;;iCAAnBjJ,I,eACQ;AACjBE,EAAAA,OAAO,EAAEgJ,sBAAUC,MADF;AAEjBxJ,EAAAA,OAAO,EAAEuJ,sBAAUC,MAAV,CAAiBC,UAFT;AAGjBxG,EAAAA,eAAe,EAAEsG,sBAAUG,IAHV;AAIjBvK,EAAAA,KAAK,EAAEoK,sBAAUC,MAAV,CAAiBC;AAJP,C;;AAqkBrB,IAAME,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBT,IAAAA,aAAa,EAAE;AACbU,MAAAA,KAAK,EAAEA,gBAAMpF,IAAN,EADM;AAEbqF,MAAAA,eAAe,EAAED,gBAAME,UAAN,EAFJ;AAGbC,MAAAA,OAAO,EAAE;AAHI,KADU;AAMzBvB,IAAAA,OAAO,EAAE;AACPsB,MAAAA,UAAU,YAAKF,gBAAMI,YAAN,EAAL,gBADH;AAEPJ,MAAAA,KAAK,EAAEA,gBAAMpF,IAAN,EAFA;AAGPyF,MAAAA,OAAO,EAAEN,KAAK,CAACO,OAAN,CAAcC,IAAd,GAAqB,CAHvB;AAIPC,MAAAA,MAAM,sBAAeR,gBAAMS,SAAN,EAAf,CAJC;AAKPC,MAAAA,QAAQ,EAAE,MALH;AAMP,qCAA+B;AAC7B,2BAAmB;AACjBT,UAAAA,eAAe,EAAE;AADA;AADU;AANxB,KANgB;AAkBzBd,IAAAA,aAAa,EAAE;AACbwB,MAAAA,OAAO,EAAE;AADI,KAlBU;AAqBzB9B,IAAAA,aAAa,EAAE;AACb6B,MAAAA,QAAQ,EAAE,SADG;AAEbR,MAAAA,UAAU,EAAE,aAFC;AAGbjB,MAAAA,KAAK,EAAE,OAHM;AAIb2B,MAAAA,SAAS,EAAE,CAJE;AAKbC,MAAAA,UAAU,EAAE;AALC,KArBU;AA4BzB9B,IAAAA,mBAAmB,EAAE;AACnBmB,MAAAA,UAAU,EAAE,aADO;AAEnBjB,MAAAA,KAAK,EAAE,OAFY;AAGnB0B,MAAAA,OAAO,EAAE;AAHU,KA5BI;AAiCzBzC,IAAAA,eAAe,EAAE;AACf4C,MAAAA,YAAY,EAAEf,KAAK,CAACO,OAAN,CAAcC,IAAd,GAAqB;AADpB,KAjCQ;AAoCzB3C,IAAAA,IAAI,EAAE;AACJqB,MAAAA,KAAK,EAAE,MADH;AAEJ8B,MAAAA,QAAQ,EAAE,UAFN;AAGJd,MAAAA,eAAe,EAAED,gBAAME,UAAN,EAHb;AAIJF,MAAAA,KAAK,EAAEA,gBAAMpF,IAAN;AAJH,KApCmB;AA0CzBoG,IAAAA,KAAK,EAAE;AACLN,MAAAA,QAAQ,EAAE,QADL;AAELP,MAAAA,OAAO,EAAE,OAFJ;AAGLS,MAAAA,SAAS,EAAEb,KAAK,CAACO,OAAN,CAAcC,IAAd,GAAqB,CAH3B;AAILO,MAAAA,YAAY,EAAEf,KAAK,CAACO,OAAN,CAAcC;AAJvB,KA1CkB;AAgDzBrF,IAAAA,IAAI,EAAE;AACJ+F,MAAAA,aAAa,EAAElB,KAAK,CAACO,OAAN,CAAcC,IAAd,GAAqB;AADhC,KAhDmB;AAmDzBzC,IAAAA,WAAW,EAAE;AACXgD,MAAAA,YAAY,EAAEf,KAAK,CAACO,OAAN,CAAcC,IAAd,GAAqB;AADxB,KAnDY;AAsDzBvB,IAAAA,iBAAiB,EAAE;AACjBkC,MAAAA,MAAM,EAAE,EADS;AAEjB;AACA;AACAC,MAAAA,QAAQ,EAAE,OAJO;AAKjBP,MAAAA,SAAS,EAAEb,KAAK,CAACO,OAAN,CAAcC,IAAd,GAAqB;AALf,KAtDM;AA6DzB7K,IAAAA,UAAU,EAAE;AACV0L,MAAAA,QAAQ,EAAE,aADA;AAEV,2BAAqB;AACnB,8BAAsB;AACpB,oCAA0B;AACxBD,YAAAA,QAAQ,EAAE,MADc;AAExBE,YAAAA,MAAM,EAAGtB,KAAK,CAACO,OAAN,CAAcC,IAAd,GAAqB,CAAtB,GAA2B,CAFX;AAGxBF,YAAAA,OAAO,EAAEN,KAAK,CAACO,OAAN,CAAcC,IAAd,GAAqB;AAHN;AADN,SADH;AAQnB,iBAAS;AACPe,UAAAA,GAAG,EAAE;AADE;AARU;AAFX,KA7Da;AA4EzB,cAAQ;AACN,4BAAsB;AACpB,kCAA0B;AACxBC,UAAAA,WAAW,EAAEvB,gBAAMpF,IAAN;AADW;AADN;AADhB,KA5EiB;AAmFzBuD,IAAAA,uBAAuB,EAAE;AACvB4C,MAAAA,QAAQ,EAAE,UADa;AAEvB,+BAAyB;AACvBP,QAAAA,MAAM,EAAE,iBADe;AAEvBH,QAAAA,OAAO,EAAE;AAFc,OAFF;AAMvB,qCAA+B;AAC7BF,QAAAA,OAAO,EAAE;AADoB,OANR;AASvB,oCAA8B;AAC5BA,QAAAA,OAAO,EAAE;AADmB,OATP;AAYvB,uCAAiC;AAC/BgB,QAAAA,QAAQ,EAAE,QADqB;AAE/B,eAAO;AACLK,UAAAA,UAAU,EAAE;AADP,SAFwB;AAK/B,oBAAY;AACVF,UAAAA,GAAG,EAAE,QADK;AAEVG,UAAAA,IAAI,EAAE;AAFI,SALmB;AAS/B,mBAAW;AACTH,UAAAA,GAAG,EAAE,QADI;AAETI,UAAAA,KAAK,EAAE;AAFE,SAToB;AAa/B,4BAAoB;AAClBJ,UAAAA,GAAG,EAAE;AADa;AAbW,OAZV;AA6BvB,wCAAkC;AAChC,oBAAY;AACVA,UAAAA,GAAG,EAAE,QADK;AAEVI,UAAAA,KAAK,EAAE;AAFG;AADoB,OA7BX;AAmCvB,6BAAuB;AACrBC,QAAAA,SAAS,EAAE,sBADU;AAErBd,QAAAA,UAAU,EAAE;AAFS,OAnCA;AAuCvB,6BAAuB;AACrBW,QAAAA,UAAU,EAAE;AADS;AAvCA,KAnFA;AA8HzBhD,IAAAA,eAAe,EAAE;AACfgC,MAAAA,MAAM,EAAE;AADO,KA9HQ;AAiIzB/B,IAAAA,kBAAkB,EAAE;AAClB4B,MAAAA,OAAO,EAAEN,KAAK,CAACO,OAAN,CAAcC,IADL;AAElBqB,MAAAA,aAAa,EAAE;AAFG,KAjIK;AAqIzBlD,IAAAA,YAAY,EAAE;AACZ8B,MAAAA,MAAM,sBAAeR,gBAAMrI,OAAN,EAAf;AADM,KArIW;AAwIzBA,IAAAA,OAAO,EAAE;AACP4J,MAAAA,WAAW,YAAKvB,gBAAMrI,OAAN,EAAL;AADJ,KAxIgB;AA2IzBC,IAAAA,SAAS,EAAE;AACT2J,MAAAA,WAAW,YAAKvB,gBAAMpI,SAAN,EAAL;AADF,KA3Ic;AA8IzB6C,IAAAA,cAAc,EAAE;AACd4G,MAAAA,MAAM,YAAKtB,KAAK,CAACO,OAAN,CAAcC,IAAnB,kBADQ;AAEdJ,MAAAA,OAAO,EAAE,aAFK;AAGdK,MAAAA,MAAM,EAAE;AAHM,KA9IS;AAmJzB9F,IAAAA,aAAa,EAAE;AACbmH,MAAAA,IAAI,EAAE,CADO;AAEb7B,MAAAA,KAAK,EAAE,MAFM;AAGbE,MAAAA,UAAU,EAAEH,KAAK,CAAC+B,OAAN,CAAcC,IAAd,CAAmB,MAAnB,CAHC;AAIbrB,MAAAA,QAAQ,EAAE,mBAJG;AAKbL,MAAAA,OAAO,YAAKN,KAAK,CAACO,OAAN,CAAcC,IAAd,GAAqB,CAA1B,kBALM;AAMbJ,MAAAA,OAAO,EAAE,MANI;AAOb6B,MAAAA,UAAU,EAAE,QAPC;AAQbC,MAAAA,cAAc,EAAE,QARH;AASbC,MAAAA,WAAW,sBAAelC,gBAAMvK,QAAN,EAAf;AATE,KAnJU;AA8JzB2J,IAAAA,MAAM,EAAE;AACNY,MAAAA,KAAK,EAAEA,gBAAMpF,IAAN,EADD;AAENkG,MAAAA,YAAY,EAAEf,KAAK,CAACO,OAAN,CAAcC,IAAd,GAAqB;AAF7B,KA9JiB;AAkKzB5F,IAAAA,SAAS,EAAE;AACTqF,MAAAA,KAAK,EAAEA,gBAAMpF,IAAN,EADE;AAETqF,MAAAA,eAAe,EAAED,gBAAME,UAAN,EAFR;AAGTG,MAAAA,OAAO,YAAKN,KAAK,CAACO,OAAN,CAAcC,IAAd,GAAqB,CAA1B,kBAHE;AAITJ,MAAAA,OAAO,EAAE,MAJA;AAKT6B,MAAAA,UAAU,EAAE,QALH;AAMTC,MAAAA,cAAc,EAAE,QANP;AAOTJ,MAAAA,IAAI,EAAE,CAPG;AAQT,2BAAqB;AACnB,6BAAqB;AACnB,4BAAkB;AAChB1B,YAAAA,OAAO,EAAE;AADO;AADC;AADF;AARZ,KAlKc;AAkLzB9C,IAAAA,cAAc,EAAE;AACdyD,MAAAA,YAAY,EAAEf,KAAK,CAACO,OAAN,CAAcC,IADd;AAEd4B,MAAAA,aAAa,EAAE;AAFD,KAlLS;AAsLzBtE,IAAAA,MAAM,EAAE;AACNkD,MAAAA,QAAQ,EAAE,UADJ;AAENU,MAAAA,IAAI,EAAE,UAFA;AAGNH,MAAAA,GAAG,EAAE,MAHC;AAINrC,MAAAA,KAAK,EAAE,KAJD;AAKNmD,MAAAA,MAAM,EAAE,KALF;AAMNC,MAAAA,QAAQ,EAAE;AANJ;AAtLiB,GAAZ;AAAA,CAAf;;eAgMe,wBAAWvC,MAAX,EAAmBtJ,IAAnB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { CorrectAnswerToggle } from '@pie-lib/pie-toolbox/correct-answer-toggle';\nimport { mq, HorizontalKeypad, updateSpans } from '@pie-lib/pie-toolbox/math-input';\nimport { Feedback, Collapsible, Readable, hasText, PreviewPrompt } from '@pie-lib/pie-toolbox/render-ui';\nimport { renderMath } from '@pie-lib/pie-toolbox/math-rendering-accessible';\nimport { withStyles } from '@material-ui/core/styles';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport { ResponseTypes } from './utils';\nimport isEqual from 'lodash/isEqual';\nimport cx from 'classnames';\nimport SimpleQuestionBlock from './simple-question-block';\nimport MathQuill from '@pie-framework/mathquill';\nimport { color } from '@pie-lib/pie-toolbox/render-ui';\nimport isEmpty from 'lodash/isEmpty';\nimport Translator from '@pie-lib/pie-toolbox/translator';\nconst { translator } = Translator;\nlet registered = false;\n\nconst NEWLINE_LATEX = /\\\\newline/g;\nconst REGEX = /{{response}}/gm;\nconst DEFAULT_KEYPAD_VARIANT = 6;\n\nconst IS_SAFARI = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n\nfunction generateAdditionalKeys(keyData = []) {\n return keyData.map((key) => ({\n name: key,\n latex: key,\n write: key,\n label: key,\n }));\n}\n\nfunction getKeyPadWidth(additionalKeys = [], equationEditor) {\n return Math.floor(additionalKeys.length / 5) * 30 + (equationEditor === 'miscellaneous' ? 600 : 500);\n}\n\nfunction prepareForStatic(model, state) {\n const { config, disabled } = model || {};\n const { expression, responses, printMode, alwaysShowCorrect } = config || {};\n\n if (config && expression) {\n const modelExpression = expression;\n\n if (state.showCorrect) {\n return responses && responses.length && responses[0].answer;\n }\n\n let answerBlocks = 1; // assume one at least\n // build out local state model using responses declared in expression\n\n return (modelExpression || '')\n .replace(REGEX, function () {\n const answer = state.session.answers[`r${answerBlocks}`];\n\n if (printMode && !alwaysShowCorrect) {\n const blankSpace = '\\\\ \\\\ '.repeat(30) + '\\\\newline ';\n\n return `\\\\MathQuillMathField[r${answerBlocks++}]{${blankSpace.repeat(3)}}`;\n }\n\n if (disabled) {\n return `\\\\embed{answerBlock}[r${answerBlocks++}]`;\n }\n\n return `\\\\MathQuillMathField[r${answerBlocks++}]{${(answer && answer.value) || ''}}`;\n })\n .replace(NEWLINE_LATEX, '\\\\embed{newLine}[]');\n }\n}\n\nexport class Main extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n session: PropTypes.object.isRequired,\n onSessionChange: PropTypes.func,\n model: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n\n const answers = {};\n\n if (props.model.config && props.model.config.expression) {\n let answerBlocks = 1; // assume one at least\n // build out local state model using responses declared in expression\n\n (props.model.config.expression || '').replace(REGEX, () => {\n answers[`r${answerBlocks}`] = {\n value:\n (props.session &&\n props.session.answers &&\n props.session.answers[`r${answerBlocks}`] &&\n props.session.answers[`r${answerBlocks}`].value) ||\n '',\n };\n\n answerBlocks += 1;\n });\n }\n\n this.state = {\n session: { ...props.session, answers },\n activeAnswerBlock: '',\n showCorrect: this.props.model.config.alwaysShowCorrect || false,\n };\n }\n\n UNSAFE_componentWillMount() {\n const { classes } = this.props;\n\n if (typeof window !== 'undefined') {\n let MQ = MathQuill.getInterface(2);\n\n if (!registered) {\n MQ.registerEmbed('answerBlock', (data) => {\n return {\n htmlString: `<div class=\"${classes.blockContainer}\">\n <div class=\"${classes.blockResponse}\" id=\"${data}Index\">R</div>\n <div class=\"${classes.blockMath}\">\n <span id=\"${data}\"></span>\n </div>\n </div>`,\n text: () => 'text',\n latex: () => `\\\\embed{answerBlock}[${data}]`,\n };\n });\n\n registered = true;\n }\n }\n }\n\n handleAnswerBlockDomUpdate = () => {\n const { model, classes } = this.props;\n const { session, showCorrect } = this.state;\n const answers = session.answers;\n\n if (this.root && model.disabled && !showCorrect) {\n Object.keys(answers).forEach((answerId) => {\n const el = this.root.querySelector(`#${answerId}`);\n const indexEl = this.root.querySelector(`#${answerId}Index`);\n // const correct = model.correctness && model.correctness.correct;\n\n if (el) {\n let MQ = MathQuill.getInterface(2);\n const answer = answers[answerId];\n\n el.textContent = (answer && answer.value) || '';\n\n if (!model.view) {\n // for now, we're not going to be showing individual response correctness\n // TODO re-attach the classes once we are\n // el.parentElement.parentElement.classList.add(\n // correct ? classes.correct : classes.incorrect\n // );\n } else {\n el.parentElement.parentElement.classList.remove(classes.correct);\n el.parentElement.parentElement.classList.remove(classes.incorrect);\n }\n\n MQ.StaticMath(el);\n\n // For now, we're not going to be indexing response blocks\n // TODO go back to indexing once we support individual response correctness\n // indexEl.textContent = `R${idx + 1}`;\n indexEl.textContent = 'R';\n }\n });\n }\n\n renderMath(this.root);\n };\n\n countResponseOccurrences(expression) {\n const pattern = /\\{\\{response\\}\\}/g;\n const matches = expression.match(pattern);\n\n return matches ? matches.length : 0;\n }\n\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { config } = this.props.model;\n const { config: nextConfig = {} } = nextProps.model || {};\n // check if the note is the default one for prev language and change to the default one for new language\n // this check is necessary in order to diferanciate between default and authour defined note\n // and only change between languages for default ones\n if (\n config.note &&\n config.language &&\n config.language !== nextConfig.language &&\n config.note === translator.t('mathInline.primaryCorrectWithAlternates', { lng: config.language })\n ) {\n config.note = translator.t('mathInline.primaryCorrectWithAlternates', { lng: nextConfig.language });\n }\n\n if ((config.env && config.env.mode !== 'evaluate') || (nextConfig.env && nextConfig.env.mode !== 'evaluate')) {\n this.setState({ ...this.state.session, showCorrect: false });\n }\n\n if (nextConfig.alwaysShowCorrect) {\n this.setState({ showCorrect: true });\n }\n\n if(this.countResponseOccurrences(config.expression) < this.countResponseOccurrences(nextConfig.expression)) {\n setTimeout(() => this.updateAria(), 100);\n }\n\n if (\n (config && config.responses && config.responses.length !== nextConfig.responses.length) ||\n (!config && nextConfig && nextConfig.responses) ||\n (config && nextConfig && config.expression !== nextConfig.expression)\n ) {\n const newAnswers = {};\n const answers = this.state.session.answers;\n\n let answerBlocks = 1; // assume one at least\n\n // build out local state model using responses declared in expression\n (nextConfig.expression || '').replace(REGEX, () => {\n newAnswers[`r${answerBlocks}`] = {\n value: (answers && answers[`r${answerBlocks}`] && answers[`r${answerBlocks}`].value) || '',\n };\n answerBlocks++;\n });\n\n this.setState(\n (state) => ({\n session: {\n ...state.session,\n completeAnswer: this.mqStatic && this.mqStatic.mathField.latex(),\n answers: newAnswers,\n },\n }),\n this.handleAnswerBlockDomUpdate,\n );\n }\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n const sameModel = isEqual(this.props.model, nextProps.model);\n const sameState = isEqual(this.state, nextState);\n\n return !sameModel || !sameState;\n }\n\n componentDidMount() {\n this.handleAnswerBlockDomUpdate();\n this.updateAria();\n setTimeout(() => renderMath(this.root), 100);\n }\n\n componentDidUpdate() {\n this.handleAnswerBlockDomUpdate();\n }\n\n updateAria = () => {\n if (this.root) {\n // Update aria-hidden for .mq-selectable elements\n const selectableElements = this.root.querySelectorAll('.mq-selectable');\n selectableElements.forEach(elem => elem.setAttribute('aria-hidden', 'true'));\n\n // Update aria-label for textarea elements\n const textareaElements = this.root.querySelectorAll('textarea');\n textareaElements.forEach(elem => {\n elem.setAttribute('aria-label', 'Enter answer using math editor buttons or keyboard.');\n });\n }\n };\n\n onDone = () => {};\n\n onSimpleResponseChange = (response) => {\n this.setState((state) => ({ session: { ...state.session, response } }), this.callOnSessionChange);\n };\n\n onSubFieldFocus = (id) => {\n this.setState({ activeAnswerBlock: id });\n };\n\n toNodeData = (data) => {\n if (!data) {\n return;\n }\n\n const { type, value } = data;\n\n if (type === 'command' || type === 'cursor') {\n return data;\n } else if (type === 'answer') {\n return { type: 'answer', ...data };\n } else if (value === 'clear') {\n return { type: 'clear' };\n } else {\n return { type: 'write', value };\n }\n };\n\n setInput = (input) => {\n this.input = input;\n };\n\n onClick = (data) => {\n const c = this.toNodeData(data);\n\n if (c.type === 'clear') {\n this.input.clear();\n } else if (c.type === 'command') {\n if (Array.isArray(c.value)) {\n c.value.forEach((vv) => {\n this.input.cmd(vv);\n });\n } else {\n this.input.cmd(c.value);\n }\n } else if (c.type === 'cursor') {\n this.input.keystroke(c.value);\n } else {\n this.input.write(c.value);\n }\n\n this.input.focus();\n };\n\n callOnSessionChange = () => {\n const { onSessionChange } = this.props;\n\n if (onSessionChange) {\n onSessionChange(this.state.session);\n }\n };\n\n toggleShowCorrect = (show) => {\n this.setState({ showCorrect: show }, this.handleAnswerBlockDomUpdate);\n };\n\n subFieldChanged = (name, subfieldValue) => {\n updateSpans();\n\n if (name) {\n this.setState(\n (state) => ({\n session: {\n ...state.session,\n completeAnswer: this.mqStatic && this.mqStatic.mathField.latex(),\n answers: {\n ...state.session.answers,\n [name]: { value: subfieldValue },\n },\n },\n }),\n this.callOnSessionChange,\n );\n }\n };\n\n getFieldName = (changeField, fields) => {\n const { answers } = this.state.session;\n\n if (Object.keys(answers || {}).length) {\n const keys = Object.keys(answers);\n\n return keys.find((k) => {\n const tf = fields[k];\n\n return tf && tf.id == changeField.id;\n });\n }\n };\n\n onBlur = (e) => {\n const { relatedTarget, currentTarget } = e || {};\n\n if (\n !relatedTarget ||\n !currentTarget ||\n (!IS_SAFARI && !relatedTarget?.offsetParent?.children[0]?.attributes?.['data-keypad']) ||\n (IS_SAFARI && !relatedTarget?.offsetParent?.children[0]?.children[0]?.attributes?.['data-keypad'])\n ) {\n this.setState({ activeAnswerBlock: '' });\n }\n };\n\n setTooltipRef(ref) {\n // Safari Hack: https://stackoverflow.com/a/42764495/5757635\n setTimeout(() => {\n if (ref && IS_SAFARI) {\n const div = document.querySelector(\"[role='tooltip']\");\n\n if (div) {\n const el = div.firstChild;\n el.setAttribute('tabindex', '-1');\n }\n }\n }, 1);\n }\n\n render() {\n const { model, classes } = this.props;\n const { activeAnswerBlock, showCorrect, session } = this.state;\n const {\n config,\n correctness,\n disabled,\n view,\n teacherInstructions,\n rationale,\n feedback,\n animationsDisabled,\n printMode,\n alwaysShowCorrect,\n language,\n } = model || {};\n\n if (!config) {\n return null;\n }\n\n const {\n showNote,\n note,\n prompt,\n responses,\n responseType,\n equationEditor,\n customKeys,\n env: { mode, role } = {},\n } = config || {};\n const displayNote = (showCorrect || (mode === 'view' && role === 'instructor')) && showNote && note;\n const emptyResponse = isEmpty(responses);\n const showCorrectAnswerToggle = !emptyResponse && correctness && correctness.correctness !== 'correct';\n const tooltipModeEnabled = disabled && correctness;\n const additionalKeys = generateAdditionalKeys(customKeys);\n const correct = correctness && correctness.correct;\n const staticLatex = prepareForStatic(model, this.state) || '';\n const viewMode = disabled && !correctness;\n const studentPrintMode = printMode && !alwaysShowCorrect;\n\n const printView = (\n <div className={classes.printContainer}>\n <mq.Static\n className={classes.static}\n ref={(mqStatic) => (this.mqStatic = mqStatic || this.mqStatic)}\n latex={staticLatex}\n onSubFieldChange={this.subFieldChanged}\n getFieldName={this.getFieldName}\n setInput={this.setInput}\n onSubFieldFocus={this.onSubFieldFocus}\n onBlur={this.onBlur}\n />\n </div>\n );\n\n const midContent = (\n <div className={classes.main}>\n {mode === 'gather' && <h2 className={classes.srOnly}>Math Equation Response Question</h2>}\n\n {viewMode &&\n teacherInstructions &&\n hasText(teacherInstructions) &&\n (!animationsDisabled ? (\n <Collapsible\n className={classes.collapsible}\n labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}\n >\n <div dangerouslySetInnerHTML={{ __html: teacherInstructions }} />\n </Collapsible>\n ) : (\n <div dangerouslySetInnerHTML={{ __html: teacherInstructions }} />\n ))}\n\n {prompt && (\n <div className={classes.promptContainer}>\n <PreviewPrompt prompt={prompt} />\n </div>\n )}\n\n {studentPrintMode ? (\n printView\n ) : (\n <Readable false>\n <div className={classes.inputAndKeypadContainer}>\n {responseType === ResponseTypes.simple && (\n <SimpleQuestionBlock\n onSimpleResponseChange={this.onSimpleResponseChange}\n showCorrect={showCorrect}\n emptyResponse={emptyResponse}\n model={model}\n session={session}\n />\n )}\n\n {responseType === ResponseTypes.advanced && (\n <div\n className={cx(classes.expression, {\n [classes.incorrect]: !emptyResponse && !correct && !showCorrect,\n [classes.correct]: !emptyResponse && (correct || showCorrect),\n [classes.showCorrectness]: !emptyResponse && disabled && correctness && !view,\n [classes.correctAnswerShown]: showCorrect,\n [classes.printCorrect]: printMode && alwaysShowCorrect,\n })}\n >\n <Tooltip\n ref={(ref) => this.setTooltipRef(ref)}\n interactive\n open={!!activeAnswerBlock}\n classes={{\n tooltip: classes.keypadTooltip,\n popper: classes.keypadTooltipPopper,\n }}\n title={Object.keys(session.answers).map(\n (answerId) =>\n (answerId === activeAnswerBlock && !(showCorrect || disabled) && (\n <div\n data-keypad={true}\n key={answerId}\n className={classes.responseContainer}\n style={{\n // marginTop: this.mqStatic && this.mqStatic.input.offsetHeight - 20,\n width: getKeyPadWidth(additionalKeys, equationEditor),\n }}\n >\n <HorizontalKeypad\n additionalKeys={additionalKeys}\n mode={equationEditor || DEFAULT_KEYPAD_VARIANT}\n onClick={this.onClick}\n />\n </div>\n )) ||\n null,\n )}\n >\n <mq.Static\n className={classes.static}\n ref={(mqStatic) => (this.mqStatic = mqStatic || this.mqStatic)}\n latex={staticLatex}\n onSubFieldChange={this.subFieldChanged}\n getFieldName={this.getFieldName}\n setInput={this.setInput}\n onSubFieldFocus={this.onSubFieldFocus}\n onBlur={this.onBlur}\n />\n </Tooltip>\n </div>\n )}\n </div>\n </Readable>\n )}\n\n {viewMode && displayNote && (\n <div className={classes.note} dangerouslySetInnerHTML={{ __html: `<strong>Note:</strong> ${note}` }} />\n )}\n\n {viewMode &&\n rationale &&\n hasText(rationale) &&\n (!animationsDisabled ? (\n <Collapsible labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}>\n <div dangerouslySetInnerHTML={{ __html: rationale }} />\n </Collapsible>\n ) : (\n <div dangerouslySetInnerHTML={{ __html: rationale }} />\n ))}\n </div>\n );\n\n if (\n tooltipModeEnabled &&\n (showCorrectAnswerToggle ||\n (teacherInstructions && hasText(teacherInstructions)) ||\n (rationale && hasText(rationale)) ||\n feedback)\n ) {\n return (\n <Tooltip\n interactive\n classes={{\n tooltip: classes.tooltip,\n popper: classes.tooltipPopper,\n }}\n title={\n <div>\n <div className={classes.main}>\n {showCorrectAnswerToggle && (\n <CorrectAnswerToggle\n language={language}\n className={classes.toggle}\n show\n toggled={showCorrect}\n onToggle={this.toggleShowCorrect}\n />\n )}\n </div>\n\n {teacherInstructions && hasText(teacherInstructions) && (\n <Collapsible\n className={classes.collapsible}\n key=\"collapsible-teacher-instructions\"\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions',\n }}\n >\n <PreviewPrompt prompt={teacherInstructions} />\n </Collapsible>\n )}\n {displayNote && hasText(note) && (\n <Collapsible\n className={classes.collapsible}\n key=\"collapsible-note\"\n labels={{\n hidden: translator.t('common:showNote', { lng: language }),\n visible: translator.t('common:hideNote', { lng: language }),\n }}\n >\n <PreviewPrompt prompt={note} />\n </Collapsible>\n )}\n\n {rationale && hasText(rationale) && (\n <Collapsible\n className={classes.collapsible}\n key=\"collapsible-rationale\"\n labels={{\n hidden: 'Show Rationale',\n visible: 'Hide Rationale',\n }}\n >\n <PreviewPrompt prompt={rationale} />\n </Collapsible>\n )}\n\n {feedback && <Feedback correctness={correctness.correctness} feedback={feedback} />}\n </div>\n }\n >\n <div className={classes.mainContainer} ref={(r) => (this.root = r || this.root)}>\n {midContent}\n </div>\n </Tooltip>\n );\n }\n\n return (\n <div className={classes.mainContainer} ref={(r) => (this.root = r || this.root)}>\n {midContent}\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n mainContainer: {\n color: color.text(),\n backgroundColor: color.background(),\n display: 'inline-block',\n },\n tooltip: {\n background: `${color.primaryLight()} !important`,\n color: color.text(),\n padding: theme.spacing.unit * 2,\n border: `1px solid ${color.secondary()}`,\n fontSize: '16px',\n '& :not(.MathJax) > table tr': {\n '&:nth-child(2n)': {\n backgroundColor: 'unset !important',\n },\n },\n },\n tooltipPopper: {\n opacity: 1,\n },\n keypadTooltip: {\n fontSize: 'initial',\n background: 'transparent',\n width: '600px',\n marginTop: 0,\n paddingTop: 0,\n },\n keypadTooltipPopper: {\n background: 'transparent',\n width: '650px',\n opacity: 1,\n },\n promptContainer: {\n marginBottom: theme.spacing.unit * 2,\n },\n main: {\n width: '100%',\n position: 'relative',\n backgroundColor: color.background(),\n color: color.text(),\n },\n title: {\n fontSize: '1.1rem',\n display: 'block',\n marginTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit,\n },\n note: {\n paddingBottom: theme.spacing.unit * 2,\n },\n collapsible: {\n marginBottom: theme.spacing.unit * 2,\n },\n responseContainer: {\n zIndex: 10,\n // position: 'absolute',\n // right: 0,\n minWidth: '400px',\n marginTop: theme.spacing.unit * 2,\n },\n expression: {\n maxWidth: 'fit-content',\n '& > .mq-math-mode': {\n '& > .mq-root-block': {\n '& > .mq-editable-field': {\n minWidth: '10px',\n margin: (theme.spacing.unit * 2) / 3,\n padding: theme.spacing.unit / 4,\n },\n },\n '& sup': {\n top: 0,\n },\n },\n },\n static: {\n '& > .mq-root-block': {\n '& > .mq-editable-field': {\n borderColor: color.text(),\n },\n },\n },\n inputAndKeypadContainer: {\n position: 'relative',\n '& .mq-overarrow-inner': {\n border: 'none !important',\n padding: '0 !important',\n },\n '& .mq-overarrow-inner-right': {\n display: 'none !important',\n },\n '& .mq-overarrow-inner-left': {\n display: 'none !important',\n },\n '& .mq-overarrow.mq-arrow-both': {\n minWidth: '1.23em',\n '& *': {\n lineHeight: '1 !important',\n },\n '&:before': {\n top: '-0.4em',\n left: '-1px',\n },\n '&:after': {\n top: '-2.4em',\n right: '-1px',\n },\n '&.mq-empty:after': {\n top: '-0.45em',\n },\n },\n '& .mq-overarrow.mq-arrow-right': {\n '&:before': {\n top: '-0.4em',\n right: '-1px',\n },\n },\n '& .mq-longdiv-inner': {\n borderTop: '1px solid !important',\n paddingTop: '1.5px !important',\n },\n '& .mq-parallelogram': {\n lineHeight: 0.85,\n },\n },\n showCorrectness: {\n border: '2px solid',\n },\n correctAnswerShown: {\n padding: theme.spacing.unit,\n letterSpacing: '0.5px',\n },\n printCorrect: {\n border: `2px solid ${color.correct()} !important`,\n },\n correct: {\n borderColor: `${color.correct()} !important`,\n },\n incorrect: {\n borderColor: `${color.incorrect()} !important`,\n },\n blockContainer: {\n margin: `${theme.spacing.unit}px !important`,\n display: 'inline-flex',\n border: '2px solid grey !important',\n },\n blockResponse: {\n flex: 2,\n color: 'grey',\n background: theme.palette.grey['A100'],\n fontSize: '0.8rem !important',\n padding: `${theme.spacing.unit / 2}px !important`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRight: `2px solid ${color.disabled()} !important`,\n },\n toggle: {\n color: color.text(),\n marginBottom: theme.spacing.unit * 2,\n },\n blockMath: {\n color: color.text(),\n backgroundColor: color.background(),\n padding: `${theme.spacing.unit / 2}px !important`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flex: 8,\n '& > .mq-math-mode': {\n '& > .mq-hasCursor': {\n '& > .mq-cursor': {\n display: 'none',\n },\n },\n },\n },\n printContainer: {\n marginBottom: theme.spacing.unit,\n pointerEvents: 'none',\n },\n srOnly: {\n position: 'absolute',\n left: '-10000px',\n top: 'auto',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n },\n});\n\nexport default withStyles(styles)(Main);\n"],"file":"main.js"}
1
+ {"version":3,"sources":["../src/main.jsx"],"names":["translator","Translator","registered","NEWLINE_LATEX","REGEX","DEFAULT_KEYPAD_VARIANT","IS_SAFARI","test","navigator","userAgent","generateAdditionalKeys","keyData","map","key","name","latex","write","label","getKeyPadWidth","additionalKeys","equationEditor","Math","floor","length","prepareForStatic","model","state","config","disabled","expression","responses","printMode","alwaysShowCorrect","modelExpression","showCorrect","answer","answerBlocks","replace","session","answers","blankSpace","repeat","value","Main","props","classes","root","Object","keys","forEach","answerId","el","querySelector","indexEl","MQ","MathQuill","getInterface","textContent","view","parentElement","classList","remove","correct","incorrect","StaticMath","selectableElements","querySelectorAll","elem","setAttribute","textareaElements","response","setState","callOnSessionChange","id","activeAnswerBlock","data","type","input","c","toNodeData","clear","Array","isArray","vv","cmd","keystroke","focus","onSessionChange","show","handleAnswerBlockDomUpdate","subfieldValue","completeAnswer","mqStatic","mathField","changeField","fields","find","k","tf","e","relatedTarget","currentTarget","getParentWithRoleTooltip","element","depth","parent","offsetParent","getAttribute","getDeepChildDataKeypad","child","children","attributes","parentWithTooltipRole","childWithDataKeypad","window","registerEmbed","htmlString","blockContainer","blockResponse","blockMath","text","pattern","matches","match","nextProps","nextConfig","note","language","t","lng","env","mode","countResponseOccurrences","setTimeout","updateAria","newAnswers","nextState","sameModel","sameState","ref","div","document","firstChild","correctness","teacherInstructions","rationale","feedback","animationsDisabled","showNote","prompt","responseType","customKeys","role","displayNote","emptyResponse","showCorrectAnswerToggle","tooltipModeEnabled","staticLatex","viewMode","studentPrintMode","printView","printContainer","subFieldChanged","getFieldName","setInput","onSubFieldFocus","onBlur","midContent","main","srOnly","collapsible","hidden","visible","__html","promptContainer","inputAndKeypadContainer","ResponseTypes","simple","onSimpleResponseChange","advanced","showCorrectness","correctAnswerShown","printCorrect","setTooltipRef","tooltip","keypadTooltip","popper","keypadTooltipPopper","responseContainer","width","onClick","tooltipPopper","toggle","toggleShowCorrect","mainContainer","r","React","Component","PropTypes","object","isRequired","func","styles","theme","color","backgroundColor","background","display","primaryLight","padding","spacing","unit","border","secondary","fontSize","opacity","marginTop","paddingTop","marginBottom","position","title","paddingBottom","zIndex","minWidth","maxWidth","margin","top","borderColor","lineHeight","left","right","borderTop","letterSpacing","flex","palette","grey","alignItems","justifyContent","borderRight","pointerEvents","height","overflow"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport {CorrectAnswerToggle} from '@pie-lib/pie-toolbox/correct-answer-toggle';\nimport {mq, HorizontalKeypad, updateSpans} from '@pie-lib/pie-toolbox/math-input';\nimport {Feedback, Collapsible, Readable, hasText, PreviewPrompt} from '@pie-lib/pie-toolbox/render-ui';\nimport {renderMath} from '@pie-lib/pie-toolbox/math-rendering';\nimport {withStyles} from '@material-ui/core/styles';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport {ResponseTypes} from './utils';\nimport isEqual from 'lodash/isEqual';\nimport cx from 'classnames';\nimport SimpleQuestionBlock from './simple-question-block';\nimport MathQuill from '@pie-framework/mathquill';\nimport {color} from '@pie-lib/pie-toolbox/render-ui';\nimport isEmpty from 'lodash/isEmpty';\nimport Translator from '@pie-lib/pie-toolbox/translator';\nconst {translator} = Translator;\nlet registered = false;\n\nconst NEWLINE_LATEX = /\\\\newline/g;\nconst REGEX = /{{response}}/gm;\nconst DEFAULT_KEYPAD_VARIANT = 6;\n\n// !!! If you're using Chrome but have selected the \"iPad\" device in Chrome Developer Tools, the navigator.userAgent string may still report as\n// Safari because Chrome on iOS actually uses the Safari rendering engine under the hood due to Apple's restrictions on third-party browser engines.\n// When you select the \"iPad\" device in Chrome Developer Tools, you're essentially emulating the behavior of Safari on an iPad, including the user agent string.\n// Therefore, even though you're using Chrome, the user agent string will resemble that of Safari on an iPad.\n// Since the regular expression /^((?!chrome|android).)*safari/i checks for the presence of \"safari\" in the user agent string while excluding \"chrome\" and \"android\",\n// it will return true in this case because \"safari\" is present in the user agent string emulated by Chrome when in iPad mode.\nconst IS_SAFARI = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n\nfunction generateAdditionalKeys(keyData = []) {\n return keyData.map((key) => ({\n name: key,\n latex: key,\n write: key,\n label: key,\n }));\n}\n\nfunction getKeyPadWidth(additionalKeys = [], equationEditor) {\n return Math.floor(additionalKeys.length / 5) * 30 + (equationEditor === 'miscellaneous' ? 600 : 500);\n}\n\nfunction prepareForStatic(model, state) {\n const {config, disabled} = model || {};\n const {expression, responses, printMode, alwaysShowCorrect} = config || {};\n\n if (config && expression) {\n const modelExpression = expression;\n\n if (state.showCorrect) {\n return responses && responses.length && responses[0].answer;\n }\n\n let answerBlocks = 1; // assume one at least\n // build out local state model using responses declared in expression\n\n return (modelExpression || '')\n .replace(REGEX, function () {\n const answer = state.session.answers[`r${answerBlocks}`];\n\n if (printMode && !alwaysShowCorrect) {\n const blankSpace = '\\\\ \\\\ '.repeat(30) + '\\\\newline ';\n\n return `\\\\MathQuillMathField[r${answerBlocks++}]{${blankSpace.repeat(3)}}`;\n }\n\n if (disabled) {\n return `\\\\embed{answerBlock}[r${answerBlocks++}]`;\n }\n\n return `\\\\MathQuillMathField[r${answerBlocks++}]{${(answer && answer.value) || ''}}`;\n })\n .replace(NEWLINE_LATEX, '\\\\embed{newLine}[]');\n }\n}\n\nexport class Main extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n session: PropTypes.object.isRequired,\n onSessionChange: PropTypes.func,\n model: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n\n const answers = {};\n\n if (props.model.config && props.model.config.expression) {\n let answerBlocks = 1; // assume one at least\n // build out local state model using responses declared in expression\n\n (props.model.config.expression || '').replace(REGEX, () => {\n answers[`r${answerBlocks}`] = {\n value:\n (props.session &&\n props.session.answers &&\n props.session.answers[`r${answerBlocks}`] &&\n props.session.answers[`r${answerBlocks}`].value) ||\n '',\n };\n\n answerBlocks += 1;\n });\n }\n\n this.state = {\n session: {...props.session, answers},\n activeAnswerBlock: '',\n showCorrect: this.props.model.config.alwaysShowCorrect || false,\n };\n }\n\n UNSAFE_componentWillMount() {\n const {classes} = this.props;\n\n if (typeof window !== 'undefined') {\n let MQ = MathQuill.getInterface(2);\n\n if (!registered) {\n MQ.registerEmbed('answerBlock', (data) => {\n return {\n htmlString: `<div class=\"${classes.blockContainer}\">\n <div class=\"${classes.blockResponse}\" id=\"${data}Index\">R</div>\n <div class=\"${classes.blockMath}\">\n <span id=\"${data}\"></span>\n </div>\n </div>`,\n text: () => 'text',\n latex: () => `\\\\embed{answerBlock}[${data}]`,\n };\n });\n\n registered = true;\n }\n }\n }\n\n handleAnswerBlockDomUpdate = () => {\n const {model, classes} = this.props;\n const {session, showCorrect} = this.state;\n const answers = session.answers;\n\n if (this.root && model.disabled && !showCorrect) {\n Object.keys(answers).forEach((answerId) => {\n const el = this.root.querySelector(`#${answerId}`);\n const indexEl = this.root.querySelector(`#${answerId}Index`);\n // const correct = model.correctness && model.correctness.correct;\n\n if (el) {\n let MQ = MathQuill.getInterface(2);\n const answer = answers[answerId];\n\n el.textContent = (answer && answer.value) || '';\n\n if (!model.view) {\n // for now, we're not going to be showing individual response correctness\n // TODO re-attach the classes once we are\n // el.parentElement.parentElement.classList.add(\n // correct ? classes.correct : classes.incorrect\n // );\n } else {\n el.parentElement.parentElement.classList.remove(classes.correct);\n el.parentElement.parentElement.classList.remove(classes.incorrect);\n }\n\n MQ.StaticMath(el);\n\n // For now, we're not going to be indexing response blocks\n // TODO go back to indexing once we support individual response correctness\n // indexEl.textContent = `R${idx + 1}`;\n indexEl.textContent = 'R';\n }\n });\n }\n\n renderMath(this.root);\n };\n\n countResponseOccurrences(expression) {\n const pattern = /\\{\\{response\\}\\}/g;\n const matches = expression.match(pattern);\n\n return matches ? matches.length : 0;\n }\n\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const {config} = this.props.model;\n const {config: nextConfig = {}} = nextProps.model || {};\n // check if the note is the default one for prev language and change to the default one for new language\n // this check is necessary in order to diferanciate between default and authour defined note\n // and only change between languages for default ones\n if (\n config.note &&\n config.language &&\n config.language !== nextConfig.language &&\n config.note === translator.t('mathInline.primaryCorrectWithAlternates', {lng: config.language})\n ) {\n config.note = translator.t('mathInline.primaryCorrectWithAlternates', {lng: nextConfig.language});\n }\n\n if ((config.env && config.env.mode !== 'evaluate') || (nextConfig.env && nextConfig.env.mode !== 'evaluate')) {\n this.setState({...this.state.session, showCorrect: false});\n }\n\n if (nextConfig.alwaysShowCorrect) {\n this.setState({showCorrect: true});\n }\n\n if (this.countResponseOccurrences(config.expression) < this.countResponseOccurrences(nextConfig.expression)) {\n setTimeout(() => this.updateAria(), 100);\n }\n\n if (\n (config && config.responses && config.responses.length !== nextConfig.responses.length) ||\n (!config && nextConfig && nextConfig.responses) ||\n (config && nextConfig && config.expression !== nextConfig.expression)\n ) {\n const newAnswers = {};\n const answers = this.state.session.answers;\n\n let answerBlocks = 1; // assume one at least\n\n // build out local state model using responses declared in expression\n (nextConfig.expression || '').replace(REGEX, () => {\n newAnswers[`r${answerBlocks}`] = {\n value: (answers && answers[`r${answerBlocks}`] && answers[`r${answerBlocks}`].value) || '',\n };\n answerBlocks++;\n });\n\n this.setState(\n (state) => ({\n session: {\n ...state.session,\n completeAnswer: this.mqStatic && this.mqStatic.mathField.latex(),\n answers: newAnswers,\n },\n }),\n this.handleAnswerBlockDomUpdate,\n );\n }\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n const sameModel = isEqual(this.props.model, nextProps.model);\n const sameState = isEqual(this.state, nextState);\n\n return !sameModel || !sameState;\n }\n\n componentDidMount() {\n this.handleAnswerBlockDomUpdate();\n this.updateAria();\n setTimeout(() => renderMath(this.root), 100);\n }\n\n componentDidUpdate() {\n this.handleAnswerBlockDomUpdate();\n }\n\n updateAria = () => {\n if (this.root) {\n // Update aria-hidden for .mq-selectable elements\n const selectableElements = this.root.querySelectorAll('.mq-selectable');\n selectableElements.forEach(elem => elem.setAttribute('aria-hidden', 'true'));\n\n // Update aria-label for textarea elements\n const textareaElements = this.root.querySelectorAll('textarea');\n textareaElements.forEach(elem => {\n elem.setAttribute('aria-label', 'Enter answer using math editor buttons or keyboard.');\n });\n }\n };\n\n onDone = () => {};\n\n onSimpleResponseChange = (response) => {\n this.setState((state) => ({session: {...state.session, response}}), this.callOnSessionChange);\n };\n\n onSubFieldFocus = (id) => {\n this.setState({activeAnswerBlock: id});\n };\n\n toNodeData = (data) => {\n if (!data) {\n return;\n }\n\n const {type, value} = data;\n\n if (type === 'command' || type === 'cursor') {\n return data;\n } else if (type === 'answer') {\n return {type: 'answer', ...data};\n } else if (value === 'clear') {\n return {type: 'clear'};\n } else {\n return {type: 'write', value};\n }\n };\n\n setInput = (input) => {\n this.input = input;\n };\n\n onClick = (data) => {\n const c = this.toNodeData(data);\n\n if (c.type === 'clear') {\n this.input.clear();\n } else if (c.type === 'command') {\n if (Array.isArray(c.value)) {\n c.value.forEach((vv) => {\n this.input.cmd(vv);\n });\n } else {\n this.input.cmd(c.value);\n }\n } else if (c.type === 'cursor') {\n this.input.keystroke(c.value);\n } else {\n this.input.write(c.value);\n }\n\n this.input.focus();\n };\n\n callOnSessionChange = () => {\n const {onSessionChange} = this.props;\n\n if (onSessionChange) {\n onSessionChange(this.state.session);\n }\n };\n\n toggleShowCorrect = (show) => {\n this.setState({showCorrect: show}, this.handleAnswerBlockDomUpdate);\n };\n\n subFieldChanged = (name, subfieldValue) => {\n updateSpans();\n\n if (name) {\n this.setState(\n (state) => ({\n session: {\n ...state.session,\n completeAnswer: this.mqStatic && this.mqStatic.mathField.latex(),\n answers: {\n ...state.session.answers,\n [name]: {value: subfieldValue},\n },\n },\n }),\n this.callOnSessionChange,\n );\n }\n };\n\n getFieldName = (changeField, fields) => {\n const {answers} = this.state.session;\n\n if (Object.keys(answers || {}).length) {\n const keys = Object.keys(answers);\n\n return keys.find((k) => {\n const tf = fields[k];\n\n return tf && tf.id == changeField.id;\n });\n }\n };\n\n onBlur = (e) => {\n const {relatedTarget, currentTarget} = e || {};\n\n function getParentWithRoleTooltip(element, depth = 0) {\n // only run this max 16 times\n if (!element || depth >= 16) return null;\n\n const parent = element.offsetParent;\n\n if (!parent) return null;\n\n if (parent.getAttribute('role') === 'tooltip') {\n return parent;\n }\n\n return getParentWithRoleTooltip(parent, depth + 1);\n }\n\n function getDeepChildDataKeypad(element, depth = 0) {\n // only run this max 4 times\n if (!element || depth >= 4) return null;\n\n const child = element?.children?.[0];\n\n if (!child) return null;\n\n if (child.attributes && child.attributes['data-keypad']) {\n return child;\n }\n\n return getDeepChildDataKeypad(child, depth + 1);\n }\n\n const parentWithTooltipRole = getParentWithRoleTooltip(relatedTarget);\n const childWithDataKeypad = parentWithTooltipRole ? getDeepChildDataKeypad(parentWithTooltipRole) : null;\n\n if (!relatedTarget || !currentTarget || !childWithDataKeypad?.attributes['data-keypad']) {\n this.setState({activeAnswerBlock: ''});\n }\n // else {\n // // Just for debugging purpose:\n // console.log('\\n\\nNew childWithDataKeypad', childWithDataKeypad);\n //\n // if (IS_SAFARI) {\n // // (IS_SAFARI && !relatedTarget?.offsetParent?.children[0]?.children[0]?.attributes?.['data-keypad'])\n // console.log('What was being used', relatedTarget?.offsetParent?.children[0]?.children[0]);\n // } else {\n // // (!IS_SAFARI && !relatedTarget?.offsetParent?.children[0]?.attributes?.['data-keypad']) ||\n // console.log('What was being used', relatedTarget?.offsetParent?.children[0]);\n // }\n // }\n };\n\n setTooltipRef(ref) {\n // Safari Hack: https://stackoverflow.com/a/42764495/5757635\n setTimeout(() => {\n if (ref && IS_SAFARI) {\n const div = document.querySelector(\"[role='tooltip']\");\n\n if (div) {\n const el = div.firstChild;\n el.setAttribute('tabindex', '-1');\n }\n }\n }, 1);\n }\n\n render() {\n const {model, classes} = this.props;\n const {activeAnswerBlock, showCorrect, session} = this.state;\n const {\n config,\n correctness,\n disabled,\n view,\n teacherInstructions,\n rationale,\n feedback,\n animationsDisabled,\n printMode,\n alwaysShowCorrect,\n language,\n } = model || {};\n\n if (!config) {\n return null;\n }\n\n const {\n showNote,\n note,\n prompt,\n responses,\n responseType,\n equationEditor,\n customKeys,\n env: {mode, role} = {},\n } = config || {};\n const displayNote = (showCorrect || (mode === 'view' && role === 'instructor')) && showNote && note;\n const emptyResponse = isEmpty(responses);\n const showCorrectAnswerToggle = !emptyResponse && correctness && correctness.correctness !== 'correct';\n const tooltipModeEnabled = disabled && correctness;\n const additionalKeys = generateAdditionalKeys(customKeys);\n const correct = correctness && correctness.correct;\n const staticLatex = prepareForStatic(model, this.state) || '';\n const viewMode = disabled && !correctness;\n const studentPrintMode = printMode && !alwaysShowCorrect;\n\n const printView = (\n <div className={classes.printContainer}>\n <mq.Static\n className={classes.static}\n ref={(mqStatic) => (this.mqStatic = mqStatic || this.mqStatic)}\n latex={staticLatex}\n onSubFieldChange={this.subFieldChanged}\n getFieldName={this.getFieldName}\n setInput={this.setInput}\n onSubFieldFocus={this.onSubFieldFocus}\n onBlur={this.onBlur}\n />\n </div>\n );\n\n const midContent = (\n <div className={classes.main}>\n {mode === 'gather' && <h2 className={classes.srOnly}>Math Equation Response Question</h2>}\n\n {viewMode &&\n teacherInstructions &&\n hasText(teacherInstructions) &&\n (!animationsDisabled ? (\n <Collapsible\n className={classes.collapsible}\n labels={{hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions'}}\n >\n <div dangerouslySetInnerHTML={{__html: teacherInstructions}}/>\n </Collapsible>\n ) : (\n <div dangerouslySetInnerHTML={{__html: teacherInstructions}}/>\n ))}\n\n {prompt && (\n <div className={classes.promptContainer}>\n <PreviewPrompt prompt={prompt}/>\n </div>\n )}\n\n {studentPrintMode ? (\n printView\n ) : (\n <Readable false>\n <div className={classes.inputAndKeypadContainer}>\n {responseType === ResponseTypes.simple && (\n <SimpleQuestionBlock\n onSimpleResponseChange={this.onSimpleResponseChange}\n showCorrect={showCorrect}\n emptyResponse={emptyResponse}\n model={model}\n session={session}\n />\n )}\n\n {responseType === ResponseTypes.advanced && (\n <div\n className={cx(classes.expression, {\n [classes.incorrect]: !emptyResponse && !correct && !showCorrect,\n [classes.correct]: !emptyResponse && (correct || showCorrect),\n [classes.showCorrectness]: !emptyResponse && disabled && correctness && !view,\n [classes.correctAnswerShown]: showCorrect,\n [classes.printCorrect]: printMode && alwaysShowCorrect,\n })}\n >\n <Tooltip\n ref={(ref) => this.setTooltipRef(ref)}\n interactive\n open={!!activeAnswerBlock}\n classes={{\n tooltip: classes.keypadTooltip,\n popper: classes.keypadTooltipPopper,\n }}\n title={Object.keys(session.answers).map(\n (answerId) =>\n (answerId === activeAnswerBlock && !(showCorrect || disabled) && (\n <div\n data-keypad={true}\n key={answerId}\n className={classes.responseContainer}\n style={{\n // marginTop: this.mqStatic && this.mqStatic.input.offsetHeight - 20,\n width: getKeyPadWidth(additionalKeys, equationEditor),\n }}\n >\n <HorizontalKeypad\n additionalKeys={additionalKeys}\n mode={equationEditor || DEFAULT_KEYPAD_VARIANT}\n onClick={this.onClick}\n />\n </div>\n )) ||\n null,\n )}\n >\n <mq.Static\n className={classes.static}\n ref={(mqStatic) => (this.mqStatic = mqStatic || this.mqStatic)}\n latex={staticLatex}\n onSubFieldChange={this.subFieldChanged}\n getFieldName={this.getFieldName}\n setInput={this.setInput}\n onSubFieldFocus={this.onSubFieldFocus}\n onBlur={this.onBlur}\n />\n </Tooltip>\n </div>\n )}\n </div>\n </Readable>\n )}\n\n {viewMode && displayNote && (\n <div className={classes.note} dangerouslySetInnerHTML={{__html: `<strong>Note:</strong> ${note}`}}/>\n )}\n\n {viewMode &&\n rationale &&\n hasText(rationale) &&\n (!animationsDisabled ? (\n <Collapsible labels={{hidden: 'Show Rationale', visible: 'Hide Rationale'}}>\n <div dangerouslySetInnerHTML={{__html: rationale}}/>\n </Collapsible>\n ) : (\n <div dangerouslySetInnerHTML={{__html: rationale}}/>\n ))}\n </div>\n );\n\n if (\n tooltipModeEnabled &&\n (showCorrectAnswerToggle ||\n (teacherInstructions && hasText(teacherInstructions)) ||\n (rationale && hasText(rationale)) ||\n feedback)\n ) {\n return (\n <Tooltip\n interactive\n classes={{\n tooltip: classes.tooltip,\n popper: classes.tooltipPopper,\n }}\n title={\n <div>\n <div className={classes.main}>\n {showCorrectAnswerToggle && (\n <CorrectAnswerToggle\n language={language}\n className={classes.toggle}\n show\n toggled={showCorrect}\n onToggle={this.toggleShowCorrect}\n />\n )}\n </div>\n\n {teacherInstructions && hasText(teacherInstructions) && (\n <Collapsible\n className={classes.collapsible}\n key=\"collapsible-teacher-instructions\"\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions',\n }}\n >\n <PreviewPrompt prompt={teacherInstructions}/>\n </Collapsible>\n )}\n {displayNote && hasText(note) && (\n <Collapsible\n className={classes.collapsible}\n key=\"collapsible-note\"\n labels={{\n hidden: translator.t('common:showNote', {lng: language}),\n visible: translator.t('common:hideNote', {lng: language}),\n }}\n >\n <PreviewPrompt prompt={note}/>\n </Collapsible>\n )}\n\n {rationale && hasText(rationale) && (\n <Collapsible\n className={classes.collapsible}\n key=\"collapsible-rationale\"\n labels={{\n hidden: 'Show Rationale',\n visible: 'Hide Rationale',\n }}\n >\n <PreviewPrompt prompt={rationale}/>\n </Collapsible>\n )}\n\n {feedback && <Feedback correctness={correctness.correctness} feedback={feedback}/>}\n </div>\n }\n >\n <div className={classes.mainContainer} ref={(r) => (this.root = r || this.root)}>\n {midContent}\n </div>\n </Tooltip>\n );\n }\n\n return (\n <div className={classes.mainContainer} ref={(r) => (this.root = r || this.root)}>\n {midContent}\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n mainContainer: {\n color: color.text(),\n backgroundColor: color.background(),\n display: 'inline-block',\n },\n tooltip: {\n background: `${color.primaryLight()} !important`,\n color: color.text(),\n padding: theme.spacing.unit * 2,\n border: `1px solid ${color.secondary()}`,\n fontSize: '16px',\n '& :not(.MathJax) > table tr': {\n '&:nth-child(2n)': {\n backgroundColor: 'unset !important',\n },\n },\n },\n tooltipPopper: {\n opacity: 1,\n },\n keypadTooltip: {\n fontSize: 'initial',\n background: 'transparent',\n width: '600px',\n marginTop: 0,\n paddingTop: 0,\n },\n keypadTooltipPopper: {\n background: 'transparent',\n width: '650px',\n opacity: 1,\n },\n promptContainer: {\n marginBottom: theme.spacing.unit * 2,\n },\n main: {\n width: '100%',\n position: 'relative',\n backgroundColor: color.background(),\n color: color.text(),\n },\n title: {\n fontSize: '1.1rem',\n display: 'block',\n marginTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit,\n },\n note: {\n paddingBottom: theme.spacing.unit * 2,\n },\n collapsible: {\n marginBottom: theme.spacing.unit * 2,\n },\n responseContainer: {\n zIndex: 10,\n // position: 'absolute',\n // right: 0,\n minWidth: '400px',\n marginTop: theme.spacing.unit * 2,\n },\n expression: {\n maxWidth: 'fit-content',\n '& > .mq-math-mode': {\n '& > .mq-root-block': {\n '& > .mq-editable-field': {\n minWidth: '10px',\n margin: (theme.spacing.unit * 2) / 3,\n padding: theme.spacing.unit / 4,\n },\n },\n '& sup': {\n top: 0,\n },\n },\n },\n static: {\n '& > .mq-root-block': {\n '& > .mq-editable-field': {\n borderColor: color.text(),\n },\n },\n },\n inputAndKeypadContainer: {\n position: 'relative',\n '& .mq-overarrow-inner': {\n border: 'none !important',\n padding: '0 !important',\n },\n '& .mq-overarrow-inner-right': {\n display: 'none !important',\n },\n '& .mq-overarrow-inner-left': {\n display: 'none !important',\n },\n '& .mq-overarrow.mq-arrow-both': {\n minWidth: '1.23em',\n '& *': {\n lineHeight: '1 !important',\n },\n '&:before': {\n top: '-0.4em',\n left: '-1px',\n },\n '&:after': {\n top: '-2.4em',\n right: '-1px',\n },\n '&.mq-empty:after': {\n top: '-0.45em',\n },\n },\n '& .mq-overarrow.mq-arrow-right': {\n '&:before': {\n top: '-0.4em',\n right: '-1px',\n },\n },\n '& .mq-longdiv-inner': {\n borderTop: '1px solid !important',\n paddingTop: '1.5px !important',\n },\n '& .mq-parallelogram': {\n lineHeight: 0.85,\n },\n },\n showCorrectness: {\n border: '2px solid',\n },\n correctAnswerShown: {\n padding: theme.spacing.unit,\n letterSpacing: '0.5px',\n },\n printCorrect: {\n border: `2px solid ${color.correct()} !important`,\n },\n correct: {\n borderColor: `${color.correct()} !important`,\n },\n incorrect: {\n borderColor: `${color.incorrect()} !important`,\n },\n blockContainer: {\n margin: `${theme.spacing.unit}px !important`,\n display: 'inline-flex',\n border: '2px solid grey !important',\n },\n blockResponse: {\n flex: 2,\n color: 'grey',\n background: theme.palette.grey['A100'],\n fontSize: '0.8rem !important',\n padding: `${theme.spacing.unit / 2}px !important`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRight: `2px solid ${color.disabled()} !important`,\n },\n toggle: {\n color: color.text(),\n marginBottom: theme.spacing.unit * 2,\n },\n blockMath: {\n color: color.text(),\n backgroundColor: color.background(),\n padding: `${theme.spacing.unit / 2}px !important`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flex: 8,\n '& > .mq-math-mode': {\n '& > .mq-hasCursor': {\n '& > .mq-cursor': {\n display: 'none',\n },\n },\n },\n },\n printContainer: {\n marginBottom: theme.spacing.unit,\n pointerEvents: 'none',\n },\n srOnly: {\n position: 'absolute',\n left: '-10000px',\n top: 'auto',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n },\n});\n\nexport default withStyles(styles)(Main);\n"],"file":"main.js"}
package/lib/print.js CHANGED
@@ -31,7 +31,7 @@ var _debounce = _interopRequireDefault(require("lodash/debounce"));
31
31
 
32
32
  var _main = _interopRequireDefault(require("./main"));
33
33
 
34
- var _mathRenderingAccessible = require("@pie-lib/pie-toolbox/math-rendering-accessible");
34
+ var _mathRendering = require("@pie-lib/pie-toolbox/math-rendering");
35
35
 
36
36
  var _debug = _interopRequireDefault(require("debug"));
37
37
 
@@ -98,7 +98,7 @@ var MathInlinePrint = /*#__PURE__*/function (_HTMLElement) {
98
98
 
99
99
  _reactDom["default"].render(element, (0, _assertThisInitialized2["default"])(_this), function () {
100
100
  log('render complete - render math');
101
- (0, _mathRenderingAccessible.renderMath)((0, _assertThisInitialized2["default"])(_this));
101
+ (0, _mathRendering.renderMath)((0, _assertThisInitialized2["default"])(_this));
102
102
  });
103
103
  } else {
104
104
  log('skip');
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","printMode","feedback","expression","animationsDisabled","disabled","config","env","mode","MathInlinePrint","_options","_model","_session","_rerender","printModel","element","React","createElement","Main","session","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,SAAN,GAAkB,IAAlB;AACAb,EAAAA,KAAK,CAACc,QAAN,GAAiBR,SAAjB;AACAN,EAAAA,KAAK,CAACe,UAAN,GAAmBf,KAAK,CAACe,UAAN,IAAoB,cAAvC;AAEAf,EAAAA,KAAK,CAACgB,kBAAN,GAA2B,IAA3B;AACA,yCACKhB,KADL;AAEEiB,IAAAA,QAAQ,EAAE,IAFZ;AAGEC,IAAAA,MAAM,kCACDlB,KADC;AAEJmB,MAAAA,GAAG,EAAE;AAAEC,QAAAA,IAAI,EAAElB,KAAK,GAAG,UAAH,GAAgBF,KAAK,CAACoB,IAAnC;AAAyCjB,QAAAA,IAAI,EAAEF,IAAI,CAACE;AAApD;AAFD;AAHR;AAQD,CAtBD;;IAwBqBkB,e;;;;;AACnB,6BAAc;AAAA;;AAAA;AACZ;AACA,UAAKC,QAAL,GAAgB,IAAhB;AACA,UAAKC,MAAL,GAAc,IAAd;AACA,UAAKC,QAAL,GAAgB,EAAhB;AACA,UAAKC,SAAL,GAAiB,0BACf,YAAM;AACJ,UAAI,MAAKF,MAAL,IAAe,MAAKC,QAAxB,EAAkC;AAChC,YAAME,UAAU,GAAG3B,iBAAiB,CAAC,MAAKwB,MAAN,EAAc,MAAKD,QAAnB,CAApC;;AAEA,YAAMK,OAAO,GACX,MAAKL,QAAL,iBACAM,kBAAMC,aAAN,CAAoBC,gBAApB,EAA0B;AACxB9B,UAAAA,KAAK,EAAE0B,UADiB;AAExBK,UAAAA,OAAO,EAAE;AAFe,SAA1B,CAFF;;AAOAC,6BAASC,MAAT,CAAgBN,OAAhB,kDAA+B,YAAM;AACnC7B,UAAAA,GAAG,CAAC,+BAAD,CAAH;AACA;AACD,SAHD;AAID,OAdD,MAcO;AACLA,QAAAA,GAAG,CAAC,MAAD,CAAH;AACD;AACF,KAnBc,EAoBf,EApBe,EAqBf;AAAEoC,MAAAA,OAAO,EAAE,KAAX;AAAkBC,MAAAA,QAAQ,EAAE;AAA5B,KArBe,CAAjB;AALY;AA4Bb;;;;SACD,aAAYC,CAAZ,EAAe;AACb,WAAKd,QAAL,GAAgBc,CAAhB;AACD;;;SAED,aAAUC,CAAV,EAAa;AACX,WAAKd,MAAL,GAAcc,CAAd;;AACA,WAAKZ,SAAL;AACD;;;WAED,6BAAoB,CAAE;;;kDAvCqBa,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-accessible';\nimport debug from 'debug';\n\nconst log = debug('pie-element:math-inline: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.printMode = true;\n model.feedback = undefined;\n model.expression = model.expression || '{{response}}';\n\n model.animationsDisabled = true;\n return {\n ...model,\n disabled: true,\n config: {\n ...model,\n env: { mode: instr ? 'evaluate' : model.mode, role: opts.role },\n },\n };\n};\n\nexport default class MathInlinePrint extends HTMLElement {\n constructor() {\n super();\n this._options = null;\n this._model = null;\n this._session = [];\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: {},\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","printMode","feedback","expression","animationsDisabled","disabled","config","env","mode","MathInlinePrint","_options","_model","_session","_rerender","printModel","element","React","createElement","Main","session","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,SAAN,GAAkB,IAAlB;AACAb,EAAAA,KAAK,CAACc,QAAN,GAAiBR,SAAjB;AACAN,EAAAA,KAAK,CAACe,UAAN,GAAmBf,KAAK,CAACe,UAAN,IAAoB,cAAvC;AAEAf,EAAAA,KAAK,CAACgB,kBAAN,GAA2B,IAA3B;AACA,yCACKhB,KADL;AAEEiB,IAAAA,QAAQ,EAAE,IAFZ;AAGEC,IAAAA,MAAM,kCACDlB,KADC;AAEJmB,MAAAA,GAAG,EAAE;AAAEC,QAAAA,IAAI,EAAElB,KAAK,GAAG,UAAH,GAAgBF,KAAK,CAACoB,IAAnC;AAAyCjB,QAAAA,IAAI,EAAEF,IAAI,CAACE;AAApD;AAFD;AAHR;AAQD,CAtBD;;IAwBqBkB,e;;;;;AACnB,6BAAc;AAAA;;AAAA;AACZ;AACA,UAAKC,QAAL,GAAgB,IAAhB;AACA,UAAKC,MAAL,GAAc,IAAd;AACA,UAAKC,QAAL,GAAgB,EAAhB;AACA,UAAKC,SAAL,GAAiB,0BACf,YAAM;AACJ,UAAI,MAAKF,MAAL,IAAe,MAAKC,QAAxB,EAAkC;AAChC,YAAME,UAAU,GAAG3B,iBAAiB,CAAC,MAAKwB,MAAN,EAAc,MAAKD,QAAnB,CAApC;;AAEA,YAAMK,OAAO,GACX,MAAKL,QAAL,iBACAM,kBAAMC,aAAN,CAAoBC,gBAApB,EAA0B;AACxB9B,UAAAA,KAAK,EAAE0B,UADiB;AAExBK,UAAAA,OAAO,EAAE;AAFe,SAA1B,CAFF;;AAOAC,6BAASC,MAAT,CAAgBN,OAAhB,kDAA+B,YAAM;AACnC7B,UAAAA,GAAG,CAAC,+BAAD,CAAH;AACA;AACD,SAHD;AAID,OAdD,MAcO;AACLA,QAAAA,GAAG,CAAC,MAAD,CAAH;AACD;AACF,KAnBc,EAoBf,EApBe,EAqBf;AAAEoC,MAAAA,OAAO,EAAE,KAAX;AAAkBC,MAAAA,QAAQ,EAAE;AAA5B,KArBe,CAAjB;AALY;AA4Bb;;;;SACD,aAAYC,CAAZ,EAAe;AACb,WAAKd,QAAL,GAAgBc,CAAhB;AACD;;;SAED,aAAUC,CAAV,EAAa;AACX,WAAKd,MAAL,GAAcc,CAAd;;AACA,WAAKZ,SAAL;AACD;;;WAED,6BAAoB,CAAE;;;kDAvCqBa,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:math-inline: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.printMode = true;\n model.feedback = undefined;\n model.expression = model.expression || '{{response}}';\n\n model.animationsDisabled = true;\n return {\n ...model,\n disabled: true,\n config: {\n ...model,\n env: { mode: instr ? 'evaluate' : model.mode, role: opts.role },\n },\n };\n};\n\nexport default class MathInlinePrint extends HTMLElement {\n constructor() {\n super();\n this._options = null;\n this._model = null;\n this._session = [];\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: {},\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,4 +1,4 @@
1
- import {_dll_react, _dll_prop_types, _dll_classnames, _dll_react_dom, _dll_lodash, _dll_pie_framework__mathquill, _dll_debug} from "../../../@pie-lib/pie-toolbox-math-rendering-module@1.4.1/module/index.js";
1
+ import {_dll_react, _dll_prop_types, _dll_classnames, _dll_react_dom, _dll_lodash, _dll_pie_framework__mathquill, _dll_debug} from "../../../@pie-lib/pie-toolbox-math-rendering-module@1.5.0/module/index.js";
2
2
  import {_dll_pie_lib__pie_toolbox_config_ui, _dll_pie_lib__pie_toolbox_math_toolbar, _dll_pie_lib__pie_toolbox_editable_html} from "../../../@pie-lib/pie-toolbox-module@4.0.0/module/index.js";
3
3
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
4
4
  function getDefaultExportFromCjs(x) {
package/module/element.js CHANGED
@@ -1,4 +1,4 @@
1
- import {_dll_react, _dll_prop_types, _dll_classnames, _dll_react_dom, _dll_pie_lib__pie_toolbox_math_rendering_accessible, _dll_lodash, _dll_pie_framework__mathquill, _dll_debug} from "../../../@pie-lib/pie-toolbox-math-rendering-module@1.4.1/module/index.js";
1
+ import {_dll_react, _dll_prop_types, _dll_classnames, _dll_react_dom, _dll_pie_lib__pie_toolbox_math_rendering, _dll_lodash, _dll_pie_framework__mathquill, _dll_debug} from "../../../@pie-lib/pie-toolbox-math-rendering-module@1.5.0/module/index.js";
2
2
  import {_dll_pie_lib__pie_toolbox_math_toolbar, _dll_pie_lib__pie_toolbox_math_input, _dll_pie_lib__pie_toolbox_render_ui, _dll_pie_lib__pie_toolbox_correct_answer_toggle} from "../../../@pie-lib/pie-toolbox-module@4.0.0/module/index.js";
3
3
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
4
4
  function getDefaultExportFromCjs(x) {
@@ -11512,7 +11512,7 @@ getDefaultExportFromCjs(translator$1);
11512
11512
  var Translator = getDefaultExportFromCjs(translator$2);
11513
11513
  const React$1 = _dll_react;
11514
11514
  const PropTypes = _dll_prop_types;
11515
- const {renderMath: renderMath} = _dll_pie_lib__pie_toolbox_math_rendering_accessible;
11515
+ const {renderMath: renderMath} = _dll_pie_lib__pie_toolbox_math_rendering;
11516
11516
  const {isEqual: isEqual} = _dll_lodash;
11517
11517
  const {isEmpty: isEmpty} = _dll_lodash;
11518
11518
  const cx = _dll_classnames;
@@ -11870,7 +11870,27 @@ class Main extends React$1.Component {
11870
11870
  __init13() {
11871
11871
  this.onBlur = e => {
11872
11872
  const {relatedTarget, currentTarget} = e || ({});
11873
- if (!relatedTarget || !currentTarget || !IS_SAFARI && !_optionalChain([relatedTarget, 'optionalAccess', _13 => _13.offsetParent, 'optionalAccess', _14 => _14.children, 'access', _15 => _15[0], 'optionalAccess', _16 => _16.attributes, 'optionalAccess', _17 => _17['data-keypad']]) || IS_SAFARI && !_optionalChain([relatedTarget, 'optionalAccess', _18 => _18.offsetParent, 'optionalAccess', _19 => _19.children, 'access', _20 => _20[0], 'optionalAccess', _21 => _21.children, 'access', _22 => _22[0], 'optionalAccess', _23 => _23.attributes, 'optionalAccess', _24 => _24['data-keypad']])) {
11873
+ function getParentWithRoleTooltip(element, depth = 0) {
11874
+ if (!element || depth >= 16) return null;
11875
+ const parent = element.offsetParent;
11876
+ if (!parent) return null;
11877
+ if (parent.getAttribute('role') === 'tooltip') {
11878
+ return parent;
11879
+ }
11880
+ return getParentWithRoleTooltip(parent, depth + 1);
11881
+ }
11882
+ function getDeepChildDataKeypad(element, depth = 0) {
11883
+ if (!element || depth >= 4) return null;
11884
+ const child = _optionalChain([element, 'optionalAccess', _5 => _5.children, 'optionalAccess', _6 => _6[0]]);
11885
+ if (!child) return null;
11886
+ if (child.attributes && child.attributes['data-keypad']) {
11887
+ return child;
11888
+ }
11889
+ return getDeepChildDataKeypad(child, depth + 1);
11890
+ }
11891
+ const parentWithTooltipRole = getParentWithRoleTooltip(relatedTarget);
11892
+ const childWithDataKeypad = parentWithTooltipRole ? getDeepChildDataKeypad(parentWithTooltipRole) : null;
11893
+ if (!relatedTarget || !currentTarget || !_optionalChain([childWithDataKeypad, 'optionalAccess', _7 => _7.attributes, 'access', _8 => _8['data-keypad']])) {
11874
11894
  this.setState({
11875
11895
  activeAnswerBlock: ''
11876
11896
  });
@@ -11910,7 +11930,7 @@ class Main extends React$1.Component {
11910
11930
  __self: this,
11911
11931
  __source: {
11912
11932
  fileName: _jsxFileName,
11913
- lineNumber: 443
11933
+ lineNumber: 489
11914
11934
  }
11915
11935
  }, React$1.createElement(mq.Static, {
11916
11936
  className: classes.static,
@@ -11924,7 +11944,7 @@ class Main extends React$1.Component {
11924
11944
  __self: this,
11925
11945
  __source: {
11926
11946
  fileName: _jsxFileName,
11927
- lineNumber: 444
11947
+ lineNumber: 490
11928
11948
  }
11929
11949
  }));
11930
11950
  const midContent = React$1.createElement('div', {
@@ -11932,14 +11952,14 @@ class Main extends React$1.Component {
11932
11952
  __self: this,
11933
11953
  __source: {
11934
11954
  fileName: _jsxFileName,
11935
- lineNumber: 458
11955
+ lineNumber: 504
11936
11956
  }
11937
11957
  }, mode === 'gather' && React$1.createElement('h2', {
11938
11958
  className: classes.srOnly,
11939
11959
  __self: this,
11940
11960
  __source: {
11941
11961
  fileName: _jsxFileName,
11942
- lineNumber: 459
11962
+ lineNumber: 505
11943
11963
  }
11944
11964
  }, "Math Equation Response Question"), viewMode && teacherInstructions && hasText(teacherInstructions) && (!animationsDisabled ? React$1.createElement(Collapsible, {
11945
11965
  className: classes.collapsible,
@@ -11950,7 +11970,7 @@ class Main extends React$1.Component {
11950
11970
  __self: this,
11951
11971
  __source: {
11952
11972
  fileName: _jsxFileName,
11953
- lineNumber: 465
11973
+ lineNumber: 511
11954
11974
  }
11955
11975
  }, React$1.createElement('div', {
11956
11976
  dangerouslySetInnerHTML: {
@@ -11959,7 +11979,7 @@ class Main extends React$1.Component {
11959
11979
  __self: this,
11960
11980
  __source: {
11961
11981
  fileName: _jsxFileName,
11962
- lineNumber: 469
11982
+ lineNumber: 515
11963
11983
  }
11964
11984
  })) : React$1.createElement('div', {
11965
11985
  dangerouslySetInnerHTML: {
@@ -11968,35 +11988,35 @@ class Main extends React$1.Component {
11968
11988
  __self: this,
11969
11989
  __source: {
11970
11990
  fileName: _jsxFileName,
11971
- lineNumber: 472
11991
+ lineNumber: 518
11972
11992
  }
11973
11993
  })), prompt && React$1.createElement('div', {
11974
11994
  className: classes.promptContainer,
11975
11995
  __self: this,
11976
11996
  __source: {
11977
11997
  fileName: _jsxFileName,
11978
- lineNumber: 476
11998
+ lineNumber: 522
11979
11999
  }
11980
12000
  }, React$1.createElement(PreviewPrompt, {
11981
12001
  prompt: prompt,
11982
12002
  __self: this,
11983
12003
  __source: {
11984
12004
  fileName: _jsxFileName,
11985
- lineNumber: 477
12005
+ lineNumber: 523
11986
12006
  }
11987
12007
  })), studentPrintMode ? printView : React$1.createElement(Readable, {
11988
12008
  false: true,
11989
12009
  __self: this,
11990
12010
  __source: {
11991
12011
  fileName: _jsxFileName,
11992
- lineNumber: 484
12012
+ lineNumber: 530
11993
12013
  }
11994
12014
  }, React$1.createElement('div', {
11995
12015
  className: classes.inputAndKeypadContainer,
11996
12016
  __self: this,
11997
12017
  __source: {
11998
12018
  fileName: _jsxFileName,
11999
- lineNumber: 485
12019
+ lineNumber: 531
12000
12020
  }
12001
12021
  }, responseType === ResponseTypes$1.simple && React$1.createElement(SimpleQuestionBlock, {
12002
12022
  onSimpleResponseChange: this.onSimpleResponseChange,
@@ -12007,7 +12027,7 @@ class Main extends React$1.Component {
12007
12027
  __self: this,
12008
12028
  __source: {
12009
12029
  fileName: _jsxFileName,
12010
- lineNumber: 487
12030
+ lineNumber: 533
12011
12031
  }
12012
12032
  }), responseType === ResponseTypes$1.advanced && React$1.createElement('div', {
12013
12033
  className: cx(classes.expression, {
@@ -12020,7 +12040,7 @@ class Main extends React$1.Component {
12020
12040
  __self: this,
12021
12041
  __source: {
12022
12042
  fileName: _jsxFileName,
12023
- lineNumber: 497
12043
+ lineNumber: 543
12024
12044
  }
12025
12045
  }, React$1.createElement(Tooltip, {
12026
12046
  ref: ref => this.setTooltipRef(ref),
@@ -12040,7 +12060,7 @@ class Main extends React$1.Component {
12040
12060
  __self: this,
12041
12061
  __source: {
12042
12062
  fileName: _jsxFileName,
12043
- lineNumber: 517
12063
+ lineNumber: 563
12044
12064
  }
12045
12065
  }, React$1.createElement(HorizontalKeypad, {
12046
12066
  additionalKeys: additionalKeys,
@@ -12049,13 +12069,13 @@ class Main extends React$1.Component {
12049
12069
  __self: this,
12050
12070
  __source: {
12051
12071
  fileName: _jsxFileName,
12052
- lineNumber: 526
12072
+ lineNumber: 572
12053
12073
  }
12054
12074
  })) || null),
12055
12075
  __self: this,
12056
12076
  __source: {
12057
12077
  fileName: _jsxFileName,
12058
- lineNumber: 506
12078
+ lineNumber: 552
12059
12079
  }
12060
12080
  }, React$1.createElement(mq.Static, {
12061
12081
  className: classes.static,
@@ -12069,7 +12089,7 @@ class Main extends React$1.Component {
12069
12089
  __self: this,
12070
12090
  __source: {
12071
12091
  fileName: _jsxFileName,
12072
- lineNumber: 536
12092
+ lineNumber: 582
12073
12093
  }
12074
12094
  }))))), viewMode && displayNote && React$1.createElement('div', {
12075
12095
  className: classes.note,
@@ -12079,7 +12099,7 @@ class Main extends React$1.Component {
12079
12099
  __self: this,
12080
12100
  __source: {
12081
12101
  fileName: _jsxFileName,
12082
- lineNumber: 554
12102
+ lineNumber: 600
12083
12103
  }
12084
12104
  }), viewMode && rationale && hasText(rationale) && (!animationsDisabled ? React$1.createElement(Collapsible, {
12085
12105
  labels: {
@@ -12089,7 +12109,7 @@ class Main extends React$1.Component {
12089
12109
  __self: this,
12090
12110
  __source: {
12091
12111
  fileName: _jsxFileName,
12092
- lineNumber: 561
12112
+ lineNumber: 607
12093
12113
  }
12094
12114
  }, React$1.createElement('div', {
12095
12115
  dangerouslySetInnerHTML: {
@@ -12098,7 +12118,7 @@ class Main extends React$1.Component {
12098
12118
  __self: this,
12099
12119
  __source: {
12100
12120
  fileName: _jsxFileName,
12101
- lineNumber: 562
12121
+ lineNumber: 608
12102
12122
  }
12103
12123
  })) : React$1.createElement('div', {
12104
12124
  dangerouslySetInnerHTML: {
@@ -12107,7 +12127,7 @@ class Main extends React$1.Component {
12107
12127
  __self: this,
12108
12128
  __source: {
12109
12129
  fileName: _jsxFileName,
12110
- lineNumber: 565
12130
+ lineNumber: 611
12111
12131
  }
12112
12132
  })));
12113
12133
  if (tooltipModeEnabled && (showCorrectAnswerToggle || teacherInstructions && hasText(teacherInstructions) || rationale && hasText(rationale) || feedback)) {
@@ -12121,14 +12141,14 @@ class Main extends React$1.Component {
12121
12141
  __self: this,
12122
12142
  __source: {
12123
12143
  fileName: _jsxFileName,
12124
- lineNumber: 585
12144
+ lineNumber: 631
12125
12145
  }
12126
12146
  }, React$1.createElement('div', {
12127
12147
  className: classes.main,
12128
12148
  __self: this,
12129
12149
  __source: {
12130
12150
  fileName: _jsxFileName,
12131
- lineNumber: 586
12151
+ lineNumber: 632
12132
12152
  }
12133
12153
  }, showCorrectAnswerToggle && React$1.createElement(CorrectAnswerToggle, {
12134
12154
  language: language,
@@ -12139,7 +12159,7 @@ class Main extends React$1.Component {
12139
12159
  __self: this,
12140
12160
  __source: {
12141
12161
  fileName: _jsxFileName,
12142
- lineNumber: 588
12162
+ lineNumber: 634
12143
12163
  }
12144
12164
  })), teacherInstructions && hasText(teacherInstructions) && React$1.createElement(Collapsible, {
12145
12165
  className: classes.collapsible,
@@ -12151,14 +12171,14 @@ class Main extends React$1.Component {
12151
12171
  __self: this,
12152
12172
  __source: {
12153
12173
  fileName: _jsxFileName,
12154
- lineNumber: 599
12174
+ lineNumber: 645
12155
12175
  }
12156
12176
  }, React$1.createElement(PreviewPrompt, {
12157
12177
  prompt: teacherInstructions,
12158
12178
  __self: this,
12159
12179
  __source: {
12160
12180
  fileName: _jsxFileName,
12161
- lineNumber: 607
12181
+ lineNumber: 653
12162
12182
  }
12163
12183
  })), displayNote && hasText(note) && React$1.createElement(Collapsible, {
12164
12184
  className: classes.collapsible,
@@ -12174,14 +12194,14 @@ class Main extends React$1.Component {
12174
12194
  __self: this,
12175
12195
  __source: {
12176
12196
  fileName: _jsxFileName,
12177
- lineNumber: 611
12197
+ lineNumber: 657
12178
12198
  }
12179
12199
  }, React$1.createElement(PreviewPrompt, {
12180
12200
  prompt: note,
12181
12201
  __self: this,
12182
12202
  __source: {
12183
12203
  fileName: _jsxFileName,
12184
- lineNumber: 619
12204
+ lineNumber: 665
12185
12205
  }
12186
12206
  })), rationale && hasText(rationale) && React$1.createElement(Collapsible, {
12187
12207
  className: classes.collapsible,
@@ -12193,14 +12213,14 @@ class Main extends React$1.Component {
12193
12213
  __self: this,
12194
12214
  __source: {
12195
12215
  fileName: _jsxFileName,
12196
- lineNumber: 624
12216
+ lineNumber: 670
12197
12217
  }
12198
12218
  }, React$1.createElement(PreviewPrompt, {
12199
12219
  prompt: rationale,
12200
12220
  __self: this,
12201
12221
  __source: {
12202
12222
  fileName: _jsxFileName,
12203
- lineNumber: 632
12223
+ lineNumber: 678
12204
12224
  }
12205
12225
  })), feedback && React$1.createElement(Feedback, {
12206
12226
  correctness: correctness.correctness,
@@ -12208,13 +12228,13 @@ class Main extends React$1.Component {
12208
12228
  __self: this,
12209
12229
  __source: {
12210
12230
  fileName: _jsxFileName,
12211
- lineNumber: 636
12231
+ lineNumber: 682
12212
12232
  }
12213
12233
  })),
12214
12234
  __self: this,
12215
12235
  __source: {
12216
12236
  fileName: _jsxFileName,
12217
- lineNumber: 578
12237
+ lineNumber: 624
12218
12238
  }
12219
12239
  }, React$1.createElement('div', {
12220
12240
  className: classes.mainContainer,
@@ -12222,7 +12242,7 @@ class Main extends React$1.Component {
12222
12242
  __self: this,
12223
12243
  __source: {
12224
12244
  fileName: _jsxFileName,
12225
- lineNumber: 640
12245
+ lineNumber: 686
12226
12246
  }
12227
12247
  }, midContent));
12228
12248
  }
@@ -12232,7 +12252,7 @@ class Main extends React$1.Component {
12232
12252
  __self: this,
12233
12253
  __source: {
12234
12254
  fileName: _jsxFileName,
12235
- lineNumber: 648
12255
+ lineNumber: 694
12236
12256
  }
12237
12257
  }, midContent);
12238
12258
  }
@@ -4,7 +4,7 @@
4
4
  "modules": [
5
5
  {
6
6
  "name": "@pie-lib/pie-toolbox-math-rendering-module",
7
- "version": "1.4.1"
7
+ "version": "1.5.0"
8
8
  },
9
9
  {
10
10
  "name": "@pie-lib/pie-toolbox-module",
package/module/print.js CHANGED
@@ -1,4 +1,4 @@
1
- import {_dll_react, _dll_prop_types, _dll_classnames, _dll_react_dom, _dll_pie_lib__pie_toolbox_math_rendering_accessible, _dll_lodash, _dll_pie_framework__mathquill, _dll_debug} from "../../../@pie-lib/pie-toolbox-math-rendering-module@1.4.1/module/index.js";
1
+ import {_dll_react, _dll_prop_types, _dll_classnames, _dll_react_dom, _dll_pie_lib__pie_toolbox_math_rendering, _dll_lodash, _dll_pie_framework__mathquill, _dll_debug} from "../../../@pie-lib/pie-toolbox-math-rendering-module@1.5.0/module/index.js";
2
2
  import {_dll_pie_lib__pie_toolbox_math_toolbar, _dll_pie_lib__pie_toolbox_math_input, _dll_pie_lib__pie_toolbox_render_ui, _dll_pie_lib__pie_toolbox_correct_answer_toggle} from "../../../@pie-lib/pie-toolbox-module@4.0.0/module/index.js";
3
3
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
4
4
  function getDefaultExportFromCjs(x) {
@@ -11512,7 +11512,7 @@ getDefaultExportFromCjs(translator$1);
11512
11512
  var Translator = getDefaultExportFromCjs(translator$2);
11513
11513
  const React$1 = _dll_react;
11514
11514
  const PropTypes = _dll_prop_types;
11515
- const {renderMath: renderMath$1} = _dll_pie_lib__pie_toolbox_math_rendering_accessible;
11515
+ const {renderMath: renderMath$1} = _dll_pie_lib__pie_toolbox_math_rendering;
11516
11516
  const {isEqual: isEqual} = _dll_lodash;
11517
11517
  const {isEmpty: isEmpty} = _dll_lodash;
11518
11518
  const cx = _dll_classnames;
@@ -11870,7 +11870,27 @@ class Main extends React$1.Component {
11870
11870
  __init13() {
11871
11871
  this.onBlur = e => {
11872
11872
  const {relatedTarget, currentTarget} = e || ({});
11873
- if (!relatedTarget || !currentTarget || !IS_SAFARI && !_optionalChain([relatedTarget, 'optionalAccess', _13 => _13.offsetParent, 'optionalAccess', _14 => _14.children, 'access', _15 => _15[0], 'optionalAccess', _16 => _16.attributes, 'optionalAccess', _17 => _17['data-keypad']]) || IS_SAFARI && !_optionalChain([relatedTarget, 'optionalAccess', _18 => _18.offsetParent, 'optionalAccess', _19 => _19.children, 'access', _20 => _20[0], 'optionalAccess', _21 => _21.children, 'access', _22 => _22[0], 'optionalAccess', _23 => _23.attributes, 'optionalAccess', _24 => _24['data-keypad']])) {
11873
+ function getParentWithRoleTooltip(element, depth = 0) {
11874
+ if (!element || depth >= 16) return null;
11875
+ const parent = element.offsetParent;
11876
+ if (!parent) return null;
11877
+ if (parent.getAttribute('role') === 'tooltip') {
11878
+ return parent;
11879
+ }
11880
+ return getParentWithRoleTooltip(parent, depth + 1);
11881
+ }
11882
+ function getDeepChildDataKeypad(element, depth = 0) {
11883
+ if (!element || depth >= 4) return null;
11884
+ const child = _optionalChain([element, 'optionalAccess', _5 => _5.children, 'optionalAccess', _6 => _6[0]]);
11885
+ if (!child) return null;
11886
+ if (child.attributes && child.attributes['data-keypad']) {
11887
+ return child;
11888
+ }
11889
+ return getDeepChildDataKeypad(child, depth + 1);
11890
+ }
11891
+ const parentWithTooltipRole = getParentWithRoleTooltip(relatedTarget);
11892
+ const childWithDataKeypad = parentWithTooltipRole ? getDeepChildDataKeypad(parentWithTooltipRole) : null;
11893
+ if (!relatedTarget || !currentTarget || !_optionalChain([childWithDataKeypad, 'optionalAccess', _7 => _7.attributes, 'access', _8 => _8['data-keypad']])) {
11874
11894
  this.setState({
11875
11895
  activeAnswerBlock: ''
11876
11896
  });
@@ -11910,7 +11930,7 @@ class Main extends React$1.Component {
11910
11930
  __self: this,
11911
11931
  __source: {
11912
11932
  fileName: _jsxFileName,
11913
- lineNumber: 443
11933
+ lineNumber: 489
11914
11934
  }
11915
11935
  }, React$1.createElement(mq.Static, {
11916
11936
  className: classes.static,
@@ -11924,7 +11944,7 @@ class Main extends React$1.Component {
11924
11944
  __self: this,
11925
11945
  __source: {
11926
11946
  fileName: _jsxFileName,
11927
- lineNumber: 444
11947
+ lineNumber: 490
11928
11948
  }
11929
11949
  }));
11930
11950
  const midContent = React$1.createElement('div', {
@@ -11932,14 +11952,14 @@ class Main extends React$1.Component {
11932
11952
  __self: this,
11933
11953
  __source: {
11934
11954
  fileName: _jsxFileName,
11935
- lineNumber: 458
11955
+ lineNumber: 504
11936
11956
  }
11937
11957
  }, mode === 'gather' && React$1.createElement('h2', {
11938
11958
  className: classes.srOnly,
11939
11959
  __self: this,
11940
11960
  __source: {
11941
11961
  fileName: _jsxFileName,
11942
- lineNumber: 459
11962
+ lineNumber: 505
11943
11963
  }
11944
11964
  }, "Math Equation Response Question"), viewMode && teacherInstructions && hasText(teacherInstructions) && (!animationsDisabled ? React$1.createElement(Collapsible, {
11945
11965
  className: classes.collapsible,
@@ -11950,7 +11970,7 @@ class Main extends React$1.Component {
11950
11970
  __self: this,
11951
11971
  __source: {
11952
11972
  fileName: _jsxFileName,
11953
- lineNumber: 465
11973
+ lineNumber: 511
11954
11974
  }
11955
11975
  }, React$1.createElement('div', {
11956
11976
  dangerouslySetInnerHTML: {
@@ -11959,7 +11979,7 @@ class Main extends React$1.Component {
11959
11979
  __self: this,
11960
11980
  __source: {
11961
11981
  fileName: _jsxFileName,
11962
- lineNumber: 469
11982
+ lineNumber: 515
11963
11983
  }
11964
11984
  })) : React$1.createElement('div', {
11965
11985
  dangerouslySetInnerHTML: {
@@ -11968,35 +11988,35 @@ class Main extends React$1.Component {
11968
11988
  __self: this,
11969
11989
  __source: {
11970
11990
  fileName: _jsxFileName,
11971
- lineNumber: 472
11991
+ lineNumber: 518
11972
11992
  }
11973
11993
  })), prompt && React$1.createElement('div', {
11974
11994
  className: classes.promptContainer,
11975
11995
  __self: this,
11976
11996
  __source: {
11977
11997
  fileName: _jsxFileName,
11978
- lineNumber: 476
11998
+ lineNumber: 522
11979
11999
  }
11980
12000
  }, React$1.createElement(PreviewPrompt, {
11981
12001
  prompt: prompt,
11982
12002
  __self: this,
11983
12003
  __source: {
11984
12004
  fileName: _jsxFileName,
11985
- lineNumber: 477
12005
+ lineNumber: 523
11986
12006
  }
11987
12007
  })), studentPrintMode ? printView : React$1.createElement(Readable, {
11988
12008
  false: true,
11989
12009
  __self: this,
11990
12010
  __source: {
11991
12011
  fileName: _jsxFileName,
11992
- lineNumber: 484
12012
+ lineNumber: 530
11993
12013
  }
11994
12014
  }, React$1.createElement('div', {
11995
12015
  className: classes.inputAndKeypadContainer,
11996
12016
  __self: this,
11997
12017
  __source: {
11998
12018
  fileName: _jsxFileName,
11999
- lineNumber: 485
12019
+ lineNumber: 531
12000
12020
  }
12001
12021
  }, responseType === ResponseTypes.simple && React$1.createElement(SimpleQuestionBlock, {
12002
12022
  onSimpleResponseChange: this.onSimpleResponseChange,
@@ -12007,7 +12027,7 @@ class Main extends React$1.Component {
12007
12027
  __self: this,
12008
12028
  __source: {
12009
12029
  fileName: _jsxFileName,
12010
- lineNumber: 487
12030
+ lineNumber: 533
12011
12031
  }
12012
12032
  }), responseType === ResponseTypes.advanced && React$1.createElement('div', {
12013
12033
  className: cx(classes.expression, {
@@ -12020,7 +12040,7 @@ class Main extends React$1.Component {
12020
12040
  __self: this,
12021
12041
  __source: {
12022
12042
  fileName: _jsxFileName,
12023
- lineNumber: 497
12043
+ lineNumber: 543
12024
12044
  }
12025
12045
  }, React$1.createElement(Tooltip, {
12026
12046
  ref: ref => this.setTooltipRef(ref),
@@ -12040,7 +12060,7 @@ class Main extends React$1.Component {
12040
12060
  __self: this,
12041
12061
  __source: {
12042
12062
  fileName: _jsxFileName,
12043
- lineNumber: 517
12063
+ lineNumber: 563
12044
12064
  }
12045
12065
  }, React$1.createElement(HorizontalKeypad, {
12046
12066
  additionalKeys: additionalKeys,
@@ -12049,13 +12069,13 @@ class Main extends React$1.Component {
12049
12069
  __self: this,
12050
12070
  __source: {
12051
12071
  fileName: _jsxFileName,
12052
- lineNumber: 526
12072
+ lineNumber: 572
12053
12073
  }
12054
12074
  })) || null),
12055
12075
  __self: this,
12056
12076
  __source: {
12057
12077
  fileName: _jsxFileName,
12058
- lineNumber: 506
12078
+ lineNumber: 552
12059
12079
  }
12060
12080
  }, React$1.createElement(mq.Static, {
12061
12081
  className: classes.static,
@@ -12069,7 +12089,7 @@ class Main extends React$1.Component {
12069
12089
  __self: this,
12070
12090
  __source: {
12071
12091
  fileName: _jsxFileName,
12072
- lineNumber: 536
12092
+ lineNumber: 582
12073
12093
  }
12074
12094
  }))))), viewMode && displayNote && React$1.createElement('div', {
12075
12095
  className: classes.note,
@@ -12079,7 +12099,7 @@ class Main extends React$1.Component {
12079
12099
  __self: this,
12080
12100
  __source: {
12081
12101
  fileName: _jsxFileName,
12082
- lineNumber: 554
12102
+ lineNumber: 600
12083
12103
  }
12084
12104
  }), viewMode && rationale && hasText(rationale) && (!animationsDisabled ? React$1.createElement(Collapsible, {
12085
12105
  labels: {
@@ -12089,7 +12109,7 @@ class Main extends React$1.Component {
12089
12109
  __self: this,
12090
12110
  __source: {
12091
12111
  fileName: _jsxFileName,
12092
- lineNumber: 561
12112
+ lineNumber: 607
12093
12113
  }
12094
12114
  }, React$1.createElement('div', {
12095
12115
  dangerouslySetInnerHTML: {
@@ -12098,7 +12118,7 @@ class Main extends React$1.Component {
12098
12118
  __self: this,
12099
12119
  __source: {
12100
12120
  fileName: _jsxFileName,
12101
- lineNumber: 562
12121
+ lineNumber: 608
12102
12122
  }
12103
12123
  })) : React$1.createElement('div', {
12104
12124
  dangerouslySetInnerHTML: {
@@ -12107,7 +12127,7 @@ class Main extends React$1.Component {
12107
12127
  __self: this,
12108
12128
  __source: {
12109
12129
  fileName: _jsxFileName,
12110
- lineNumber: 565
12130
+ lineNumber: 611
12111
12131
  }
12112
12132
  })));
12113
12133
  if (tooltipModeEnabled && (showCorrectAnswerToggle || teacherInstructions && hasText(teacherInstructions) || rationale && hasText(rationale) || feedback)) {
@@ -12121,14 +12141,14 @@ class Main extends React$1.Component {
12121
12141
  __self: this,
12122
12142
  __source: {
12123
12143
  fileName: _jsxFileName,
12124
- lineNumber: 585
12144
+ lineNumber: 631
12125
12145
  }
12126
12146
  }, React$1.createElement('div', {
12127
12147
  className: classes.main,
12128
12148
  __self: this,
12129
12149
  __source: {
12130
12150
  fileName: _jsxFileName,
12131
- lineNumber: 586
12151
+ lineNumber: 632
12132
12152
  }
12133
12153
  }, showCorrectAnswerToggle && React$1.createElement(CorrectAnswerToggle, {
12134
12154
  language: language,
@@ -12139,7 +12159,7 @@ class Main extends React$1.Component {
12139
12159
  __self: this,
12140
12160
  __source: {
12141
12161
  fileName: _jsxFileName,
12142
- lineNumber: 588
12162
+ lineNumber: 634
12143
12163
  }
12144
12164
  })), teacherInstructions && hasText(teacherInstructions) && React$1.createElement(Collapsible, {
12145
12165
  className: classes.collapsible,
@@ -12151,14 +12171,14 @@ class Main extends React$1.Component {
12151
12171
  __self: this,
12152
12172
  __source: {
12153
12173
  fileName: _jsxFileName,
12154
- lineNumber: 599
12174
+ lineNumber: 645
12155
12175
  }
12156
12176
  }, React$1.createElement(PreviewPrompt, {
12157
12177
  prompt: teacherInstructions,
12158
12178
  __self: this,
12159
12179
  __source: {
12160
12180
  fileName: _jsxFileName,
12161
- lineNumber: 607
12181
+ lineNumber: 653
12162
12182
  }
12163
12183
  })), displayNote && hasText(note) && React$1.createElement(Collapsible, {
12164
12184
  className: classes.collapsible,
@@ -12174,14 +12194,14 @@ class Main extends React$1.Component {
12174
12194
  __self: this,
12175
12195
  __source: {
12176
12196
  fileName: _jsxFileName,
12177
- lineNumber: 611
12197
+ lineNumber: 657
12178
12198
  }
12179
12199
  }, React$1.createElement(PreviewPrompt, {
12180
12200
  prompt: note,
12181
12201
  __self: this,
12182
12202
  __source: {
12183
12203
  fileName: _jsxFileName,
12184
- lineNumber: 619
12204
+ lineNumber: 665
12185
12205
  }
12186
12206
  })), rationale && hasText(rationale) && React$1.createElement(Collapsible, {
12187
12207
  className: classes.collapsible,
@@ -12193,14 +12213,14 @@ class Main extends React$1.Component {
12193
12213
  __self: this,
12194
12214
  __source: {
12195
12215
  fileName: _jsxFileName,
12196
- lineNumber: 624
12216
+ lineNumber: 670
12197
12217
  }
12198
12218
  }, React$1.createElement(PreviewPrompt, {
12199
12219
  prompt: rationale,
12200
12220
  __self: this,
12201
12221
  __source: {
12202
12222
  fileName: _jsxFileName,
12203
- lineNumber: 632
12223
+ lineNumber: 678
12204
12224
  }
12205
12225
  })), feedback && React$1.createElement(Feedback, {
12206
12226
  correctness: correctness.correctness,
@@ -12208,13 +12228,13 @@ class Main extends React$1.Component {
12208
12228
  __self: this,
12209
12229
  __source: {
12210
12230
  fileName: _jsxFileName,
12211
- lineNumber: 636
12231
+ lineNumber: 682
12212
12232
  }
12213
12233
  })),
12214
12234
  __self: this,
12215
12235
  __source: {
12216
12236
  fileName: _jsxFileName,
12217
- lineNumber: 578
12237
+ lineNumber: 624
12218
12238
  }
12219
12239
  }, React$1.createElement('div', {
12220
12240
  className: classes.mainContainer,
@@ -12222,7 +12242,7 @@ class Main extends React$1.Component {
12222
12242
  __self: this,
12223
12243
  __source: {
12224
12244
  fileName: _jsxFileName,
12225
- lineNumber: 640
12245
+ lineNumber: 686
12226
12246
  }
12227
12247
  }, midContent));
12228
12248
  }
@@ -12232,7 +12252,7 @@ class Main extends React$1.Component {
12232
12252
  __self: this,
12233
12253
  __source: {
12234
12254
  fileName: _jsxFileName,
12235
- lineNumber: 648
12255
+ lineNumber: 694
12236
12256
  }
12237
12257
  }, midContent);
12238
12258
  }
@@ -12431,7 +12451,7 @@ var Main$1 = styles$3.withStyles(styles)(Main);
12431
12451
  const React = _dll_react;
12432
12452
  const ReactDOM = _dll_react_dom;
12433
12453
  const {debounce: debounce} = _dll_lodash;
12434
- const {renderMath: renderMath} = _dll_pie_lib__pie_toolbox_math_rendering_accessible;
12454
+ const {renderMath: renderMath} = _dll_pie_lib__pie_toolbox_math_rendering;
12435
12455
  const debug = _dll_debug;
12436
12456
  const log = debug('pie-element:math-inline:print');
12437
12457
  const preparePrintModel = (model, opts) => {
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "access": "public"
5
5
  },
6
6
  "repository": "pie-framework/pie-elements",
7
- "version": "7.9.1-next.25+2a433493b",
7
+ "version": "7.10.0",
8
8
  "main": "lib/index.js",
9
9
  "description": "",
10
10
  "scripts": {
@@ -14,7 +14,7 @@
14
14
  "@material-ui/core": "^3.9.2",
15
15
  "@pie-framework/mathquill": "^1.1.3",
16
16
  "@pie-framework/pie-player-events": "^0.1.0",
17
- "@pie-lib/pie-toolbox": "1.12.0",
17
+ "@pie-lib/pie-toolbox": "1.11.1",
18
18
  "classnames": "^2.2.5",
19
19
  "debug": "^4.1.1",
20
20
  "lodash": "^4.17.10",
@@ -24,7 +24,7 @@
24
24
  },
25
25
  "author": "",
26
26
  "license": "ISC",
27
- "gitHead": "2a433493bdf64cc41affea82c033300383db1afa",
27
+ "gitHead": "279c523e17f9b1338b342722f5e6411e1973e500",
28
28
  "module": "src/index.js",
29
29
  "exports": {
30
30
  ".": "./src/index.js",