@pie-element/drawing-response 7.4.1-next.42 → 7.4.1-next.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/configure/lib/button.js +61 -0
  2. package/configure/lib/button.js.map +1 -0
  3. package/configure/lib/defaults.js +69 -0
  4. package/configure/lib/defaults.js.map +1 -0
  5. package/configure/lib/image-container.js +368 -0
  6. package/configure/lib/image-container.js.map +1 -0
  7. package/configure/lib/index.js +214 -0
  8. package/configure/lib/index.js.map +1 -0
  9. package/configure/lib/root.js +257 -0
  10. package/configure/lib/root.js.map +1 -0
  11. package/configure/package.json +1 -1
  12. package/configure/src/__tests__/__snapshots__/root.test.jsx.snap +1 -1
  13. package/controller/lib/defaults.js +16 -0
  14. package/controller/lib/defaults.js.map +1 -0
  15. package/controller/lib/index.js +86 -0
  16. package/controller/lib/index.js.map +1 -0
  17. package/lib/drawing-response/button.js +74 -0
  18. package/lib/drawing-response/button.js.map +1 -0
  19. package/lib/drawing-response/constants.js +44 -0
  20. package/lib/drawing-response/constants.js.map +1 -0
  21. package/lib/drawing-response/container.js +393 -0
  22. package/lib/drawing-response/container.js.map +1 -0
  23. package/lib/drawing-response/drawable-circle.js +119 -0
  24. package/lib/drawing-response/drawable-circle.js.map +1 -0
  25. package/lib/drawing-response/drawable-eraser.js +100 -0
  26. package/lib/drawing-response/drawable-eraser.js.map +1 -0
  27. package/lib/drawing-response/drawable-free-path.js +112 -0
  28. package/lib/drawing-response/drawable-free-path.js.map +1 -0
  29. package/lib/drawing-response/drawable-helper.js +46 -0
  30. package/lib/drawing-response/drawable-helper.js.map +1 -0
  31. package/lib/drawing-response/drawable-image.js +60 -0
  32. package/lib/drawing-response/drawable-image.js.map +1 -0
  33. package/lib/drawing-response/drawable-line.js +114 -0
  34. package/lib/drawing-response/drawable-line.js.map +1 -0
  35. package/lib/drawing-response/drawable-main.js +416 -0
  36. package/lib/drawing-response/drawable-main.js.map +1 -0
  37. package/lib/drawing-response/drawable-palette.js +183 -0
  38. package/lib/drawing-response/drawable-palette.js.map +1 -0
  39. package/lib/drawing-response/drawable-rectangle.js +119 -0
  40. package/lib/drawing-response/drawable-rectangle.js.map +1 -0
  41. package/lib/drawing-response/drawable-text.js +384 -0
  42. package/lib/drawing-response/drawable-text.js.map +1 -0
  43. package/lib/drawing-response/drawable-transformer.js +95 -0
  44. package/lib/drawing-response/drawable-transformer.js.map +1 -0
  45. package/lib/drawing-response/factory.js +35 -0
  46. package/lib/drawing-response/factory.js.map +1 -0
  47. package/lib/drawing-response/icon.js +71 -0
  48. package/lib/drawing-response/icon.js.map +1 -0
  49. package/lib/drawing-response/index.js +131 -0
  50. package/lib/drawing-response/index.js.map +1 -0
  51. package/lib/index.js +118 -0
  52. package/lib/index.js.map +1 -0
  53. package/package.json +3 -3
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.js"],"names":["log","normalize","question","promptEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","backgroundImageEnabled","model","session","env","normalizedQuestion","imageUrl","imageDimensions","prompt","language","Promise","resolve","out","disabled","mode","role","teacherInstructions","createDefaultModel","defaults","outcome","score","completed","note"],"mappings":";;;;;;;;;;;;;;AAAA;;AACA;;;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,0CAAN,CAAZ;;AAEO,IAAMC,SAAS,GAAG,SAAZA,SAAY,CAACC,QAAD;AAAA;AACvBC,IAAAA,aAAa,EAAE,IADQ;AAEvBC,IAAAA,0BAA0B,EAAE,IAFL;AAGvBC,IAAAA,0BAA0B,EAAE,IAHL;AAIvBC,IAAAA,sBAAsB,EAAE;AAJD,KAKpBJ,QALoB;AAAA,CAAlB;;;;AAQA,SAASK,KAAT,CAAeL,QAAf,EAAyBM,OAAzB,EAAkCC,GAAlC,EAAuC;AAC5C,MAAMC,kBAAkB,GAAGT,SAAS,CAACC,QAAD,CAApC;AACA,MAAQS,QAAR,GAA+FD,kBAA/F,CAAQC,QAAR;AAAA,MAAkBC,eAAlB,GAA+FF,kBAA/F,CAAkBE,eAAlB;AAAA,MAAmCC,MAAnC,GAA+FH,kBAA/F,CAAmCG,MAAnC;AAAA,MAA2CV,aAA3C,GAA+FO,kBAA/F,CAA2CP,aAA3C;AAAA,MAA0DG,sBAA1D,GAA+FI,kBAA/F,CAA0DJ,sBAA1D;AAAA,MAAkFQ,QAAlF,GAA+FJ,kBAA/F,CAAkFI,QAAlF;AAEA,SAAO,IAAIC,OAAJ,CAAY,UAACC,OAAD,EAAa;AAC9B,QAAMC,GAAG,GAAG;AACVC,MAAAA,QAAQ,EAAET,GAAG,CAACU,IAAJ,KAAa,QADb;AAEVA,MAAAA,IAAI,EAAEV,GAAG,CAACU,IAFA;AAGVP,MAAAA,eAAe,EAAfA,eAHU;AAIVD,MAAAA,QAAQ,EAARA,QAJU;AAKVE,MAAAA,MAAM,EAAEV,aAAa,GAAGU,MAAH,GAAY,IALvB;AAMVP,MAAAA,sBAAsB,EAAtBA,sBANU;AAOVQ,MAAAA,QAAQ,EAARA;AAPU,KAAZ;;AAUA,QAAIL,GAAG,CAACW,IAAJ,KAAa,YAAb,KAA8BX,GAAG,CAACU,IAAJ,KAAa,MAAb,IAAuBV,GAAG,CAACU,IAAJ,KAAa,UAAlE,CAAJ,EAAmF;AACjFF,MAAAA,GAAG,CAACI,mBAAJ,GAA0BX,kBAAkB,CAACN,0BAAnB,GACtBM,kBAAkB,CAACW,mBADG,GAEtB,IAFJ;AAGD,KAJD,MAIO;AACLJ,MAAAA,GAAG,CAACI,mBAAJ,GAA0B,IAA1B;AACD;;AAEDL,IAAAA,OAAO,CAACC,GAAD,CAAP;AACD,GApBM,CAAP;AAqBD;;AAEM,IAAMK,kBAAkB,GAAG,SAArBA,kBAAqB;AAAA,MAACf,KAAD,uEAAS,EAAT;AAAA,SAChC,IAAIQ,OAAJ,CAAY,UAACC,OAAD,EAAa;AACvBA,IAAAA,OAAO,iCACFO,oBADE,GAEFhB,KAFE,EAAP;AAID,GALD,CADgC;AAAA,CAA3B;;;;AAQA;AAAiB;AAARiB,OAAT,GAAsC;AAC3C,SAAO,IAAIT,OAAJ,CAAY,UAACC,OAAD,EAAa;AAC9BhB,IAAAA,GAAG,CAAC,YAAD,CAAH;AACAgB,IAAAA,OAAO,CAAC;AACNS,MAAAA,KAAK,EAAE,CADD;AAENC,MAAAA,SAAS,EAAE,KAFL;AAGNC,MAAAA,IAAI,EAAE;AAHA,KAAD,CAAP;AAKD,GAPM,CAAP;AAQD","sourcesContent":["import debug from 'debug';\nimport defaults from './defaults';\n\nconst log = debug('pie-elements:drawing-response:controller');\n\nexport const normalize = (question) => ({\n promptEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n backgroundImageEnabled: true,\n ...question,\n});\n\nexport function model(question, session, env) {\n const normalizedQuestion = normalize(question);\n const { imageUrl, imageDimensions, prompt, promptEnabled, backgroundImageEnabled, language } = normalizedQuestion;\n\n return new Promise((resolve) => {\n const out = {\n disabled: env.mode !== 'gather',\n mode: env.mode,\n imageDimensions,\n imageUrl,\n prompt: promptEnabled ? prompt : null,\n backgroundImageEnabled,\n language\n };\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n } else {\n out.teacherInstructions = null;\n }\n\n resolve(out);\n });\n}\n\nexport const createDefaultModel = (model = {}) =>\n new Promise((resolve) => {\n resolve({\n ...defaults,\n ...model,\n });\n });\n\nexport function outcome(/*config, session*/) {\n return new Promise((resolve) => {\n log('outcome...');\n resolve({\n score: 0,\n completed: 'n/a',\n note: 'Requires manual scoring',\n });\n });\n}\n"],"file":"index.js"}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ var _react = _interopRequireDefault(require("react"));
11
+
12
+ var _propTypes = _interopRequireDefault(require("prop-types"));
13
+
14
+ var _styles = require("@material-ui/core/styles");
15
+
16
+ var _classnames = _interopRequireDefault(require("classnames"));
17
+
18
+ var _Button = _interopRequireDefault(require("@material-ui/core/Button"));
19
+
20
+ var RawButton = function RawButton(_ref) {
21
+ var classes = _ref.classes,
22
+ className = _ref.className,
23
+ label = _ref.label,
24
+ onClick = _ref.onClick,
25
+ disabled = _ref.disabled,
26
+ title = _ref.title;
27
+ return /*#__PURE__*/_react["default"].createElement(_Button["default"], {
28
+ title: title,
29
+ onClick: onClick,
30
+ disabled: disabled,
31
+ className: (0, _classnames["default"])(classes.addButton, className),
32
+ size: "small",
33
+ variant: "contained",
34
+ color: "default"
35
+ }, label);
36
+ };
37
+
38
+ RawButton.propTypes = {
39
+ classes: _propTypes["default"].object.isRequired,
40
+ className: _propTypes["default"].string,
41
+ disabled: _propTypes["default"].bool,
42
+ label: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].object]),
43
+ onClick: _propTypes["default"].func,
44
+ title: _propTypes["default"].string
45
+ };
46
+ RawButton.defaultProps = {
47
+ className: '',
48
+ disabled: false,
49
+ label: 'Add',
50
+ onClick: function onClick() {},
51
+ title: ''
52
+ };
53
+
54
+ var styles = function styles() {
55
+ return {
56
+ addButton: {
57
+ fontSize: '0.9em',
58
+ marginLeft: 8,
59
+ minWidth: 32,
60
+ height: 32,
61
+ '& span': {
62
+ '& svg': {
63
+ width: '1.3em !important',
64
+ height: '1.3em !important'
65
+ }
66
+ }
67
+ }
68
+ };
69
+ };
70
+
71
+ var ButtonStyled = (0, _styles.withStyles)(styles)(RawButton);
72
+ var _default = ButtonStyled;
73
+ exports["default"] = _default;
74
+ //# sourceMappingURL=button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/drawing-response/button.jsx"],"names":["RawButton","classes","className","label","onClick","disabled","title","addButton","propTypes","PropTypes","object","isRequired","string","bool","oneOfType","func","defaultProps","styles","fontSize","marginLeft","minWidth","height","width","ButtonStyled"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AAEA,IAAMA,SAAS,GAAG,SAAZA,SAAY;AAAA,MAAGC,OAAH,QAAGA,OAAH;AAAA,MAAYC,SAAZ,QAAYA,SAAZ;AAAA,MAAuBC,KAAvB,QAAuBA,KAAvB;AAAA,MAA8BC,OAA9B,QAA8BA,OAA9B;AAAA,MAAuCC,QAAvC,QAAuCA,QAAvC;AAAA,MAAiDC,KAAjD,QAAiDA,KAAjD;AAAA,sBAChB,gCAAC,kBAAD;AACE,IAAA,KAAK,EAAEA,KADT;AAEE,IAAA,OAAO,EAAEF,OAFX;AAGE,IAAA,QAAQ,EAAEC,QAHZ;AAIE,IAAA,SAAS,EAAE,4BAAWJ,OAAO,CAACM,SAAnB,EAA8BL,SAA9B,CAJb;AAKE,IAAA,IAAI,EAAC,OALP;AAME,IAAA,OAAO,EAAC,WANV;AAOE,IAAA,KAAK,EAAC;AAPR,KASGC,KATH,CADgB;AAAA,CAAlB;;AAcAH,SAAS,CAACQ,SAAV,GAAsB;AACpBP,EAAAA,OAAO,EAAEQ,sBAAUC,MAAV,CAAiBC,UADN;AAEpBT,EAAAA,SAAS,EAAEO,sBAAUG,MAFD;AAGpBP,EAAAA,QAAQ,EAAEI,sBAAUI,IAHA;AAIpBV,EAAAA,KAAK,EAAEM,sBAAUK,SAAV,CAAoB,CAACL,sBAAUG,MAAX,EAAmBH,sBAAUC,MAA7B,CAApB,CAJa;AAKpBN,EAAAA,OAAO,EAAEK,sBAAUM,IALC;AAMpBT,EAAAA,KAAK,EAAEG,sBAAUG;AANG,CAAtB;AASAZ,SAAS,CAACgB,YAAV,GAAyB;AACvBd,EAAAA,SAAS,EAAE,EADY;AAEvBG,EAAAA,QAAQ,EAAE,KAFa;AAGvBF,EAAAA,KAAK,EAAE,KAHgB;AAIvBC,EAAAA,OAAO,EAAE,mBAAM,CAAE,CAJM;AAKvBE,EAAAA,KAAK,EAAE;AALgB,CAAzB;;AAQA,IAAMW,MAAM,GAAG,SAATA,MAAS;AAAA,SAAO;AACpBV,IAAAA,SAAS,EAAE;AACTW,MAAAA,QAAQ,EAAE,OADD;AAETC,MAAAA,UAAU,EAAE,CAFH;AAGTC,MAAAA,QAAQ,EAAE,EAHD;AAITC,MAAAA,MAAM,EAAE,EAJC;AAMT,gBAAU;AACR,iBAAS;AACPC,UAAAA,KAAK,EAAE,kBADA;AAEPD,UAAAA,MAAM,EAAE;AAFD;AADD;AAND;AADS,GAAP;AAAA,CAAf;;AAgBA,IAAME,YAAY,GAAG,wBAAWN,MAAX,EAAmBjB,SAAnB,CAArB;eAEeuB,Y","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport Button from '@material-ui/core/Button';\n\nconst RawButton = ({ classes, className, label, onClick, disabled, title }) => (\n <Button\n title={title}\n onClick={onClick}\n disabled={disabled}\n className={classNames(classes.addButton, className)}\n size=\"small\"\n variant=\"contained\"\n color=\"default\"\n >\n {label}\n </Button>\n);\n\nRawButton.propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n onClick: PropTypes.func,\n title: PropTypes.string,\n};\n\nRawButton.defaultProps = {\n className: '',\n disabled: false,\n label: 'Add',\n onClick: () => {},\n title: '',\n};\n\nconst styles = () => ({\n addButton: {\n fontSize: '0.9em',\n marginLeft: 8,\n minWidth: 32,\n height: 32,\n\n '& span': {\n '& svg': {\n width: '1.3em !important',\n height: '1.3em !important',\n },\n },\n },\n});\n\nconst ButtonStyled = withStyles(styles)(RawButton);\n\nexport default ButtonStyled;\n"],"file":"button.js"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var _default = {
8
+ tools: [{
9
+ type: 'Select',
10
+ label: 'Select',
11
+ icon: 'mdiCursorDefault'
12
+ }, {
13
+ type: 'FreePathDrawable',
14
+ label: 'Free Draw',
15
+ icon: 'mdiPencil'
16
+ }, {
17
+ type: 'LineDrawable',
18
+ label: 'Line',
19
+ icon: 'mdiMinus'
20
+ }, {
21
+ type: 'RectangleDrawable',
22
+ label: 'Rectangle',
23
+ icon: 'mdiRectangle'
24
+ }, {
25
+ type: 'CircleDrawable',
26
+ label: 'Circle',
27
+ icon: 'mdiCircle'
28
+ }, {
29
+ type: 'Text',
30
+ label: 'Text Entry',
31
+ icon: 'mdiFormatColorText'
32
+ }, {
33
+ // ,{
34
+ // type: 'PaintBucket',
35
+ // label: 'Paint Bucket',
36
+ // icon: 'mdiFormatColorFill'
37
+ // },
38
+ type: 'EraserDrawable',
39
+ label: 'Eraser',
40
+ icon: 'mdiEraser'
41
+ }]
42
+ };
43
+ exports["default"] = _default;
44
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/drawing-response/constants.js"],"names":["tools","type","label","icon"],"mappings":";;;;;;eAAe;AACbA,EAAAA,KAAK,EAAE,CACL;AACEC,IAAAA,IAAI,EAAE,QADR;AAEEC,IAAAA,KAAK,EAAE,QAFT;AAGEC,IAAAA,IAAI,EAAE;AAHR,GADK,EAML;AACEF,IAAAA,IAAI,EAAE,kBADR;AAEEC,IAAAA,KAAK,EAAE,WAFT;AAGEC,IAAAA,IAAI,EAAE;AAHR,GANK,EAWL;AACEF,IAAAA,IAAI,EAAE,cADR;AAEEC,IAAAA,KAAK,EAAE,MAFT;AAGEC,IAAAA,IAAI,EAAE;AAHR,GAXK,EAgBL;AACEF,IAAAA,IAAI,EAAE,mBADR;AAEEC,IAAAA,KAAK,EAAE,WAFT;AAGEC,IAAAA,IAAI,EAAE;AAHR,GAhBK,EAqBL;AACEF,IAAAA,IAAI,EAAE,gBADR;AAEEC,IAAAA,KAAK,EAAE,QAFT;AAGEC,IAAAA,IAAI,EAAE;AAHR,GArBK,EA0BL;AACEF,IAAAA,IAAI,EAAE,MADR;AAEEC,IAAAA,KAAK,EAAE,YAFT;AAGEC,IAAAA,IAAI,EAAE;AAHR,GA1BK,EA+BL;AACE;AACA;AACA;AACA;AACA;AACAF,IAAAA,IAAI,EAAE,gBANR;AAOEC,IAAAA,KAAK,EAAE,QAPT;AAQEC,IAAAA,IAAI,EAAE;AARR,GA/BK;AADM,C","sourcesContent":["export default {\n tools: [\n {\n type: 'Select',\n label: 'Select',\n icon: 'mdiCursorDefault',\n },\n {\n type: 'FreePathDrawable',\n label: 'Free Draw',\n icon: 'mdiPencil',\n },\n {\n type: 'LineDrawable',\n label: 'Line',\n icon: 'mdiMinus',\n },\n {\n type: 'RectangleDrawable',\n label: 'Rectangle',\n icon: 'mdiRectangle',\n },\n {\n type: 'CircleDrawable',\n label: 'Circle',\n icon: 'mdiCircle',\n },\n {\n type: 'Text',\n label: 'Text Entry',\n icon: 'mdiFormatColorText',\n },\n {\n // ,{\n // type: 'PaintBucket',\n // label: 'Paint Bucket',\n // icon: 'mdiFormatColorFill'\n // },\n type: 'EraserDrawable',\n label: 'Eraser',\n icon: 'mdiEraser',\n },\n ],\n};\n"],"file":"constants.js"}
@@ -0,0 +1,393 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports["default"] = exports.Container = void 0;
11
+
12
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
+
14
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
+
16
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
+
18
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
19
+
20
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
21
+
22
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
23
+
24
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
25
+
26
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
27
+
28
+ var _react = _interopRequireWildcard(require("react"));
29
+
30
+ var _propTypes = _interopRequireDefault(require("prop-types"));
31
+
32
+ var _styles = require("@material-ui/core/styles");
33
+
34
+ var _translator = _interopRequireDefault(require("@pie-lib/pie-toolbox/translator"));
35
+
36
+ var _constants = _interopRequireDefault(require("./constants"));
37
+
38
+ var _button = _interopRequireDefault(require("./button"));
39
+
40
+ var _drawablePalette = _interopRequireDefault(require("./drawable-palette"));
41
+
42
+ var _drawableMain = _interopRequireDefault(require("./drawable-main"));
43
+
44
+ var _drawableText = _interopRequireDefault(require("./drawable-text"));
45
+
46
+ var _icon = _interopRequireDefault(require("./icon"));
47
+
48
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
49
+
50
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
51
+
52
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
53
+
54
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
55
+
56
+ var TOOLS = _constants["default"].tools;
57
+ var translator = _translator["default"].translator;
58
+ var ROGVAIV = ['red', 'orange', 'yellow', 'violet', 'blue', 'green', 'white', 'black'].map(function (c) {
59
+ return {
60
+ value: c,
61
+ label: c
62
+ };
63
+ });
64
+
65
+ var Container = /*#__PURE__*/function (_Component) {
66
+ (0, _inherits2["default"])(Container, _Component);
67
+
68
+ var _super = _createSuper(Container);
69
+
70
+ function Container(props) {
71
+ var _this;
72
+
73
+ (0, _classCallCheck2["default"])(this, Container);
74
+ _this = _super.call(this, props);
75
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "checkIfToolIsDisabled", function (type) {
76
+ if (_this.props.disabled) return true;
77
+ var toolActive = _this.state.toolActive; // Text will never be disabled since on each "Text Entry" click a new text is added
78
+
79
+ if (type === 'Text') {
80
+ return false;
81
+ }
82
+
83
+ return type === toolActive.type;
84
+ });
85
+ var TextEntry = new _drawableText["default"]();
86
+ _this.state = {
87
+ scale: 1,
88
+ drawableDimensions: {
89
+ height: 0,
90
+ width: 0
91
+ },
92
+ toolActive: TOOLS[0],
93
+ fillColor: 'white',
94
+ fillColorList: [{
95
+ value: 'transparent',
96
+ label: 'no fill'
97
+ }, {
98
+ value: 'lightblue',
99
+ label: 'light blue'
100
+ }, {
101
+ value: 'lightyellow',
102
+ label: 'light yellow'
103
+ }].concat((0, _toConsumableArray2["default"])(ROGVAIV)),
104
+ outlineColor: 'black',
105
+ outlineColorList: ROGVAIV,
106
+ paintColor: 'red',
107
+ paintColorList: ROGVAIV,
108
+ TextEntry: TextEntry
109
+ };
110
+ return _this;
111
+ }
112
+
113
+ (0, _createClass2["default"])(Container, [{
114
+ key: "setTranslatedState",
115
+ value: function setTranslatedState(language) {
116
+ var translatedROGVAIV = ROGVAIV.map(function (c) {
117
+ return {
118
+ value: c.value,
119
+ label: translator.t("drawingResponse.".concat(c.label), {
120
+ lng: language
121
+ })
122
+ };
123
+ });
124
+ this.setState({
125
+ fillColorList: [{
126
+ value: 'transparent',
127
+ label: translator.t('drawingResponse.noFill', {
128
+ lng: language
129
+ })
130
+ }, {
131
+ value: 'lightblue',
132
+ label: translator.t('drawingResponse.lightblue', {
133
+ lng: language
134
+ })
135
+ }, {
136
+ value: 'lightyellow',
137
+ label: translator.t('drawingResponse.lightyellow', {
138
+ lng: language
139
+ })
140
+ }].concat((0, _toConsumableArray2["default"])(translatedROGVAIV)),
141
+ paintColor: translator.t('drawingResponse.red', {
142
+ lng: language
143
+ }),
144
+ outlineColorList: translatedROGVAIV,
145
+ paintColorList: translatedROGVAIV
146
+ });
147
+ }
148
+ }, {
149
+ key: "UNSAFE_componentWillReceiveProps",
150
+ value: function UNSAFE_componentWillReceiveProps(props) {
151
+ var language = props.language;
152
+ this.setTranslatedState(language);
153
+ }
154
+ }, {
155
+ key: "setDimensions",
156
+ value: function setDimensions() {
157
+ var _this2 = this;
158
+
159
+ var checkExist = setInterval(function () {
160
+ try {
161
+ var _this2$drawable$getBo = _this2.drawable.getBoundingClientRect(),
162
+ height = _this2$drawable$getBo.height,
163
+ width = _this2$drawable$getBo.width;
164
+
165
+ if (height !== 0 && width !== 0) {
166
+ _this2.setState({
167
+ drawableDimensions: {
168
+ height: height,
169
+ width: width
170
+ }
171
+ });
172
+ }
173
+ } catch (e) {
174
+ // eslint-disable-next-line no-console
175
+ console.warn('setDimensions Error: ', e);
176
+ } finally {
177
+ clearInterval(checkExist);
178
+ }
179
+ }, 100);
180
+ }
181
+ }, {
182
+ key: "componentDidMount",
183
+ value: function componentDidMount() {
184
+ var _this3 = this;
185
+
186
+ var language = this.props.language;
187
+ this.setTranslatedState(language);
188
+ this.setDimensions();
189
+ this.observer = new MutationObserver(function (mutations) {
190
+ mutations.forEach(function () {
191
+ var _document$getElementB, _document$getElementB2;
192
+
193
+ var target = (_document$getElementB = document.getElementById('question-container')) === null || _document$getElementB === void 0 ? void 0 : (_document$getElementB2 = _document$getElementB.style) === null || _document$getElementB2 === void 0 ? void 0 : _document$getElementB2.cssText;
194
+ var zoom = target === null || target === void 0 ? void 0 : target.substring(target.indexOf('--pie-zoom') + 11, target.lastIndexOf('%'));
195
+ var zoomParsed = zoom === null || zoom === void 0 ? void 0 : zoom.replace(/\s/g, '');
196
+
197
+ if (zoomParsed) {
198
+ var newScale = parseFloat(zoomParsed) / 100;
199
+
200
+ if (newScale !== _this3.state.scale) {
201
+ _this3.setState({
202
+ scale: parseFloat(zoomParsed) / 100
203
+ });
204
+ }
205
+ } else if (!zoomParsed && _this3.state.scale !== 1) {
206
+ _this3.setState({
207
+ scale: 1
208
+ });
209
+ }
210
+ });
211
+ });
212
+ var target = document.getElementById('question-container');
213
+
214
+ if (target) {
215
+ this.observer.observe(target, {
216
+ attributes: true,
217
+ attributeFilter: ['style']
218
+ });
219
+ }
220
+ }
221
+ }, {
222
+ key: "componentWillUnmount",
223
+ value: function componentWillUnmount() {
224
+ var _this$observer;
225
+
226
+ var TextEntry = this.state.TextEntry;
227
+ TextEntry.removeEventListeners();
228
+ (_this$observer = this.observer) === null || _this$observer === void 0 ? void 0 : _this$observer.disconnect();
229
+ }
230
+ }, {
231
+ key: "handleMakeToolActive",
232
+ value: function handleMakeToolActive(tool) {
233
+ var TextEntry = this.state.TextEntry;
234
+ var type = tool.type;
235
+ var language = this.props.language;
236
+
237
+ if (type !== 'Text') {
238
+ this.setState({
239
+ toolActive: tool
240
+ });
241
+ } else {
242
+ TextEntry.addNewTextEntry(language); // Force update
243
+
244
+ this.setState({
245
+ updatedAt: new Date()
246
+ });
247
+ }
248
+ }
249
+ }, {
250
+ key: "handleColorChange",
251
+ value: function handleColorChange(type, color) {
252
+ var cType = "".concat(type, "Color");
253
+ this.setState((0, _defineProperty2["default"])({}, cType, color));
254
+ }
255
+ }, {
256
+ key: "render",
257
+ value: function render() {
258
+ var _this4 = this;
259
+
260
+ var _this$props = this.props,
261
+ classes = _this$props.classes,
262
+ disabled = _this$props.disabled,
263
+ imageUrl = _this$props.imageUrl,
264
+ imageDimensions = _this$props.imageDimensions,
265
+ onSessionChange = _this$props.onSessionChange,
266
+ session = _this$props.session,
267
+ backgroundImageEnabled = _this$props.backgroundImageEnabled,
268
+ language = _this$props.language;
269
+ var _this$state = this.state,
270
+ drawableDimensions = _this$state.drawableDimensions,
271
+ toolActive = _this$state.toolActive,
272
+ fillColor = _this$state.fillColor,
273
+ fillColorList = _this$state.fillColorList,
274
+ outlineColor = _this$state.outlineColor,
275
+ outlineColorList = _this$state.outlineColorList,
276
+ paintColor = _this$state.paintColor,
277
+ paintColorList = _this$state.paintColorList,
278
+ TextEntry = _this$state.TextEntry;
279
+ var heightToUse = drawableDimensions.height * this.state.scale;
280
+ return /*#__PURE__*/_react["default"].createElement("div", {
281
+ className: classes.base
282
+ }, !disabled && /*#__PURE__*/_react["default"].createElement(_drawablePalette["default"], {
283
+ fillColor: fillColor,
284
+ fillList: fillColorList,
285
+ outlineColor: outlineColor,
286
+ outlineList: outlineColorList,
287
+ paintColor: paintColor,
288
+ paintList: paintColorList,
289
+ onFillColorChange: function onFillColorChange(color) {
290
+ return _this4.handleColorChange('fill', color);
291
+ },
292
+ onOutlineColorChange: function onOutlineColorChange(color) {
293
+ return _this4.handleColorChange('outline', color);
294
+ },
295
+ onPaintColorChange: function onPaintColorChange(color) {
296
+ return _this4.handleColorChange('paint', color);
297
+ },
298
+ language: language
299
+ }), /*#__PURE__*/_react["default"].createElement("div", {
300
+ className: classes.box
301
+ }, /*#__PURE__*/_react["default"].createElement("div", {
302
+ className: classes.toolbar
303
+ }, TOOLS.map(function (tool) {
304
+ var type = tool.type,
305
+ label = tool.label,
306
+ icon = tool.icon;
307
+ return /*#__PURE__*/_react["default"].createElement(_button["default"], {
308
+ title: label,
309
+ key: type,
310
+ disabled: _this4.checkIfToolIsDisabled(type),
311
+ onClick: function onClick() {
312
+ return _this4.handleMakeToolActive(tool);
313
+ },
314
+ label: /*#__PURE__*/_react["default"].createElement(_icon["default"], {
315
+ path: icon
316
+ })
317
+ });
318
+ })), /*#__PURE__*/_react["default"].createElement("div", {
319
+ ref: function ref(drawable) {
320
+ _this4.drawable = drawable;
321
+ },
322
+ className: classes.drawableHeight,
323
+ style: {
324
+ height: heightToUse,
325
+ maxHeight: heightToUse
326
+ }
327
+ }, /*#__PURE__*/_react["default"].createElement(_drawableMain["default"], {
328
+ scale: this.state.scale,
329
+ session: session,
330
+ disabled: disabled,
331
+ onSessionChange: onSessionChange,
332
+ fillColor: fillColor,
333
+ outlineColor: outlineColor,
334
+ paintColor: paintColor,
335
+ imageUrl: imageUrl,
336
+ drawableDimensions: drawableDimensions,
337
+ imageDimensions: imageDimensions,
338
+ toolActive: toolActive,
339
+ TextEntry: TextEntry,
340
+ backgroundImageEnabled: backgroundImageEnabled,
341
+ language: language
342
+ }))));
343
+ }
344
+ }]);
345
+ return Container;
346
+ }(_react.Component);
347
+
348
+ exports.Container = Container;
349
+ (0, _defineProperty2["default"])(Container, "propTypes", {
350
+ classes: _propTypes["default"].object.isRequired,
351
+ disabled: _propTypes["default"].bool,
352
+ session: _propTypes["default"].object.isRequired,
353
+ onSessionChange: _propTypes["default"].func.isRequired,
354
+ imageDimensions: _propTypes["default"].object.isRequired,
355
+ imageUrl: _propTypes["default"].string.isRequired,
356
+ backgroundImageEnabled: _propTypes["default"].bool.isRequired,
357
+ language: _propTypes["default"].string
358
+ });
359
+
360
+ var styles = function styles(theme) {
361
+ return {
362
+ base: {
363
+ marginTop: theme.spacing.unit * 2
364
+ },
365
+ box: {
366
+ border: '1px solid #E0E1E6',
367
+ borderRadius: '5px',
368
+ marginTop: theme.spacing.unit * 2,
369
+ backgroundColor: '#ECEDF1'
370
+ },
371
+ drawableHeight: {
372
+ minHeight: 350,
373
+ backgroundColor: '#fff'
374
+ },
375
+ toolbar: {
376
+ borderBottom: '1px solid #E0E1E6',
377
+ borderTopLeftRadius: '5px',
378
+ borderTopRightRadius: '5px',
379
+ padding: '12px 8px 4px',
380
+ boxSizing: 'border-box',
381
+ maxWidth: 'calc(100% - 163px)',
382
+ // 163px is the width set on undoControls
383
+ '& button': {
384
+ marginBottom: theme.spacing.unit
385
+ }
386
+ }
387
+ };
388
+ };
389
+
390
+ var _default = (0, _styles.withStyles)(styles)(Container);
391
+
392
+ exports["default"] = _default;
393
+ //# sourceMappingURL=container.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/drawing-response/container.jsx"],"names":["TOOLS","constants","tools","translator","Translator","ROGVAIV","map","c","value","label","Container","props","type","disabled","toolActive","state","TextEntry","DrawableText","scale","drawableDimensions","height","width","fillColor","fillColorList","outlineColor","outlineColorList","paintColor","paintColorList","language","translatedROGVAIV","t","lng","setState","setTranslatedState","checkExist","setInterval","drawable","getBoundingClientRect","e","console","warn","clearInterval","setDimensions","observer","MutationObserver","mutations","forEach","target","document","getElementById","style","cssText","zoom","substring","indexOf","lastIndexOf","zoomParsed","replace","newScale","parseFloat","observe","attributes","attributeFilter","removeEventListeners","disconnect","tool","addNewTextEntry","updatedAt","Date","color","cType","classes","imageUrl","imageDimensions","onSessionChange","session","backgroundImageEnabled","heightToUse","base","handleColorChange","box","toolbar","icon","checkIfToolIsDisabled","handleMakeToolActive","drawableHeight","maxHeight","Component","PropTypes","object","isRequired","bool","func","string","styles","theme","marginTop","spacing","unit","border","borderRadius","backgroundColor","minHeight","borderBottom","borderTopLeftRadius","borderTopRightRadius","padding","boxSizing","maxWidth","marginBottom"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AAEA,IAAeA,KAAf,GAAyBC,qBAAzB,CAAQC,KAAR;AACA,IAAQC,UAAR,GAAuBC,sBAAvB,CAAQD,UAAR;AAEA,IAAME,OAAO,GAAG,CAAC,KAAD,EAAQ,QAAR,EAAkB,QAAlB,EAA4B,QAA5B,EAAsC,MAAtC,EAA8C,OAA9C,EAAuD,OAAvD,EAAgE,OAAhE,EAAyEC,GAAzE,CAA6E,UAACC,CAAD;AAAA,SAAQ;AACnGC,IAAAA,KAAK,EAAED,CAD4F;AAEnGE,IAAAA,KAAK,EAAEF;AAF4F,GAAR;AAAA,CAA7E,CAAhB;;IAKaG,S;;;;;AAYX,qBAAYC,KAAZ,EAAmB;AAAA;;AAAA;AACjB,8BAAMA,KAAN;AADiB,8GAiIK,UAACC,IAAD,EAAU;AAChC,UAAI,MAAKD,KAAL,CAAWE,QAAf,EAAyB,OAAO,IAAP;AAEzB,UAAQC,UAAR,GAAuB,MAAKC,KAA5B,CAAQD,UAAR,CAHgC,CAIhC;;AACA,UAAIF,IAAI,KAAK,MAAb,EAAqB;AACnB,eAAO,KAAP;AACD;;AACD,aAAOA,IAAI,KAAKE,UAAU,CAACF,IAA3B;AACD,KA1IkB;AAEjB,QAAMI,SAAS,GAAG,IAAIC,wBAAJ,EAAlB;AAEA,UAAKF,KAAL,GAAa;AACXG,MAAAA,KAAK,EAAE,CADI;AAEXC,MAAAA,kBAAkB,EAAE;AAClBC,QAAAA,MAAM,EAAE,CADU;AAElBC,QAAAA,KAAK,EAAE;AAFW,OAFT;AAMXP,MAAAA,UAAU,EAAEd,KAAK,CAAC,CAAD,CANN;AAOXsB,MAAAA,SAAS,EAAE,OAPA;AAQXC,MAAAA,aAAa,GACX;AAAEf,QAAAA,KAAK,EAAE,aAAT;AAAwBC,QAAAA,KAAK,EAAE;AAA/B,OADW,EAEX;AAAED,QAAAA,KAAK,EAAE,WAAT;AAAsBC,QAAAA,KAAK,EAAE;AAA7B,OAFW,EAGX;AAAED,QAAAA,KAAK,EAAE,aAAT;AAAwBC,QAAAA,KAAK,EAAE;AAA/B,OAHW,6CAIRJ,OAJQ,EARF;AAcXmB,MAAAA,YAAY,EAAE,OAdH;AAeXC,MAAAA,gBAAgB,EAAEpB,OAfP;AAgBXqB,MAAAA,UAAU,EAAE,KAhBD;AAiBXC,MAAAA,cAAc,EAAEtB,OAjBL;AAkBXW,MAAAA,SAAS,EAATA;AAlBW,KAAb;AAJiB;AAwBlB;;;;WAED,4BAAmBY,QAAnB,EAA6B;AAC3B,UAAMC,iBAAiB,GAAGxB,OAAO,CAACC,GAAR,CAAY,UAACC,CAAD;AAAA,eAAQ;AAC5CC,UAAAA,KAAK,EAAED,CAAC,CAACC,KADmC;AAE5CC,UAAAA,KAAK,EAAEN,UAAU,CAAC2B,CAAX,2BAAgCvB,CAAC,CAACE,KAAlC,GAA2C;AAAEsB,YAAAA,GAAG,EAAEH;AAAP,WAA3C;AAFqC,SAAR;AAAA,OAAZ,CAA1B;AAKA,WAAKI,QAAL,CAAc;AACZT,QAAAA,aAAa,GACX;AAAEf,UAAAA,KAAK,EAAE,aAAT;AAAwBC,UAAAA,KAAK,EAAEN,UAAU,CAAC2B,CAAX,CAAa,wBAAb,EAAuC;AAAEC,YAAAA,GAAG,EAAEH;AAAP,WAAvC;AAA/B,SADW,EAEX;AAAEpB,UAAAA,KAAK,EAAE,WAAT;AAAsBC,UAAAA,KAAK,EAAEN,UAAU,CAAC2B,CAAX,CAAa,2BAAb,EAA0C;AAAEC,YAAAA,GAAG,EAAEH;AAAP,WAA1C;AAA7B,SAFW,EAGX;AAAEpB,UAAAA,KAAK,EAAE,aAAT;AAAwBC,UAAAA,KAAK,EAAEN,UAAU,CAAC2B,CAAX,CAAa,6BAAb,EAA4C;AAAEC,YAAAA,GAAG,EAAEH;AAAP,WAA5C;AAA/B,SAHW,6CAIRC,iBAJQ,EADD;AAOZH,QAAAA,UAAU,EAAEvB,UAAU,CAAC2B,CAAX,CAAa,qBAAb,EAAoC;AAAEC,UAAAA,GAAG,EAAEH;AAAP,SAApC,CAPA;AAQZH,QAAAA,gBAAgB,EAAEI,iBARN;AASZF,QAAAA,cAAc,EAAEE;AATJ,OAAd;AAWD;;;WAED,0CAAiClB,KAAjC,EAAwC;AACtC,UAAQiB,QAAR,GAAqBjB,KAArB,CAAQiB,QAAR;AACA,WAAKK,kBAAL,CAAwBL,QAAxB;AACD;;;WAED,yBAAgB;AAAA;;AACd,UAAMM,UAAU,GAAGC,WAAW,CAAC,YAAM;AACnC,YAAI;AACF,sCAA0B,MAAI,CAACC,QAAL,CAAcC,qBAAd,EAA1B;AAAA,cAAQjB,MAAR,yBAAQA,MAAR;AAAA,cAAgBC,KAAhB,yBAAgBA,KAAhB;;AACA,cAAID,MAAM,KAAK,CAAX,IAAgBC,KAAK,KAAK,CAA9B,EAAiC;AAC/B,YAAA,MAAI,CAACW,QAAL,CAAc;AACZb,cAAAA,kBAAkB,EAAE;AAClBC,gBAAAA,MAAM,EAANA,MADkB;AAElBC,gBAAAA,KAAK,EAALA;AAFkB;AADR,aAAd;AAMD;AACF,SAVD,CAUE,OAAOiB,CAAP,EAAU;AACV;AACAC,UAAAA,OAAO,CAACC,IAAR,CAAa,uBAAb,EAAsCF,CAAtC;AACD,SAbD,SAaU;AACRG,UAAAA,aAAa,CAACP,UAAD,CAAb;AACD;AACF,OAjB6B,EAiB3B,GAjB2B,CAA9B;AAkBD;;;WAED,6BAAoB;AAAA;;AAClB,UAAQN,QAAR,GAAqB,KAAKjB,KAA1B,CAAQiB,QAAR;AACA,WAAKK,kBAAL,CAAwBL,QAAxB;AAEA,WAAKc,aAAL;AAEA,WAAKC,QAAL,GAAgB,IAAIC,gBAAJ,CAAqB,UAACC,SAAD,EAAe;AAClDA,QAAAA,SAAS,CAACC,OAAV,CAAkB,YAAM;AAAA;;AACtB,cAAMC,MAAM,4BAAGC,QAAQ,CAACC,cAAT,CAAwB,oBAAxB,CAAH,oFAAG,sBAA+CC,KAAlD,2DAAG,uBAAsDC,OAArE;AACA,cAAMC,IAAI,GAAGL,MAAH,aAAGA,MAAH,uBAAGA,MAAM,CAAEM,SAAR,CAAkBN,MAAM,CAACO,OAAP,CAAe,YAAf,IAA+B,EAAjD,EAAqDP,MAAM,CAACQ,WAAP,CAAmB,GAAnB,CAArD,CAAb;AACA,cAAMC,UAAU,GAAGJ,IAAH,aAAGA,IAAH,uBAAGA,IAAI,CAAEK,OAAN,CAAc,KAAd,EAAqB,EAArB,CAAnB;;AAEA,cAAID,UAAJ,EAAgB;AACd,gBAAME,QAAQ,GAAGC,UAAU,CAACH,UAAD,CAAV,GAAyB,GAA1C;;AACA,gBAAIE,QAAQ,KAAK,MAAI,CAAC3C,KAAL,CAAWG,KAA5B,EAAmC;AACjC,cAAA,MAAI,CAACc,QAAL,CAAc;AACZd,gBAAAA,KAAK,EAAEyC,UAAU,CAACH,UAAD,CAAV,GAAyB;AADpB,eAAd;AAGD;AACF,WAPD,MAOO,IAAI,CAACA,UAAD,IAAe,MAAI,CAACzC,KAAL,CAAWG,KAAX,KAAqB,CAAxC,EAA2C;AAChD,YAAA,MAAI,CAACc,QAAL,CAAc;AACZd,cAAAA,KAAK,EAAE;AADK,aAAd;AAGD;AACF,SAjBD;AAkBD,OAnBe,CAAhB;AAqBA,UAAM6B,MAAM,GAAGC,QAAQ,CAACC,cAAT,CAAwB,oBAAxB,CAAf;;AACA,UAAIF,MAAJ,EAAY;AACV,aAAKJ,QAAL,CAAciB,OAAd,CAAsBb,MAAtB,EAA8B;AAAEc,UAAAA,UAAU,EAAE,IAAd;AAAoBC,UAAAA,eAAe,EAAE,CAAC,OAAD;AAArC,SAA9B;AACD;AACF;;;WAED,gCAAuB;AAAA;;AACrB,UAAQ9C,SAAR,GAAsB,KAAKD,KAA3B,CAAQC,SAAR;AAEAA,MAAAA,SAAS,CAAC+C,oBAAV;AACA,6BAAKpB,QAAL,kEAAeqB,UAAf;AACD;;;WAED,8BAAqBC,IAArB,EAA2B;AACzB,UAAQjD,SAAR,GAAsB,KAAKD,KAA3B,CAAQC,SAAR;AACA,UAAQJ,IAAR,GAAiBqD,IAAjB,CAAQrD,IAAR;AACA,UAAQgB,QAAR,GAAqB,KAAKjB,KAA1B,CAAQiB,QAAR;;AAEA,UAAIhB,IAAI,KAAK,MAAb,EAAqB;AACnB,aAAKoB,QAAL,CAAc;AACZlB,UAAAA,UAAU,EAAEmD;AADA,SAAd;AAGD,OAJD,MAIO;AACLjD,QAAAA,SAAS,CAACkD,eAAV,CAA0BtC,QAA1B,EADK,CAEL;;AACA,aAAKI,QAAL,CAAc;AACZmC,UAAAA,SAAS,EAAE,IAAIC,IAAJ;AADC,SAAd;AAGD;AACF;;;WAaD,2BAAkBxD,IAAlB,EAAwByD,KAAxB,EAA+B;AAC7B,UAAMC,KAAK,aAAM1D,IAAN,UAAX;AACA,WAAKoB,QAAL,sCACGsC,KADH,EACWD,KADX;AAGD;;;WAED,kBAAS;AAAA;;AACP,wBACE,KAAK1D,KADP;AAAA,UAAQ4D,OAAR,eAAQA,OAAR;AAAA,UAAiB1D,QAAjB,eAAiBA,QAAjB;AAAA,UAA2B2D,QAA3B,eAA2BA,QAA3B;AAAA,UAAqCC,eAArC,eAAqCA,eAArC;AAAA,UAAsDC,eAAtD,eAAsDA,eAAtD;AAAA,UAAuEC,OAAvE,eAAuEA,OAAvE;AAAA,UAAgFC,sBAAhF,eAAgFA,sBAAhF;AAAA,UAAwGhD,QAAxG,eAAwGA,QAAxG;AAEA,wBAUI,KAAKb,KAVT;AAAA,UACEI,kBADF,eACEA,kBADF;AAAA,UAEEL,UAFF,eAEEA,UAFF;AAAA,UAGEQ,SAHF,eAGEA,SAHF;AAAA,UAIEC,aAJF,eAIEA,aAJF;AAAA,UAKEC,YALF,eAKEA,YALF;AAAA,UAMEC,gBANF,eAMEA,gBANF;AAAA,UAOEC,UAPF,eAOEA,UAPF;AAAA,UAQEC,cARF,eAQEA,cARF;AAAA,UASEX,SATF,eASEA,SATF;AAYA,UAAM6D,WAAW,GAAG1D,kBAAkB,CAACC,MAAnB,GAA4B,KAAKL,KAAL,CAAWG,KAA3D;AAEA,0BACE;AAAK,QAAA,SAAS,EAAEqD,OAAO,CAACO;AAAxB,SACG,CAACjE,QAAD,iBACC,gCAAC,2BAAD;AACE,QAAA,SAAS,EAAES,SADb;AAEE,QAAA,QAAQ,EAAEC,aAFZ;AAGE,QAAA,YAAY,EAAEC,YAHhB;AAIE,QAAA,WAAW,EAAEC,gBAJf;AAKE,QAAA,UAAU,EAAEC,UALd;AAME,QAAA,SAAS,EAAEC,cANb;AAOE,QAAA,iBAAiB,EAAE,2BAAC0C,KAAD;AAAA,iBAAW,MAAI,CAACU,iBAAL,CAAuB,MAAvB,EAA+BV,KAA/B,CAAX;AAAA,SAPrB;AAQE,QAAA,oBAAoB,EAAE,8BAACA,KAAD;AAAA,iBAAW,MAAI,CAACU,iBAAL,CAAuB,SAAvB,EAAkCV,KAAlC,CAAX;AAAA,SARxB;AASE,QAAA,kBAAkB,EAAE,4BAACA,KAAD;AAAA,iBAAW,MAAI,CAACU,iBAAL,CAAuB,OAAvB,EAAgCV,KAAhC,CAAX;AAAA,SATtB;AAUE,QAAA,QAAQ,EAAEzC;AAVZ,QAFJ,eAgBE;AAAK,QAAA,SAAS,EAAE2C,OAAO,CAACS;AAAxB,sBACE;AAAK,QAAA,SAAS,EAAET,OAAO,CAACU;AAAxB,SACGjF,KAAK,CAACM,GAAN,CAAU,UAAC2D,IAAD,EAAU;AACnB,YAAQrD,IAAR,GAA8BqD,IAA9B,CAAQrD,IAAR;AAAA,YAAcH,KAAd,GAA8BwD,IAA9B,CAAcxD,KAAd;AAAA,YAAqByE,IAArB,GAA8BjB,IAA9B,CAAqBiB,IAArB;AAEA,4BACE,gCAAC,kBAAD;AACE,UAAA,KAAK,EAAEzE,KADT;AAEE,UAAA,GAAG,EAAEG,IAFP;AAGE,UAAA,QAAQ,EAAE,MAAI,CAACuE,qBAAL,CAA2BvE,IAA3B,CAHZ;AAIE,UAAA,OAAO,EAAE;AAAA,mBAAM,MAAI,CAACwE,oBAAL,CAA0BnB,IAA1B,CAAN;AAAA,WAJX;AAKE,UAAA,KAAK,eAAE,gCAAC,gBAAD;AAAM,YAAA,IAAI,EAAEiB;AAAZ;AALT,UADF;AASD,OAZA,CADH,CADF,eAiBE;AACE,QAAA,GAAG,EAAE,aAAC9C,QAAD,EAAc;AACjB,UAAA,MAAI,CAACA,QAAL,GAAgBA,QAAhB;AACD,SAHH;AAIE,QAAA,SAAS,EAAEmC,OAAO,CAACc,cAJrB;AAKE,QAAA,KAAK,EAAE;AAAEjE,UAAAA,MAAM,EAAEyD,WAAV;AAAuBS,UAAAA,SAAS,EAAET;AAAlC;AALT,sBAOE,gCAAC,wBAAD;AACE,QAAA,KAAK,EAAE,KAAK9D,KAAL,CAAWG,KADpB;AAEE,QAAA,OAAO,EAAEyD,OAFX;AAGE,QAAA,QAAQ,EAAE9D,QAHZ;AAIE,QAAA,eAAe,EAAE6D,eAJnB;AAKE,QAAA,SAAS,EAAEpD,SALb;AAME,QAAA,YAAY,EAAEE,YANhB;AAOE,QAAA,UAAU,EAAEE,UAPd;AAQE,QAAA,QAAQ,EAAE8C,QARZ;AASE,QAAA,kBAAkB,EAAErD,kBATtB;AAUE,QAAA,eAAe,EAAEsD,eAVnB;AAWE,QAAA,UAAU,EAAE3D,UAXd;AAYE,QAAA,SAAS,EAAEE,SAZb;AAaE,QAAA,sBAAsB,EAAE4D,sBAb1B;AAcE,QAAA,QAAQ,EAAEhD;AAdZ,QAPF,CAjBF,CAhBF,CADF;AA6DD;;;EA7O4B2D,gB;;;iCAAlB7E,S,eACQ;AACjB6D,EAAAA,OAAO,EAAEiB,sBAAUC,MAAV,CAAiBC,UADT;AAEjB7E,EAAAA,QAAQ,EAAE2E,sBAAUG,IAFH;AAGjBhB,EAAAA,OAAO,EAAEa,sBAAUC,MAAV,CAAiBC,UAHT;AAIjBhB,EAAAA,eAAe,EAAEc,sBAAUI,IAAV,CAAeF,UAJf;AAKjBjB,EAAAA,eAAe,EAAEe,sBAAUC,MAAV,CAAiBC,UALjB;AAMjBlB,EAAAA,QAAQ,EAAEgB,sBAAUK,MAAV,CAAiBH,UANV;AAOjBd,EAAAA,sBAAsB,EAAEY,sBAAUG,IAAV,CAAeD,UAPtB;AAQjB9D,EAAAA,QAAQ,EAAE4D,sBAAUK;AARH,C;;AA+OrB,IAAMC,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBjB,IAAAA,IAAI,EAAE;AACJkB,MAAAA,SAAS,EAAED,KAAK,CAACE,OAAN,CAAcC,IAAd,GAAqB;AAD5B,KADmB;AAIzBlB,IAAAA,GAAG,EAAE;AACHmB,MAAAA,MAAM,EAAE,mBADL;AAEHC,MAAAA,YAAY,EAAE,KAFX;AAGHJ,MAAAA,SAAS,EAAED,KAAK,CAACE,OAAN,CAAcC,IAAd,GAAqB,CAH7B;AAIHG,MAAAA,eAAe,EAAE;AAJd,KAJoB;AAUzBhB,IAAAA,cAAc,EAAE;AACdiB,MAAAA,SAAS,EAAE,GADG;AAEdD,MAAAA,eAAe,EAAE;AAFH,KAVS;AAczBpB,IAAAA,OAAO,EAAE;AACPsB,MAAAA,YAAY,EAAE,mBADP;AAEPC,MAAAA,mBAAmB,EAAE,KAFd;AAGPC,MAAAA,oBAAoB,EAAE,KAHf;AAIPC,MAAAA,OAAO,EAAE,cAJF;AAKPC,MAAAA,SAAS,EAAE,YALJ;AAMPC,MAAAA,QAAQ,EAAE,oBANH;AAMyB;AAChC,kBAAY;AACVC,QAAAA,YAAY,EAAEd,KAAK,CAACE,OAAN,CAAcC;AADlB;AAPL;AAdgB,GAAZ;AAAA,CAAf;;eA2Be,wBAAWJ,MAAX,EAAmBpF,SAAnB,C","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport Translator from '@pie-lib/pie-toolbox/translator';\n\nimport constants from './constants';\nimport Button from './button';\nimport DrawablePalette from './drawable-palette';\nimport DrawableMain from './drawable-main';\nimport DrawableText from './drawable-text';\nimport Icon from './icon';\n\nconst { tools: TOOLS } = constants;\nconst { translator } = Translator;\n\nconst ROGVAIV = ['red', 'orange', 'yellow', 'violet', 'blue', 'green', 'white', 'black'].map((c) => ({\n value: c,\n label: c,\n}));\n\nexport class Container extends Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n disabled: PropTypes.bool,\n session: PropTypes.object.isRequired,\n onSessionChange: PropTypes.func.isRequired,\n imageDimensions: PropTypes.object.isRequired,\n imageUrl: PropTypes.string.isRequired,\n backgroundImageEnabled: PropTypes.bool.isRequired,\n language: PropTypes.string,\n };\n\n constructor(props) {\n super(props);\n const TextEntry = new DrawableText();\n\n this.state = {\n scale: 1,\n drawableDimensions: {\n height: 0,\n width: 0,\n },\n toolActive: TOOLS[0],\n fillColor: 'white',\n fillColorList: [\n { value: 'transparent', label: 'no fill' },\n { value: 'lightblue', label: 'light blue' },\n { value: 'lightyellow', label: 'light yellow' },\n ...ROGVAIV,\n ],\n outlineColor: 'black',\n outlineColorList: ROGVAIV,\n paintColor: 'red',\n paintColorList: ROGVAIV,\n TextEntry,\n };\n }\n\n setTranslatedState(language) {\n const translatedROGVAIV = ROGVAIV.map((c) => ({\n value: c.value,\n label: translator.t(`drawingResponse.${c.label}`, { lng: language }),\n }));\n\n this.setState({\n fillColorList: [\n { value: 'transparent', label: translator.t('drawingResponse.noFill', { lng: language }), },\n { value: 'lightblue', label: translator.t('drawingResponse.lightblue', { lng: language }), },\n { value: 'lightyellow', label: translator.t('drawingResponse.lightyellow', { lng: language }), },\n ...translatedROGVAIV,\n ],\n paintColor: translator.t('drawingResponse.red', { lng: language }),\n outlineColorList: translatedROGVAIV,\n paintColorList: translatedROGVAIV,\n });\n }\n\n UNSAFE_componentWillReceiveProps(props) {\n const { language } = props;\n this.setTranslatedState(language);\n }\n\n setDimensions() {\n const checkExist = setInterval(() => {\n try {\n const { height, width } = this.drawable.getBoundingClientRect();\n if (height !== 0 && width !== 0) {\n this.setState({\n drawableDimensions: {\n height,\n width,\n },\n });\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.warn('setDimensions Error: ', e);\n } finally {\n clearInterval(checkExist);\n }\n }, 100);\n }\n\n componentDidMount() {\n const { language } = this.props;\n this.setTranslatedState(language);\n\n this.setDimensions();\n\n this.observer = new MutationObserver((mutations) => {\n mutations.forEach(() => {\n const target = document.getElementById('question-container')?.style?.cssText;\n const zoom = target?.substring(target.indexOf('--pie-zoom') + 11, target.lastIndexOf('%'));\n const zoomParsed = zoom?.replace(/\\s/g, '');\n\n if (zoomParsed) {\n const newScale = parseFloat(zoomParsed) / 100;\n if (newScale !== this.state.scale) {\n this.setState({\n scale: parseFloat(zoomParsed) / 100,\n });\n }\n } else if (!zoomParsed && this.state.scale !== 1) {\n this.setState({\n scale: 1,\n });\n }\n });\n });\n\n const target = document.getElementById('question-container');\n if (target) {\n this.observer.observe(target, { attributes: true, attributeFilter: ['style'] });\n }\n }\n\n componentWillUnmount() {\n const { TextEntry } = this.state;\n\n TextEntry.removeEventListeners();\n this.observer?.disconnect();\n }\n\n handleMakeToolActive(tool) {\n const { TextEntry } = this.state;\n const { type } = tool;\n const { language } = this.props;\n\n if (type !== 'Text') {\n this.setState({\n toolActive: tool,\n });\n } else {\n TextEntry.addNewTextEntry(language);\n // Force update\n this.setState({\n updatedAt: new Date(),\n });\n }\n }\n\n checkIfToolIsDisabled = (type) => {\n if (this.props.disabled) return true;\n\n const { toolActive } = this.state;\n // Text will never be disabled since on each \"Text Entry\" click a new text is added\n if (type === 'Text') {\n return false;\n }\n return type === toolActive.type;\n };\n\n handleColorChange(type, color) {\n const cType = `${type}Color`;\n this.setState({\n [cType]: color,\n });\n }\n\n render() {\n const { classes, disabled, imageUrl, imageDimensions, onSessionChange, session, backgroundImageEnabled, language } =\n this.props;\n const {\n drawableDimensions,\n toolActive,\n fillColor,\n fillColorList,\n outlineColor,\n outlineColorList,\n paintColor,\n paintColorList,\n TextEntry,\n } = this.state;\n\n const heightToUse = drawableDimensions.height * this.state.scale;\n\n return (\n <div className={classes.base}>\n {!disabled && (\n <DrawablePalette\n fillColor={fillColor}\n fillList={fillColorList}\n outlineColor={outlineColor}\n outlineList={outlineColorList}\n paintColor={paintColor}\n paintList={paintColorList}\n onFillColorChange={(color) => this.handleColorChange('fill', color)}\n onOutlineColorChange={(color) => this.handleColorChange('outline', color)}\n onPaintColorChange={(color) => this.handleColorChange('paint', color)}\n language={language}\n />\n )}\n\n <div className={classes.box}>\n <div className={classes.toolbar}>\n {TOOLS.map((tool) => {\n const { type, label, icon } = tool;\n\n return (\n <Button\n title={label}\n key={type}\n disabled={this.checkIfToolIsDisabled(type)}\n onClick={() => this.handleMakeToolActive(tool)}\n label={<Icon path={icon}/>}\n />\n );\n })}\n </div>\n\n <div\n ref={(drawable) => {\n this.drawable = drawable;\n }}\n className={classes.drawableHeight}\n style={{ height: heightToUse, maxHeight: heightToUse }}\n >\n <DrawableMain\n scale={this.state.scale}\n session={session}\n disabled={disabled}\n onSessionChange={onSessionChange}\n fillColor={fillColor}\n outlineColor={outlineColor}\n paintColor={paintColor}\n imageUrl={imageUrl}\n drawableDimensions={drawableDimensions}\n imageDimensions={imageDimensions}\n toolActive={toolActive}\n TextEntry={TextEntry}\n backgroundImageEnabled={backgroundImageEnabled}\n language={language}\n />\n </div>\n </div>\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n base: {\n marginTop: theme.spacing.unit * 2,\n },\n box: {\n border: '1px solid #E0E1E6',\n borderRadius: '5px',\n marginTop: theme.spacing.unit * 2,\n backgroundColor: '#ECEDF1',\n },\n drawableHeight: {\n minHeight: 350,\n backgroundColor: '#fff',\n },\n toolbar: {\n borderBottom: '1px solid #E0E1E6',\n borderTopLeftRadius: '5px',\n borderTopRightRadius: '5px',\n padding: '12px 8px 4px',\n boxSizing: 'border-box',\n maxWidth: 'calc(100% - 163px)', // 163px is the width set on undoControls\n '& button': {\n marginBottom: theme.spacing.unit,\n },\n },\n});\n\nexport default withStyles(styles)(Container);\n"],"file":"container.js"}