@pie-element/drawing-response 7.11.2-next.1 → 7.11.2-next.15

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 +104 -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 +282 -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 +113 -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,113 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.createDefaultModel = void 0;
9
+ exports.model = model;
10
+ exports.normalize = void 0;
11
+ exports.outcome = outcome;
12
+ exports.validate = void 0;
13
+
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+
16
+ var _debug = _interopRequireDefault(require("debug"));
17
+
18
+ var _defaults = _interopRequireDefault(require("./defaults"));
19
+
20
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
21
+
22
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
23
+
24
+ var log = (0, _debug["default"])('pie-elements:drawing-response:controller');
25
+
26
+ var normalize = function normalize(question) {
27
+ return _objectSpread({
28
+ promptEnabled: true,
29
+ teacherInstructionsEnabled: true,
30
+ studentInstructionsEnabled: true,
31
+ backgroundImageEnabled: true
32
+ }, question);
33
+ };
34
+
35
+ exports.normalize = normalize;
36
+
37
+ function model(question, session, env) {
38
+ var normalizedQuestion = normalize(question);
39
+ var imageUrl = normalizedQuestion.imageUrl,
40
+ imageDimensions = normalizedQuestion.imageDimensions,
41
+ prompt = normalizedQuestion.prompt,
42
+ promptEnabled = normalizedQuestion.promptEnabled,
43
+ backgroundImageEnabled = normalizedQuestion.backgroundImageEnabled,
44
+ language = normalizedQuestion.language;
45
+ return new Promise(function (resolve) {
46
+ var out = {
47
+ disabled: env.mode !== 'gather',
48
+ mode: env.mode,
49
+ imageDimensions: imageDimensions,
50
+ imageUrl: imageUrl,
51
+ prompt: promptEnabled ? prompt : null,
52
+ backgroundImageEnabled: backgroundImageEnabled,
53
+ language: language
54
+ };
55
+
56
+ if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {
57
+ out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled ? normalizedQuestion.teacherInstructions : null;
58
+ } else {
59
+ out.teacherInstructions = null;
60
+ }
61
+
62
+ resolve(out);
63
+ });
64
+ }
65
+
66
+ var createDefaultModel = function createDefaultModel() {
67
+ var model = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
68
+ return new Promise(function (resolve) {
69
+ resolve(_objectSpread(_objectSpread({}, _defaults["default"]), model));
70
+ });
71
+ };
72
+
73
+ exports.createDefaultModel = createDefaultModel;
74
+
75
+ function
76
+ /*config, session*/
77
+ outcome() {
78
+ return new Promise(function (resolve) {
79
+ log('outcome...');
80
+ resolve({
81
+ score: 0,
82
+ completed: 'n/a',
83
+ note: 'Requires manual scoring'
84
+ });
85
+ });
86
+ } // remove all html tags
87
+
88
+
89
+ var getInnerText = function getInnerText(html) {
90
+ return (html || '').replaceAll(/<[^>]*>/g, '');
91
+ }; // remove all html tags except img and iframe
92
+
93
+
94
+ var getContent = function getContent(html) {
95
+ return (html || '').replace(/(<(?!img|iframe)([^>]+)>)/gi, '');
96
+ };
97
+
98
+ var validate = function validate() {
99
+ var model = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
100
+ var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
101
+ var errors = {};
102
+ ['teacherInstructions', 'prompt'].forEach(function (field) {
103
+ var _config$field;
104
+
105
+ if ((_config$field = config[field]) !== null && _config$field !== void 0 && _config$field.required && !getContent(model[field])) {
106
+ errors[field] = 'This field is required.';
107
+ }
108
+ });
109
+ return errors;
110
+ };
111
+
112
+ exports.validate = validate;
113
+ //# sourceMappingURL=index.js.map
@@ -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","getInnerText","html","replaceAll","getContent","replace","validate","config","errors","forEach","field","required"],"mappings":"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","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\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img and iframe\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const errors = {};\n\n ['teacherInstructions', 'prompt'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n return errors;\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