@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,327 @@
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.Container = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+ var _styles = require("@mui/material/styles");
12
+ var _translator = _interopRequireDefault(require("@pie-lib/translator"));
13
+ var _constants = _interopRequireDefault(require("./constants"));
14
+ var _button = _interopRequireDefault(require("./button"));
15
+ var _drawablePalette = _interopRequireDefault(require("./drawable-palette"));
16
+ var _drawableMain = _interopRequireDefault(require("./drawable-main"));
17
+ var _drawableText = _interopRequireDefault(require("./drawable-text"));
18
+ var _icon = _interopRequireDefault(require("./icon"));
19
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
20
+ const {
21
+ tools: TOOLS
22
+ } = _constants.default;
23
+ const {
24
+ translator
25
+ } = _translator.default;
26
+ const BaseContainer = (0, _styles.styled)('div')(({
27
+ theme
28
+ }) => ({
29
+ marginTop: theme.spacing(2)
30
+ }));
31
+ const Box = (0, _styles.styled)('div')(({
32
+ theme
33
+ }) => ({
34
+ border: '1px solid #E0E1E6',
35
+ borderRadius: '5px',
36
+ marginTop: theme.spacing(2),
37
+ backgroundColor: '#ECEDF1'
38
+ }));
39
+ const DrawableHeight = (0, _styles.styled)('div')({
40
+ minHeight: 350,
41
+ backgroundColor: '#fff'
42
+ });
43
+ const Toolbar = (0, _styles.styled)('div')(({
44
+ theme
45
+ }) => ({
46
+ borderBottom: '1px solid #E0E1E6',
47
+ borderTopLeftRadius: '5px',
48
+ borderTopRightRadius: '5px',
49
+ padding: '12px 8px 4px',
50
+ boxSizing: 'border-box',
51
+ maxWidth: 'calc(100% - 163px)',
52
+ // 163px is the width set on undoControls
53
+ '& button': {
54
+ marginBottom: theme.spacing(1)
55
+ }
56
+ }));
57
+ const ROGVAIV = ['red', 'orange', 'yellow', 'violet', 'blue', 'green', 'white', 'black'].map(c => ({
58
+ value: c,
59
+ label: c
60
+ }));
61
+ class Container extends _react.Component {
62
+ constructor(props) {
63
+ super(props);
64
+ (0, _defineProperty2.default)(this, "checkIfToolIsDisabled", type => {
65
+ if (this.props.disabled) return true;
66
+ const {
67
+ toolActive
68
+ } = this.state;
69
+ // Text will never be disabled since on each "Text Entry" click a new text is added
70
+ if (type === 'Text') {
71
+ return false;
72
+ }
73
+ return type === toolActive.type;
74
+ });
75
+ const TextEntry = new _drawableText.default();
76
+ this.state = {
77
+ scale: 1,
78
+ drawableDimensions: {
79
+ height: 0,
80
+ width: 0
81
+ },
82
+ toolActive: TOOLS[0],
83
+ fillColor: 'white',
84
+ fillColorList: [{
85
+ value: 'transparent',
86
+ label: 'no fill'
87
+ }, {
88
+ value: 'lightblue',
89
+ label: 'light blue'
90
+ }, {
91
+ value: 'lightyellow',
92
+ label: 'light yellow'
93
+ }, ...ROGVAIV],
94
+ outlineColor: 'black',
95
+ outlineColorList: ROGVAIV,
96
+ paintColor: 'red',
97
+ paintColorList: ROGVAIV,
98
+ TextEntry
99
+ };
100
+ }
101
+ setTranslatedState(language) {
102
+ const translatedROGVAIV = ROGVAIV.map(c => ({
103
+ value: c.value,
104
+ label: translator.t(`drawingResponse.${c.label}`, {
105
+ lng: language
106
+ })
107
+ }));
108
+ this.setState({
109
+ fillColorList: [{
110
+ value: 'transparent',
111
+ label: translator.t('drawingResponse.noFill', {
112
+ lng: language
113
+ })
114
+ }, {
115
+ value: 'lightblue',
116
+ label: translator.t('drawingResponse.lightblue', {
117
+ lng: language
118
+ })
119
+ }, {
120
+ value: 'lightyellow',
121
+ label: translator.t('drawingResponse.lightyellow', {
122
+ lng: language
123
+ })
124
+ }, ...translatedROGVAIV],
125
+ paintColor: translator.t('drawingResponse.red', {
126
+ lng: language
127
+ }),
128
+ outlineColorList: translatedROGVAIV,
129
+ paintColorList: translatedROGVAIV
130
+ });
131
+ }
132
+ UNSAFE_componentWillReceiveProps(props) {
133
+ const {
134
+ language
135
+ } = props;
136
+ this.setTranslatedState(language);
137
+ }
138
+ setDimensions() {
139
+ const checkExist = setInterval(() => {
140
+ try {
141
+ const {
142
+ height,
143
+ width
144
+ } = this.drawable.getBoundingClientRect();
145
+ const effectiveWidth = this.props.session.width || width;
146
+ if (height !== 0 && width !== 0) {
147
+ this.setState({
148
+ drawableDimensions: {
149
+ height,
150
+ width: effectiveWidth
151
+ }
152
+ });
153
+ }
154
+ } catch (e) {
155
+ // eslint-disable-next-line no-console
156
+ console.warn('setDimensions Error: ', e);
157
+ } finally {
158
+ clearInterval(checkExist);
159
+ }
160
+ }, 100);
161
+ }
162
+ componentDidMount() {
163
+ const {
164
+ language
165
+ } = this.props;
166
+ this.setTranslatedState(language);
167
+ this.setDimensions();
168
+ this.observer = new MutationObserver(mutations => {
169
+ mutations.forEach(() => {
170
+ const target = document.getElementById('question-container')?.style?.cssText;
171
+ const zoom = target?.substring(target.indexOf('--pie-zoom') + 11, target.lastIndexOf('%'));
172
+ const zoomParsed = zoom?.replace(/\s/g, '');
173
+ if (zoomParsed) {
174
+ const newScale = parseFloat(zoomParsed) / 100;
175
+ if (newScale !== this.state.scale) {
176
+ this.setState({
177
+ scale: parseFloat(zoomParsed) / 100
178
+ });
179
+ }
180
+ } else if (!zoomParsed && this.state.scale !== 1) {
181
+ this.setState({
182
+ scale: 1
183
+ });
184
+ }
185
+ });
186
+ });
187
+
188
+ // Use ResizeObserver to detect when the drawable container becomes visible
189
+ // (e.g., after switching from build to item preview in New Item Bank) and trigger dimension calculation.
190
+ // This helps ensure the canvas is properly sized even when componentDidMount is not re-triggered.
191
+ this.resizeObserver = new ResizeObserver(() => {
192
+ this.setDimensions();
193
+ });
194
+ if (this.drawable) {
195
+ this.resizeObserver.observe(this.drawable);
196
+ }
197
+ const target = document.getElementById('question-container');
198
+ if (target) {
199
+ this.observer.observe(target, {
200
+ attributes: true,
201
+ attributeFilter: ['style']
202
+ });
203
+ }
204
+ }
205
+ componentWillUnmount() {
206
+ const {
207
+ TextEntry
208
+ } = this.state;
209
+ TextEntry.removeEventListeners();
210
+ this.observer?.disconnect();
211
+ this.resizeObserver?.disconnect();
212
+ }
213
+ handleMakeToolActive(tool) {
214
+ const {
215
+ TextEntry
216
+ } = this.state;
217
+ const {
218
+ type
219
+ } = tool;
220
+ const {
221
+ language
222
+ } = this.props;
223
+ if (type !== 'Text') {
224
+ this.setState({
225
+ toolActive: tool
226
+ });
227
+ } else {
228
+ TextEntry.addNewTextEntry(language);
229
+ // Force update
230
+ this.setState({
231
+ updatedAt: new Date()
232
+ });
233
+ }
234
+ }
235
+ handleColorChange(type, color) {
236
+ const cType = `${type}Color`;
237
+ this.setState({
238
+ [cType]: color
239
+ });
240
+ }
241
+ render() {
242
+ const {
243
+ disabled,
244
+ imageUrl,
245
+ imageDimensions,
246
+ onSessionChange,
247
+ session,
248
+ backgroundImageEnabled,
249
+ language
250
+ } = this.props;
251
+ const {
252
+ drawableDimensions,
253
+ toolActive,
254
+ fillColor,
255
+ fillColorList,
256
+ outlineColor,
257
+ outlineColorList,
258
+ paintColor,
259
+ paintColorList,
260
+ TextEntry
261
+ } = this.state;
262
+ const heightToUse = drawableDimensions.height * this.state.scale;
263
+ return /*#__PURE__*/_react.default.createElement(BaseContainer, null, !disabled && /*#__PURE__*/_react.default.createElement(_drawablePalette.default, {
264
+ fillColor: fillColor,
265
+ fillList: fillColorList,
266
+ outlineColor: outlineColor,
267
+ outlineList: outlineColorList,
268
+ paintColor: paintColor,
269
+ paintList: paintColorList,
270
+ onFillColorChange: color => this.handleColorChange('fill', color),
271
+ onOutlineColorChange: color => this.handleColorChange('outline', color),
272
+ onPaintColorChange: color => this.handleColorChange('paint', color),
273
+ language: language
274
+ }), /*#__PURE__*/_react.default.createElement(Box, null, /*#__PURE__*/_react.default.createElement(Toolbar, null, TOOLS.map(tool => {
275
+ const {
276
+ type,
277
+ label,
278
+ icon
279
+ } = tool;
280
+ return /*#__PURE__*/_react.default.createElement(_button.default, {
281
+ title: label,
282
+ key: type,
283
+ disabled: this.checkIfToolIsDisabled(type),
284
+ onClick: () => this.handleMakeToolActive(tool),
285
+ label: /*#__PURE__*/_react.default.createElement(_icon.default, {
286
+ path: icon
287
+ })
288
+ });
289
+ })), /*#__PURE__*/_react.default.createElement(DrawableHeight, {
290
+ ref: drawable => {
291
+ this.drawable = drawable;
292
+ },
293
+ style: {
294
+ height: heightToUse,
295
+ maxHeight: heightToUse,
296
+ overflow: 'scroll'
297
+ }
298
+ }, /*#__PURE__*/_react.default.createElement(_drawableMain.default, {
299
+ scale: this.state.scale,
300
+ session: session,
301
+ disabled: disabled,
302
+ onSessionChange: onSessionChange,
303
+ fillColor: fillColor,
304
+ outlineColor: outlineColor,
305
+ paintColor: paintColor,
306
+ imageUrl: imageUrl,
307
+ drawableDimensions: drawableDimensions,
308
+ imageDimensions: imageDimensions,
309
+ toolActive: toolActive,
310
+ TextEntry: TextEntry,
311
+ backgroundImageEnabled: backgroundImageEnabled,
312
+ language: language
313
+ }))));
314
+ }
315
+ }
316
+ exports.Container = Container;
317
+ (0, _defineProperty2.default)(Container, "propTypes", {
318
+ disabled: _propTypes.default.bool,
319
+ session: _propTypes.default.object.isRequired,
320
+ onSessionChange: _propTypes.default.func.isRequired,
321
+ imageDimensions: _propTypes.default.object.isRequired,
322
+ imageUrl: _propTypes.default.string.isRequired,
323
+ backgroundImageEnabled: _propTypes.default.bool.isRequired,
324
+ language: _propTypes.default.string
325
+ });
326
+ var _default = exports.default = Container;
327
+ //# sourceMappingURL=container.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_styles","_translator","_constants","_button","_drawablePalette","_drawableMain","_drawableText","_icon","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","tools","TOOLS","constants","translator","Translator","BaseContainer","styled","theme","marginTop","spacing","Box","border","borderRadius","backgroundColor","DrawableHeight","minHeight","Toolbar","borderBottom","borderTopLeftRadius","borderTopRightRadius","padding","boxSizing","maxWidth","marginBottom","ROGVAIV","map","c","value","label","Container","Component","constructor","props","_defineProperty2","type","disabled","toolActive","state","TextEntry","DrawableText","scale","drawableDimensions","height","width","fillColor","fillColorList","outlineColor","outlineColorList","paintColor","paintColorList","setTranslatedState","language","translatedROGVAIV","lng","setState","UNSAFE_componentWillReceiveProps","setDimensions","checkExist","setInterval","drawable","getBoundingClientRect","effectiveWidth","session","console","warn","clearInterval","componentDidMount","observer","MutationObserver","mutations","forEach","target","document","getElementById","style","cssText","zoom","substring","indexOf","lastIndexOf","zoomParsed","replace","newScale","parseFloat","resizeObserver","ResizeObserver","observe","attributes","attributeFilter","componentWillUnmount","removeEventListeners","disconnect","handleMakeToolActive","tool","addNewTextEntry","updatedAt","Date","handleColorChange","color","cType","render","imageUrl","imageDimensions","onSessionChange","backgroundImageEnabled","heightToUse","createElement","fillList","outlineList","paintList","onFillColorChange","onOutlineColorChange","onPaintColorChange","icon","title","key","checkIfToolIsDisabled","onClick","path","ref","maxHeight","overflow","exports","PropTypes","bool","object","isRequired","func","string","_default"],"sources":["../../src/drawing-response/container.jsx"],"sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\nimport Translator from '@pie-lib/translator';\n\nimport constants from './constants';\nimport Button from './button';\nimport DrawablePalette from './drawable-palette';\nimport DrawableMain from './drawable-main';\nimport DrawableText from './drawable-text';\nimport Icon from './icon';\n\nconst { tools: TOOLS } = constants;\nconst { translator } = Translator;\n\nconst BaseContainer = styled('div')(({ theme }) => ({\n marginTop: theme.spacing(2),\n}));\n\nconst Box = styled('div')(({ theme }) => ({\n border: '1px solid #E0E1E6',\n borderRadius: '5px',\n marginTop: theme.spacing(2),\n backgroundColor: '#ECEDF1',\n}));\n\nconst DrawableHeight = styled('div')({\n minHeight: 350,\n backgroundColor: '#fff',\n});\n\nconst Toolbar = styled('div')(({ theme }) => ({\n borderBottom: '1px solid #E0E1E6',\n borderTopLeftRadius: '5px',\n borderTopRightRadius: '5px',\n padding: '12px 8px 4px',\n boxSizing: 'border-box',\n maxWidth: 'calc(100% - 163px)', // 163px is the width set on undoControls\n '& button': {\n marginBottom: theme.spacing(1),\n },\n}));\n\nconst ROGVAIV = ['red', 'orange', 'yellow', 'violet', 'blue', 'green', 'white', 'black'].map((c) => ({\n value: c,\n label: c,\n}));\n\nexport class Container extends Component {\n static propTypes = {\n disabled: PropTypes.bool,\n session: PropTypes.object.isRequired,\n onSessionChange: PropTypes.func.isRequired,\n imageDimensions: PropTypes.object.isRequired,\n imageUrl: PropTypes.string.isRequired,\n backgroundImageEnabled: PropTypes.bool.isRequired,\n language: PropTypes.string,\n };\n\n constructor(props) {\n super(props);\n const TextEntry = new DrawableText();\n\n this.state = {\n scale: 1,\n drawableDimensions: {\n height: 0,\n width: 0,\n },\n toolActive: TOOLS[0],\n fillColor: 'white',\n fillColorList: [\n { value: 'transparent', label: 'no fill' },\n { value: 'lightblue', label: 'light blue' },\n { value: 'lightyellow', label: 'light yellow' },\n ...ROGVAIV,\n ],\n outlineColor: 'black',\n outlineColorList: ROGVAIV,\n paintColor: 'red',\n paintColorList: ROGVAIV,\n TextEntry,\n };\n }\n\n setTranslatedState(language) {\n const translatedROGVAIV = ROGVAIV.map((c) => ({\n value: c.value,\n label: translator.t(`drawingResponse.${c.label}`, { lng: language }),\n }));\n\n this.setState({\n fillColorList: [\n { value: 'transparent', label: translator.t('drawingResponse.noFill', { lng: language }) },\n { value: 'lightblue', label: translator.t('drawingResponse.lightblue', { lng: language }) },\n { value: 'lightyellow', label: translator.t('drawingResponse.lightyellow', { lng: language }) },\n ...translatedROGVAIV,\n ],\n paintColor: translator.t('drawingResponse.red', { lng: language }),\n outlineColorList: translatedROGVAIV,\n paintColorList: translatedROGVAIV,\n });\n }\n\n UNSAFE_componentWillReceiveProps(props) {\n const { language } = props;\n this.setTranslatedState(language);\n }\n\n setDimensions() {\n const checkExist = setInterval(() => {\n try {\n const { height, width } = this.drawable.getBoundingClientRect();\n const effectiveWidth = this.props.session.width || width;\n\n if (height !== 0 && width !== 0) {\n this.setState({\n drawableDimensions: {\n height,\n width: effectiveWidth,\n },\n });\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.warn('setDimensions Error: ', e);\n } finally {\n clearInterval(checkExist);\n }\n }, 100);\n }\n\n componentDidMount() {\n const { language } = this.props;\n this.setTranslatedState(language);\n\n this.setDimensions();\n\n this.observer = new MutationObserver((mutations) => {\n mutations.forEach(() => {\n const target = document.getElementById('question-container')?.style?.cssText;\n const zoom = target?.substring(target.indexOf('--pie-zoom') + 11, target.lastIndexOf('%'));\n const zoomParsed = zoom?.replace(/\\s/g, '');\n\n if (zoomParsed) {\n const newScale = parseFloat(zoomParsed) / 100;\n if (newScale !== this.state.scale) {\n this.setState({\n scale: parseFloat(zoomParsed) / 100,\n });\n }\n } else if (!zoomParsed && this.state.scale !== 1) {\n this.setState({\n scale: 1,\n });\n }\n });\n });\n\n // Use ResizeObserver to detect when the drawable container becomes visible\n // (e.g., after switching from build to item preview in New Item Bank) and trigger dimension calculation.\n // This helps ensure the canvas is properly sized even when componentDidMount is not re-triggered.\n this.resizeObserver = new ResizeObserver(() => {\n this.setDimensions();\n });\n\n if (this.drawable) {\n this.resizeObserver.observe(this.drawable);\n }\n\n const target = document.getElementById('question-container');\n if (target) {\n this.observer.observe(target, { attributes: true, attributeFilter: ['style'] });\n }\n }\n\n componentWillUnmount() {\n const { TextEntry } = this.state;\n\n TextEntry.removeEventListeners();\n this.observer?.disconnect();\n this.resizeObserver?.disconnect();\n }\n\n handleMakeToolActive(tool) {\n const { TextEntry } = this.state;\n const { type } = tool;\n const { language } = this.props;\n\n if (type !== 'Text') {\n this.setState({\n toolActive: tool,\n });\n } else {\n TextEntry.addNewTextEntry(language);\n // Force update\n this.setState({\n updatedAt: new Date(),\n });\n }\n }\n\n checkIfToolIsDisabled = (type) => {\n if (this.props.disabled) return true;\n\n const { toolActive } = this.state;\n // Text will never be disabled since on each \"Text Entry\" click a new text is added\n if (type === 'Text') {\n return false;\n }\n return type === toolActive.type;\n };\n\n handleColorChange(type, color) {\n const cType = `${type}Color`;\n this.setState({\n [cType]: color,\n });\n }\n\n render() {\n const { disabled, imageUrl, imageDimensions, onSessionChange, session, backgroundImageEnabled, language } =\n this.props;\n const {\n drawableDimensions,\n toolActive,\n fillColor,\n fillColorList,\n outlineColor,\n outlineColorList,\n paintColor,\n paintColorList,\n TextEntry,\n } = this.state;\n\n const heightToUse = drawableDimensions.height * this.state.scale;\n\n return (\n <BaseContainer>\n {!disabled && (\n <DrawablePalette\n fillColor={fillColor}\n fillList={fillColorList}\n outlineColor={outlineColor}\n outlineList={outlineColorList}\n paintColor={paintColor}\n paintList={paintColorList}\n onFillColorChange={(color) => this.handleColorChange('fill', color)}\n onOutlineColorChange={(color) => this.handleColorChange('outline', color)}\n onPaintColorChange={(color) => this.handleColorChange('paint', color)}\n language={language}\n />\n )}\n\n <Box>\n <Toolbar>\n {TOOLS.map((tool) => {\n const { type, label, icon } = tool;\n\n return (\n <Button\n title={label}\n key={type}\n disabled={this.checkIfToolIsDisabled(type)}\n onClick={() => this.handleMakeToolActive(tool)}\n label={<Icon path={icon} />}\n />\n );\n })}\n </Toolbar>\n\n <DrawableHeight\n ref={(drawable) => {\n this.drawable = drawable;\n }}\n style={{ height: heightToUse, maxHeight: heightToUse, overflow: 'scroll' }}\n >\n <DrawableMain\n scale={this.state.scale}\n session={session}\n disabled={disabled}\n onSessionChange={onSessionChange}\n fillColor={fillColor}\n outlineColor={outlineColor}\n paintColor={paintColor}\n imageUrl={imageUrl}\n drawableDimensions={drawableDimensions}\n imageDimensions={imageDimensions}\n toolActive={toolActive}\n TextEntry={TextEntry}\n backgroundImageEnabled={backgroundImageEnabled}\n language={language}\n />\n </DrawableHeight>\n </Box>\n </BaseContainer>\n );\n }\n}\n\nexport default Container;\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 CircleDrawable extends _drawableHelper.default {
13
+ constructor(_props) {
14
+ super(_props, CircleDrawable.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
+ const dx = this.startx - this.x;
35
+ const dy = this.starty - this.y;
36
+ this.radius = Math.sqrt(dx * dx + dy * dy);
37
+ }
38
+ registerMovement(x, y) {
39
+ this.x = x;
40
+ this.y = y;
41
+ const dx = this.startx - this.x;
42
+ const dy = this.starty - this.y;
43
+ this.radius = Math.sqrt(dx * dx + dy * dy);
44
+ }
45
+ handleOnClick(props) {
46
+ const {
47
+ paint,
48
+ paintColor,
49
+ forceUpdate
50
+ } = props;
51
+ if (paint) {
52
+ this.paintColor = paintColor;
53
+ forceUpdate();
54
+ }
55
+ }
56
+ render(props) {
57
+ const {
58
+ draggable,
59
+ key,
60
+ onMouseOverElement,
61
+ onMouseOutElement
62
+ } = props;
63
+ return /*#__PURE__*/_react.default.createElement(_reactKonva.Circle, {
64
+ key: key,
65
+ draggable: draggable,
66
+ radius: this.radius,
67
+ x: this.startx,
68
+ y: this.starty,
69
+ fill: this.paintColor || this.fillColor,
70
+ onClick: () => this.handleOnClick(props),
71
+ onDragEnd: this.handleDragEnd.bind(this, props),
72
+ onMouseEnter: onMouseOverElement,
73
+ onMouseLeave: onMouseOutElement,
74
+ stroke: this.outlineColor
75
+ });
76
+ }
77
+ }
78
+ exports.default = CircleDrawable;
79
+ (0, _defineProperty2.default)(CircleDrawable, "TYPE", 'CircleDrawable');
80
+ //# sourceMappingURL=drawable-circle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drawable-circle.js","names":["_react","_interopRequireDefault","require","_reactKonva","_drawableHelper","CircleDrawable","DrawableHelper","constructor","props","TYPE","_defineProperty2","default","event","deltaX","startx","target","getX","deltaY","starty","getY","x","y","handleSessionChange","dx","dy","radius","Math","sqrt","registerMovement","handleOnClick","paint","paintColor","forceUpdate","render","draggable","key","onMouseOverElement","onMouseOutElement","createElement","Circle","fill","fillColor","onClick","onDragEnd","handleDragEnd","bind","onMouseEnter","onMouseLeave","stroke","outlineColor","exports"],"sources":["../../src/drawing-response/drawable-circle.jsx"],"sourcesContent":["import React from 'react';\nimport { Circle } from 'react-konva';\n\nimport DrawableHelper from './drawable-helper';\n\nexport default class CircleDrawable extends DrawableHelper {\n static TYPE = 'CircleDrawable';\n constructor(props) {\n super(props, CircleDrawable.TYPE);\n const { startx, starty, x, y } = props;\n\n this.startx = startx;\n this.starty = starty;\n this.x = x || startx;\n this.y = y || starty;\n\n const dx = this.startx - this.x;\n const dy = this.starty - this.y;\n\n this.radius = Math.sqrt(dx * dx + dy * dy);\n }\n\n registerMovement(x, y) {\n this.x = x;\n this.y = y;\n\n const dx = this.startx - this.x;\n const dy = this.starty - this.y;\n\n this.radius = Math.sqrt(dx * dx + dy * dy);\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 <Circle\n key={key}\n draggable={draggable}\n radius={this.radius}\n x={this.startx}\n y={this.starty}\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 />\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,64 @@
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 EraserDrawable extends _drawableHelper.default {
13
+ constructor(_props) {
14
+ super(_props, EraserDrawable.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
+ render(props) {
35
+ const {
36
+ draggable,
37
+ key,
38
+ onMouseOverElement,
39
+ onMouseOutElement
40
+ } = props;
41
+ return /*#__PURE__*/_react.default.createElement(_reactKonva.Line, {
42
+ key: key,
43
+ draggable: draggable,
44
+ globalCompositeOperation: "destination-out",
45
+ tension: 0,
46
+ bezier: true,
47
+ points: this.points,
48
+ onDragEnd: this.handleDragEnd.bind(this, props),
49
+ onMouseEnter: onMouseOverElement,
50
+ onMouseLeave: onMouseOutElement,
51
+ strokeStyle: "#df4b26",
52
+ lineJoin: "round",
53
+ lineWidth: "5",
54
+ fill: "white",
55
+ stroke: "white",
56
+ strokeWidth: 5,
57
+ x: this.posX,
58
+ y: this.posY
59
+ });
60
+ }
61
+ }
62
+ exports.default = EraserDrawable;
63
+ (0, _defineProperty2.default)(EraserDrawable, "TYPE", 'EraserDrawable');
64
+ //# sourceMappingURL=drawable-eraser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drawable-eraser.js","names":["_react","_interopRequireDefault","require","_reactKonva","_drawableHelper","EraserDrawable","DrawableHelper","constructor","props","TYPE","_defineProperty2","default","event","posX","target","getX","posY","getY","handleSessionChange","startx","starty","points","registerMovement","x","y","render","draggable","key","onMouseOverElement","onMouseOutElement","createElement","Line","globalCompositeOperation","tension","bezier","onDragEnd","handleDragEnd","bind","onMouseEnter","onMouseLeave","strokeStyle","lineJoin","lineWidth","fill","stroke","strokeWidth","exports"],"sources":["../../src/drawing-response/drawable-eraser.jsx"],"sourcesContent":["import React from 'react';\nimport { Line } from 'react-konva';\n\nimport DrawableHelper from './drawable-helper';\n\nexport default class EraserDrawable extends DrawableHelper {\n static TYPE = 'EraserDrawable';\n constructor(props) {\n super(props, EraserDrawable.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 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 globalCompositeOperation=\"destination-out\"\n tension={0}\n bezier={true}\n points={this.points}\n onDragEnd={this.handleDragEnd.bind(this, props)}\n onMouseEnter={onMouseOverElement}\n onMouseLeave={onMouseOutElement}\n strokeStyle=\"#df4b26\"\n lineJoin=\"round\"\n lineWidth=\"5\"\n fill=\"white\"\n stroke=\"white\"\n strokeWidth={5}\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,cAAc,SAASC,uBAAc,CAAC;EAEzDC,WAAWA,CAACC,MAAK,EAAE;IACjB,KAAK,CAACA,MAAK,EAAEH,cAAc,CAACI,IAAI,CAAC;IAAC,IAAAC,gBAAA,CAAAC,OAAA,yBAYpB,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;IAhBC,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;EASAC,MAAMA,CAACjB,KAAK,EAAE;IACZ,MAAM;MAAEkB,SAAS;MAAEC,GAAG;MAAEC,kBAAkB;MAAEC;IAAkB,CAAC,GAAGrB,KAAK;IAEvE,oBACER,MAAA,CAAAW,OAAA,CAAAmB,aAAA,CAAC3B,WAAA,CAAA4B,IAAI;MACHJ,GAAG,EAAEA,GAAI;MACTD,SAAS,EAAEA,SAAU;MACrBM,wBAAwB,EAAC,iBAAiB;MAC1CC,OAAO,EAAE,CAAE;MACXC,MAAM,EAAE,IAAK;MACbb,MAAM,EAAE,IAAI,CAACA,MAAO;MACpBc,SAAS,EAAE,IAAI,CAACC,aAAa,CAACC,IAAI,CAAC,IAAI,EAAE7B,KAAK,CAAE;MAChD8B,YAAY,EAAEV,kBAAmB;MACjCW,YAAY,EAAEV,iBAAkB;MAChCW,WAAW,EAAC,SAAS;MACrBC,QAAQ,EAAC,OAAO;MAChBC,SAAS,EAAC,GAAG;MACbC,IAAI,EAAC,OAAO;MACZC,MAAM,EAAC,OAAO;MACdC,WAAW,EAAE,CAAE;MACftB,CAAC,EAAE,IAAI,CAACV,IAAK;MACbW,CAAC,EAAE,IAAI,CAACR;IAAK,CACd,CAAC;EAEN;AACF;AAAC8B,OAAA,CAAAnC,OAAA,GAAAN,cAAA;AAAA,IAAAK,gBAAA,CAAAC,OAAA,EA/CoBN,cAAc,UACnB,gBAAgB","ignoreList":[]}
@@ -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":[]}