@pie-element/drawing-response 12.1.2-next.1 → 12.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (172) hide show
  1. package/CHANGELOG.json +547 -0
  2. package/CHANGELOG.md +1966 -0
  3. package/LICENSE.md +5 -0
  4. package/README.md +1 -0
  5. package/configure/CHANGELOG.json +367 -0
  6. package/configure/CHANGELOG.md +1766 -0
  7. package/configure/lib/button.js +37 -0
  8. package/configure/lib/button.js.map +1 -0
  9. package/configure/lib/defaults.js +116 -0
  10. package/configure/lib/defaults.js.map +1 -0
  11. package/configure/lib/image-container.js +307 -0
  12. package/configure/lib/image-container.js.map +1 -0
  13. package/configure/lib/index.js +147 -0
  14. package/configure/lib/index.js.map +1 -0
  15. package/configure/lib/root.js +219 -0
  16. package/configure/lib/root.js.map +1 -0
  17. package/configure/package.json +24 -0
  18. package/configure/src/__tests__/image-container.test.jsx +231 -0
  19. package/configure/src/__tests__/index.test.js +72 -0
  20. package/configure/src/__tests__/root.test.jsx +110 -0
  21. package/configure/src/button.jsx +33 -0
  22. package/configure/src/defaults.js +80 -0
  23. package/configure/src/image-container.jsx +316 -0
  24. package/configure/src/index.js +167 -0
  25. package/configure/src/root.jsx +198 -0
  26. package/controller/CHANGELOG.json +52 -0
  27. package/controller/CHANGELOG.md +261 -0
  28. package/controller/lib/defaults.js +22 -0
  29. package/controller/lib/defaults.js.map +1 -0
  30. package/controller/lib/index.js +84 -0
  31. package/controller/lib/index.js.map +1 -0
  32. package/controller/package.json +16 -0
  33. package/controller/src/__tests__/index.test.js +172 -0
  34. package/controller/src/defaults.js +12 -0
  35. package/controller/src/index.js +71 -0
  36. package/docs/config-schema.json +1766 -0
  37. package/docs/config-schema.json.md +1313 -0
  38. package/docs/demo/config.js +8 -0
  39. package/docs/demo/generate.js +14 -0
  40. package/docs/demo/index.html +1 -0
  41. package/docs/demo/session.js +37 -0
  42. package/docs/pie-schema.json +823 -0
  43. package/docs/pie-schema.json.md +606 -0
  44. package/lib/drawing-response/button.js +49 -0
  45. package/lib/drawing-response/button.js.map +1 -0
  46. package/lib/drawing-response/constants.js +43 -0
  47. package/lib/drawing-response/constants.js.map +1 -0
  48. package/lib/drawing-response/container.js +327 -0
  49. package/lib/drawing-response/container.js.map +1 -0
  50. package/lib/drawing-response/drawable-circle.js +80 -0
  51. package/lib/drawing-response/drawable-circle.js.map +1 -0
  52. package/lib/drawing-response/drawable-eraser.js +64 -0
  53. package/lib/drawing-response/drawable-eraser.js.map +1 -0
  54. package/lib/drawing-response/drawable-free-path.js +71 -0
  55. package/lib/drawing-response/drawable-free-path.js.map +1 -0
  56. package/lib/drawing-response/drawable-helper.js +34 -0
  57. package/lib/drawing-response/drawable-helper.js.map +1 -0
  58. package/lib/drawing-response/drawable-image.js +41 -0
  59. package/lib/drawing-response/drawable-image.js.map +1 -0
  60. package/lib/drawing-response/drawable-line.js +75 -0
  61. package/lib/drawing-response/drawable-line.js.map +1 -0
  62. package/lib/drawing-response/drawable-main.js +345 -0
  63. package/lib/drawing-response/drawable-main.js.map +1 -0
  64. package/lib/drawing-response/drawable-palette.js +140 -0
  65. package/lib/drawing-response/drawable-palette.js.map +1 -0
  66. package/lib/drawing-response/drawable-rectangle.js +80 -0
  67. package/lib/drawing-response/drawable-rectangle.js.map +1 -0
  68. package/lib/drawing-response/drawable-text.js +295 -0
  69. package/lib/drawing-response/drawable-text.js.map +1 -0
  70. package/lib/drawing-response/drawable-transformer.js +52 -0
  71. package/lib/drawing-response/drawable-transformer.js.map +1 -0
  72. package/lib/drawing-response/factory.js +22 -0
  73. package/lib/drawing-response/factory.js.map +1 -0
  74. package/lib/drawing-response/icon.js +55 -0
  75. package/lib/drawing-response/icon.js.map +1 -0
  76. package/lib/drawing-response/index.js +91 -0
  77. package/lib/drawing-response/index.js.map +1 -0
  78. package/lib/index.js +68 -0
  79. package/lib/index.js.map +1 -0
  80. package/package.json +19 -83
  81. package/src/__tests__/drawing-index-test.jsx +103 -0
  82. package/src/drawing-response/__tests__/container.test.jsx +82 -0
  83. package/src/drawing-response/__tests__/drawable-helper.test.jsx +24 -0
  84. package/src/drawing-response/__tests__/drawing-main.test.jsx +855 -0
  85. package/src/drawing-response/__tests__/factory.test.js +13 -0
  86. package/src/drawing-response/button.jsx +45 -0
  87. package/src/drawing-response/constants.js +44 -0
  88. package/src/drawing-response/container.jsx +301 -0
  89. package/src/drawing-response/drawable-circle.jsx +74 -0
  90. package/src/drawing-response/drawable-eraser.jsx +53 -0
  91. package/src/drawing-response/drawable-free-path.jsx +59 -0
  92. package/src/drawing-response/drawable-helper.jsx +21 -0
  93. package/src/drawing-response/drawable-image.jsx +36 -0
  94. package/src/drawing-response/drawable-line.jsx +62 -0
  95. package/src/drawing-response/drawable-main.jsx +333 -0
  96. package/src/drawing-response/drawable-palette.jsx +99 -0
  97. package/src/drawing-response/drawable-rectangle.jsx +69 -0
  98. package/src/drawing-response/drawable-text.jsx +318 -0
  99. package/src/drawing-response/drawable-transformer.jsx +52 -0
  100. package/src/drawing-response/factory.js +17 -0
  101. package/src/drawing-response/icon.jsx +52 -0
  102. package/src/drawing-response/index.jsx +92 -0
  103. package/src/index.js +72 -0
  104. package/configure.js +0 -2
  105. package/controller.js +0 -1
  106. package/dist/author/button.d.ts +0 -29
  107. package/dist/author/button.js +0 -25
  108. package/dist/author/defaults.d.ts +0 -118
  109. package/dist/author/defaults.js +0 -86
  110. package/dist/author/image-container.d.ts +0 -42
  111. package/dist/author/image-container.js +0 -183
  112. package/dist/author/index.d.ts +0 -37
  113. package/dist/author/index.js +0 -79
  114. package/dist/author/root.d.ts +0 -17
  115. package/dist/author/root.js +0 -142
  116. package/dist/browser/MenuItem-DbAfJgc1.js +0 -10476
  117. package/dist/browser/MenuItem-DbAfJgc1.js.map +0 -1
  118. package/dist/browser/author/index.js +0 -37837
  119. package/dist/browser/author/index.js.map +0 -1
  120. package/dist/browser/browser-kkT1XVKw.js +0 -219
  121. package/dist/browser/browser-kkT1XVKw.js.map +0 -1
  122. package/dist/browser/controller/index.js +0 -61
  123. package/dist/browser/controller/index.js.map +0 -1
  124. package/dist/browser/delivery/index.js +0 -13560
  125. package/dist/browser/delivery/index.js.map +0 -1
  126. package/dist/browser/drawing-response.css +0 -2
  127. package/dist/controller/defaults.d.ts +0 -24
  128. package/dist/controller/defaults.js +0 -18
  129. package/dist/controller/index.d.ts +0 -13
  130. package/dist/controller/index.js +0 -46
  131. package/dist/delivery/drawing-response/button.d.ts +0 -31
  132. package/dist/delivery/drawing-response/button.js +0 -36
  133. package/dist/delivery/drawing-response/constants.d.ts +0 -16
  134. package/dist/delivery/drawing-response/constants.js +0 -40
  135. package/dist/delivery/drawing-response/container.d.ts +0 -32
  136. package/dist/delivery/drawing-response/container.js +0 -212
  137. package/dist/delivery/drawing-response/drawable-circle.d.ts +0 -18
  138. package/dist/delivery/drawing-response/drawable-circle.js +0 -51
  139. package/dist/delivery/drawing-response/drawable-eraser.d.ts +0 -17
  140. package/dist/delivery/drawing-response/drawable-eraser.js +0 -52
  141. package/dist/delivery/drawing-response/drawable-free-path.d.ts +0 -18
  142. package/dist/delivery/drawing-response/drawable-free-path.js +0 -52
  143. package/dist/delivery/drawing-response/drawable-helper.d.ts +0 -17
  144. package/dist/delivery/drawing-response/drawable-helper.js +0 -12
  145. package/dist/delivery/drawing-response/drawable-image.d.ts +0 -24
  146. package/dist/delivery/drawing-response/drawable-image.js +0 -28
  147. package/dist/delivery/drawing-response/drawable-line.d.ts +0 -18
  148. package/dist/delivery/drawing-response/drawable-line.js +0 -53
  149. package/dist/delivery/drawing-response/drawable-main.d.ts +0 -25
  150. package/dist/delivery/drawing-response/drawable-main.js +0 -210
  151. package/dist/delivery/drawing-response/drawable-palette.d.ts +0 -14
  152. package/dist/delivery/drawing-response/drawable-palette.js +0 -89
  153. package/dist/delivery/drawing-response/drawable-rectangle.d.ts +0 -18
  154. package/dist/delivery/drawing-response/drawable-rectangle.js +0 -49
  155. package/dist/delivery/drawing-response/drawable-text.d.ts +0 -30
  156. package/dist/delivery/drawing-response/drawable-text.js +0 -189
  157. package/dist/delivery/drawing-response/drawable-transformer.d.ts +0 -16
  158. package/dist/delivery/drawing-response/drawable-transformer.js +0 -35
  159. package/dist/delivery/drawing-response/factory.d.ts +0 -11
  160. package/dist/delivery/drawing-response/factory.js +0 -19
  161. package/dist/delivery/drawing-response/icon.d.ts +0 -19
  162. package/dist/delivery/drawing-response/icon.js +0 -52
  163. package/dist/delivery/drawing-response/index.d.ts +0 -18
  164. package/dist/delivery/drawing-response/index.js +0 -70
  165. package/dist/delivery/index.d.ts +0 -19
  166. package/dist/delivery/index.js +0 -47
  167. package/dist/index.d.ts +0 -1
  168. package/dist/index.iife.d.ts +0 -8
  169. package/dist/index.iife.js +0 -165
  170. package/dist/index.js +0 -2
  171. package/dist/runtime-support.d.ts +0 -12
  172. package/dist/runtime-support.js +0 -12
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drawable-palette.js","names":["_react","_interopRequireDefault","require","_propTypes","_renderUi","_Select","_MenuItem","_styles","_translator","translator","Translator","BaseContainer","styled","theme","marginTop","spacing","display","StyledInputContainer","InputContainer","flex","fontSize","width","StyledMenuItem","MenuItem","isBlackColor","borderRadius","height","marginLeft","marginRight","color","palette","background","paper","StyledSelect","Select","transform","Palette","React","Component","constructor","args","_defineProperty2","default","name","event","value","target","onFillColorChange","onOutlineColorChange","onPaintColorChange","props","render","fillColor","outlineColor","fillList","outlineList","language","createElement","label","t","lng","onChange","variant","MenuProps","transitionDuration","enter","exit","map","key","style","backgroundColor","border","propTypes","PropTypes","string","isRequired","array","func","_default","exports"],"sources":["../../src/drawing-response/drawable-palette.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { InputContainer } from '@pie-lib/render-ui';\nimport Select from '@mui/material/Select';\nimport MenuItem from '@mui/material/MenuItem';\nimport { styled } from '@mui/material/styles';\nimport Translator from '@pie-lib/translator';\n\nconst { translator } = Translator;\n\nconst BaseContainer = styled('div')(({ theme }) => ({\n marginTop: theme.spacing(2),\n display: 'flex',\n}));\n\nconst StyledInputContainer = styled(InputContainer)({\n flex: 1,\n fontSize: 'inherit',\n width: '90%',\n});\n\nconst StyledMenuItem = styled(MenuItem)(({ theme, isBlackColor }) => ({\n borderRadius: '2px',\n fontSize: 'inherit',\n height: '22px',\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(2),\n marginTop: theme.spacing(2),\n ...(isBlackColor && {\n color: theme.palette.background.paper,\n }),\n}));\n\nconst StyledSelect = styled(Select)({\n fontSize: 'inherit',\n transform: 'translate(0%, 40%)',\n});\n\n// TODO: Change Palette so will render inputs and colors dynamically\nclass Palette extends React.Component {\n onChange = (name) => (event) => {\n const { value } = event.target;\n const { onFillColorChange, onOutlineColorChange, onPaintColorChange } = this.props;\n\n if (name === 'fill') {\n onFillColorChange(value);\n } else if (name === 'outline') {\n onOutlineColorChange(value);\n } else {\n onPaintColorChange(value);\n }\n };\n\n render() {\n const { fillColor, outlineColor, fillList, outlineList, language } = this.props;\n\n return (\n <BaseContainer>\n <StyledInputContainer label={translator.t('drawingResponse.fillColor', { lng: language })}>\n <StyledSelect onChange={this.onChange('fill')} value={fillColor} variant='standard' MenuProps={{ transitionDuration: { enter: 225, exit: 195 } }}>\n {fillList.map(({ value, label }) => (\n <StyledMenuItem\n key={value}\n value={value}\n isBlackColor={value === 'black'}\n style={{ backgroundColor: value }}\n >\n {label}\n </StyledMenuItem>\n ))}\n </StyledSelect>\n </StyledInputContainer>\n\n <StyledInputContainer label={translator.t('drawingResponse.outlineColor', { lng: language })}>\n <StyledSelect onChange={this.onChange('outline')} value={outlineColor} variant='standard' MenuProps={{ transitionDuration: { enter: 225, exit: 195 } }}>\n {outlineList.map(({ value, label }) => (\n <StyledMenuItem key={value} value={value} style={{ border: `2px solid ${value}` }}>\n {label}\n </StyledMenuItem>\n ))}\n </StyledSelect>\n </StyledInputContainer>\n </BaseContainer>\n );\n }\n}\n\nPalette.propTypes = {\n fillColor: PropTypes.string.isRequired,\n fillList: PropTypes.array.isRequired,\n onFillColorChange: PropTypes.func.isRequired,\n onOutlineColorChange: PropTypes.func.isRequired,\n onPaintColorChange: PropTypes.func.isRequired,\n outlineColor: PropTypes.string.isRequired,\n outlineList: PropTypes.array.isRequired,\n language: PropTypes.string,\n};\n\nexport default Palette;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,80 @@
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 RectangleDrawable extends _drawableHelper.default {
13
+ constructor(_props) {
14
+ super(_props, RectangleDrawable.TYPE);
15
+ (0, _defineProperty2.default)(this, "handleDragEnd", (props, event) => {
16
+ const deltaX = this.startx - event.target.getX();
17
+ const deltaY = this.starty - event.target.getY();
18
+ this.startx = event.target.getX();
19
+ this.starty = event.target.getY();
20
+ this.x = this.x - deltaX;
21
+ this.y = this.y - deltaY;
22
+ props.handleSessionChange();
23
+ });
24
+ const {
25
+ startx,
26
+ starty,
27
+ x,
28
+ y
29
+ } = _props;
30
+ this.startx = startx;
31
+ this.starty = starty;
32
+ this.x = x || startx;
33
+ this.y = y || starty;
34
+ this.width = x - startx || 0;
35
+ this.height = y - starty || 0;
36
+ }
37
+ registerMovement(x, y) {
38
+ this.x = x;
39
+ this.y = y;
40
+ this.width = this.x - this.startx;
41
+ this.height = this.y - this.starty;
42
+ }
43
+ handleOnClick(props) {
44
+ const {
45
+ paint,
46
+ paintColor,
47
+ forceUpdate
48
+ } = props;
49
+ if (paint) {
50
+ this.paintColor = paintColor;
51
+ forceUpdate();
52
+ }
53
+ }
54
+ render(props) {
55
+ const {
56
+ draggable,
57
+ key,
58
+ onMouseOverElement,
59
+ onMouseOutElement
60
+ } = props;
61
+ return /*#__PURE__*/_react.default.createElement(_reactKonva.Rect, {
62
+ key: key,
63
+ height: this.height,
64
+ width: this.width,
65
+ fill: this.paintColor || this.fillColor,
66
+ onClick: () => this.handleOnClick(props),
67
+ onDragEnd: this.handleDragEnd.bind(this, props),
68
+ onMouseEnter: onMouseOverElement,
69
+ onMouseLeave: onMouseOutElement,
70
+ stroke: this.outlineColor,
71
+ draggable: draggable,
72
+ strokeWidth: 2,
73
+ x: this.startx,
74
+ y: this.starty
75
+ });
76
+ }
77
+ }
78
+ exports.default = RectangleDrawable;
79
+ (0, _defineProperty2.default)(RectangleDrawable, "TYPE", 'RectangleDrawable');
80
+ //# sourceMappingURL=drawable-rectangle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drawable-rectangle.js","names":["_react","_interopRequireDefault","require","_reactKonva","_drawableHelper","RectangleDrawable","DrawableHelper","constructor","props","TYPE","_defineProperty2","default","event","deltaX","startx","target","getX","deltaY","starty","getY","x","y","handleSessionChange","width","height","registerMovement","handleOnClick","paint","paintColor","forceUpdate","render","draggable","key","onMouseOverElement","onMouseOutElement","createElement","Rect","fill","fillColor","onClick","onDragEnd","handleDragEnd","bind","onMouseEnter","onMouseLeave","stroke","outlineColor","strokeWidth","exports"],"sources":["../../src/drawing-response/drawable-rectangle.jsx"],"sourcesContent":["import React from 'react';\nimport { Rect } from 'react-konva';\n\nimport DrawableHelper from './drawable-helper';\n\nexport default class RectangleDrawable extends DrawableHelper {\n static TYPE = 'RectangleDrawable';\n constructor(props) {\n super(props, RectangleDrawable.TYPE);\n const { startx, starty, x, y } = props;\n this.startx = startx;\n this.starty = starty;\n this.x = x || startx;\n this.y = y || starty;\n this.width = x - startx || 0;\n this.height = y - starty || 0;\n }\n\n registerMovement(x, y) {\n this.x = x;\n this.y = y;\n this.width = this.x - this.startx;\n this.height = this.y - this.starty;\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 const deltaX = this.startx - event.target.getX();\n const deltaY = this.starty - event.target.getY();\n\n this.startx = event.target.getX();\n this.starty = event.target.getY();\n\n this.x = this.x - deltaX;\n this.y = this.y - deltaY;\n\n props.handleSessionChange();\n };\n\n render(props) {\n const { draggable, key, onMouseOverElement, onMouseOutElement } = props;\n\n return (\n <Rect\n key={key}\n height={this.height}\n width={this.width}\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.outlineColor}\n draggable={draggable}\n strokeWidth={2}\n x={this.startx}\n y={this.starty}\n />\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,295 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.generateId = exports.default = 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 _reactKonva = require("react-konva");
12
+ var _translator = _interopRequireDefault(require("@pie-lib/translator"));
13
+ var _drawableTransformer = _interopRequireDefault(require("./drawable-transformer"));
14
+ const {
15
+ translator
16
+ } = _translator.default;
17
+ const generateId = () => Math.random().toString(36).substring(2) + new Date().getTime().toString(36);
18
+ exports.generateId = generateId;
19
+ class TextDrawable {
20
+ static getTextareaNode(id) {
21
+ return `textarea_${id}`;
22
+ }
23
+ static getTextNode(id) {
24
+ return `text_${id}`;
25
+ }
26
+ static getTransformerNode(id) {
27
+ return `transformer_${id}`;
28
+ }
29
+ constructor(props) {
30
+ (0, _defineProperty2.default)(this, "removeEventListeners", () => this.eventListenersDetachArray.forEach(fn => fn()));
31
+ (0, _defineProperty2.default)(this, "setAll", all => {
32
+ this.all = all;
33
+ this.props.forceUpdate();
34
+ });
35
+ (0, _defineProperty2.default)(this, "addNewTextEntry", language => {
36
+ const all = this.all;
37
+ const id = generateId();
38
+ all.push({
39
+ id: id,
40
+ text: '',
41
+ isDefault: true,
42
+ label: translator.t('drawingResponse.onDoubleClick', {
43
+ lng: language
44
+ }),
45
+ width: 200,
46
+ x: (all.length + 1) * 5 + 50,
47
+ y: (all.length + 1) * 5 + 50,
48
+ textVisible: true,
49
+ transformerVisible: true,
50
+ textareaVisible: false,
51
+ createdAt: new Date(),
52
+ type: 'text-entry'
53
+ });
54
+ this.props.handleSessionChange();
55
+ });
56
+ (0, _defineProperty2.default)(this, "handleMouseDown", () => this.props.toggleTextSelected(true));
57
+ (0, _defineProperty2.default)(this, "handleMouseUp", () => this.props.toggleTextSelected(false));
58
+ (0, _defineProperty2.default)(this, "handleClick", (e, id) => {
59
+ const current = this.all.filter(item => item.id === id)[0];
60
+ current.transformerVisible = true;
61
+ this.props.forceUpdate();
62
+ });
63
+ (0, _defineProperty2.default)(this, "handleDblClick", (e, text) => {
64
+ const {
65
+ id,
66
+ isDefault
67
+ } = text;
68
+ this.toggleTextarea(id, true);
69
+ const textNode = this[TextDrawable.getTextNode(id)];
70
+ const textareaNode = this[TextDrawable.getTextareaNode(id)];
71
+ if (!textNode || !textareaNode) return;
72
+ const areaPosition = textNode.getAbsolutePosition();
73
+ textareaNode.value = text.text || '';
74
+ textareaNode.style.position = 'absolute';
75
+ textareaNode.style.top = areaPosition.y + 'px';
76
+ textareaNode.style.left = areaPosition.x + 'px';
77
+ textareaNode.style.width = textNode.width() - textNode.padding() * 2 + 'px';
78
+ textareaNode.style.height = textNode.height() - textNode.padding() * 2 + 5 + 'px';
79
+ textareaNode.style.fontSize = textNode.fontSize() + 'px';
80
+ textareaNode.style.border = 'none';
81
+ textareaNode.style.padding = '0px';
82
+ textareaNode.style.margin = '0px';
83
+ textareaNode.style.overflow = 'hidden';
84
+ textareaNode.style.background = 'none';
85
+ textareaNode.style.outline = 'none';
86
+ textareaNode.style.resize = 'none';
87
+ textareaNode.style.lineHeight = textNode.lineHeight();
88
+ textareaNode.style.fontFamily = textNode.fontFamily();
89
+ textareaNode.style.transformOrigin = 'left top';
90
+ textareaNode.style.textAlign = textNode.align();
91
+ textareaNode.style.color = textNode.fill();
92
+ textareaNode.style.display = 'block';
93
+ let rotation = textNode.rotation();
94
+ textareaNode.style.transform = rotation ? `rotateZ(${rotation}deg)` : '';
95
+ textareaNode.focus();
96
+ const keyDownHandler = e => {
97
+ if (e.key === 'Enter' && !e.shiftKey) {
98
+ this.saveValue(id, textareaNode);
99
+ }
100
+ if (e.key === 'Escape') {
101
+ this.toggleTextarea(id, false);
102
+ }
103
+ };
104
+ const blurHandler = () => {
105
+ this.showOnlyTextNodes();
106
+ this.saveValue(id, textareaNode);
107
+ };
108
+ textareaNode.addEventListener('keydown', keyDownHandler);
109
+ textareaNode.addEventListener('blur', blurHandler);
110
+ this.eventListenersDetachArray.push(() => {
111
+ textareaNode.removeEventListener('keydown', keyDownHandler);
112
+ textareaNode.removeEventListener('blur', blurHandler);
113
+ });
114
+ this.initializeDefault(id, isDefault);
115
+ this.props.forceUpdate();
116
+ });
117
+ (0, _defineProperty2.default)(this, "handleTransform", (e, textNode) => {
118
+ this[textNode].setAttrs({
119
+ width: this[textNode].width() * this[textNode].scaleX(),
120
+ scaleX: this.props.scale
121
+ });
122
+ });
123
+ this.all = props && props.all || [];
124
+ this.eventListenersDetachArray = [];
125
+ }
126
+ showOnlyTextNodes() {
127
+ this.all.map(item => {
128
+ item.textVisible = true;
129
+ item.transformerVisible = false;
130
+ item.textareaVisible = false;
131
+ });
132
+ }
133
+ toggleTextarea(id, value) {
134
+ this.all = this.all.map(item => {
135
+ if (item.id === id) {
136
+ return {
137
+ ...item,
138
+ textVisible: !value,
139
+ transformerVisible: !value,
140
+ textareaVisible: value
141
+ };
142
+ }
143
+ return item;
144
+ });
145
+ this.props.forceUpdate();
146
+ }
147
+ initializeDefault(id, isDefault) {
148
+ if (isDefault) {
149
+ const current = this.all.filter(item => item.id === id)[0];
150
+ current.isDefault = false;
151
+ }
152
+ }
153
+ saveValue(id, textareaNode) {
154
+ const value = textareaNode.value;
155
+ this.all = this.all.map(t => t.id === id ? {
156
+ ...t,
157
+ text: value
158
+ } : t);
159
+ if (!value) {
160
+ this.all = this.all.filter(t => t.id !== id);
161
+ }
162
+ this.toggleTextarea(id, false);
163
+ this.props.handleSessionChange();
164
+ this.props.forceUpdate();
165
+ }
166
+ renderTextareas() {
167
+ return this.all.map(text => {
168
+ const {
169
+ id,
170
+ textareaVisible
171
+ } = text;
172
+ const textareaNode = `textarea_${id}`;
173
+ return /*#__PURE__*/_react.default.createElement("textarea", {
174
+ key: textareaNode,
175
+ ref: textarea => {
176
+ this[textareaNode] = textarea;
177
+ },
178
+ style: {
179
+ display: `${textareaVisible ? 'block' : 'none'}`
180
+ }
181
+ });
182
+ });
183
+ }
184
+ setInitialProps(props) {
185
+ if (!this.props) {
186
+ this.props = props;
187
+ }
188
+ }
189
+ render(props) {
190
+ this.setInitialProps(props);
191
+ if (props.stage) {
192
+ const newStage = props.stage;
193
+
194
+ // setting the handler only once
195
+ if (newStage !== this.stage) {
196
+ const stageClickHandler = e => {
197
+ if (e.target !== this.stage) {
198
+ return;
199
+ }
200
+ this.showOnlyTextNodes();
201
+ this.props.forceUpdate();
202
+ };
203
+ newStage.on('click', stageClickHandler);
204
+ this.eventListenersDetachArray.push(() => newStage.off('click', stageClickHandler));
205
+ }
206
+ this.stage = newStage;
207
+ }
208
+ return this.all.map(text => {
209
+ const {
210
+ id,
211
+ label,
212
+ x,
213
+ y,
214
+ width,
215
+ textVisible,
216
+ rotation,
217
+ transformerVisible
218
+ } = text;
219
+ const textNode = `text_${id}`;
220
+ const transformerNode = `transformer_${id}`;
221
+ let extraProps = {};
222
+ if (!props.disabled) {
223
+ extraProps = {
224
+ onClick: e => this.handleClick(e, id),
225
+ onTap: e => this.handleClick(e, id),
226
+ onDblClick: e => this.handleDblClick(e, text),
227
+ onDblTap: e => this.handleDblClick(e, text),
228
+ onTransform: e => this.handleTransform(e, textNode),
229
+ onTransformEnd: this.props.handleSessionChange,
230
+ onMouseDown: e => {
231
+ e.cancelBubble = true;
232
+ this.props.toggleTextSelected(true);
233
+ },
234
+ onTouchStart: e => {
235
+ e.cancelBubble = true;
236
+ this.props.toggleTextSelected(true);
237
+ },
238
+ onDragStart: e => {
239
+ e.cancelBubble = true;
240
+ this.props.toggleTextSelected(true);
241
+ },
242
+ onDragMove: e => {
243
+ e.cancelBubble = true;
244
+ },
245
+ onDragEnd: e => {
246
+ e.cancelBubble = true;
247
+ this.props.toggleTextSelected(false);
248
+ this.props.handleSessionChange();
249
+ },
250
+ onMouseUp: e => {
251
+ e.cancelBubble = true;
252
+ this.props.toggleTextSelected(false);
253
+ },
254
+ onTouchEnd: e => {
255
+ e.cancelBubble = true;
256
+ this.props.toggleTextSelected(false);
257
+ },
258
+ onMouseEnter: this.props.onMouseOverElement,
259
+ onMouseLeave: this.props.onMouseOutElement
260
+ };
261
+ }
262
+ if (rotation) {
263
+ extraProps.rotation = rotation;
264
+ }
265
+ return [/*#__PURE__*/_react.default.createElement(_reactKonva.Text, (0, _extends2.default)({
266
+ key: id,
267
+ bubbles: true,
268
+ id: id,
269
+ ref: text => {
270
+ this[textNode] = text;
271
+ },
272
+ text: text.text || label,
273
+ name: textNode,
274
+ x: x,
275
+ y: y,
276
+ width: width,
277
+ draggable: !props.disabled,
278
+ visible: textVisible,
279
+ fontSize: 16
280
+ }, extraProps)), transformerVisible && /*#__PURE__*/_react.default.createElement(_drawableTransformer.default, {
281
+ key: `transformer_${id}`,
282
+ ref: text => {
283
+ this[transformerNode] = text;
284
+ },
285
+ selectedShapeName: textNode,
286
+ onMouseDown: this.handleMouseDown,
287
+ onTouchStart: this.handleMouseDown,
288
+ onMouseUp: this.handleMouseUp,
289
+ onTouchEnd: this.handleMouseUp
290
+ })];
291
+ });
292
+ }
293
+ }
294
+ exports.default = TextDrawable;
295
+ //# sourceMappingURL=drawable-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drawable-text.js","names":["_react","_interopRequireDefault","require","_reactKonva","_translator","_drawableTransformer","translator","Translator","generateId","Math","random","toString","substring","Date","getTime","exports","TextDrawable","getTextareaNode","id","getTextNode","getTransformerNode","constructor","props","_defineProperty2","default","eventListenersDetachArray","forEach","fn","all","forceUpdate","language","push","text","isDefault","label","t","lng","width","x","length","y","textVisible","transformerVisible","textareaVisible","createdAt","type","handleSessionChange","toggleTextSelected","e","current","filter","item","toggleTextarea","textNode","textareaNode","areaPosition","getAbsolutePosition","value","style","position","top","left","padding","height","fontSize","border","margin","overflow","background","outline","resize","lineHeight","fontFamily","transformOrigin","textAlign","align","color","fill","display","rotation","transform","focus","keyDownHandler","key","shiftKey","saveValue","blurHandler","showOnlyTextNodes","addEventListener","removeEventListener","initializeDefault","setAttrs","scaleX","scale","map","renderTextareas","createElement","ref","textarea","setInitialProps","render","stage","newStage","stageClickHandler","target","on","off","transformerNode","extraProps","disabled","onClick","handleClick","onTap","onDblClick","handleDblClick","onDblTap","onTransform","handleTransform","onTransformEnd","onMouseDown","cancelBubble","onTouchStart","onDragStart","onDragMove","onDragEnd","onMouseUp","onTouchEnd","onMouseEnter","onMouseOverElement","onMouseLeave","onMouseOutElement","Text","_extends2","bubbles","name","draggable","visible","selectedShapeName","handleMouseDown","handleMouseUp"],"sources":["../../src/drawing-response/drawable-text.jsx"],"sourcesContent":["import React from 'react';\nimport { Text } from 'react-konva';\nimport Translator from '@pie-lib/translator';\n\nconst { translator } = Translator;\nimport Transformer from './drawable-transformer';\n\nexport const generateId = () => Math.random().toString(36).substring(2) + new Date().getTime().toString(36);\n\nexport default class TextDrawable {\n static getTextareaNode(id) {\n return `textarea_${id}`;\n }\n\n static getTextNode(id) {\n return `text_${id}`;\n }\n\n static getTransformerNode(id) {\n return `transformer_${id}`;\n }\n\n constructor(props) {\n this.all = (props && props.all) || [];\n this.eventListenersDetachArray = [];\n }\n\n removeEventListeners = () => this.eventListenersDetachArray.forEach((fn) => fn());\n\n setAll = (all) => {\n this.all = all;\n this.props.forceUpdate();\n };\n\n addNewTextEntry = (language) => {\n const all = this.all;\n const id = generateId();\n\n all.push({\n id: id,\n text: '',\n isDefault: true,\n label: translator.t('drawingResponse.onDoubleClick', { lng: language }),\n width: 200,\n x: (all.length + 1) * 5 + 50,\n y: (all.length + 1) * 5 + 50,\n textVisible: true,\n transformerVisible: true,\n textareaVisible: false,\n createdAt: new Date(),\n type: 'text-entry',\n });\n\n this.props.handleSessionChange();\n };\n\n showOnlyTextNodes() {\n this.all.map((item) => {\n item.textVisible = true;\n item.transformerVisible = false;\n item.textareaVisible = false;\n });\n }\n\n toggleTextarea(id, value) {\n this.all = this.all.map((item) => {\n if (item.id === id) {\n return {\n ...item,\n textVisible: !value,\n transformerVisible: !value,\n textareaVisible: value,\n };\n }\n return item;\n });\n this.props.forceUpdate();\n }\n\n initializeDefault(id, isDefault) {\n if (isDefault) {\n const current = this.all.filter((item) => item.id === id)[0];\n current.isDefault = false;\n }\n }\n\n saveValue(id, textareaNode) {\n const value = textareaNode.value;\n this.all = this.all.map((t) =>\n t.id === id ? { ...t, text: value } : t\n );\n\n if (!value) {\n this.all = this.all.filter((t) => t.id !== id);\n }\n\n this.toggleTextarea(id, false);\n this.props.handleSessionChange();\n this.props.forceUpdate();\n }\n\n handleMouseDown = () => this.props.toggleTextSelected(true);\n handleMouseUp = () => this.props.toggleTextSelected(false);\n\n handleClick = (e, id) => {\n const current = this.all.filter((item) => item.id === id)[0];\n current.transformerVisible = true;\n this.props.forceUpdate();\n };\n\n handleDblClick = (e, text) => {\n const { id, isDefault } = text;\n this.toggleTextarea(id, true);\n\n const textNode = this[TextDrawable.getTextNode(id)];\n const textareaNode = this[TextDrawable.getTextareaNode(id)];\n\n if (!textNode || !textareaNode) return;\n\n const areaPosition = textNode.getAbsolutePosition();\n\n textareaNode.value = text.text || '';\n textareaNode.style.position = 'absolute';\n textareaNode.style.top = areaPosition.y + 'px';\n textareaNode.style.left = areaPosition.x + 'px';\n textareaNode.style.width = textNode.width() - textNode.padding() * 2 + 'px';\n textareaNode.style.height = textNode.height() - textNode.padding() * 2 + 5 + 'px';\n textareaNode.style.fontSize = textNode.fontSize() + 'px';\n textareaNode.style.border = 'none';\n textareaNode.style.padding = '0px';\n textareaNode.style.margin = '0px';\n textareaNode.style.overflow = 'hidden';\n textareaNode.style.background = 'none';\n textareaNode.style.outline = 'none';\n textareaNode.style.resize = 'none';\n textareaNode.style.lineHeight = textNode.lineHeight();\n textareaNode.style.fontFamily = textNode.fontFamily();\n textareaNode.style.transformOrigin = 'left top';\n textareaNode.style.textAlign = textNode.align();\n textareaNode.style.color = textNode.fill();\n textareaNode.style.display = 'block';\n\n let rotation = textNode.rotation();\n textareaNode.style.transform = rotation ? `rotateZ(${rotation}deg)` : '';\n\n textareaNode.focus();\n\n const keyDownHandler = (e) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n this.saveValue(id, textareaNode);\n }\n if (e.key === 'Escape') {\n this.toggleTextarea(id, false);\n }\n };\n\n const blurHandler = () => {\n this.showOnlyTextNodes();\n this.saveValue(id, textareaNode);\n };\n\n textareaNode.addEventListener('keydown', keyDownHandler);\n textareaNode.addEventListener('blur', blurHandler);\n\n this.eventListenersDetachArray.push(() => {\n textareaNode.removeEventListener('keydown', keyDownHandler);\n textareaNode.removeEventListener('blur', blurHandler);\n });\n\n this.initializeDefault(id, isDefault);\n this.props.forceUpdate();\n };\n\n handleTransform = (e, textNode) => {\n this[textNode].setAttrs({\n width: this[textNode].width() * this[textNode].scaleX(),\n scaleX: this.props.scale,\n });\n };\n\n renderTextareas() {\n return this.all.map((text) => {\n const { id, textareaVisible } = text;\n const textareaNode = `textarea_${id}`;\n\n return (\n <textarea\n key={textareaNode}\n ref={(textarea) => {\n this[textareaNode] = textarea;\n }}\n style={{ display: `${textareaVisible ? 'block' : 'none'}` }}\n />\n );\n });\n }\n\n setInitialProps(props) {\n if (!this.props) {\n this.props = props;\n }\n }\n\n render(props) {\n this.setInitialProps(props);\n\n if (props.stage) {\n const newStage = props.stage;\n\n // setting the handler only once\n if (newStage !== this.stage) {\n const stageClickHandler = (e) => {\n if (e.target !== this.stage) {\n return;\n }\n\n this.showOnlyTextNodes();\n this.props.forceUpdate();\n };\n\n newStage.on('click', stageClickHandler);\n this.eventListenersDetachArray.push(() => newStage.off('click', stageClickHandler));\n }\n\n this.stage = newStage;\n }\n\n return this.all.map((text) => {\n const { id, label, x, y, width, textVisible, rotation, transformerVisible } = text;\n\n const textNode = `text_${id}`;\n const transformerNode = `transformer_${id}`;\n let extraProps = {};\n\n if (!props.disabled) {\n extraProps = {\n onClick: (e) => this.handleClick(e, id),\n onTap: (e) => this.handleClick(e, id),\n onDblClick: (e) => this.handleDblClick(e, text),\n onDblTap: (e) => this.handleDblClick(e, text),\n onTransform: (e) => this.handleTransform(e, textNode),\n onTransformEnd: this.props.handleSessionChange,\n\n onMouseDown: (e) => {\n e.cancelBubble = true;\n this.props.toggleTextSelected(true);\n },\n onTouchStart: (e) => {\n e.cancelBubble = true;\n this.props.toggleTextSelected(true);\n },\n\n onDragStart: (e) => {\n e.cancelBubble = true;\n this.props.toggleTextSelected(true);\n },\n onDragMove: (e) => {\n e.cancelBubble = true;\n },\n onDragEnd: (e) => {\n e.cancelBubble = true;\n this.props.toggleTextSelected(false);\n this.props.handleSessionChange();\n },\n\n onMouseUp: (e) => {\n e.cancelBubble = true;\n this.props.toggleTextSelected(false);\n },\n onTouchEnd: (e) => {\n e.cancelBubble = true;\n this.props.toggleTextSelected(false);\n },\n\n onMouseEnter: this.props.onMouseOverElement,\n onMouseLeave: this.props.onMouseOutElement,\n };\n }\n\n if (rotation) {\n extraProps.rotation = rotation;\n }\n\n return [\n <Text\n key={id}\n bubbles={true}\n id={id}\n ref={(text) => {\n this[textNode] = text;\n }}\n text={text.text || label}\n name={textNode}\n x={x}\n y={y}\n width={width}\n draggable={!props.disabled}\n visible={textVisible}\n fontSize={16}\n {...extraProps}\n />,\n transformerVisible && (\n <Transformer\n key={`transformer_${id}`}\n ref={(text) => {\n this[transformerNode] = text;\n }}\n selectedShapeName={textNode}\n onMouseDown={this.handleMouseDown}\n onTouchStart={this.handleMouseDown}\n onMouseUp={this.handleMouseUp}\n onTouchEnd={this.handleMouseUp}\n />\n ),\n ];\n });\n }\n}"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,52 @@
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 _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+ var _reactKonva = require("react-konva");
12
+ class TransformerComponent extends _react.default.Component {
13
+ componentDidMount() {
14
+ this.checkNode();
15
+ }
16
+ componentDidUpdate() {
17
+ this.checkNode();
18
+ }
19
+ checkNode() {
20
+ // here we need to manually attach or detach Transformer node
21
+ const stage = this.transformer.getStage();
22
+ const {
23
+ selectedShapeName
24
+ } = this.props;
25
+ const selectedNode = stage.findOne(`.${selectedShapeName}`);
26
+ // do nothing if selected node is already attached
27
+ if (selectedNode === this.transformer.node()) {
28
+ return;
29
+ }
30
+ if (selectedNode) {
31
+ // attach to another node
32
+ this.transformer.attachTo(selectedNode);
33
+ } else {
34
+ // remove transformer
35
+ this.transformer.detach();
36
+ }
37
+ this.transformer.getLayer().batchDraw();
38
+ }
39
+ render() {
40
+ return /*#__PURE__*/_react.default.createElement(_reactKonva.Transformer, (0, _extends2.default)({
41
+ ref: node => {
42
+ this.transformer = node;
43
+ },
44
+ enabledAnchors: ['middle-left', 'middle-right']
45
+ }, this.props));
46
+ }
47
+ }
48
+ TransformerComponent.propTypes = {
49
+ selectedShapeName: _propTypes.default.string.isRequired
50
+ };
51
+ var _default = exports.default = TransformerComponent;
52
+ //# sourceMappingURL=drawable-transformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drawable-transformer.js","names":["_react","_interopRequireDefault","require","_propTypes","_reactKonva","TransformerComponent","React","Component","componentDidMount","checkNode","componentDidUpdate","stage","transformer","getStage","selectedShapeName","props","selectedNode","findOne","node","attachTo","detach","getLayer","batchDraw","render","default","createElement","Transformer","_extends2","ref","enabledAnchors","propTypes","PropTypes","string","isRequired","_default","exports"],"sources":["../../src/drawing-response/drawable-transformer.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Transformer } from 'react-konva';\n\nclass TransformerComponent extends React.Component {\n componentDidMount() {\n this.checkNode();\n }\n\n componentDidUpdate() {\n this.checkNode();\n }\n\n checkNode() {\n // here we need to manually attach or detach Transformer node\n const stage = this.transformer.getStage();\n const { selectedShapeName } = this.props;\n\n const selectedNode = stage.findOne(`.${selectedShapeName}`);\n // do nothing if selected node is already attached\n if (selectedNode === this.transformer.node()) {\n return;\n }\n\n if (selectedNode) {\n // attach to another node\n this.transformer.attachTo(selectedNode);\n } else {\n // remove transformer\n this.transformer.detach();\n }\n this.transformer.getLayer().batchDraw();\n }\n\n render() {\n return (\n <Transformer\n ref={(node) => {\n this.transformer = node;\n }}\n enabledAnchors={['middle-left', 'middle-right']}\n {...this.props}\n />\n );\n }\n}\n\nTransformerComponent.propTypes = {\n selectedShapeName: PropTypes.string.isRequired,\n};\n\nexport default TransformerComponent;\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AAEA,MAAMG,oBAAoB,SAASC,cAAK,CAACC,SAAS,CAAC;EACjDC,iBAAiBA,CAAA,EAAG;IAClB,IAAI,CAACC,SAAS,CAAC,CAAC;EAClB;EAEAC,kBAAkBA,CAAA,EAAG;IACnB,IAAI,CAACD,SAAS,CAAC,CAAC;EAClB;EAEAA,SAASA,CAAA,EAAG;IACV;IACA,MAAME,KAAK,GAAG,IAAI,CAACC,WAAW,CAACC,QAAQ,CAAC,CAAC;IACzC,MAAM;MAAEC;IAAkB,CAAC,GAAG,IAAI,CAACC,KAAK;IAExC,MAAMC,YAAY,GAAGL,KAAK,CAACM,OAAO,CAAC,IAAIH,iBAAiB,EAAE,CAAC;IAC3D;IACA,IAAIE,YAAY,KAAK,IAAI,CAACJ,WAAW,CAACM,IAAI,CAAC,CAAC,EAAE;MAC5C;IACF;IAEA,IAAIF,YAAY,EAAE;MAChB;MACA,IAAI,CAACJ,WAAW,CAACO,QAAQ,CAACH,YAAY,CAAC;IACzC,CAAC,MAAM;MACL;MACA,IAAI,CAACJ,WAAW,CAACQ,MAAM,CAAC,CAAC;IAC3B;IACA,IAAI,CAACR,WAAW,CAACS,QAAQ,CAAC,CAAC,CAACC,SAAS,CAAC,CAAC;EACzC;EAEAC,MAAMA,CAAA,EAAG;IACP,oBACEvB,MAAA,CAAAwB,OAAA,CAAAC,aAAA,CAACrB,WAAA,CAAAsB,WAAW,MAAAC,SAAA,CAAAH,OAAA;MACVI,GAAG,EAAGV,IAAI,IAAK;QACb,IAAI,CAACN,WAAW,GAAGM,IAAI;MACzB,CAAE;MACFW,cAAc,EAAE,CAAC,aAAa,EAAE,cAAc;IAAE,GAC5C,IAAI,CAACd,KAAK,CACf,CAAC;EAEN;AACF;AAEAV,oBAAoB,CAACyB,SAAS,GAAG;EAC/BhB,iBAAiB,EAAEiB,kBAAS,CAACC,MAAM,CAACC;AACtC,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAX,OAAA,GAEanB,oBAAoB","ignoreList":[]}
@@ -0,0 +1,22 @@
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 _drawableFreePath = _interopRequireDefault(require("./drawable-free-path"));
9
+ var _drawableLine = _interopRequireDefault(require("./drawable-line"));
10
+ var _drawableRectangle = _interopRequireDefault(require("./drawable-rectangle"));
11
+ var _drawableCircle = _interopRequireDefault(require("./drawable-circle"));
12
+ var _drawableEraser = _interopRequireDefault(require("./drawable-eraser"));
13
+ const DRAWABLES = [_drawableFreePath.default, _drawableLine.default, _drawableRectangle.default, _drawableCircle.default, _drawableEraser.default];
14
+ var _default = (type, props) => {
15
+ const T = DRAWABLES.find(D => D.TYPE === type);
16
+ if (T) {
17
+ return new T(props);
18
+ }
19
+ throw new Error(`Can't find drawable for type: ${type} and props: ${JSON.stringify(props)}`);
20
+ };
21
+ exports.default = _default;
22
+ //# sourceMappingURL=factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.js","names":["_drawableFreePath","_interopRequireDefault","require","_drawableLine","_drawableRectangle","_drawableCircle","_drawableEraser","DRAWABLES","FreePathDrawable","LineDrawable","RectangleDrawable","CircleDrawable","EraserDrawable","_default","type","props","T","find","D","TYPE","Error","JSON","stringify","exports","default"],"sources":["../../src/drawing-response/factory.js"],"sourcesContent":["import FreePathDrawable from './drawable-free-path';\nimport LineDrawable from './drawable-line';\nimport RectangleDrawable from './drawable-rectangle';\nimport CircleDrawable from './drawable-circle';\nimport EraserDrawable from './drawable-eraser';\n\nconst DRAWABLES = [FreePathDrawable, LineDrawable, RectangleDrawable, CircleDrawable, EraserDrawable];\n\nexport default (type, props) => {\n const T = DRAWABLES.find((D) => D.TYPE === type);\n\n if (T) {\n return new T(props);\n }\n\n throw new Error(`Can't find drawable for type: ${type} and props: ${JSON.stringify(props)}`);\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,iBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,aAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,kBAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,eAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,eAAA,GAAAL,sBAAA,CAAAC,OAAA;AAEA,MAAMK,SAAS,GAAG,CAACC,yBAAgB,EAAEC,qBAAY,EAAEC,0BAAiB,EAAEC,uBAAc,EAAEC,uBAAc,CAAC;AAAC,IAAAC,QAAA,GAEvFA,CAACC,IAAI,EAAEC,KAAK,KAAK;EAC9B,MAAMC,CAAC,GAAGT,SAAS,CAACU,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACC,IAAI,KAAKL,IAAI,CAAC;EAEhD,IAAIE,CAAC,EAAE;IACL,OAAO,IAAIA,CAAC,CAACD,KAAK,CAAC;EACrB;EAEA,MAAM,IAAIK,KAAK,CAAC,iCAAiCN,IAAI,eAAeO,IAAI,CAACC,SAAS,CAACP,KAAK,CAAC,EAAE,CAAC;AAC9F,CAAC;AAAAQ,OAAA,CAAAC,OAAA,GAAAX,QAAA","ignoreList":[]}
@@ -0,0 +1,55 @@
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 _react2 = _interopRequireDefault(require("@mdi/react"));
11
+ var _js = require("@mdi/js");
12
+ const IconWrapper = ({
13
+ path
14
+ }) => {
15
+ let iconPath;
16
+ switch (path) {
17
+ case 'mdiPencil':
18
+ iconPath = _js.mdiPencil;
19
+ break;
20
+ case 'mdiMinus':
21
+ iconPath = _js.mdiMinus;
22
+ break;
23
+ case 'mdiCircle':
24
+ iconPath = _js.mdiCircle;
25
+ break;
26
+ case 'mdiRectangle':
27
+ iconPath = _js.mdiRectangle;
28
+ break;
29
+ case 'mdiFormatColorText':
30
+ iconPath = _js.mdiFormatColorText;
31
+ break;
32
+ case 'mdiFormatColorFill':
33
+ iconPath = _js.mdiFormatColorFill;
34
+ break;
35
+ case 'mdiEraser':
36
+ iconPath = _js.mdiEraser;
37
+ break;
38
+ default:
39
+ iconPath = _js.mdiCursorDefault;
40
+ break;
41
+ }
42
+ return /*#__PURE__*/_react.default.createElement(_react2.default, {
43
+ path: iconPath,
44
+ size: 0.8,
45
+ rotate: 180,
46
+ horizontal: true,
47
+ vertical: true,
48
+ color: "#2B3963"
49
+ });
50
+ };
51
+ IconWrapper.propTypes = {
52
+ path: _propTypes.default.string.isRequired
53
+ };
54
+ var _default = exports.default = IconWrapper;
55
+ //# sourceMappingURL=icon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon.js","names":["_react","_interopRequireDefault","require","_propTypes","_react2","_js","IconWrapper","path","iconPath","mdiPencil","mdiMinus","mdiCircle","mdiRectangle","mdiFormatColorText","mdiFormatColorFill","mdiEraser","mdiCursorDefault","default","createElement","size","rotate","horizontal","vertical","color","propTypes","PropTypes","string","isRequired","_default","exports"],"sources":["../../src/drawing-response/icon.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Icon from '@mdi/react';\nimport {\n mdiCursorDefault,\n mdiPencil,\n mdiMinus,\n mdiRectangle,\n mdiCircle,\n mdiFormatColorText,\n mdiFormatColorFill,\n mdiEraser,\n} from '@mdi/js';\n\nconst IconWrapper = ({ path }) => {\n let iconPath;\n\n switch (path) {\n case 'mdiPencil':\n iconPath = mdiPencil;\n break;\n case 'mdiMinus':\n iconPath = mdiMinus;\n break;\n case 'mdiCircle':\n iconPath = mdiCircle;\n break;\n case 'mdiRectangle':\n iconPath = mdiRectangle;\n break;\n case 'mdiFormatColorText':\n iconPath = mdiFormatColorText;\n break;\n case 'mdiFormatColorFill':\n iconPath = mdiFormatColorFill;\n break;\n case 'mdiEraser':\n iconPath = mdiEraser;\n break;\n default:\n iconPath = mdiCursorDefault;\n break;\n }\n\n return <Icon path={iconPath} size={0.8} rotate={180} horizontal vertical color=\"#2B3963\" />;\n};\n\nIconWrapper.propTypes = {\n path: PropTypes.string.isRequired,\n};\n\nexport default IconWrapper;\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,OAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,GAAA,GAAAH,OAAA;AAWA,MAAMI,WAAW,GAAGA,CAAC;EAAEC;AAAK,CAAC,KAAK;EAChC,IAAIC,QAAQ;EAEZ,QAAQD,IAAI;IACV,KAAK,WAAW;MACdC,QAAQ,GAAGC,aAAS;MACpB;IACF,KAAK,UAAU;MACbD,QAAQ,GAAGE,YAAQ;MACnB;IACF,KAAK,WAAW;MACdF,QAAQ,GAAGG,aAAS;MACpB;IACF,KAAK,cAAc;MACjBH,QAAQ,GAAGI,gBAAY;MACvB;IACF,KAAK,oBAAoB;MACvBJ,QAAQ,GAAGK,sBAAkB;MAC7B;IACF,KAAK,oBAAoB;MACvBL,QAAQ,GAAGM,sBAAkB;MAC7B;IACF,KAAK,WAAW;MACdN,QAAQ,GAAGO,aAAS;MACpB;IACF;MACEP,QAAQ,GAAGQ,oBAAgB;MAC3B;EACJ;EAEA,oBAAOhB,MAAA,CAAAiB,OAAA,CAAAC,aAAA,CAACd,OAAA,CAAAa,OAAI;IAACV,IAAI,EAAEC,QAAS;IAACW,IAAI,EAAE,GAAI;IAACC,MAAM,EAAE,GAAI;IAACC,UAAU;IAACC,QAAQ;IAACC,KAAK,EAAC;EAAS,CAAE,CAAC;AAC7F,CAAC;AAEDjB,WAAW,CAACkB,SAAS,GAAG;EACtBjB,IAAI,EAAEkB,kBAAS,CAACC,MAAM,CAACC;AACzB,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAZ,OAAA,GAEaX,WAAW","ignoreList":[]}