@pie-element/drawing-response 3.9.12 → 3.9.15-touch
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.
- package/CHANGELOG.md +24 -0
- package/configure/CHANGELOG.md +24 -0
- package/configure/lib/__tests__/image-container.test.js +187 -0
- package/configure/lib/__tests__/index.test.js +62 -0
- package/configure/lib/__tests__/root.test.js +98 -0
- package/configure/lib/defaults.js +8 -2
- package/configure/lib/defaults.js.map +1 -1
- package/configure/lib/image-container.js +13 -10
- package/configure/lib/image-container.js.map +1 -1
- package/configure/lib/index.js +2 -8
- package/configure/lib/index.js.map +1 -1
- package/configure/lib/root.js +17 -9
- package/configure/lib/root.js.map +1 -1
- package/configure/package.json +3 -3
- package/configure/src/__tests__/__snapshots__/image-container.test.jsx.snap +2 -2
- package/configure/src/__tests__/__snapshots__/root.test.jsx.snap +7 -14
- package/configure/src/defaults.js +8 -2
- package/configure/src/image-container.jsx +70 -45
- package/configure/src/index.js +0 -6
- package/configure/src/root.jsx +31 -24
- package/controller/CHANGELOG.md +8 -0
- package/controller/lib/__tests__/index.test.js +338 -0
- package/controller/lib/index.js +13 -7
- package/controller/lib/index.js.map +1 -1
- package/controller/package.json +1 -1
- package/controller/src/__tests__/index.test.js +18 -9
- package/controller/src/index.js +4 -1
- package/docs/config-schema.json +16 -0
- package/docs/config-schema.json.md +12 -0
- package/docs/demo/generate.js +1 -0
- package/docs/demo/pie.manifest.json +11 -0
- package/docs/pie-schema.json +12 -0
- package/docs/pie-schema.json.md +8 -0
- package/lib/__tests__/drawing-index-test.js +45 -0
- package/lib/drawing-response/__tests__/container.test.js +86 -0
- package/lib/drawing-response/__tests__/drawable-helper.test.js +50 -0
- package/lib/drawing-response/__tests__/drawing-main.test.js +704 -0
- package/lib/drawing-response/__tests__/factory.test.js +19 -0
- package/lib/drawing-response/container.js +57 -11
- package/lib/drawing-response/container.js.map +1 -1
- package/lib/drawing-response/drawable-image.js +1 -0
- package/lib/drawing-response/drawable-image.js.map +1 -1
- package/lib/drawing-response/drawable-main.js +36 -13
- package/lib/drawing-response/drawable-main.js.map +1 -1
- package/lib/drawing-response/drawable-text.js +15 -5
- package/lib/drawing-response/drawable-text.js.map +1 -1
- package/lib/drawing-response/index.js +3 -0
- package/lib/drawing-response/index.js.map +1 -1
- package/lib/index.js +3 -0
- package/lib/index.js.map +1 -1
- package/package.json +4 -4
- package/src/drawing-response/__tests__/__snapshots__/container.test.jsx.snap +18 -2
- package/src/drawing-response/__tests__/__snapshots__/drawing-main.test.jsx.snap +26 -2
- package/src/drawing-response/__tests__/container.test.jsx +7 -0
- package/src/drawing-response/__tests__/drawing-main.test.jsx +2 -1
- package/src/drawing-response/container.jsx +40 -2
- package/src/drawing-response/drawable-image.jsx +1 -0
- package/src/drawing-response/drawable-main.jsx +39 -15
- package/src/drawing-response/drawable-text.jsx +7 -1
- package/src/drawing-response/index.jsx +3 -1
- package/src/index.js +5 -0
- package/yarn-error.log +15267 -0
- package/LICENSE.md +0 -5
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _factory = _interopRequireDefault(require("../factory"));
|
|
6
|
+
|
|
7
|
+
describe('factory', function () {
|
|
8
|
+
it('creates instance', function () {
|
|
9
|
+
var instance = (0, _factory["default"])('FreePathDrawable', {});
|
|
10
|
+
expect(instance).toBeDefined();
|
|
11
|
+
expect(instance.toJson().type).toEqual('FreePathDrawable');
|
|
12
|
+
});
|
|
13
|
+
it('throws error for unknown instance', function () {
|
|
14
|
+
expect(function () {
|
|
15
|
+
return (0, _factory["default"])('?', {});
|
|
16
|
+
}).toThrow(/Can't find.*/);
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kcmF3aW5nLXJlc3BvbnNlL19fdGVzdHNfXy9mYWN0b3J5LnRlc3QuanMiXSwibmFtZXMiOlsiZGVzY3JpYmUiLCJpdCIsImluc3RhbmNlIiwiZXhwZWN0IiwidG9CZURlZmluZWQiLCJ0b0pzb24iLCJ0eXBlIiwidG9FcXVhbCIsInRvVGhyb3ciXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7QUFFQUEsUUFBUSxDQUFDLFNBQUQsRUFBWSxZQUFNO0FBQ3hCQyxFQUFBQSxFQUFFLENBQUMsa0JBQUQsRUFBcUIsWUFBTTtBQUMzQixRQUFNQyxRQUFRLEdBQUcseUJBQVEsa0JBQVIsRUFBNEIsRUFBNUIsQ0FBakI7QUFDQUMsSUFBQUEsTUFBTSxDQUFDRCxRQUFELENBQU4sQ0FBaUJFLFdBQWpCO0FBQ0FELElBQUFBLE1BQU0sQ0FBQ0QsUUFBUSxDQUFDRyxNQUFULEdBQWtCQyxJQUFuQixDQUFOLENBQStCQyxPQUEvQixDQUF1QyxrQkFBdkM7QUFDRCxHQUpDLENBQUY7QUFNQU4sRUFBQUEsRUFBRSxDQUFDLG1DQUFELEVBQXNDLFlBQU07QUFDNUNFLElBQUFBLE1BQU0sQ0FBQztBQUFBLGFBQU0seUJBQVEsR0FBUixFQUFhLEVBQWIsQ0FBTjtBQUFBLEtBQUQsQ0FBTixDQUErQkssT0FBL0IsQ0FBdUMsY0FBdkM7QUFDRCxHQUZDLENBQUY7QUFHRCxDQVZPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZmFjdG9yeSBmcm9tICcuLi9mYWN0b3J5JztcblxuZGVzY3JpYmUoJ2ZhY3RvcnknLCAoKSA9PiB7XG4gIGl0KCdjcmVhdGVzIGluc3RhbmNlJywgKCkgPT4ge1xuICAgIGNvbnN0IGluc3RhbmNlID0gZmFjdG9yeSgnRnJlZVBhdGhEcmF3YWJsZScsIHt9KTtcbiAgICBleHBlY3QoaW5zdGFuY2UpLnRvQmVEZWZpbmVkKCk7XG4gICAgZXhwZWN0KGluc3RhbmNlLnRvSnNvbigpLnR5cGUpLnRvRXF1YWwoJ0ZyZWVQYXRoRHJhd2FibGUnKTtcbiAgfSk7XG5cbiAgaXQoJ3Rocm93cyBlcnJvciBmb3IgdW5rbm93biBpbnN0YW5jZScsICgpID0+IHtcbiAgICBleHBlY3QoKCkgPT4gZmFjdG9yeSgnPycsIHt9KSkudG9UaHJvdygvQ2FuJ3QgZmluZC4qLyk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -81,6 +81,7 @@ var Container = /*#__PURE__*/function (_Component) {
|
|
|
81
81
|
});
|
|
82
82
|
var TextEntry = new _drawableText["default"]();
|
|
83
83
|
_this.state = {
|
|
84
|
+
scale: 1,
|
|
84
85
|
drawableDimensions: {
|
|
85
86
|
height: 0,
|
|
86
87
|
width: 0
|
|
@@ -136,13 +137,49 @@ var Container = /*#__PURE__*/function (_Component) {
|
|
|
136
137
|
}, {
|
|
137
138
|
key: "componentDidMount",
|
|
138
139
|
value: function componentDidMount() {
|
|
140
|
+
var _this3 = this;
|
|
141
|
+
|
|
139
142
|
this.setDimensions();
|
|
143
|
+
this.observer = new MutationObserver(function (mutations) {
|
|
144
|
+
mutations.forEach(function () {
|
|
145
|
+
var _document$getElementB, _document$getElementB2;
|
|
146
|
+
|
|
147
|
+
var target = (_document$getElementB = document.getElementById('question-container')) === null || _document$getElementB === void 0 ? void 0 : (_document$getElementB2 = _document$getElementB.style) === null || _document$getElementB2 === void 0 ? void 0 : _document$getElementB2.cssText;
|
|
148
|
+
var zoom = target === null || target === void 0 ? void 0 : target.substring(target.indexOf('--pie-zoom') + 11, target.lastIndexOf('%'));
|
|
149
|
+
var zoomParsed = zoom === null || zoom === void 0 ? void 0 : zoom.replace(/\s/g, '');
|
|
150
|
+
|
|
151
|
+
if (zoomParsed) {
|
|
152
|
+
var newScale = parseFloat(zoomParsed) / 100;
|
|
153
|
+
|
|
154
|
+
if (newScale !== _this3.state.scale) {
|
|
155
|
+
_this3.setState({
|
|
156
|
+
scale: parseFloat(zoomParsed) / 100
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
} else if (!zoomParsed && _this3.state.scale !== 1) {
|
|
160
|
+
_this3.setState({
|
|
161
|
+
scale: 1
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
var target = document.getElementById('question-container');
|
|
167
|
+
|
|
168
|
+
if (target) {
|
|
169
|
+
this.observer.observe(target, {
|
|
170
|
+
attributes: true,
|
|
171
|
+
attributeFilter: ['style']
|
|
172
|
+
});
|
|
173
|
+
}
|
|
140
174
|
}
|
|
141
175
|
}, {
|
|
142
176
|
key: "componentWillUnmount",
|
|
143
177
|
value: function componentWillUnmount() {
|
|
178
|
+
var _this$observer;
|
|
179
|
+
|
|
144
180
|
var TextEntry = this.state.TextEntry;
|
|
145
181
|
TextEntry.removeEventListeners();
|
|
182
|
+
(_this$observer = this.observer) === null || _this$observer === void 0 ? void 0 : _this$observer.disconnect();
|
|
146
183
|
}
|
|
147
184
|
}, {
|
|
148
185
|
key: "handleMakeToolActive",
|
|
@@ -171,7 +208,7 @@ var Container = /*#__PURE__*/function (_Component) {
|
|
|
171
208
|
}, {
|
|
172
209
|
key: "render",
|
|
173
210
|
value: function render() {
|
|
174
|
-
var
|
|
211
|
+
var _this4 = this;
|
|
175
212
|
|
|
176
213
|
var _this$props = this.props,
|
|
177
214
|
classes = _this$props.classes,
|
|
@@ -179,7 +216,8 @@ var Container = /*#__PURE__*/function (_Component) {
|
|
|
179
216
|
imageUrl = _this$props.imageUrl,
|
|
180
217
|
imageDimensions = _this$props.imageDimensions,
|
|
181
218
|
onSessionChange = _this$props.onSessionChange,
|
|
182
|
-
session = _this$props.session
|
|
219
|
+
session = _this$props.session,
|
|
220
|
+
backgroundImageEnabled = _this$props.backgroundImageEnabled;
|
|
183
221
|
var _this$state = this.state,
|
|
184
222
|
drawableDimensions = _this$state.drawableDimensions,
|
|
185
223
|
toolActive = _this$state.toolActive,
|
|
@@ -190,6 +228,7 @@ var Container = /*#__PURE__*/function (_Component) {
|
|
|
190
228
|
paintColor = _this$state.paintColor,
|
|
191
229
|
paintColorList = _this$state.paintColorList,
|
|
192
230
|
TextEntry = _this$state.TextEntry;
|
|
231
|
+
var heightToUse = drawableDimensions.height * this.state.scale;
|
|
193
232
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
194
233
|
className: classes.base
|
|
195
234
|
}, /*#__PURE__*/_react["default"].createElement(_drawablePalette["default"], {
|
|
@@ -200,13 +239,13 @@ var Container = /*#__PURE__*/function (_Component) {
|
|
|
200
239
|
paintColor: paintColor,
|
|
201
240
|
paintList: paintColorList,
|
|
202
241
|
onFillColorChange: function onFillColorChange(color) {
|
|
203
|
-
return
|
|
242
|
+
return _this4.handleColorChange('fill', color);
|
|
204
243
|
},
|
|
205
244
|
onOutlineColorChange: function onOutlineColorChange(color) {
|
|
206
|
-
return
|
|
245
|
+
return _this4.handleColorChange('outline', color);
|
|
207
246
|
},
|
|
208
247
|
onPaintColorChange: function onPaintColorChange(color) {
|
|
209
|
-
return
|
|
248
|
+
return _this4.handleColorChange('paint', color);
|
|
210
249
|
}
|
|
211
250
|
}), /*#__PURE__*/_react["default"].createElement("div", {
|
|
212
251
|
className: classes.box
|
|
@@ -219,9 +258,9 @@ var Container = /*#__PURE__*/function (_Component) {
|
|
|
219
258
|
return /*#__PURE__*/_react["default"].createElement(_button["default"], {
|
|
220
259
|
title: label,
|
|
221
260
|
key: type,
|
|
222
|
-
disabled:
|
|
261
|
+
disabled: _this4.checkIfToolIsDisabled(type),
|
|
223
262
|
onClick: function onClick() {
|
|
224
|
-
return
|
|
263
|
+
return _this4.handleMakeToolActive(tool);
|
|
225
264
|
},
|
|
226
265
|
label: /*#__PURE__*/_react["default"].createElement(_icon["default"], {
|
|
227
266
|
path: icon
|
|
@@ -229,10 +268,15 @@ var Container = /*#__PURE__*/function (_Component) {
|
|
|
229
268
|
});
|
|
230
269
|
}))), /*#__PURE__*/_react["default"].createElement("div", {
|
|
231
270
|
ref: function ref(drawable) {
|
|
232
|
-
|
|
271
|
+
_this4.drawable = drawable;
|
|
233
272
|
},
|
|
234
|
-
className: classes.drawableHeight
|
|
273
|
+
className: classes.drawableHeight,
|
|
274
|
+
style: {
|
|
275
|
+
height: heightToUse,
|
|
276
|
+
maxHeight: heightToUse
|
|
277
|
+
}
|
|
235
278
|
}, /*#__PURE__*/_react["default"].createElement(_drawableMain["default"], {
|
|
279
|
+
scale: this.state.scale,
|
|
236
280
|
session: session,
|
|
237
281
|
disabled: disabled,
|
|
238
282
|
onSessionChange: onSessionChange,
|
|
@@ -243,7 +287,8 @@ var Container = /*#__PURE__*/function (_Component) {
|
|
|
243
287
|
drawableDimensions: drawableDimensions,
|
|
244
288
|
imageDimensions: imageDimensions,
|
|
245
289
|
toolActive: toolActive,
|
|
246
|
-
TextEntry: TextEntry
|
|
290
|
+
TextEntry: TextEntry,
|
|
291
|
+
backgroundImageEnabled: backgroundImageEnabled
|
|
247
292
|
}))));
|
|
248
293
|
}
|
|
249
294
|
}]);
|
|
@@ -257,7 +302,8 @@ exports.Container = Container;
|
|
|
257
302
|
session: _propTypes["default"].object.isRequired,
|
|
258
303
|
onSessionChange: _propTypes["default"].func.isRequired,
|
|
259
304
|
imageDimensions: _propTypes["default"].object.isRequired,
|
|
260
|
-
imageUrl: _propTypes["default"].string.isRequired
|
|
305
|
+
imageUrl: _propTypes["default"].string.isRequired,
|
|
306
|
+
backgroundImageEnabled: _propTypes["default"].bool.isRequired
|
|
261
307
|
});
|
|
262
308
|
|
|
263
309
|
var styles = function styles(theme) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/drawing-response/container.jsx"],"names":["TOOLS","constants","tools","ROGVAIV","map","c","value","label","Container","props","type","disabled","toolActive","state","TextEntry","DrawableText","drawableDimensions","height","width","fillColor","fillColorList","outlineColor","outlineColorList","paintColor","paintColorList","checkExist","setInterval","drawable","getBoundingClientRect","setState","e","console","warn","clearInterval","setDimensions","removeEventListeners","tool","addNewTextEntry","updatedAt","Date","color","cType","classes","imageUrl","imageDimensions","onSessionChange","session","base","handleColorChange","box","toolbar","icon","checkIfToolIsDisabled","handleMakeToolActive","drawableHeight","Component","PropTypes","object","isRequired","bool","func","string","styles","theme","marginTop","spacing","unit","border","borderRadius","minHeight","backgroundColor","borderBottom","borderTopLeftRadius","borderTopRightRadius","display","justifyContent","padding"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\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;\n\nconst ROGVAIV = [\n 'red',\n 'orange',\n 'yellow',\n 'violet',\n 'blue',\n 'green',\n 'white',\n 'black'\n].map(c => ({ value: c, label: c }));\n\nexport class Container extends Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n disabled: PropTypes.bool,\n session: PropTypes.object.isRequired,\n onSessionChange: PropTypes.func.isRequired,\n imageDimensions: PropTypes.object.isRequired,\n imageUrl: PropTypes.string.isRequired\n };\n\n constructor(props) {\n super(props);\n const TextEntry = new DrawableText();\n\n this.state = {\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: 'lightblue' },\n { value: 'lightyellow', label: 'lightyellow' },\n ...ROGVAIV\n ],\n outlineColor: 'black',\n outlineColorList: ROGVAIV,\n paintColor: 'red',\n paintColorList: ROGVAIV,\n TextEntry\n };\n }\n\n setDimensions() {\n const checkExist = setInterval(() => {\n try {\n const { height, width } = this.drawable.getBoundingClientRect();\n if (height !== 0 && width !== 0) {\n this.setState({\n drawableDimensions: {\n height,\n width\n }\n });\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.warn('setDimensions Error: ', e);\n } finally {\n clearInterval(checkExist);\n }\n }, 100);\n }\n\n componentDidMount() {\n this.setDimensions();\n }\n\n componentWillUnmount() {\n const { TextEntry } = this.state;\n\n TextEntry.removeEventListeners();\n }\n\n handleMakeToolActive(tool) {\n const { TextEntry } = this.state;\n const { type } = tool;\n\n if (type !== 'Text') {\n this.setState({\n toolActive: tool\n });\n } else {\n TextEntry.addNewTextEntry();\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\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 {\n classes,\n disabled,\n imageUrl,\n imageDimensions,\n onSessionChange,\n session\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 return (\n <div className={classes.base}>\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 =>\n this.handleColorChange('outline', color)\n }\n onPaintColorChange={color => this.handleColorChange('paint', color)}\n />\n\n <div className={classes.box}>\n <div className={classes.toolbar}>\n <div>\n {TOOLS.map(tool => {\n const { type, label, icon } = tool;\n\n return (\n <Button\n title={label}\n key={type}\n disabled={this.checkIfToolIsDisabled(type)}\n onClick={() => this.handleMakeToolActive(tool)}\n label={<Icon path={icon} />}\n />\n );\n })}\n </div>\n </div>\n\n <div\n ref={drawable => {\n this.drawable = drawable;\n }}\n className={classes.drawableHeight}\n >\n <DrawableMain\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 />\n </div>\n </div>\n </div>\n );\n }\n}\n\nconst styles = theme => ({\n base: {\n marginTop: theme.spacing.unit * 2\n },\n box: {\n border: '1px solid #E0E1E6',\n borderRadius: '5px',\n marginTop: theme.spacing.unit * 2\n },\n drawableHeight: {\n minHeight: 350\n },\n toolbar: {\n backgroundColor: '#ECEDF1',\n borderBottom: '1px solid #E0E1E6',\n borderTopLeftRadius: '5px',\n borderTopRightRadius: '5px',\n display: 'flex',\n justifyContent: 'space-between',\n padding: '12px 8px'\n }\n});\n\nexport default withStyles(styles)(Container);\n"],"file":"container.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/drawing-response/container.jsx"],"names":["TOOLS","constants","tools","ROGVAIV","map","c","value","label","Container","props","type","disabled","toolActive","state","TextEntry","DrawableText","scale","drawableDimensions","height","width","fillColor","fillColorList","outlineColor","outlineColorList","paintColor","paintColorList","checkExist","setInterval","drawable","getBoundingClientRect","setState","e","console","warn","clearInterval","setDimensions","observer","MutationObserver","mutations","forEach","target","document","getElementById","style","cssText","zoom","substring","indexOf","lastIndexOf","zoomParsed","replace","newScale","parseFloat","observe","attributes","attributeFilter","removeEventListeners","disconnect","tool","addNewTextEntry","updatedAt","Date","color","cType","classes","imageUrl","imageDimensions","onSessionChange","session","backgroundImageEnabled","heightToUse","base","handleColorChange","box","toolbar","icon","checkIfToolIsDisabled","handleMakeToolActive","drawableHeight","maxHeight","Component","PropTypes","object","isRequired","bool","func","string","styles","theme","marginTop","spacing","unit","border","borderRadius","minHeight","backgroundColor","borderBottom","borderTopLeftRadius","borderTopRightRadius","display","justifyContent","padding"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\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;\n\nconst ROGVAIV = [\n 'red',\n 'orange',\n 'yellow',\n 'violet',\n 'blue',\n 'green',\n 'white',\n 'black'\n].map(c => ({ value: c, label: c }));\n\nexport class Container extends Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n disabled: PropTypes.bool,\n session: PropTypes.object.isRequired,\n onSessionChange: PropTypes.func.isRequired,\n imageDimensions: PropTypes.object.isRequired,\n imageUrl: PropTypes.string.isRequired,\n backgroundImageEnabled: PropTypes.bool.isRequired\n };\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: 'lightblue' },\n { value: 'lightyellow', label: 'lightyellow' },\n ...ROGVAIV\n ],\n outlineColor: 'black',\n outlineColorList: ROGVAIV,\n paintColor: 'red',\n paintColorList: ROGVAIV,\n TextEntry\n };\n }\n\n setDimensions() {\n const checkExist = setInterval(() => {\n try {\n const { height, width } = this.drawable.getBoundingClientRect();\n if (height !== 0 && width !== 0) {\n this.setState({\n drawableDimensions: {\n height,\n width\n }\n });\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.warn('setDimensions Error: ', e);\n } finally {\n clearInterval(checkExist);\n }\n }, 100);\n }\n\n componentDidMount() {\n 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(\n target.indexOf('--pie-zoom') + 11,\n target.lastIndexOf('%')\n );\n const zoomParsed = zoom?.replace(/\\s/g, '');\n\n if (zoomParsed) {\n const newScale = parseFloat(zoomParsed) / 100;\n if (newScale !== this.state.scale) {\n this.setState({\n scale: parseFloat(zoomParsed) / 100,\n })\n }\n } else if (!zoomParsed && this.state.scale !== 1) {\n this.setState({\n scale: 1,\n });\n }\n });\n });\n\n const target = document.getElementById('question-container');\n if (target) {\n this.observer.observe(target, { attributes : true, attributeFilter : ['style'] })\n }\n }\n\n componentWillUnmount() {\n const { TextEntry } = this.state;\n\n TextEntry.removeEventListeners();\n this.observer?.disconnect();\n }\n\n handleMakeToolActive(tool) {\n const { TextEntry } = this.state;\n const { type } = tool;\n\n if (type !== 'Text') {\n this.setState({\n toolActive: tool\n });\n } else {\n TextEntry.addNewTextEntry();\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\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 {\n classes,\n disabled,\n imageUrl,\n imageDimensions,\n onSessionChange,\n session,\n backgroundImageEnabled\n } = this.props;\n const {\n drawableDimensions,\n toolActive,\n fillColor,\n fillColorList,\n outlineColor,\n outlineColorList,\n paintColor,\n paintColorList,\n TextEntry\n } = this.state;\n\n const heightToUse = drawableDimensions.height * this.state.scale;\n\n return (\n <div className={classes.base}>\n <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 =>\n this.handleColorChange('outline', color)\n }\n onPaintColorChange={color => this.handleColorChange('paint', color)}\n />\n\n <div className={classes.box}>\n <div className={classes.toolbar}>\n <div>\n {TOOLS.map(tool => {\n const { type, label, icon } = tool;\n\n return (\n <Button\n title={label}\n key={type}\n disabled={this.checkIfToolIsDisabled(type)}\n onClick={() => this.handleMakeToolActive(tool)}\n label={<Icon path={icon} />}\n />\n );\n })}\n </div>\n </div>\n\n <div\n ref={drawable => {\n this.drawable = drawable;\n }}\n className={classes.drawableHeight}\n style={{ height: heightToUse, maxHeight: heightToUse }}\n >\n <DrawableMain\n scale={this.state.scale}\n session={session}\n disabled={disabled}\n onSessionChange={onSessionChange}\n fillColor={fillColor}\n outlineColor={outlineColor}\n paintColor={paintColor}\n imageUrl={imageUrl}\n drawableDimensions={drawableDimensions}\n imageDimensions={imageDimensions}\n toolActive={toolActive}\n TextEntry={TextEntry}\n backgroundImageEnabled={backgroundImageEnabled}\n />\n </div>\n </div>\n </div>\n );\n }\n}\n\nconst styles = theme => ({\n base: {\n marginTop: theme.spacing.unit * 2\n },\n box: {\n border: '1px solid #E0E1E6',\n borderRadius: '5px',\n marginTop: theme.spacing.unit * 2\n },\n drawableHeight: {\n minHeight: 350\n },\n toolbar: {\n backgroundColor: '#ECEDF1',\n borderBottom: '1px solid #E0E1E6',\n borderTopLeftRadius: '5px',\n borderTopRightRadius: '5px',\n display: 'flex',\n justifyContent: 'space-between',\n padding: '12px 8px'\n }\n});\n\nexport default withStyles(styles)(Container);\n"],"file":"container.js"}
|
|
@@ -22,6 +22,7 @@ var DrawableImage = function DrawableImage(_ref) {
|
|
|
22
22
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
23
23
|
className: classes.imageContainer
|
|
24
24
|
}, /*#__PURE__*/_react["default"].createElement("img", {
|
|
25
|
+
alt: "drawing-response-image",
|
|
25
26
|
className: classes.image,
|
|
26
27
|
src: url,
|
|
27
28
|
style: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/drawing-response/drawable-image.jsx"],"names":["DrawableImage","classes","url","dimensions","height","width","imageContainer","image","maxWidth","maxHeight","styles","alignItems","display","justifyContent","position","propTypes","PropTypes","object","isRequired","string"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AAEA,IAAMA,aAAa,GAAG,SAAhBA,aAAgB;AAAA,MAAGC,OAAH,QAAGA,OAAH;AAAA,MAAYC,GAAZ,QAAYA,GAAZ;AAAA,6BAAiBC,UAAjB;AAAA,MAA+BC,MAA/B,mBAA+BA,MAA/B;AAAA,MAAuCC,KAAvC,mBAAuCA,KAAvC;AAAA,sBACpB;AAAK,IAAA,SAAS,EAAEJ,OAAO,CAACK;AAAxB,kBACE;AACE,IAAA,SAAS,EAAEL,OAAO,CAACM,
|
|
1
|
+
{"version":3,"sources":["../../src/drawing-response/drawable-image.jsx"],"names":["DrawableImage","classes","url","dimensions","height","width","imageContainer","image","maxWidth","maxHeight","styles","alignItems","display","justifyContent","position","propTypes","PropTypes","object","isRequired","string"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AAEA,IAAMA,aAAa,GAAG,SAAhBA,aAAgB;AAAA,MAAGC,OAAH,QAAGA,OAAH;AAAA,MAAYC,GAAZ,QAAYA,GAAZ;AAAA,6BAAiBC,UAAjB;AAAA,MAA+BC,MAA/B,mBAA+BA,MAA/B;AAAA,MAAuCC,KAAvC,mBAAuCA,KAAvC;AAAA,sBACpB;AAAK,IAAA,SAAS,EAAEJ,OAAO,CAACK;AAAxB,kBACE;AACE,IAAA,GAAG,EAAC,wBADN;AAEE,IAAA,SAAS,EAAEL,OAAO,CAACM,KAFrB;AAGE,IAAA,GAAG,EAAEL,GAHP;AAIE,IAAA,KAAK,EAAE;AACLE,MAAAA,MAAM,EAANA,MADK;AAELI,MAAAA,QAAQ,EAAEH,KAFL;AAGLI,MAAAA,SAAS,EAAE,GAHN;AAILJ,MAAAA,KAAK,EAALA;AAJK;AAJT,IADF,CADoB;AAAA,CAAtB;;AAgBA,IAAMK,MAAM,GAAG,SAATA,MAAS;AAAA,SAAO;AACpBH,IAAAA,KAAK,EAAE;AACLI,MAAAA,UAAU,EAAE,QADP;AAELC,MAAAA,OAAO,EAAE,MAFJ;AAGLC,MAAAA,cAAc,EAAE;AAHX,KADa;AAMpBP,IAAAA,cAAc,EAAE;AACdQ,MAAAA,QAAQ,EAAE,UADI;AAEdT,MAAAA,KAAK,EAAE;AAFO;AANI,GAAP;AAAA,CAAf;;AAYAL,aAAa,CAACe,SAAd,GAA0B;AACxBd,EAAAA,OAAO,EAAEe,sBAAUC,MAAV,CAAiBC,UADF;AAExBf,EAAAA,UAAU,EAAEa,sBAAUC,MAAV,CAAiBC,UAFL;AAGxBhB,EAAAA,GAAG,EAACc,sBAAUG,MAAV,CAAiBD;AAHG,CAA1B;;eAMe,wBAAWR,MAAX,EAAmBV,aAAnB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst DrawableImage = ({ classes, url, dimensions: { height, width } }) => (\n <div className={classes.imageContainer}>\n <img\n alt=\"drawing-response-image\"\n className={classes.image}\n src={url}\n style={{\n height,\n maxWidth: width,\n maxHeight: 350,\n width,\n }}\n />\n </div>\n);\n\nconst styles = () => ({\n image: {\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'center'\n },\n imageContainer: {\n position: 'relative',\n width: 'fit-content'\n }\n});\n\nDrawableImage.propTypes = {\n classes: PropTypes.object.isRequired,\n dimensions: PropTypes.object.isRequired,\n url:PropTypes.string.isRequired\n};\n\nexport default withStyles(styles)(DrawableImage);\n"],"file":"drawable-image.js"}
|
|
@@ -47,9 +47,9 @@ var _button = _interopRequireDefault(require("./button"));
|
|
|
47
47
|
|
|
48
48
|
var _factory = _interopRequireDefault(require("./factory"));
|
|
49
49
|
|
|
50
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
50
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
51
51
|
|
|
52
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
52
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
53
53
|
|
|
54
54
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
55
55
|
|
|
@@ -97,13 +97,16 @@ var DrawableMain = /*#__PURE__*/function (_React$Component) {
|
|
|
97
97
|
});
|
|
98
98
|
});
|
|
99
99
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleMouseDown", function (e) {
|
|
100
|
+
// ONLY IF MOBILE?
|
|
101
|
+
document.body.style.overflow = 'hidden';
|
|
100
102
|
var _this$state = _this.state,
|
|
101
103
|
newDrawable = _this$state.newDrawable,
|
|
102
104
|
textIsSelected = _this$state.textIsSelected;
|
|
103
105
|
var _this$props2 = _this.props,
|
|
104
106
|
toolActive = _this$props2.toolActive,
|
|
105
107
|
fillColor = _this$props2.fillColor,
|
|
106
|
-
outlineColor = _this$props2.outlineColor
|
|
108
|
+
outlineColor = _this$props2.outlineColor,
|
|
109
|
+
scale = _this$props2.scale;
|
|
107
110
|
|
|
108
111
|
if (newDrawable.length === 0 && !textIsSelected) {
|
|
109
112
|
var _e$target$getStage$ge = e.target.getStage().getPointerPosition(),
|
|
@@ -111,8 +114,8 @@ var DrawableMain = /*#__PURE__*/function (_React$Component) {
|
|
|
111
114
|
y = _e$target$getStage$ge.y;
|
|
112
115
|
|
|
113
116
|
var _newDrawable = (0, _factory["default"])(toolActive.type, {
|
|
114
|
-
startx: x,
|
|
115
|
-
starty: y,
|
|
117
|
+
startx: x / scale,
|
|
118
|
+
starty: y / scale,
|
|
116
119
|
fillColor: fillColor,
|
|
117
120
|
outlineColor: outlineColor,
|
|
118
121
|
createdAt: new Date()
|
|
@@ -124,9 +127,12 @@ var DrawableMain = /*#__PURE__*/function (_React$Component) {
|
|
|
124
127
|
}
|
|
125
128
|
});
|
|
126
129
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleMouseUp", function (e) {
|
|
130
|
+
// ONLY IF MOBILE?
|
|
131
|
+
document.body.style.overflow = 'initial';
|
|
127
132
|
var _this$state2 = _this.state,
|
|
128
133
|
newDrawable = _this$state2.newDrawable,
|
|
129
134
|
drawables = _this$state2.drawables;
|
|
135
|
+
var scale = _this.props.scale;
|
|
130
136
|
|
|
131
137
|
if (newDrawable.length === 1) {
|
|
132
138
|
var _e$target$getStage$ge2 = e.target.getStage().getPointerPosition(),
|
|
@@ -134,7 +140,7 @@ var DrawableMain = /*#__PURE__*/function (_React$Component) {
|
|
|
134
140
|
y = _e$target$getStage$ge2.y;
|
|
135
141
|
|
|
136
142
|
var drawableToAdd = newDrawable[0];
|
|
137
|
-
drawableToAdd.registerMovement(x, y);
|
|
143
|
+
drawableToAdd.registerMovement(x / scale, y / scale);
|
|
138
144
|
drawables.push(drawableToAdd);
|
|
139
145
|
|
|
140
146
|
_this.setState({
|
|
@@ -145,6 +151,7 @@ var DrawableMain = /*#__PURE__*/function (_React$Component) {
|
|
|
145
151
|
});
|
|
146
152
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleMouseMove", function (e) {
|
|
147
153
|
var newDrawable = _this.state.newDrawable;
|
|
154
|
+
var scale = _this.props.scale;
|
|
148
155
|
|
|
149
156
|
if (newDrawable.length === 1) {
|
|
150
157
|
var _e$target$getStage$ge3 = e.target.getStage().getPointerPosition(),
|
|
@@ -152,7 +159,7 @@ var DrawableMain = /*#__PURE__*/function (_React$Component) {
|
|
|
152
159
|
y = _e$target$getStage$ge3.y;
|
|
153
160
|
|
|
154
161
|
var updatedNewDrawable = newDrawable[0];
|
|
155
|
-
updatedNewDrawable.registerMovement(x, y);
|
|
162
|
+
updatedNewDrawable.registerMovement(x / scale, y / scale);
|
|
156
163
|
|
|
157
164
|
_this.setState({
|
|
158
165
|
newDrawable: [updatedNewDrawable]
|
|
@@ -257,7 +264,10 @@ var DrawableMain = /*#__PURE__*/function (_React$Component) {
|
|
|
257
264
|
paintColor = _this$props3.paintColor,
|
|
258
265
|
outlineColor = _this$props3.outlineColor,
|
|
259
266
|
TextEntry = _this$props3.TextEntry,
|
|
260
|
-
|
|
267
|
+
_this$props3$backgrou = _this$props3.backgroundImageEnabled,
|
|
268
|
+
backgroundImageEnabled = _this$props3$backgrou === void 0 ? true : _this$props3$backgrou,
|
|
269
|
+
type = _this$props3.toolActive.type,
|
|
270
|
+
scale = _this$props3.scale;
|
|
261
271
|
var _this$state3 = this.state,
|
|
262
272
|
isOver = _this$state3.isOver,
|
|
263
273
|
newDrawable = _this$state3.newDrawable;
|
|
@@ -280,21 +290,27 @@ var DrawableMain = /*#__PURE__*/function (_React$Component) {
|
|
|
280
290
|
handleSessionChange: this.handleSessionChange,
|
|
281
291
|
stage: this.stage,
|
|
282
292
|
onMouseOverElement: this.onMouseOverElement,
|
|
283
|
-
onMouseOutElement: this.onMouseOutElement
|
|
293
|
+
onMouseOutElement: this.onMouseOutElement,
|
|
294
|
+
scale: scale
|
|
284
295
|
};
|
|
285
296
|
var listeners = {};
|
|
286
297
|
|
|
287
298
|
if (!disabled) {
|
|
288
299
|
listeners = {
|
|
289
300
|
onMouseUp: this.handleMouseUp,
|
|
290
|
-
|
|
301
|
+
onTouchEnd: this.handleMouseUp,
|
|
302
|
+
onMouseMove: this.handleMouseMove,
|
|
303
|
+
onTouchMove: this.handleMouseMove
|
|
291
304
|
};
|
|
292
305
|
|
|
293
306
|
if (!draggable) {
|
|
294
307
|
listeners.onMouseDown = this.handleMouseDown;
|
|
308
|
+
listeners.onTouchStart = this.handleMouseDown;
|
|
295
309
|
}
|
|
296
310
|
}
|
|
297
311
|
|
|
312
|
+
var imageHeight = (imageDimensions === null || imageDimensions === void 0 ? void 0 : imageDimensions.height) * scale;
|
|
313
|
+
var imageWidth = (imageDimensions === null || imageDimensions === void 0 ? void 0 : imageDimensions.width) * scale;
|
|
298
314
|
return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
299
315
|
className: classes.undoControls
|
|
300
316
|
}, /*#__PURE__*/_react["default"].createElement(_button["default"], {
|
|
@@ -307,10 +323,15 @@ var DrawableMain = /*#__PURE__*/function (_React$Component) {
|
|
|
307
323
|
label: "Clear all"
|
|
308
324
|
})), /*#__PURE__*/_react["default"].createElement("div", {
|
|
309
325
|
className: classes.base
|
|
310
|
-
}, imageUrl && /*#__PURE__*/_react["default"].createElement(_drawableImage["default"], {
|
|
311
|
-
dimensions:
|
|
326
|
+
}, backgroundImageEnabled && imageUrl && /*#__PURE__*/_react["default"].createElement(_drawableImage["default"], {
|
|
327
|
+
dimensions: {
|
|
328
|
+
height: imageHeight,
|
|
329
|
+
width: imageWidth
|
|
330
|
+
},
|
|
312
331
|
url: imageUrl
|
|
313
332
|
}), TextEntry.renderTextareas(), /*#__PURE__*/_react["default"].createElement(_reactKonva.Stage, (0, _extends2["default"])({
|
|
333
|
+
scaleX: scale,
|
|
334
|
+
scaleY: scale,
|
|
314
335
|
ref: function ref(_ref2) {
|
|
315
336
|
_this2.stage = _ref2;
|
|
316
337
|
},
|
|
@@ -367,7 +388,9 @@ DrawableMain.propTypes = {
|
|
|
367
388
|
imageUrl: _propTypes["default"].string.isRequired,
|
|
368
389
|
TextEntry: _propTypes["default"].object.isRequired,
|
|
369
390
|
toolActive: _propTypes["default"].object.isRequired,
|
|
370
|
-
session: _propTypes["default"].object.isRequired
|
|
391
|
+
session: _propTypes["default"].object.isRequired,
|
|
392
|
+
backgroundImageEnabled: _propTypes["default"].bool.isRequired,
|
|
393
|
+
scale: _propTypes["default"].number.isRequired
|
|
371
394
|
};
|
|
372
395
|
|
|
373
396
|
var _default = (0, _styles.withStyles)(styles)(DrawableMain);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/drawing-response/drawable-main.jsx"],"names":["DrawableMain","props","onSessionChange","session","TextEntry","drawables","state","newSession","map","d","toJson","texts","all","text","id","attrs","value","setState","isOver","e","newDrawable","textIsSelected","toolActive","fillColor","outlineColor","length","target","getStage","getPointerPosition","x","y","type","startx","starty","createdAt","Date","drawableToAdd","registerMovement","push","handleSessionChange","bind","updatedNewDrawable","newDrawables","allData","sort","a","b","lastElement","pop","updatedAt","nextProps","currentDrawables","drawablesString","JSON","stringify","sessionDrawableString","drawable","drawableArray","currentTexts","setAll","classes","disabled","drawableDimensions","imageDimensions","imageUrl","paintColor","draggable","paint","drawableProps","forceUpdate","toggleTextSelected","stage","onMouseOverElement","onMouseOutElement","listeners","onMouseUp","handleMouseUp","onMouseMove","handleMouseMove","onMouseDown","handleMouseDown","undoControls","handleUndo","handleClearAll","base","renderTextareas","ref","active","height","width","layer","key","render","React","Component","styles","position","left","top","cursor","marginTop","propTypes","PropTypes","object","isRequired","bool","string","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport omit from 'lodash/omit';\nimport cloneDeep from 'lodash/cloneDeep';\nimport isEqual from 'lodash/isEqual';\nimport classnames from 'classnames';\nimport { Layer, Stage } from 'react-konva';\nimport { withStyles } from '@material-ui/core/styles';\n\nimport ImageBackground from './drawable-image';\nimport Button from './button';\nimport factory from './factory';\n\nexport class DrawableMain extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n drawables: [],\n newDrawable: [],\n textIsSelected: false\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.session) {\n const { TextEntry } = nextProps;\n const { drawables: currentDrawables } = this.state;\n\n if (nextProps.session.drawables) {\n const newDrawables = cloneDeep(nextProps.session.drawables);\n const drawablesString = JSON.stringify(currentDrawables);\n const sessionDrawableString = JSON.stringify(\n (newDrawables || []).map(drawable => omit(drawable, 'type'))\n );\n\n if (drawablesString !== sessionDrawableString) {\n const drawableArray = nextProps.session.drawables;\n\n this.setState({\n drawables: drawableArray.map(drawable =>\n factory(drawable.type, drawable)\n )\n });\n }\n\n const currentTexts = TextEntry.all.map(text => ({\n ...text,\n ...(TextEntry[`text_${text.id}`] &&\n TextEntry[`text_${text.id}`].attrs),\n value:\n TextEntry[`textarea_${text.id}`] &&\n TextEntry[`textarea_${text.id}`].value\n }));\n\n if (!isEqual(currentTexts, nextProps.session.texts)) {\n TextEntry.setAll(nextProps.session.texts || []);\n }\n }\n } else {\n this.handleSessionChange();\n }\n }\n\n handleSessionChange = () => {\n const { onSessionChange, session, TextEntry } = this.props;\n const { drawables } = this.state;\n\n const newSession = {\n drawables: drawables.map(d => d.toJson()),\n texts: TextEntry.all.map(text => ({\n ...text,\n ...(TextEntry[`text_${text.id}`] && TextEntry[`text_${text.id}`].attrs),\n value:\n TextEntry[`textarea_${text.id}`] &&\n TextEntry[`textarea_${text.id}`].value\n }))\n };\n\n if (!isEqual(newSession, session)) {\n onSessionChange({\n ...session,\n ...newSession\n });\n }\n };\n\n onMouseOverElement = () => this.setState({ isOver: true });\n\n onMouseOutElement = () => this.setState({ isOver: false });\n\n handleMouseDown = e => {\n const { newDrawable, textIsSelected } = this.state;\n const { toolActive, fillColor, outlineColor } = this.props;\n\n if (newDrawable.length === 0 && !textIsSelected) {\n const { x, y } = e.target.getStage().getPointerPosition();\n const newDrawable = factory(toolActive.type, {\n startx: x,\n starty: y,\n fillColor,\n outlineColor,\n createdAt: new Date()\n });\n\n this.setState({\n newDrawable: [newDrawable]\n });\n }\n };\n\n handleMouseUp = e => {\n const { newDrawable, drawables } = this.state;\n\n if (newDrawable.length === 1) {\n const { x, y } = e.target.getStage().getPointerPosition();\n const drawableToAdd = newDrawable[0];\n\n drawableToAdd.registerMovement(x, y);\n drawables.push(drawableToAdd);\n\n this.setState(\n {\n newDrawable: [],\n drawables\n },\n this.handleSessionChange.bind(this, drawableToAdd)\n );\n }\n };\n\n handleMouseMove = e => {\n const { newDrawable } = this.state;\n\n if (newDrawable.length === 1) {\n const { x, y } = e.target.getStage().getPointerPosition();\n const updatedNewDrawable = newDrawable[0];\n\n updatedNewDrawable.registerMovement(x, y);\n\n this.setState({\n newDrawable: [updatedNewDrawable]\n });\n }\n };\n\n handleUndo = () => {\n const { drawables } = this.state;\n const { TextEntry } = this.props;\n\n const newDrawables = [...drawables];\n const allData = [...drawables, ...TextEntry.all];\n\n allData.sort((a, b) => new Date(a.createdAt) - new Date(b.createdAt));\n const lastElement = allData[allData.length - 1];\n\n if (lastElement && lastElement.type === 'text-entry') {\n TextEntry.all.pop();\n this.setState({ updatedAt: new Date() }, this.handleSessionChange);\n } else {\n newDrawables.pop();\n this.setState({ drawables: newDrawables }, this.handleSessionChange);\n }\n };\n\n handleClearAll = () => {\n const { TextEntry } = this.props;\n\n TextEntry.all = [];\n this.setState(\n { drawables: [], updatedAt: new Date() },\n this.handleSessionChange\n );\n };\n\n toggleTextSelected = textIsSelected => this.setState({ textIsSelected });\n\n render() {\n const {\n classes,\n disabled,\n drawableDimensions,\n fillColor,\n imageDimensions,\n imageUrl,\n paintColor,\n outlineColor,\n TextEntry,\n toolActive: { type }\n } = this.props;\n const { isOver, newDrawable } = this.state;\n\n const draggable = type === 'Select';\n const paint = type === 'PaintBucket';\n const drawables = [...this.state.drawables, ...this.state.newDrawable];\n\n const drawableProps = {\n draggable: draggable && !disabled,\n disabled,\n paint,\n fillColor,\n forceUpdate: () => this.setState({ updatedAt: new Date() }),\n paintColor,\n outlineColor,\n toggleTextSelected: this.toggleTextSelected,\n handleSessionChange: this.handleSessionChange,\n stage: this.stage,\n onMouseOverElement: this.onMouseOverElement,\n onMouseOutElement: this.onMouseOutElement\n };\n\n let listeners = {};\n\n if (!disabled) {\n listeners = {\n onMouseUp: this.handleMouseUp,\n onMouseMove: this.handleMouseMove\n };\n\n if (!draggable) {\n listeners.onMouseDown = this.handleMouseDown;\n }\n }\n\n return (\n <div>\n <div className={classes.undoControls}>\n <Button disabled={disabled} onClick={this.handleUndo} label=\"Undo\" />\n <Button disabled={disabled} onClick={this.handleClearAll} label=\"Clear all\" />\n </div>\n <div className={classes.base}>\n {imageUrl && (\n <ImageBackground dimensions={imageDimensions} url={imageUrl} />\n )}\n\n {TextEntry.renderTextareas()}\n\n <Stage\n ref={ref => {\n this.stage = ref;\n }}\n className={classnames(classes.stage, {\n [classes.active]:\n draggable &&\n (isOver || (newDrawable && newDrawable.length === 1))\n })}\n height={drawableDimensions.height}\n width={drawableDimensions.width}\n {...listeners}\n >\n <Layer\n ref={ref => {\n this.layer = ref;\n }}\n >\n {drawables.map((drawable, key) =>\n drawable.render({ ...drawableProps, key })\n )}\n {/* Text Entry is a special case */}\n {TextEntry.render(drawableProps)}\n </Layer>\n </Stage>\n </div>\n </div>\n );\n }\n}\n\nconst styles = () => ({\n base: {\n position: 'relative',\n width: '100%'\n },\n stage: {\n left: 0,\n position: 'absolute',\n top: 0\n },\n active: {\n cursor: 'pointer'\n },\n undoControls: {\n float: 'right',\n marginTop: -43,\n width: 163\n }\n});\n\nDrawableMain.propTypes = {\n classes: PropTypes.object.isRequired,\n disabled: PropTypes.bool,\n drawableDimensions: PropTypes.object.isRequired,\n imageDimensions: PropTypes.object.isRequired,\n fillColor: PropTypes.string.isRequired,\n onSessionChange: PropTypes.func.isRequired,\n paintColor: PropTypes.string.isRequired,\n outlineColor: PropTypes.string.isRequired,\n imageUrl: PropTypes.string.isRequired,\n TextEntry: PropTypes.object.isRequired,\n toolActive: PropTypes.object.isRequired,\n session: PropTypes.object.isRequired\n};\n\nexport default withStyles(styles)(DrawableMain);\n"],"file":"drawable-main.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/drawing-response/drawable-main.jsx"],"names":["DrawableMain","props","onSessionChange","session","TextEntry","drawables","state","newSession","map","d","toJson","texts","all","text","id","attrs","value","setState","isOver","e","document","body","style","overflow","newDrawable","textIsSelected","toolActive","fillColor","outlineColor","scale","length","target","getStage","getPointerPosition","x","y","type","startx","starty","createdAt","Date","drawableToAdd","registerMovement","push","handleSessionChange","bind","updatedNewDrawable","newDrawables","allData","sort","a","b","lastElement","pop","updatedAt","nextProps","currentDrawables","drawablesString","JSON","stringify","sessionDrawableString","drawable","drawableArray","currentTexts","setAll","classes","disabled","drawableDimensions","imageDimensions","imageUrl","paintColor","backgroundImageEnabled","draggable","paint","drawableProps","forceUpdate","toggleTextSelected","stage","onMouseOverElement","onMouseOutElement","listeners","onMouseUp","handleMouseUp","onTouchEnd","onMouseMove","handleMouseMove","onTouchMove","onMouseDown","handleMouseDown","onTouchStart","imageHeight","height","imageWidth","width","undoControls","handleUndo","handleClearAll","base","renderTextareas","ref","active","layer","key","render","React","Component","styles","position","left","top","cursor","marginTop","propTypes","PropTypes","object","isRequired","bool","string","func","number"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport omit from 'lodash/omit';\nimport cloneDeep from 'lodash/cloneDeep';\nimport isEqual from 'lodash/isEqual';\nimport classnames from 'classnames';\nimport { Layer, Stage } from 'react-konva';\nimport { withStyles } from '@material-ui/core/styles';\n\nimport ImageBackground from './drawable-image';\nimport Button from './button';\nimport factory from './factory';\n\nexport class DrawableMain extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n drawables: [],\n newDrawable: [],\n textIsSelected: false\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.session) {\n const { TextEntry } = nextProps;\n const { drawables: currentDrawables } = this.state;\n\n if (nextProps.session.drawables) {\n const newDrawables = cloneDeep(nextProps.session.drawables);\n const drawablesString = JSON.stringify(currentDrawables);\n const sessionDrawableString = JSON.stringify(\n (newDrawables || []).map(drawable => omit(drawable, 'type'))\n );\n\n if (drawablesString !== sessionDrawableString) {\n const drawableArray = nextProps.session.drawables;\n\n this.setState({\n drawables: drawableArray.map(drawable =>\n factory(drawable.type, drawable)\n )\n });\n }\n\n const currentTexts = TextEntry.all.map(text => ({\n ...text,\n ...(TextEntry[`text_${text.id}`] &&\n TextEntry[`text_${text.id}`].attrs),\n value:\n TextEntry[`textarea_${text.id}`] &&\n TextEntry[`textarea_${text.id}`].value\n }));\n\n if (!isEqual(currentTexts, nextProps.session.texts)) {\n TextEntry.setAll(nextProps.session.texts || []);\n }\n }\n } else {\n this.handleSessionChange();\n }\n }\n\n handleSessionChange = () => {\n const { onSessionChange, session, TextEntry } = this.props;\n const { drawables } = this.state;\n\n const newSession = {\n drawables: drawables.map(d => d.toJson()),\n texts: TextEntry.all.map(text => ({\n ...text,\n ...(TextEntry[`text_${text.id}`] && TextEntry[`text_${text.id}`].attrs),\n value:\n TextEntry[`textarea_${text.id}`] &&\n TextEntry[`textarea_${text.id}`].value\n }))\n };\n\n if (!isEqual(newSession, session)) {\n onSessionChange({\n ...session,\n ...newSession\n });\n }\n };\n\n onMouseOverElement = () => this.setState({ isOver: true });\n\n onMouseOutElement = () => this.setState({ isOver: false });\n\n handleMouseDown = e => {\n // ONLY IF MOBILE?\n document.body.style.overflow = 'hidden';\n\n const { newDrawable, textIsSelected } = this.state;\n const { toolActive, fillColor, outlineColor, scale } = this.props;\n\n if (newDrawable.length === 0 && !textIsSelected) {\n const { x, y } = e.target.getStage().getPointerPosition();\n\n const newDrawable = factory(toolActive.type, {\n startx: x / scale,\n starty: y / scale,\n fillColor,\n outlineColor,\n createdAt: new Date()\n });\n\n this.setState({\n newDrawable: [newDrawable]\n });\n }\n };\n\n handleMouseUp = e => {\n // ONLY IF MOBILE?\n document.body.style.overflow = 'initial';\n\n const { newDrawable, drawables } = this.state;\n const { scale } = this.props;\n\n if (newDrawable.length === 1) {\n const { x, y } = e.target.getStage().getPointerPosition();\n const drawableToAdd = newDrawable[0];\n\n drawableToAdd.registerMovement(x / scale, y / scale);\n drawables.push(drawableToAdd);\n\n this.setState(\n {\n newDrawable: [],\n drawables\n },\n this.handleSessionChange.bind(this, drawableToAdd)\n );\n }\n };\n\n handleMouseMove = e => {\n const { newDrawable } = this.state;\n const { scale } = this.props;\n\n if (newDrawable.length === 1) {\n const { x, y } = e.target.getStage().getPointerPosition();\n const updatedNewDrawable = newDrawable[0];\n\n updatedNewDrawable.registerMovement(x / scale, y / scale);\n\n this.setState({\n newDrawable: [updatedNewDrawable]\n });\n }\n };\n\n handleUndo = () => {\n const { drawables } = this.state;\n const { TextEntry } = this.props;\n\n const newDrawables = [...drawables];\n const allData = [...drawables, ...TextEntry.all];\n\n allData.sort((a, b) => new Date(a.createdAt) - new Date(b.createdAt));\n const lastElement = allData[allData.length - 1];\n\n if (lastElement && lastElement.type === 'text-entry') {\n TextEntry.all.pop();\n this.setState({ updatedAt: new Date() }, this.handleSessionChange);\n } else {\n newDrawables.pop();\n this.setState({ drawables: newDrawables }, this.handleSessionChange);\n }\n };\n\n handleClearAll = () => {\n const { TextEntry } = this.props;\n\n TextEntry.all = [];\n this.setState(\n { drawables: [], updatedAt: new Date() },\n this.handleSessionChange\n );\n };\n\n toggleTextSelected = textIsSelected => this.setState({ textIsSelected });\n\n render() {\n const {\n classes,\n disabled,\n drawableDimensions,\n fillColor,\n imageDimensions,\n imageUrl,\n paintColor,\n outlineColor,\n TextEntry,\n backgroundImageEnabled = true,\n toolActive: { type },\n scale\n } = this.props;\n const { isOver, newDrawable } = this.state;\n\n const draggable = type === 'Select';\n const paint = type === 'PaintBucket';\n const drawables = [...this.state.drawables, ...this.state.newDrawable];\n\n const drawableProps = {\n draggable: draggable && !disabled,\n disabled,\n paint,\n fillColor,\n forceUpdate: () => this.setState({ updatedAt: new Date() }),\n paintColor,\n outlineColor,\n toggleTextSelected: this.toggleTextSelected,\n handleSessionChange: this.handleSessionChange,\n stage: this.stage,\n onMouseOverElement: this.onMouseOverElement,\n onMouseOutElement: this.onMouseOutElement,\n scale\n };\n\n let listeners = {};\n\n if (!disabled) {\n listeners = {\n onMouseUp: this.handleMouseUp,\n onTouchEnd: this.handleMouseUp,\n onMouseMove: this.handleMouseMove,\n onTouchMove: this.handleMouseMove,\n };\n\n if (!draggable) {\n listeners.onMouseDown = this.handleMouseDown;\n listeners.onTouchStart = this.handleMouseDown;\n }\n }\n\n const imageHeight = imageDimensions?.height * scale;\n const imageWidth = imageDimensions?.width * scale;\n\n return (\n <div>\n <div className={classes.undoControls}>\n <Button disabled={disabled} onClick={this.handleUndo} label=\"Undo\"/>\n <Button disabled={disabled} onClick={this.handleClearAll} label=\"Clear all\"/>\n </div>\n <div className={classes.base}>\n {backgroundImageEnabled && imageUrl && (\n <ImageBackground\n dimensions={{ height: imageHeight, width: imageWidth }}\n url={imageUrl}/>\n )}\n\n {TextEntry.renderTextareas()}\n\n <Stage\n scaleX={scale}\n scaleY={scale}\n ref={ref => {\n this.stage = ref;\n }}\n className={classnames(classes.stage, {\n [classes.active]:\n draggable &&\n (isOver || (newDrawable && newDrawable.length === 1))\n })}\n height={drawableDimensions.height}\n width={drawableDimensions.width}\n {...listeners}\n >\n <Layer\n ref={ref => {\n this.layer = ref;\n }}\n >\n {drawables.map((drawable, key) =>\n drawable.render({ ...drawableProps, key })\n )}\n {/* Text Entry is a special case */}\n {TextEntry.render(drawableProps)}\n </Layer>\n </Stage>\n </div>\n </div>\n );\n }\n}\n\nconst styles = () => ({\n base: {\n position: 'relative',\n width: '100%'\n },\n stage: {\n left: 0,\n position: 'absolute',\n top: 0\n },\n active: {\n cursor: 'pointer'\n },\n undoControls: {\n float: 'right',\n marginTop: -43,\n width: 163\n }\n});\n\nDrawableMain.propTypes = {\n classes: PropTypes.object.isRequired,\n disabled: PropTypes.bool,\n drawableDimensions: PropTypes.object.isRequired,\n imageDimensions: PropTypes.object.isRequired,\n fillColor: PropTypes.string.isRequired,\n onSessionChange: PropTypes.func.isRequired,\n paintColor: PropTypes.string.isRequired,\n outlineColor: PropTypes.string.isRequired,\n imageUrl: PropTypes.string.isRequired,\n TextEntry: PropTypes.object.isRequired,\n toolActive: PropTypes.object.isRequired,\n session: PropTypes.object.isRequired,\n backgroundImageEnabled: PropTypes.bool.isRequired,\n scale: PropTypes.number.isRequired\n};\n\nexport default withStyles(styles)(DrawableMain);\n"],"file":"drawable-main.js"}
|
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports["default"] =
|
|
8
|
+
exports.generateId = exports["default"] = void 0;
|
|
9
9
|
|
|
10
10
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
11
|
|
|
@@ -21,9 +21,9 @@ var _reactKonva = require("react-konva");
|
|
|
21
21
|
|
|
22
22
|
var _drawableTransformer = _interopRequireDefault(require("./drawable-transformer"));
|
|
23
23
|
|
|
24
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
24
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
25
25
|
|
|
26
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
26
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
27
27
|
|
|
28
28
|
var generateId = function generateId() {
|
|
29
29
|
return Math.random().toString(36).substring(2) + new Date().getTime().toString(36);
|
|
@@ -169,7 +169,7 @@ var TextDrawable = /*#__PURE__*/function () {
|
|
|
169
169
|
(0, _defineProperty2["default"])(this, "handleTransform", function (e, textNode) {
|
|
170
170
|
_this[textNode].setAttrs({
|
|
171
171
|
width: _this[textNode].width() * _this[textNode].scaleX(),
|
|
172
|
-
scaleX:
|
|
172
|
+
scaleX: _this.props.scale
|
|
173
173
|
});
|
|
174
174
|
});
|
|
175
175
|
this.all = props && props.all || [];
|
|
@@ -300,15 +300,23 @@ var TextDrawable = /*#__PURE__*/function () {
|
|
|
300
300
|
onClick: function onClick(e) {
|
|
301
301
|
return _this3.handleClick(e, id);
|
|
302
302
|
},
|
|
303
|
+
onTap: function onTap(e) {
|
|
304
|
+
return _this3.handleClick(e, id);
|
|
305
|
+
},
|
|
303
306
|
onDblClick: function onDblClick(e) {
|
|
304
307
|
return _this3.handleDblClick(e, text);
|
|
305
308
|
},
|
|
309
|
+
onDblTap: function onDblTap(e) {
|
|
310
|
+
return _this3.handleDblClick(e, text);
|
|
311
|
+
},
|
|
306
312
|
onTransform: function onTransform(e) {
|
|
307
313
|
return _this3.handleTransform(e, textNode);
|
|
308
314
|
},
|
|
309
315
|
onTransformEnd: _this3.props.handleSessionChange,
|
|
310
316
|
onMouseDown: _this3.handleMouseDown,
|
|
317
|
+
onTouchStart: _this3.handleMouseDown,
|
|
311
318
|
onMouseUp: _this3.handleMouseUp,
|
|
319
|
+
onTouchEnd: _this3.handleMouseUp,
|
|
312
320
|
onDragEnd: _this3.props.handleSessionChange,
|
|
313
321
|
onMouseEnter: _this3.props.onMouseOverElement,
|
|
314
322
|
onMouseLeave: _this3.props.onMouseOutElement
|
|
@@ -341,7 +349,9 @@ var TextDrawable = /*#__PURE__*/function () {
|
|
|
341
349
|
},
|
|
342
350
|
selectedShapeName: textNode,
|
|
343
351
|
onMouseDown: _this3.handleMouseDown,
|
|
344
|
-
|
|
352
|
+
onTouchStart: _this3.handleMouseDown,
|
|
353
|
+
onMouseUp: _this3.handleMouseUp,
|
|
354
|
+
onTouchEnd: _this3.handleMouseUp
|
|
345
355
|
})];
|
|
346
356
|
});
|
|
347
357
|
}
|