@pie-element/drawing-response 12.2.2-beta.6 → 12.2.2-beta.8

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 (56) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/configure/CHANGELOG.md +8 -0
  3. package/configure/lib/button.js +37 -0
  4. package/configure/lib/button.js.map +1 -0
  5. package/configure/lib/defaults.js +116 -0
  6. package/configure/lib/defaults.js.map +1 -0
  7. package/configure/lib/image-container.js +307 -0
  8. package/configure/lib/image-container.js.map +1 -0
  9. package/configure/lib/index.js +151 -0
  10. package/configure/lib/index.js.map +1 -0
  11. package/configure/lib/root.js +219 -0
  12. package/configure/lib/root.js.map +1 -0
  13. package/configure/package.json +3 -3
  14. package/controller/CHANGELOG.md +8 -0
  15. package/controller/lib/defaults.js +22 -0
  16. package/controller/lib/defaults.js.map +1 -0
  17. package/controller/lib/index.js +84 -0
  18. package/controller/lib/index.js.map +1 -0
  19. package/controller/package.json +1 -1
  20. package/lib/drawing-response/button.js +49 -0
  21. package/lib/drawing-response/button.js.map +1 -0
  22. package/lib/drawing-response/constants.js +43 -0
  23. package/lib/drawing-response/constants.js.map +1 -0
  24. package/lib/drawing-response/container.js +327 -0
  25. package/lib/drawing-response/container.js.map +1 -0
  26. package/lib/drawing-response/drawable-circle.js +80 -0
  27. package/lib/drawing-response/drawable-circle.js.map +1 -0
  28. package/lib/drawing-response/drawable-eraser.js +64 -0
  29. package/lib/drawing-response/drawable-eraser.js.map +1 -0
  30. package/lib/drawing-response/drawable-free-path.js +71 -0
  31. package/lib/drawing-response/drawable-free-path.js.map +1 -0
  32. package/lib/drawing-response/drawable-helper.js +34 -0
  33. package/lib/drawing-response/drawable-helper.js.map +1 -0
  34. package/lib/drawing-response/drawable-image.js +41 -0
  35. package/lib/drawing-response/drawable-image.js.map +1 -0
  36. package/lib/drawing-response/drawable-line.js +75 -0
  37. package/lib/drawing-response/drawable-line.js.map +1 -0
  38. package/lib/drawing-response/drawable-main.js +345 -0
  39. package/lib/drawing-response/drawable-main.js.map +1 -0
  40. package/lib/drawing-response/drawable-palette.js +140 -0
  41. package/lib/drawing-response/drawable-palette.js.map +1 -0
  42. package/lib/drawing-response/drawable-rectangle.js +80 -0
  43. package/lib/drawing-response/drawable-rectangle.js.map +1 -0
  44. package/lib/drawing-response/drawable-text.js +295 -0
  45. package/lib/drawing-response/drawable-text.js.map +1 -0
  46. package/lib/drawing-response/drawable-transformer.js +52 -0
  47. package/lib/drawing-response/drawable-transformer.js.map +1 -0
  48. package/lib/drawing-response/factory.js +22 -0
  49. package/lib/drawing-response/factory.js.map +1 -0
  50. package/lib/drawing-response/icon.js +55 -0
  51. package/lib/drawing-response/icon.js.map +1 -0
  52. package/lib/drawing-response/index.js +91 -0
  53. package/lib/drawing-response/index.js.map +1 -0
  54. package/lib/index.js +69 -0
  55. package/lib/index.js.map +1 -0
  56. package/package.json +2 -2
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _reactKonva = require("react-konva");
11
+ var _drawableHelper = _interopRequireDefault(require("./drawable-helper"));
12
+ class FreePathDrawable extends _drawableHelper.default {
13
+ constructor(_props) {
14
+ super(_props, FreePathDrawable.TYPE);
15
+ (0, _defineProperty2.default)(this, "handleDragEnd", (props, event) => {
16
+ this.posX = event.target.getX();
17
+ this.posY = event.target.getY();
18
+ props.handleSessionChange();
19
+ });
20
+ const {
21
+ startx,
22
+ starty,
23
+ points,
24
+ posX,
25
+ posY
26
+ } = _props;
27
+ this.points = points || [startx, starty];
28
+ this.posX = posX || 0;
29
+ this.posY = posY || 0;
30
+ }
31
+ registerMovement(x, y) {
32
+ this.points = [...this.points, x, y];
33
+ }
34
+ handleOnClick(props) {
35
+ const {
36
+ paint,
37
+ paintColor,
38
+ forceUpdate
39
+ } = props;
40
+ if (paint) {
41
+ this.paintColor = paintColor;
42
+ forceUpdate();
43
+ }
44
+ }
45
+ render(props) {
46
+ const {
47
+ draggable,
48
+ key,
49
+ onMouseOverElement,
50
+ onMouseOutElement
51
+ } = props;
52
+ return /*#__PURE__*/_react.default.createElement(_reactKonva.Line, {
53
+ key: key,
54
+ draggable: draggable,
55
+ tension: 0,
56
+ bezier: true,
57
+ points: this.points,
58
+ fill: this.paintColor || this.fillColor,
59
+ onClick: () => this.handleOnClick(props),
60
+ onDragEnd: this.handleDragEnd.bind(this, props),
61
+ onMouseEnter: onMouseOverElement,
62
+ onMouseLeave: onMouseOutElement,
63
+ stroke: this.paintColor || this.outlineColor,
64
+ x: this.posX,
65
+ y: this.posY
66
+ });
67
+ }
68
+ }
69
+ exports.default = FreePathDrawable;
70
+ (0, _defineProperty2.default)(FreePathDrawable, "TYPE", 'FreePathDrawable');
71
+ //# sourceMappingURL=drawable-free-path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drawable-free-path.js","names":["_react","_interopRequireDefault","require","_reactKonva","_drawableHelper","FreePathDrawable","DrawableHelper","constructor","props","TYPE","_defineProperty2","default","event","posX","target","getX","posY","getY","handleSessionChange","startx","starty","points","registerMovement","x","y","handleOnClick","paint","paintColor","forceUpdate","render","draggable","key","onMouseOverElement","onMouseOutElement","createElement","Line","tension","bezier","fill","fillColor","onClick","onDragEnd","handleDragEnd","bind","onMouseEnter","onMouseLeave","stroke","outlineColor","exports"],"sources":["../../src/drawing-response/drawable-free-path.jsx"],"sourcesContent":["import React from 'react';\nimport { Line } from 'react-konva';\n\nimport DrawableHelper from './drawable-helper';\n\nexport default class FreePathDrawable extends DrawableHelper {\n static TYPE = 'FreePathDrawable';\n\n constructor(props) {\n super(props, FreePathDrawable.TYPE);\n const { startx, starty, points, posX, posY } = props;\n\n this.points = points || [startx, starty];\n this.posX = posX || 0;\n this.posY = posY || 0;\n }\n\n registerMovement(x, y) {\n this.points = [...this.points, x, y];\n }\n\n handleOnClick(props) {\n const { paint, paintColor, forceUpdate } = props;\n\n if (paint) {\n this.paintColor = paintColor;\n forceUpdate();\n }\n }\n\n handleDragEnd = (props, event) => {\n this.posX = event.target.getX();\n this.posY = event.target.getY();\n\n props.handleSessionChange();\n };\n\n render(props) {\n const { draggable, key, onMouseOverElement, onMouseOutElement } = props;\n\n return (\n <Line\n key={key}\n draggable={draggable}\n tension={0}\n bezier={true}\n points={this.points}\n fill={this.paintColor || this.fillColor}\n onClick={() => this.handleOnClick(props)}\n onDragEnd={this.handleDragEnd.bind(this, props)}\n onMouseEnter={onMouseOverElement}\n onMouseLeave={onMouseOutElement}\n stroke={this.paintColor || this.outlineColor}\n x={this.posX}\n y={this.posY}\n />\n );\n }\n}\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AAEA,IAAAE,eAAA,GAAAH,sBAAA,CAAAC,OAAA;AAEe,MAAMG,gBAAgB,SAASC,uBAAc,CAAC;EAG3DC,WAAWA,CAACC,MAAK,EAAE;IACjB,KAAK,CAACA,MAAK,EAAEH,gBAAgB,CAACI,IAAI,CAAC;IAAC,IAAAC,gBAAA,CAAAC,OAAA,yBAqBtB,CAACH,KAAK,EAAEI,KAAK,KAAK;MAChC,IAAI,CAACC,IAAI,GAAGD,KAAK,CAACE,MAAM,CAACC,IAAI,CAAC,CAAC;MAC/B,IAAI,CAACC,IAAI,GAAGJ,KAAK,CAACE,MAAM,CAACG,IAAI,CAAC,CAAC;MAE/BT,KAAK,CAACU,mBAAmB,CAAC,CAAC;IAC7B,CAAC;IAzBC,MAAM;MAAEC,MAAM;MAAEC,MAAM;MAAEC,MAAM;MAAER,IAAI;MAAEG;IAAK,CAAC,GAAGR,MAAK;IAEpD,IAAI,CAACa,MAAM,GAAGA,MAAM,IAAI,CAACF,MAAM,EAAEC,MAAM,CAAC;IACxC,IAAI,CAACP,IAAI,GAAGA,IAAI,IAAI,CAAC;IACrB,IAAI,CAACG,IAAI,GAAGA,IAAI,IAAI,CAAC;EACvB;EAEAM,gBAAgBA,CAACC,CAAC,EAAEC,CAAC,EAAE;IACrB,IAAI,CAACH,MAAM,GAAG,CAAC,GAAG,IAAI,CAACA,MAAM,EAAEE,CAAC,EAAEC,CAAC,CAAC;EACtC;EAEAC,aAAaA,CAACjB,KAAK,EAAE;IACnB,MAAM;MAAEkB,KAAK;MAAEC,UAAU;MAAEC;IAAY,CAAC,GAAGpB,KAAK;IAEhD,IAAIkB,KAAK,EAAE;MACT,IAAI,CAACC,UAAU,GAAGA,UAAU;MAC5BC,WAAW,CAAC,CAAC;IACf;EACF;EASAC,MAAMA,CAACrB,KAAK,EAAE;IACZ,MAAM;MAAEsB,SAAS;MAAEC,GAAG;MAAEC,kBAAkB;MAAEC;IAAkB,CAAC,GAAGzB,KAAK;IAEvE,oBACER,MAAA,CAAAW,OAAA,CAAAuB,aAAA,CAAC/B,WAAA,CAAAgC,IAAI;MACHJ,GAAG,EAAEA,GAAI;MACTD,SAAS,EAAEA,SAAU;MACrBM,OAAO,EAAE,CAAE;MACXC,MAAM,EAAE,IAAK;MACbhB,MAAM,EAAE,IAAI,CAACA,MAAO;MACpBiB,IAAI,EAAE,IAAI,CAACX,UAAU,IAAI,IAAI,CAACY,SAAU;MACxCC,OAAO,EAAEA,CAAA,KAAM,IAAI,CAACf,aAAa,CAACjB,KAAK,CAAE;MACzCiC,SAAS,EAAE,IAAI,CAACC,aAAa,CAACC,IAAI,CAAC,IAAI,EAAEnC,KAAK,CAAE;MAChDoC,YAAY,EAAEZ,kBAAmB;MACjCa,YAAY,EAAEZ,iBAAkB;MAChCa,MAAM,EAAE,IAAI,CAACnB,UAAU,IAAI,IAAI,CAACoB,YAAa;MAC7CxB,CAAC,EAAE,IAAI,CAACV,IAAK;MACbW,CAAC,EAAE,IAAI,CAACR;IAAK,CACd,CAAC;EAEN;AACF;AAACgC,OAAA,CAAArC,OAAA,GAAAN,gBAAA;AAAA,IAAAK,gBAAA,CAAAC,OAAA,EArDoBN,gBAAgB,UACrB,kBAAkB","ignoreList":[]}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ /**
8
+ * Not using React in order to avoid performance issues.
9
+ * If you switch this class to a React one make sure that
10
+ * this interaction will not have performance leaks in pie-website nor in pits.
11
+ */
12
+ class DrawableHelper {
13
+ constructor(props, type) {
14
+ const {
15
+ startx,
16
+ starty,
17
+ fillColor,
18
+ outlineColor,
19
+ createdAt
20
+ } = props;
21
+ this.startx = startx;
22
+ this.starty = starty;
23
+ this.createdAt = createdAt;
24
+ this.fillColor = fillColor;
25
+ this.outlineColor = outlineColor;
26
+ this.type = type;
27
+ }
28
+ toJson() {
29
+ const base = JSON.parse(JSON.stringify(this));
30
+ return base;
31
+ }
32
+ }
33
+ exports.default = DrawableHelper;
34
+ //# sourceMappingURL=drawable-helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drawable-helper.js","names":["DrawableHelper","constructor","props","type","startx","starty","fillColor","outlineColor","createdAt","toJson","base","JSON","parse","stringify","exports","default"],"sources":["../../src/drawing-response/drawable-helper.jsx"],"sourcesContent":["/**\n * Not using React in order to avoid performance issues.\n * If you switch this class to a React one make sure that\n * this interaction will not have performance leaks in pie-website nor in pits.\n */\nexport default class DrawableHelper {\n constructor(props, type) {\n const { startx, starty, fillColor, outlineColor, createdAt } = props;\n this.startx = startx;\n this.starty = starty;\n this.createdAt = createdAt;\n this.fillColor = fillColor;\n this.outlineColor = outlineColor;\n this.type = type;\n }\n\n toJson() {\n const base = JSON.parse(JSON.stringify(this));\n return base;\n }\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACe,MAAMA,cAAc,CAAC;EAClCC,WAAWA,CAACC,KAAK,EAAEC,IAAI,EAAE;IACvB,MAAM;MAAEC,MAAM;MAAEC,MAAM;MAAEC,SAAS;MAAEC,YAAY;MAAEC;IAAU,CAAC,GAAGN,KAAK;IACpE,IAAI,CAACE,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACC,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACG,SAAS,GAAGA,SAAS;IAC1B,IAAI,CAACF,SAAS,GAAGA,SAAS;IAC1B,IAAI,CAACC,YAAY,GAAGA,YAAY;IAChC,IAAI,CAACJ,IAAI,GAAGA,IAAI;EAClB;EAEAM,MAAMA,CAAA,EAAG;IACP,MAAMC,IAAI,GAAGC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7C,OAAOH,IAAI;EACb;AACF;AAACI,OAAA,CAAAC,OAAA,GAAAf,cAAA","ignoreList":[]}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _propTypes = _interopRequireDefault(require("prop-types"));
10
+ var _styles = require("@mui/material/styles");
11
+ const ImageContainer = (0, _styles.styled)('div')({
12
+ position: 'relative',
13
+ width: 'fit-content'
14
+ });
15
+ const Image = (0, _styles.styled)('img')({
16
+ alignItems: 'center',
17
+ display: 'flex',
18
+ justifyContent: 'center'
19
+ });
20
+ const DrawableImage = ({
21
+ url,
22
+ dimensions: {
23
+ height,
24
+ width
25
+ }
26
+ }) => /*#__PURE__*/_react.default.createElement(ImageContainer, null, /*#__PURE__*/_react.default.createElement(Image, {
27
+ alt: "drawing-response-image",
28
+ src: url,
29
+ style: {
30
+ height,
31
+ maxWidth: width,
32
+ maxHeight: 350,
33
+ width
34
+ }
35
+ }));
36
+ DrawableImage.propTypes = {
37
+ dimensions: _propTypes.default.object.isRequired,
38
+ url: _propTypes.default.string.isRequired
39
+ };
40
+ var _default = exports.default = DrawableImage;
41
+ //# sourceMappingURL=drawable-image.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drawable-image.js","names":["_react","_interopRequireDefault","require","_propTypes","_styles","ImageContainer","styled","position","width","Image","alignItems","display","justifyContent","DrawableImage","url","dimensions","height","default","createElement","alt","src","style","maxWidth","maxHeight","propTypes","PropTypes","object","isRequired","string","_default","exports"],"sources":["../../src/drawing-response/drawable-image.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\n\nconst ImageContainer = styled('div')({\n position: 'relative',\n width: 'fit-content',\n});\n\nconst Image = styled('img')({\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'center',\n});\n\nconst DrawableImage = ({ url, dimensions: { height, width } }) => (\n <ImageContainer>\n <Image\n alt=\"drawing-response-image\"\n src={url}\n style={{\n height,\n maxWidth: width,\n maxHeight: 350,\n width,\n }}\n />\n </ImageContainer>\n);\n\nDrawableImage.propTypes = {\n dimensions: PropTypes.object.isRequired,\n url: PropTypes.string.isRequired,\n};\n\nexport default DrawableImage;\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AAEA,MAAMG,cAAc,GAAG,IAAAC,cAAM,EAAC,KAAK,CAAC,CAAC;EACnCC,QAAQ,EAAE,UAAU;EACpBC,KAAK,EAAE;AACT,CAAC,CAAC;AAEF,MAAMC,KAAK,GAAG,IAAAH,cAAM,EAAC,KAAK,CAAC,CAAC;EAC1BI,UAAU,EAAE,QAAQ;EACpBC,OAAO,EAAE,MAAM;EACfC,cAAc,EAAE;AAClB,CAAC,CAAC;AAEF,MAAMC,aAAa,GAAGA,CAAC;EAAEC,GAAG;EAAEC,UAAU,EAAE;IAAEC,MAAM;IAAER;EAAM;AAAE,CAAC,kBAC3DR,MAAA,CAAAiB,OAAA,CAAAC,aAAA,CAACb,cAAc,qBACbL,MAAA,CAAAiB,OAAA,CAAAC,aAAA,CAACT,KAAK;EACJU,GAAG,EAAC,wBAAwB;EAC5BC,GAAG,EAAEN,GAAI;EACTO,KAAK,EAAE;IACLL,MAAM;IACNM,QAAQ,EAAEd,KAAK;IACfe,SAAS,EAAE,GAAG;IACdf;EACF;AAAE,CACH,CACa,CACjB;AAEDK,aAAa,CAACW,SAAS,GAAG;EACxBT,UAAU,EAAEU,kBAAS,CAACC,MAAM,CAACC,UAAU;EACvCb,GAAG,EAAEW,kBAAS,CAACG,MAAM,CAACD;AACxB,CAAC;AAAC,IAAAE,QAAA,GAAAC,OAAA,CAAAb,OAAA,GAEaJ,aAAa","ignoreList":[]}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _reactKonva = require("react-konva");
11
+ var _drawableHelper = _interopRequireDefault(require("./drawable-helper"));
12
+ class LineDrawable extends _drawableHelper.default {
13
+ constructor(_props) {
14
+ super(_props, LineDrawable.TYPE);
15
+ (0, _defineProperty2.default)(this, "handleDragEnd", (props, event) => {
16
+ this.posX = event.target.getX();
17
+ this.posY = event.target.getY();
18
+ props.handleSessionChange();
19
+ });
20
+ const {
21
+ startx,
22
+ starty,
23
+ x,
24
+ y,
25
+ posX,
26
+ posY
27
+ } = _props;
28
+ this.x = x || startx;
29
+ this.y = y || starty;
30
+ this.posX = posX || 0;
31
+ this.posY = posY || 0;
32
+ }
33
+ registerMovement(x, y) {
34
+ this.x = x;
35
+ this.y = y;
36
+ }
37
+ handleOnClick(props) {
38
+ const {
39
+ paint,
40
+ paintColor,
41
+ forceUpdate
42
+ } = props;
43
+ if (paint) {
44
+ this.paintColor = paintColor;
45
+ forceUpdate();
46
+ }
47
+ }
48
+ render(props) {
49
+ const {
50
+ draggable,
51
+ key,
52
+ onMouseOverElement,
53
+ onMouseOutElement
54
+ } = props;
55
+ const points = [this.startx, this.starty, this.x, this.y];
56
+ return /*#__PURE__*/_react.default.createElement(_reactKonva.Arrow, {
57
+ key: key,
58
+ draggable: draggable,
59
+ points: points,
60
+ fill: this.paintColor || this.outlineColor,
61
+ onClick: () => this.handleOnClick(props),
62
+ stroke: this.paintColor || this.outlineColor,
63
+ onDragEnd: this.handleDragEnd.bind(this, props),
64
+ onMouseEnter: onMouseOverElement,
65
+ onMouseLeave: onMouseOutElement,
66
+ x: this.posX,
67
+ y: this.posY,
68
+ pointerWidth: 0,
69
+ pointerLength: 0
70
+ });
71
+ }
72
+ }
73
+ exports.default = LineDrawable;
74
+ (0, _defineProperty2.default)(LineDrawable, "TYPE", 'LineDrawable');
75
+ //# sourceMappingURL=drawable-line.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drawable-line.js","names":["_react","_interopRequireDefault","require","_reactKonva","_drawableHelper","LineDrawable","DrawableHelper","constructor","props","TYPE","_defineProperty2","default","event","posX","target","getX","posY","getY","handleSessionChange","startx","starty","x","y","registerMovement","handleOnClick","paint","paintColor","forceUpdate","render","draggable","key","onMouseOverElement","onMouseOutElement","points","createElement","Arrow","fill","outlineColor","onClick","stroke","onDragEnd","handleDragEnd","bind","onMouseEnter","onMouseLeave","pointerWidth","pointerLength","exports"],"sources":["../../src/drawing-response/drawable-line.jsx"],"sourcesContent":["import React from 'react';\nimport { Arrow } from 'react-konva';\n\nimport DrawableHelper from './drawable-helper';\n\nexport default class LineDrawable extends DrawableHelper {\n static TYPE = 'LineDrawable';\n\n constructor(props) {\n super(props, LineDrawable.TYPE);\n const { startx, starty, x, y, posX, posY } = props;\n\n this.x = x || startx;\n this.y = y || starty;\n this.posX = posX || 0;\n this.posY = posY || 0;\n }\n\n registerMovement(x, y) {\n this.x = x;\n this.y = y;\n }\n\n handleOnClick(props) {\n const { paint, paintColor, forceUpdate } = props;\n\n if (paint) {\n this.paintColor = paintColor;\n forceUpdate();\n }\n }\n\n handleDragEnd = (props, event) => {\n this.posX = event.target.getX();\n this.posY = event.target.getY();\n\n props.handleSessionChange();\n };\n\n render(props) {\n const { draggable, key, onMouseOverElement, onMouseOutElement } = props;\n const points = [this.startx, this.starty, this.x, this.y];\n\n return (\n <Arrow\n key={key}\n draggable={draggable}\n points={points}\n fill={this.paintColor || this.outlineColor}\n onClick={() => this.handleOnClick(props)}\n stroke={this.paintColor || this.outlineColor}\n onDragEnd={this.handleDragEnd.bind(this, props)}\n onMouseEnter={onMouseOverElement}\n onMouseLeave={onMouseOutElement}\n x={this.posX}\n y={this.posY}\n pointerWidth={0}\n pointerLength={0}\n />\n );\n }\n}\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AAEA,IAAAE,eAAA,GAAAH,sBAAA,CAAAC,OAAA;AAEe,MAAMG,YAAY,SAASC,uBAAc,CAAC;EAGvDC,WAAWA,CAACC,MAAK,EAAE;IACjB,KAAK,CAACA,MAAK,EAAEH,YAAY,CAACI,IAAI,CAAC;IAAC,IAAAC,gBAAA,CAAAC,OAAA,yBAuBlB,CAACH,KAAK,EAAEI,KAAK,KAAK;MAChC,IAAI,CAACC,IAAI,GAAGD,KAAK,CAACE,MAAM,CAACC,IAAI,CAAC,CAAC;MAC/B,IAAI,CAACC,IAAI,GAAGJ,KAAK,CAACE,MAAM,CAACG,IAAI,CAAC,CAAC;MAE/BT,KAAK,CAACU,mBAAmB,CAAC,CAAC;IAC7B,CAAC;IA3BC,MAAM;MAAEC,MAAM;MAAEC,MAAM;MAAEC,CAAC;MAAEC,CAAC;MAAET,IAAI;MAAEG;IAAK,CAAC,GAAGR,MAAK;IAElD,IAAI,CAACa,CAAC,GAAGA,CAAC,IAAIF,MAAM;IACpB,IAAI,CAACG,CAAC,GAAGA,CAAC,IAAIF,MAAM;IACpB,IAAI,CAACP,IAAI,GAAGA,IAAI,IAAI,CAAC;IACrB,IAAI,CAACG,IAAI,GAAGA,IAAI,IAAI,CAAC;EACvB;EAEAO,gBAAgBA,CAACF,CAAC,EAAEC,CAAC,EAAE;IACrB,IAAI,CAACD,CAAC,GAAGA,CAAC;IACV,IAAI,CAACC,CAAC,GAAGA,CAAC;EACZ;EAEAE,aAAaA,CAAChB,KAAK,EAAE;IACnB,MAAM;MAAEiB,KAAK;MAAEC,UAAU;MAAEC;IAAY,CAAC,GAAGnB,KAAK;IAEhD,IAAIiB,KAAK,EAAE;MACT,IAAI,CAACC,UAAU,GAAGA,UAAU;MAC5BC,WAAW,CAAC,CAAC;IACf;EACF;EASAC,MAAMA,CAACpB,KAAK,EAAE;IACZ,MAAM;MAAEqB,SAAS;MAAEC,GAAG;MAAEC,kBAAkB;MAAEC;IAAkB,CAAC,GAAGxB,KAAK;IACvE,MAAMyB,MAAM,GAAG,CAAC,IAAI,CAACd,MAAM,EAAE,IAAI,CAACC,MAAM,EAAE,IAAI,CAACC,CAAC,EAAE,IAAI,CAACC,CAAC,CAAC;IAEzD,oBACEtB,MAAA,CAAAW,OAAA,CAAAuB,aAAA,CAAC/B,WAAA,CAAAgC,KAAK;MACJL,GAAG,EAAEA,GAAI;MACTD,SAAS,EAAEA,SAAU;MACrBI,MAAM,EAAEA,MAAO;MACfG,IAAI,EAAE,IAAI,CAACV,UAAU,IAAI,IAAI,CAACW,YAAa;MAC3CC,OAAO,EAAEA,CAAA,KAAM,IAAI,CAACd,aAAa,CAAChB,KAAK,CAAE;MACzC+B,MAAM,EAAE,IAAI,CAACb,UAAU,IAAI,IAAI,CAACW,YAAa;MAC7CG,SAAS,EAAE,IAAI,CAACC,aAAa,CAACC,IAAI,CAAC,IAAI,EAAElC,KAAK,CAAE;MAChDmC,YAAY,EAAEZ,kBAAmB;MACjCa,YAAY,EAAEZ,iBAAkB;MAChCX,CAAC,EAAE,IAAI,CAACR,IAAK;MACbS,CAAC,EAAE,IAAI,CAACN,IAAK;MACb6B,YAAY,EAAE,CAAE;MAChBC,aAAa,EAAE;IAAE,CAClB,CAAC;EAEN;AACF;AAACC,OAAA,CAAApC,OAAA,GAAAN,YAAA;AAAA,IAAAK,gBAAA,CAAAC,OAAA,EAxDoBN,YAAY,UACjB,cAAc","ignoreList":[]}
@@ -0,0 +1,345 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = exports.DrawableMain = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _react = _interopRequireDefault(require("react"));
11
+ var _propTypes = _interopRequireDefault(require("prop-types"));
12
+ var _lodashEs = require("lodash-es");
13
+ var _reactKonva = require("react-konva");
14
+ var _styles = require("@mui/material/styles");
15
+ var _translator = _interopRequireDefault(require("@pie-lib/translator"));
16
+ var _drawableImage = _interopRequireDefault(require("./drawable-image"));
17
+ var _button = _interopRequireDefault(require("./button"));
18
+ var _factory = _interopRequireDefault(require("./factory"));
19
+ const {
20
+ translator
21
+ } = _translator.default;
22
+ const Wrapper = (0, _styles.styled)('div')({
23
+ display: 'flex',
24
+ flexWrap: 'wrap',
25
+ justifyContent: 'flex-end'
26
+ });
27
+ const Base = (0, _styles.styled)('div')({
28
+ position: 'relative',
29
+ width: '100%'
30
+ });
31
+ const UndoControls = (0, _styles.styled)('div')({
32
+ marginTop: -43,
33
+ marginRight: 10,
34
+ position: 'absolute'
35
+ });
36
+ class DrawableMain extends _react.default.Component {
37
+ constructor(props) {
38
+ super(props);
39
+ (0, _defineProperty2.default)(this, "handleSessionChange", () => {
40
+ const {
41
+ onSessionChange,
42
+ session,
43
+ TextEntry,
44
+ drawableDimensions
45
+ } = this.props;
46
+ const {
47
+ drawables
48
+ } = this.state;
49
+ const newSession = {
50
+ width: drawableDimensions.width,
51
+ drawables: drawables.map(d => d.toJson()),
52
+ texts: TextEntry.all.map(text => ({
53
+ ...text,
54
+ ...(TextEntry[`text_${text.id}`] && TextEntry[`text_${text.id}`].attrs),
55
+ value: TextEntry[`textarea_${text.id}`] && TextEntry[`textarea_${text.id}`].value
56
+ }))
57
+ };
58
+ if (!(0, _lodashEs.isEqual)(newSession, session)) {
59
+ onSessionChange({
60
+ ...session,
61
+ ...newSession
62
+ });
63
+ }
64
+ });
65
+ (0, _defineProperty2.default)(this, "onMouseOverElement", () => this.setState({
66
+ isOver: true
67
+ }));
68
+ (0, _defineProperty2.default)(this, "onMouseOutElement", () => this.setState({
69
+ isOver: false
70
+ }));
71
+ (0, _defineProperty2.default)(this, "handleMouseDown", e => {
72
+ // ONLY IF MOBILE?
73
+ document.body.style.overflow = 'hidden';
74
+ const {
75
+ newDrawable,
76
+ textIsSelected
77
+ } = this.state;
78
+ const {
79
+ toolActive,
80
+ fillColor,
81
+ outlineColor,
82
+ scale
83
+ } = this.props;
84
+ if (newDrawable.length === 0 && !textIsSelected) {
85
+ const stage = e.target.getStage();
86
+ if (!stage) return;
87
+ const {
88
+ x,
89
+ y
90
+ } = stage.getPointerPosition();
91
+ const newDrawable = (0, _factory.default)(toolActive.type, {
92
+ startx: x / scale,
93
+ starty: y / scale,
94
+ fillColor,
95
+ outlineColor,
96
+ createdAt: new Date()
97
+ });
98
+ this.setState({
99
+ newDrawable: [newDrawable]
100
+ });
101
+ }
102
+ });
103
+ (0, _defineProperty2.default)(this, "handleMouseUp", e => {
104
+ // ONLY IF MOBILE?
105
+ document.body.style.overflow = 'initial';
106
+ const {
107
+ newDrawable,
108
+ drawables
109
+ } = this.state;
110
+ const {
111
+ scale
112
+ } = this.props;
113
+ if (newDrawable.length === 1) {
114
+ const stage = e.target.getStage();
115
+ if (!stage) return;
116
+ const {
117
+ x,
118
+ y
119
+ } = stage.getPointerPosition();
120
+ const drawableToAdd = newDrawable[0];
121
+ drawableToAdd.registerMovement(x / scale, y / scale);
122
+ drawables.push(drawableToAdd);
123
+ this.setState({
124
+ newDrawable: [],
125
+ drawables
126
+ }, this.handleSessionChange.bind(this, drawableToAdd));
127
+ }
128
+ });
129
+ (0, _defineProperty2.default)(this, "handleMouseMove", e => {
130
+ const {
131
+ newDrawable
132
+ } = this.state;
133
+ const {
134
+ scale
135
+ } = this.props;
136
+ if (newDrawable.length === 1) {
137
+ const stage = e.target.getStage();
138
+ if (!stage) return;
139
+ const {
140
+ x,
141
+ y
142
+ } = stage.getPointerPosition();
143
+ const updatedNewDrawable = newDrawable[0];
144
+ updatedNewDrawable.registerMovement(x / scale, y / scale);
145
+ this.setState({
146
+ newDrawable: [updatedNewDrawable]
147
+ });
148
+ }
149
+ });
150
+ (0, _defineProperty2.default)(this, "handleUndo", () => {
151
+ const {
152
+ drawables
153
+ } = this.state;
154
+ const {
155
+ TextEntry
156
+ } = this.props;
157
+ const newDrawables = [...drawables];
158
+ const allData = [...drawables, ...TextEntry.all];
159
+ allData.sort((a, b) => new Date(a.createdAt) - new Date(b.createdAt));
160
+ const lastElement = allData[allData.length - 1];
161
+ if (lastElement && lastElement.type === 'text-entry') {
162
+ TextEntry.all.pop();
163
+ this.setState({
164
+ updatedAt: new Date()
165
+ }, this.handleSessionChange);
166
+ } else {
167
+ newDrawables.pop();
168
+ this.setState({
169
+ drawables: newDrawables
170
+ }, this.handleSessionChange);
171
+ }
172
+ });
173
+ (0, _defineProperty2.default)(this, "handleClearAll", () => {
174
+ const {
175
+ TextEntry
176
+ } = this.props;
177
+ TextEntry.all = [];
178
+ this.setState({
179
+ drawables: [],
180
+ updatedAt: new Date()
181
+ }, this.handleSessionChange);
182
+ });
183
+ (0, _defineProperty2.default)(this, "toggleTextSelected", textIsSelected => this.setState({
184
+ textIsSelected
185
+ }));
186
+ this.state = {
187
+ drawables: [],
188
+ newDrawable: [],
189
+ textIsSelected: false
190
+ };
191
+ this.stage = null;
192
+ this.layer = null;
193
+ }
194
+ componentWillUnmount() {
195
+ // Clean up refs to prevent React Konva errors
196
+ this.stage = null;
197
+ this.layer = null;
198
+ }
199
+ UNSAFE_componentWillReceiveProps(nextProps) {
200
+ if (nextProps.session) {
201
+ const {
202
+ TextEntry
203
+ } = nextProps;
204
+ const {
205
+ drawables: currentDrawables
206
+ } = this.state;
207
+ if (nextProps.session.drawables) {
208
+ const newDrawables = (0, _lodashEs.cloneDeep)(nextProps.session.drawables);
209
+ const drawablesString = JSON.stringify(currentDrawables);
210
+ const sessionDrawableString = JSON.stringify((newDrawables || []).map(drawable => (0, _lodashEs.omit)(drawable, 'type')));
211
+ if (drawablesString !== sessionDrawableString) {
212
+ const drawableArray = nextProps.session.drawables;
213
+ this.setState({
214
+ drawables: drawableArray.map(drawable => (0, _factory.default)(drawable.type, drawable))
215
+ });
216
+ }
217
+ const currentTexts = TextEntry.all.map(text => ({
218
+ ...text,
219
+ ...(TextEntry[`text_${text.id}`] && TextEntry[`text_${text.id}`].attrs),
220
+ value: TextEntry[`textarea_${text.id}`] && TextEntry[`textarea_${text.id}`].value
221
+ }));
222
+ if (!(0, _lodashEs.isEqual)(currentTexts, nextProps.session.texts)) {
223
+ TextEntry.setAll(nextProps.session.texts || []);
224
+ }
225
+ }
226
+ } else {
227
+ this.handleSessionChange();
228
+ }
229
+ }
230
+ render() {
231
+ const {
232
+ disabled,
233
+ drawableDimensions,
234
+ fillColor,
235
+ imageDimensions,
236
+ imageUrl,
237
+ paintColor,
238
+ outlineColor,
239
+ TextEntry,
240
+ backgroundImageEnabled = true,
241
+ toolActive: {
242
+ type
243
+ },
244
+ scale,
245
+ language
246
+ } = this.props;
247
+ const {
248
+ isOver,
249
+ newDrawable
250
+ } = this.state;
251
+ const draggable = type === 'Select';
252
+ const paint = type === 'PaintBucket';
253
+ const drawables = [...this.state.drawables, ...this.state.newDrawable];
254
+ const drawableProps = {
255
+ draggable: draggable && !disabled,
256
+ disabled,
257
+ paint,
258
+ fillColor,
259
+ forceUpdate: () => this.setState({
260
+ updatedAt: new Date()
261
+ }),
262
+ paintColor,
263
+ outlineColor,
264
+ toggleTextSelected: this.toggleTextSelected,
265
+ handleSessionChange: this.handleSessionChange,
266
+ stage: this.stage,
267
+ onMouseOverElement: this.onMouseOverElement,
268
+ onMouseOutElement: this.onMouseOutElement,
269
+ scale
270
+ };
271
+ let listeners = {};
272
+ if (!disabled) {
273
+ listeners = {
274
+ onMouseUp: this.handleMouseUp,
275
+ onTouchEnd: this.handleMouseUp,
276
+ onMouseMove: this.handleMouseMove,
277
+ onTouchMove: this.handleMouseMove
278
+ };
279
+ if (!draggable) {
280
+ listeners.onMouseDown = this.handleMouseDown;
281
+ listeners.onTouchStart = this.handleMouseDown;
282
+ }
283
+ }
284
+ const imageHeight = imageDimensions?.height * scale;
285
+ const imageWidth = imageDimensions?.width * scale;
286
+ return /*#__PURE__*/_react.default.createElement(Wrapper, null, /*#__PURE__*/_react.default.createElement(UndoControls, null, /*#__PURE__*/_react.default.createElement(_button.default, {
287
+ disabled: disabled,
288
+ onClick: this.handleUndo,
289
+ label: translator.t('common:undo', {
290
+ lng: language
291
+ })
292
+ }), /*#__PURE__*/_react.default.createElement(_button.default, {
293
+ disabled: disabled,
294
+ onClick: this.handleClearAll,
295
+ label: translator.t('common:clearAll', {
296
+ lng: language
297
+ })
298
+ })), /*#__PURE__*/_react.default.createElement(Base, null, backgroundImageEnabled && imageUrl && /*#__PURE__*/_react.default.createElement(_drawableImage.default, {
299
+ dimensions: {
300
+ height: imageHeight,
301
+ width: imageWidth
302
+ },
303
+ url: imageUrl
304
+ }), TextEntry.renderTextareas(), /*#__PURE__*/_react.default.createElement("div", {
305
+ style: {
306
+ position: 'absolute',
307
+ left: 0,
308
+ top: 0,
309
+ touchAction: 'none',
310
+ cursor: draggable && (isOver || newDrawable.length === 1) ? 'pointer' : 'default'
311
+ }
312
+ }, /*#__PURE__*/_react.default.createElement(_reactKonva.Stage, (0, _extends2.default)({
313
+ key: "drawing-stage",
314
+ scaleX: scale,
315
+ scaleY: scale,
316
+ ref: ref => this.stage = ref,
317
+ height: drawableDimensions.height,
318
+ width: drawableDimensions.width
319
+ }, listeners), /*#__PURE__*/_react.default.createElement(_reactKonva.Layer, {
320
+ ref: ref => this.layer = ref
321
+ }, drawables.map((drawable, key) => drawable.render({
322
+ ...drawableProps,
323
+ key
324
+ })), TextEntry.render(drawableProps))))));
325
+ }
326
+ }
327
+ exports.DrawableMain = DrawableMain;
328
+ DrawableMain.propTypes = {
329
+ disabled: _propTypes.default.bool,
330
+ drawableDimensions: _propTypes.default.object.isRequired,
331
+ imageDimensions: _propTypes.default.object.isRequired,
332
+ fillColor: _propTypes.default.string.isRequired,
333
+ onSessionChange: _propTypes.default.func.isRequired,
334
+ paintColor: _propTypes.default.string.isRequired,
335
+ outlineColor: _propTypes.default.string.isRequired,
336
+ imageUrl: _propTypes.default.string.isRequired,
337
+ TextEntry: _propTypes.default.object.isRequired,
338
+ toolActive: _propTypes.default.object.isRequired,
339
+ session: _propTypes.default.object.isRequired,
340
+ backgroundImageEnabled: _propTypes.default.bool.isRequired,
341
+ scale: _propTypes.default.number.isRequired,
342
+ language: _propTypes.default.string
343
+ };
344
+ var _default = exports.default = DrawableMain;
345
+ //# sourceMappingURL=drawable-main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drawable-main.js","names":["_react","_interopRequireDefault","require","_propTypes","_lodashEs","_reactKonva","_styles","_translator","_drawableImage","_button","_factory","translator","Translator","Wrapper","styled","display","flexWrap","justifyContent","Base","position","width","UndoControls","marginTop","marginRight","DrawableMain","React","Component","constructor","props","_defineProperty2","default","onSessionChange","session","TextEntry","drawableDimensions","drawables","state","newSession","map","d","toJson","texts","all","text","id","attrs","value","isEqual","setState","isOver","e","document","body","style","overflow","newDrawable","textIsSelected","toolActive","fillColor","outlineColor","scale","length","stage","target","getStage","x","y","getPointerPosition","factory","type","startx","starty","createdAt","Date","drawableToAdd","registerMovement","push","handleSessionChange","bind","updatedNewDrawable","newDrawables","allData","sort","a","b","lastElement","pop","updatedAt","layer","componentWillUnmount","UNSAFE_componentWillReceiveProps","nextProps","currentDrawables","cloneDeep","drawablesString","JSON","stringify","sessionDrawableString","drawable","omit","drawableArray","currentTexts","setAll","render","disabled","imageDimensions","imageUrl","paintColor","backgroundImageEnabled","language","draggable","paint","drawableProps","forceUpdate","toggleTextSelected","onMouseOverElement","onMouseOutElement","listeners","onMouseUp","handleMouseUp","onTouchEnd","onMouseMove","handleMouseMove","onTouchMove","onMouseDown","handleMouseDown","onTouchStart","imageHeight","height","imageWidth","createElement","onClick","handleUndo","label","t","lng","handleClearAll","dimensions","url","renderTextareas","left","top","touchAction","cursor","Stage","_extends2","key","scaleX","scaleY","ref","Layer","exports","propTypes","PropTypes","bool","object","isRequired","string","func","number","_default"],"sources":["../../src/drawing-response/drawable-main.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { cloneDeep, isEqual, omit } from 'lodash-es';\nimport { Layer, Stage } from 'react-konva';\nimport { styled } from '@mui/material/styles';\nimport Translator from '@pie-lib/translator';\n\nconst { translator } = Translator;\nimport ImageBackground from './drawable-image';\nimport Button from './button';\nimport factory from './factory';\n\nconst Wrapper = styled('div')({\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'flex-end',\n});\n\nconst Base = styled('div')({\n position: 'relative',\n width: '100%',\n});\n\nconst UndoControls = styled('div')({\n marginTop: -43,\n marginRight: 10,\n position: 'absolute',\n});\n\nexport class DrawableMain extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n drawables: [],\n newDrawable: [],\n textIsSelected: false,\n };\n this.stage = null;\n this.layer = null;\n }\n\n componentWillUnmount() {\n // Clean up refs to prevent React Konva errors\n this.stage = null;\n this.layer = null;\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.session) {\n const { TextEntry } = nextProps;\n const { drawables: currentDrawables } = this.state;\n\n if (nextProps.session.drawables) {\n const newDrawables = cloneDeep(nextProps.session.drawables);\n const drawablesString = JSON.stringify(currentDrawables);\n const sessionDrawableString = JSON.stringify((newDrawables || []).map((drawable) => omit(drawable, 'type')));\n\n if (drawablesString !== sessionDrawableString) {\n const drawableArray = nextProps.session.drawables;\n\n this.setState({\n drawables: drawableArray.map((drawable) => factory(drawable.type, drawable)),\n });\n }\n\n const currentTexts = TextEntry.all.map((text) => ({\n ...text,\n ...(TextEntry[`text_${text.id}`] && TextEntry[`text_${text.id}`].attrs),\n value: TextEntry[`textarea_${text.id}`] && TextEntry[`textarea_${text.id}`].value,\n }));\n\n if (!isEqual(currentTexts, nextProps.session.texts)) {\n TextEntry.setAll(nextProps.session.texts || []);\n }\n }\n } else {\n this.handleSessionChange();\n }\n }\n\n handleSessionChange = () => {\n const { onSessionChange, session, TextEntry, drawableDimensions } = this.props;\n const { drawables } = this.state;\n\n const newSession = {\n width: drawableDimensions.width,\n drawables: drawables.map((d) => d.toJson()),\n texts: TextEntry.all.map((text) => ({\n ...text,\n ...(TextEntry[`text_${text.id}`] && TextEntry[`text_${text.id}`].attrs),\n value: TextEntry[`textarea_${text.id}`] && TextEntry[`textarea_${text.id}`].value,\n })),\n };\n\n if (!isEqual(newSession, session)) {\n onSessionChange({\n ...session,\n ...newSession,\n });\n }\n };\n\n onMouseOverElement = () => this.setState({ isOver: true });\n\n onMouseOutElement = () => this.setState({ isOver: false });\n\n handleMouseDown = (e) => {\n // ONLY IF MOBILE?\n document.body.style.overflow = 'hidden';\n\n const { newDrawable, textIsSelected } = this.state;\n const { toolActive, fillColor, outlineColor, scale } = this.props;\n\n if (newDrawable.length === 0 && !textIsSelected) {\n const stage = e.target.getStage();\n if (!stage) return;\n\n const { x, y } = stage.getPointerPosition();\n\n const newDrawable = factory(toolActive.type, {\n startx: x / scale,\n starty: y / scale,\n fillColor,\n outlineColor,\n createdAt: new Date(),\n });\n\n this.setState({\n newDrawable: [newDrawable],\n });\n }\n };\n\n handleMouseUp = (e) => {\n // ONLY IF MOBILE?\n document.body.style.overflow = 'initial';\n\n const { newDrawable, drawables } = this.state;\n const { scale } = this.props;\n\n if (newDrawable.length === 1) {\n const stage = e.target.getStage();\n if (!stage) return;\n\n const { x, y } = stage.getPointerPosition();\n const drawableToAdd = newDrawable[0];\n\n drawableToAdd.registerMovement(x / scale, y / scale);\n drawables.push(drawableToAdd);\n\n this.setState(\n {\n newDrawable: [],\n drawables,\n },\n this.handleSessionChange.bind(this, drawableToAdd),\n );\n }\n };\n\n handleMouseMove = (e) => {\n const { newDrawable } = this.state;\n const { scale } = this.props;\n\n if (newDrawable.length === 1) {\n const stage = e.target.getStage();\n if (!stage) return;\n\n const { x, y } = stage.getPointerPosition();\n const updatedNewDrawable = newDrawable[0];\n\n updatedNewDrawable.registerMovement(x / scale, y / scale);\n\n this.setState({\n newDrawable: [updatedNewDrawable],\n });\n }\n };\n\n handleUndo = () => {\n const { drawables } = this.state;\n const { TextEntry } = this.props;\n\n const newDrawables = [...drawables];\n const allData = [...drawables, ...TextEntry.all];\n\n allData.sort((a, b) => new Date(a.createdAt) - new Date(b.createdAt));\n const lastElement = allData[allData.length - 1];\n\n if (lastElement && lastElement.type === 'text-entry') {\n TextEntry.all.pop();\n this.setState({ updatedAt: new Date() }, this.handleSessionChange);\n } else {\n newDrawables.pop();\n this.setState({ drawables: newDrawables }, this.handleSessionChange);\n }\n };\n\n handleClearAll = () => {\n const { TextEntry } = this.props;\n\n TextEntry.all = [];\n this.setState({ drawables: [], updatedAt: new Date() }, this.handleSessionChange);\n };\n\n toggleTextSelected = (textIsSelected) => this.setState({ textIsSelected });\n\n render() {\n const {\n disabled,\n drawableDimensions,\n fillColor,\n imageDimensions,\n imageUrl,\n paintColor,\n outlineColor,\n TextEntry,\n backgroundImageEnabled = true,\n toolActive: { type },\n scale,\n language,\n } = this.props;\n const { isOver, newDrawable } = this.state;\n\n const draggable = type === 'Select';\n const paint = type === 'PaintBucket';\n const drawables = [...this.state.drawables, ...this.state.newDrawable];\n\n const drawableProps = {\n draggable: draggable && !disabled,\n disabled,\n paint,\n fillColor,\n forceUpdate: () => this.setState({ updatedAt: new Date() }),\n paintColor,\n outlineColor,\n toggleTextSelected: this.toggleTextSelected,\n handleSessionChange: this.handleSessionChange,\n stage: this.stage,\n onMouseOverElement: this.onMouseOverElement,\n onMouseOutElement: this.onMouseOutElement,\n scale,\n };\n\n let listeners = {};\n\n if (!disabled) {\n listeners = {\n onMouseUp: this.handleMouseUp,\n onTouchEnd: this.handleMouseUp,\n onMouseMove: this.handleMouseMove,\n onTouchMove: this.handleMouseMove,\n };\n\n if (!draggable) {\n listeners.onMouseDown = this.handleMouseDown;\n listeners.onTouchStart = this.handleMouseDown;\n }\n }\n\n const imageHeight = imageDimensions?.height * scale;\n const imageWidth = imageDimensions?.width * scale;\n\n return (\n <Wrapper>\n <UndoControls>\n <Button\n disabled={disabled}\n onClick={this.handleUndo}\n label={translator.t('common:undo', { lng: language })}\n />\n <Button\n disabled={disabled}\n onClick={this.handleClearAll}\n label={translator.t('common:clearAll', { lng: language })}\n />\n </UndoControls>\n <Base>\n {backgroundImageEnabled && imageUrl && (\n <ImageBackground dimensions={{ height: imageHeight, width: imageWidth }} url={imageUrl} />\n )}\n\n {TextEntry.renderTextareas()}\n\n {/* Wrap Stage in a styled div instead of styling Stage directly */}\n <div\n style={{\n position: 'absolute',\n left: 0,\n top: 0,\n touchAction: 'none',\n cursor: draggable && (isOver || newDrawable.length === 1) ? 'pointer' : 'default',\n }}\n >\n <Stage\n key=\"drawing-stage\"\n scaleX={scale}\n scaleY={scale}\n ref={(ref) => (this.stage = ref)}\n height={drawableDimensions.height}\n width={drawableDimensions.width}\n {...listeners}\n >\n <Layer ref={(ref) => (this.layer = ref)}>\n {drawables.map((drawable, key) => drawable.render({ ...drawableProps, key }))}\n {TextEntry.render(drawableProps)}\n </Layer>\n </Stage>\n </div>\n </Base>\n </Wrapper>\n );\n }\n}\n\nDrawableMain.propTypes = {\n disabled: PropTypes.bool,\n drawableDimensions: PropTypes.object.isRequired,\n imageDimensions: PropTypes.object.isRequired,\n fillColor: PropTypes.string.isRequired,\n onSessionChange: PropTypes.func.isRequired,\n paintColor: PropTypes.string.isRequired,\n outlineColor: PropTypes.string.isRequired,\n imageUrl: PropTypes.string.isRequired,\n TextEntry: PropTypes.object.isRequired,\n toolActive: PropTypes.object.isRequired,\n session: PropTypes.object.isRequired,\n backgroundImageEnabled: PropTypes.bool.isRequired,\n scale: PropTypes.number.isRequired,\n language: PropTypes.string,\n};\n\nexport default DrawableMain;\n"],"mappings":"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","ignoreList":[]}