@pie-element/drawing-response 3.7.2 → 3.7.3-next.1016
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 +158 -0
- package/configure/CHANGELOG.md +117 -0
- package/configure/lib/defaults.js +18 -3
- package/configure/lib/defaults.js.map +1 -1
- package/configure/lib/image-container.js +23 -14
- package/configure/lib/image-container.js.map +1 -1
- package/configure/lib/index.js +3 -9
- package/configure/lib/index.js.map +1 -1
- package/configure/lib/root.js +44 -11
- package/configure/lib/root.js.map +1 -1
- package/configure/package.json +3 -3
- package/configure/src/__tests__/__snapshots__/image-container.test.jsx.snap +3 -2
- package/configure/src/__tests__/__snapshots__/root.test.jsx.snap +22 -14
- package/configure/src/defaults.js +17 -2
- package/configure/src/image-container.jsx +71 -45
- package/configure/src/index.js +0 -6
- package/configure/src/root.jsx +53 -24
- package/controller/CHANGELOG.md +24 -0
- package/controller/lib/index.js +13 -9
- 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 +79 -0
- package/docs/config-schema.json.md +61 -1
- package/docs/demo/generate.js +2 -0
- package/docs/pie-schema.json +43 -0
- package/docs/pie-schema.json.md +35 -0
- package/lib/drawing-response/container.js +65 -15
- package/lib/drawing-response/container.js.map +1 -1
- package/lib/drawing-response/drawable-circle.js +1 -1
- package/lib/drawing-response/drawable-circle.js.map +1 -1
- package/lib/drawing-response/drawable-eraser.js +1 -1
- package/lib/drawing-response/drawable-eraser.js.map +1 -1
- package/lib/drawing-response/drawable-free-path.js +1 -1
- package/lib/drawing-response/drawable-free-path.js.map +1 -1
- package/lib/drawing-response/drawable-helper.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-line.js +1 -1
- package/lib/drawing-response/drawable-line.js.map +1 -1
- package/lib/drawing-response/drawable-main.js +37 -14
- package/lib/drawing-response/drawable-main.js.map +1 -1
- package/lib/drawing-response/drawable-palette.js +1 -1
- package/lib/drawing-response/drawable-palette.js.map +1 -1
- package/lib/drawing-response/drawable-rectangle.js +1 -1
- package/lib/drawing-response/drawable-rectangle.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/drawable-transformer.js +1 -1
- package/lib/drawing-response/drawable-transformer.js.map +1 -1
- package/lib/drawing-response/index.js +9 -9
- package/lib/drawing-response/index.js.map +1 -1
- package/lib/index.js +4 -1
- package/lib/index.js.map +1 -1
- package/package.json +4 -4
- package/src/drawing-response/__tests__/__snapshots__/container.test.jsx.snap +18 -130
- 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 +55 -15
- 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 +6 -4
- package/src/index.js +5 -0
- package/module/configure.js +0 -1099
- package/module/controller.js +0 -66
- package/module/demo.js +0 -38
- package/module/element.js +0 -1893
- package/module/index.html +0 -16
- package/module/manifest.json +0 -14
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/drawing-response/index.jsx"],"names":["DrawingResponseComponent","props","state","showCorrect","hasError","model","disabled","imageDimensions","imageUrl","prompt","mode","teacherInstructions","session","onSessionChange","classes","errorMessage","isEvaluateMode","hidden","visible","
|
|
1
|
+
{"version":3,"sources":["../../src/drawing-response/index.jsx"],"names":["DrawingResponseComponent","props","state","showCorrect","hasError","model","disabled","imageDimensions","imageUrl","prompt","mode","teacherInstructions","backgroundImageEnabled","session","onSessionChange","classes","errorMessage","isEvaluateMode","hidden","visible","error","message","React","Component","propTypes","PropTypes","object","isRequired","func","styles","fontSize"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AAEA;;;;;;IAEMA,wB;;;;;AACJ,oCAAYC,KAAZ,EAAmB;AAAA;;AAAA;AACjB,8BAAMA,KAAN;AACA,UAAKC,KAAL,GAAa;AACXC,MAAAA,WAAW,EAAE,KADF;AAEXC,MAAAA,QAAQ,EAAE;AAFC,KAAb;AAFiB;AAMlB;;;;WAMD,kBAAS;AACP,wBAaI,KAAKH,KAbT;AAAA,0CACEI,KADF;AAAA,UAEIC,QAFJ,qBAEIA,QAFJ;AAAA,UAGIC,eAHJ,qBAGIA,eAHJ;AAAA,UAIIC,QAJJ,qBAIIA,QAJJ;AAAA,UAKIC,MALJ,qBAKIA,MALJ;AAAA,UAMIC,IANJ,qBAMIA,IANJ;AAAA,UAOIC,mBAPJ,qBAOIA,mBAPJ;AAAA,oDAQIC,sBARJ;AAAA,UAQIA,sBARJ,sCAQ6B,IAR7B;AAAA,UAUEC,OAVF,eAUEA,OAVF;AAAA,UAWEC,eAXF,eAWEA,eAXF;AAAA,UAYEC,OAZF,eAYEA,OAZF;AAcA,wBAAmC,KAAKb,KAAxC;AAAA,UAAQE,QAAR,eAAQA,QAAR;AAAA,UAAkBY,YAAlB,eAAkBA,YAAlB;AACA,UAAMC,cAAc,GAAGP,IAAI,KAAK,UAAhC;AAEA,aAAON,QAAQ,gBACb,mEAAwBY,YAAxB,CADa,gBAGb,6CACGL,mBAAmB,iBAClB,gCAAC,iBAAD,CAAO,QAAP,qBACE,gCAAC,qBAAD;AACE,QAAA,MAAM,EAAE;AACNO,UAAAA,MAAM,EAAE,2BADF;AAENC,UAAAA,OAAO,EAAE;AAFH;AADV,sBAME,gCAAC,uBAAD;AAAe,QAAA,MAAM,EAAER;AAAvB,QANF,CADF,eASE,2CATF,CAFJ,eAeE,gCAAC,sBAAD;AAAY,QAAA,SAAS,EAAEI,OAAO,CAACN;AAA/B,sBACE,gCAAC,uBAAD;AAAe,QAAA,OAAO,EAAC,MAAvB;AAA8B,QAAA,MAAM,EAAEA;AAAtC,QADF,CAfF,eAmBE,gCAAC,qBAAD;AACE,QAAA,OAAO,EAAEI,OADX;AAEE,QAAA,eAAe,EAAEC,eAFnB;AAGE,QAAA,cAAc,EAAEG,cAHlB;AAIE,QAAA,eAAe,EAAEV,eAJnB;AAKE,QAAA,QAAQ,EAAEC,QALZ;AAME,QAAA,sBAAsB,EAAEI,sBAN1B;AAOE,QAAA,QAAQ,EAAEN;AAPZ,QAnBF,CAHF;AAiCD;;;WAvDD,kCAAgCc,KAAhC,EAAuC;AACrC,aAAO;AAAEhB,QAAAA,QAAQ,EAAE,IAAZ;AAAkBY,QAAAA,YAAY,EAAEI,KAAK,CAACC;AAAtC,OAAP;AACD;;;EAXoCC,kBAAMC,S;;AAmE7CvB,wBAAwB,CAACwB,SAAzB,GAAqC;AACnCT,EAAAA,OAAO,EAAEU,sBAAUC,MADgB;AAEnCrB,EAAAA,KAAK,EAAEoB,sBAAUC,MAAV,CAAiBC,UAFW;AAGnCb,EAAAA,eAAe,EAAEW,sBAAUG,IAAV,CAAeD,UAHG;AAInCd,EAAAA,OAAO,EAAEY,sBAAUC,MAAV,CAAiBC;AAJS,CAArC;;AAOA,IAAME,MAAM,GAAG,SAATA,MAAS;AAAA,SAAO;AACpBpB,IAAAA,MAAM,EAAE;AACNqB,MAAAA,QAAQ,EAAE;AADJ;AADY,GAAP;AAAA,CAAf;;eAMe,wBAAWD,MAAX,EAAmB7B,wBAAnB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Typography from '@material-ui/core/Typography';\nimport {Collapsible, PreviewPrompt} from '@pie-lib/render-ui';\nimport { withStyles } from '@material-ui/core/styles';\n\nimport Container from './container';\n\nclass DrawingResponseComponent extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n showCorrect: false,\n hasError: false\n };\n }\n\n static getDerivedStateFromError(error) {\n return { hasError: true, errorMessage: error.message };\n }\n\n render() {\n const {\n model: {\n disabled,\n imageDimensions,\n imageUrl,\n prompt,\n mode,\n teacherInstructions,\n backgroundImageEnabled = true\n },\n session,\n onSessionChange,\n classes\n } = this.props;\n const { hasError, errorMessage } = this.state;\n const isEvaluateMode = mode === 'evaluate';\n\n return hasError ? (\n <div>An error occured: {errorMessage}</div>\n ) : (\n <div>\n {teacherInstructions && (\n <React.Fragment>\n <Collapsible\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions'\n }}\n >\n <PreviewPrompt prompt={teacherInstructions} />\n </Collapsible>\n <br />\n </React.Fragment>\n )}\n\n <Typography className={classes.prompt}>\n <PreviewPrompt tagName=\"span\" prompt={prompt} />\n </Typography>\n\n <Container\n session={session}\n onSessionChange={onSessionChange}\n isEvaluateMode={isEvaluateMode}\n imageDimensions={imageDimensions}\n imageUrl={imageUrl}\n backgroundImageEnabled={backgroundImageEnabled}\n disabled={disabled}\n />\n </div>\n );\n }\n}\n\nDrawingResponseComponent.propTypes = {\n classes: PropTypes.object,\n model: PropTypes.object.isRequired,\n onSessionChange: PropTypes.func.isRequired,\n session: PropTypes.object.isRequired\n};\n\nconst styles = () => ({\n prompt: {\n fontSize: 'inherit'\n }\n});\n\nexport default withStyles(styles)(DrawingResponseComponent);\n"],"file":"index.js"}
|
package/lib/index.js
CHANGED
|
@@ -37,7 +37,7 @@ var _drawingResponse = _interopRequireDefault(require("./drawing-response"));
|
|
|
37
37
|
|
|
38
38
|
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); }; }
|
|
39
39
|
|
|
40
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try {
|
|
40
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
41
41
|
|
|
42
42
|
var DrawingResponse = /*#__PURE__*/function (_HTMLElement) {
|
|
43
43
|
(0, _inherits2["default"])(DrawingResponse, _HTMLElement);
|
|
@@ -80,6 +80,9 @@ var DrawingResponse = /*#__PURE__*/function (_HTMLElement) {
|
|
|
80
80
|
}
|
|
81
81
|
}, {
|
|
82
82
|
key: "session",
|
|
83
|
+
get: function get() {
|
|
84
|
+
return this._session;
|
|
85
|
+
},
|
|
83
86
|
set: function set(s) {
|
|
84
87
|
this._session = s;
|
|
85
88
|
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["DrawingResponse","update","_session","drawables","texts","dispatchEvent","SessionChangedEvent","tagName","toLowerCase","isComplete","_render","m","_model","ModelSetEvent","s","el","React","createElement","DrawingResponseComponent","model","session","onSessionChange","sessionChanged","ReactDOM","render","HTMLElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AAEA;;;;;;IAEqBA,e;;;;;;;;;;;;;;;uGAkBF,UAACC,MAAD,EAAY;AAC3B,YAAKC,QAAL,CAAcC,SAAd,GAA0BF,MAAM,CAACE,SAAjC;AACA,YAAKD,QAAL,CAAcE,KAAd,GAAsBH,MAAM,CAACG,KAA7B;;AAEA,YAAKC,aAAL,CACE,IAAIC,oCAAJ,CAAwB,MAAKC,OAAL,CAAaC,WAAb,EAAxB,EAAoD,MAAKC,UAAL,EAApD,CADF;;AAIA,YAAKC,OAAL;AACD,K;;;;;;SA1BD,aAAUC,CAAV,EAAa;AACX,WAAKC,MAAL,GAAcD,CAAd;AAEA,WAAKN,aAAL,CACE,IAAIQ,8BAAJ,CACE,KAAKN,OAAL,CAAaC,WAAb,EADF,EAEE,KAAKC,UAAL,EAFF,EAGE,CAAC,CAAC,KAAKG,MAHT,CADF;;AAOA,WAAKF,OAAL;AACD;;;WAED,sBAAa;AACX,aAAO,KAAKR,QAAL,KAAkB,CAAC,yBAAQ,KAAKA,QAAL,CAAcC,SAAtB,CAAD,IAAqC,CAAC,yBAAQ,KAAKD,QAAL,CAAcE,KAAtB,CAAxD,CAAP;AACD;;;
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["DrawingResponse","update","_session","drawables","texts","dispatchEvent","SessionChangedEvent","tagName","toLowerCase","isComplete","_render","m","_model","ModelSetEvent","s","el","React","createElement","DrawingResponseComponent","model","session","onSessionChange","sessionChanged","ReactDOM","render","HTMLElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AAEA;;;;;;IAEqBA,e;;;;;;;;;;;;;;;uGAkBF,UAACC,MAAD,EAAY;AAC3B,YAAKC,QAAL,CAAcC,SAAd,GAA0BF,MAAM,CAACE,SAAjC;AACA,YAAKD,QAAL,CAAcE,KAAd,GAAsBH,MAAM,CAACG,KAA7B;;AAEA,YAAKC,aAAL,CACE,IAAIC,oCAAJ,CAAwB,MAAKC,OAAL,CAAaC,WAAb,EAAxB,EAAoD,MAAKC,UAAL,EAApD,CADF;;AAIA,YAAKC,OAAL;AACD,K;;;;;;SA1BD,aAAUC,CAAV,EAAa;AACX,WAAKC,MAAL,GAAcD,CAAd;AAEA,WAAKN,aAAL,CACE,IAAIQ,8BAAJ,CACE,KAAKN,OAAL,CAAaC,WAAb,EADF,EAEE,KAAKC,UAAL,EAFF,EAGE,CAAC,CAAC,KAAKG,MAHT,CADF;;AAOA,WAAKF,OAAL;AACD;;;WAED,sBAAa;AACX,aAAO,KAAKR,QAAL,KAAkB,CAAC,yBAAQ,KAAKA,QAAL,CAAcC,SAAtB,CAAD,IAAqC,CAAC,yBAAQ,KAAKD,QAAL,CAAcE,KAAtB,CAAxD,CAAP;AACD;;;SAkBD,eAAc;AACZ,aAAO,KAAKF,QAAZ;AACD,K;SAPD,aAAYY,CAAZ,EAAe;AACb,WAAKZ,QAAL,GAAgBY,CAAhB;;AACA,WAAKJ,OAAL;AACD;;;WAMD,6BAAoB;AAClB,WAAKA,OAAL;AACD;;;WAED,mBAAU;AAAA;;AACR,UAAI,KAAKE,MAAL,IAAe,KAAKV,QAAxB,EAAkC;AAChC,YAAMa,EAAE,gBAAGC,kBAAMC,aAAN,CAAoBC,2BAApB,EAA8C;AACvDC,UAAAA,KAAK,EAAE,KAAKP,MAD2C;AAEvDQ,UAAAA,OAAO,EAAE,KAAKlB,QAFyC;AAGvDmB,UAAAA,eAAe,EAAE,KAAKC;AAHiC,SAA9C,CAAX;;AAMAC,6BAASC,MAAT,CAAgBT,EAAhB,EAAoB,IAApB,EAA0B,YAAM;AAC9B,yCAAW,MAAX;AACD,SAFD;AAGD;AACF;;;kDAtD0CU,W","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport isEmpty from 'lodash/isEmpty';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { ModelSetEvent, SessionChangedEvent } from '@pie-framework/pie-player-events';\n\nimport DrawingResponseComponent from './drawing-response';\n\nexport default class DrawingResponse extends HTMLElement {\n set model(m) {\n this._model = m;\n\n this.dispatchEvent(\n new ModelSetEvent(\n this.tagName.toLowerCase(),\n this.isComplete(),\n !!this._model\n )\n );\n this._render();\n }\n\n isComplete() {\n return this._session && (!isEmpty(this._session.drawables) || !isEmpty(this._session.texts));\n }\n\n sessionChanged = (update) => {\n this._session.drawables = update.drawables;\n this._session.texts = update.texts;\n\n this.dispatchEvent(\n new SessionChangedEvent(this.tagName.toLowerCase(), this.isComplete())\n );\n\n this._render();\n };\n\n set session(s) {\n this._session = s;\n this._render();\n }\n\n get session() {\n return this._session;\n }\n\n connectedCallback() {\n this._render();\n }\n\n _render() {\n if (this._model && this._session) {\n const el = React.createElement(DrawingResponseComponent, {\n model: this._model,\n session: this._session,\n onSessionChange: this.sessionChanged\n });\n\n ReactDOM.render(el, this, () => {\n renderMath(this);\n });\n }\n }\n}\n"],"file":"index.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/drawing-response",
|
|
3
|
-
"version": "3.7.
|
|
3
|
+
"version": "3.7.3-next.1016+1dc291af4",
|
|
4
4
|
"description": "",
|
|
5
5
|
"repository": "pie-framework/pie-elements",
|
|
6
6
|
"publishConfig": {
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
"@mdi/js": "^3.6.95",
|
|
12
12
|
"@mdi/react": "^1.1.1",
|
|
13
13
|
"@pie-framework/pie-player-events": "^0.1.0",
|
|
14
|
-
"@pie-lib/math-rendering": "^2.3
|
|
15
|
-
"@pie-lib/render-ui": "^4.
|
|
14
|
+
"@pie-lib/math-rendering": "^2.4.3",
|
|
15
|
+
"@pie-lib/render-ui": "^4.12.9",
|
|
16
16
|
"classnames": "^2.2.6",
|
|
17
17
|
"enzyme-to-json": "^3.3.5",
|
|
18
18
|
"konva": "^3.4.1",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
},
|
|
25
25
|
"author": "pie framework developers",
|
|
26
26
|
"license": "ISC",
|
|
27
|
-
"gitHead": "
|
|
27
|
+
"gitHead": "1dc291af490cf91cc86a6a7c8d0eb0fdf184232b",
|
|
28
28
|
"scripts": {
|
|
29
29
|
"postpublish": "../../scripts/postpublish"
|
|
30
30
|
},
|
|
@@ -212,7 +212,14 @@ exports[`Container snapshot renders 1`] = `
|
|
|
212
212
|
/>
|
|
213
213
|
</div>
|
|
214
214
|
</div>
|
|
215
|
-
<div
|
|
215
|
+
<div
|
|
216
|
+
style={
|
|
217
|
+
Object {
|
|
218
|
+
"height": 0,
|
|
219
|
+
"maxHeight": 0,
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
>
|
|
216
223
|
<WithStyles(DrawableMain)
|
|
217
224
|
TextEntry={
|
|
218
225
|
TextDrawable {
|
|
@@ -240,6 +247,7 @@ exports[`Container snapshot renders 1`] = `
|
|
|
240
247
|
onSessionChange={[MockFunction]}
|
|
241
248
|
outlineColor="black"
|
|
242
249
|
paintColor="red"
|
|
250
|
+
scale={1}
|
|
243
251
|
session={Object {}}
|
|
244
252
|
toolActive={
|
|
245
253
|
Object {
|
|
@@ -256,134 +264,6 @@ exports[`Container snapshot renders 1`] = `
|
|
|
256
264
|
|
|
257
265
|
exports[`Container snapshot renders disabled 1`] = `
|
|
258
266
|
<div>
|
|
259
|
-
<WithStyles(Palette)
|
|
260
|
-
fillColor="white"
|
|
261
|
-
fillList={
|
|
262
|
-
Array [
|
|
263
|
-
Object {
|
|
264
|
-
"label": "no fill",
|
|
265
|
-
"value": "transparent",
|
|
266
|
-
},
|
|
267
|
-
Object {
|
|
268
|
-
"label": "lightblue",
|
|
269
|
-
"value": "lightblue",
|
|
270
|
-
},
|
|
271
|
-
Object {
|
|
272
|
-
"label": "lightyellow",
|
|
273
|
-
"value": "lightyellow",
|
|
274
|
-
},
|
|
275
|
-
Object {
|
|
276
|
-
"label": "red",
|
|
277
|
-
"value": "red",
|
|
278
|
-
},
|
|
279
|
-
Object {
|
|
280
|
-
"label": "orange",
|
|
281
|
-
"value": "orange",
|
|
282
|
-
},
|
|
283
|
-
Object {
|
|
284
|
-
"label": "yellow",
|
|
285
|
-
"value": "yellow",
|
|
286
|
-
},
|
|
287
|
-
Object {
|
|
288
|
-
"label": "violet",
|
|
289
|
-
"value": "violet",
|
|
290
|
-
},
|
|
291
|
-
Object {
|
|
292
|
-
"label": "blue",
|
|
293
|
-
"value": "blue",
|
|
294
|
-
},
|
|
295
|
-
Object {
|
|
296
|
-
"label": "green",
|
|
297
|
-
"value": "green",
|
|
298
|
-
},
|
|
299
|
-
Object {
|
|
300
|
-
"label": "white",
|
|
301
|
-
"value": "white",
|
|
302
|
-
},
|
|
303
|
-
Object {
|
|
304
|
-
"label": "black",
|
|
305
|
-
"value": "black",
|
|
306
|
-
},
|
|
307
|
-
]
|
|
308
|
-
}
|
|
309
|
-
onFillColorChange={[Function]}
|
|
310
|
-
onOutlineColorChange={[Function]}
|
|
311
|
-
onPaintColorChange={[Function]}
|
|
312
|
-
outlineColor="black"
|
|
313
|
-
outlineList={
|
|
314
|
-
Array [
|
|
315
|
-
Object {
|
|
316
|
-
"label": "red",
|
|
317
|
-
"value": "red",
|
|
318
|
-
},
|
|
319
|
-
Object {
|
|
320
|
-
"label": "orange",
|
|
321
|
-
"value": "orange",
|
|
322
|
-
},
|
|
323
|
-
Object {
|
|
324
|
-
"label": "yellow",
|
|
325
|
-
"value": "yellow",
|
|
326
|
-
},
|
|
327
|
-
Object {
|
|
328
|
-
"label": "violet",
|
|
329
|
-
"value": "violet",
|
|
330
|
-
},
|
|
331
|
-
Object {
|
|
332
|
-
"label": "blue",
|
|
333
|
-
"value": "blue",
|
|
334
|
-
},
|
|
335
|
-
Object {
|
|
336
|
-
"label": "green",
|
|
337
|
-
"value": "green",
|
|
338
|
-
},
|
|
339
|
-
Object {
|
|
340
|
-
"label": "white",
|
|
341
|
-
"value": "white",
|
|
342
|
-
},
|
|
343
|
-
Object {
|
|
344
|
-
"label": "black",
|
|
345
|
-
"value": "black",
|
|
346
|
-
},
|
|
347
|
-
]
|
|
348
|
-
}
|
|
349
|
-
paintColor="red"
|
|
350
|
-
paintList={
|
|
351
|
-
Array [
|
|
352
|
-
Object {
|
|
353
|
-
"label": "red",
|
|
354
|
-
"value": "red",
|
|
355
|
-
},
|
|
356
|
-
Object {
|
|
357
|
-
"label": "orange",
|
|
358
|
-
"value": "orange",
|
|
359
|
-
},
|
|
360
|
-
Object {
|
|
361
|
-
"label": "yellow",
|
|
362
|
-
"value": "yellow",
|
|
363
|
-
},
|
|
364
|
-
Object {
|
|
365
|
-
"label": "violet",
|
|
366
|
-
"value": "violet",
|
|
367
|
-
},
|
|
368
|
-
Object {
|
|
369
|
-
"label": "blue",
|
|
370
|
-
"value": "blue",
|
|
371
|
-
},
|
|
372
|
-
Object {
|
|
373
|
-
"label": "green",
|
|
374
|
-
"value": "green",
|
|
375
|
-
},
|
|
376
|
-
Object {
|
|
377
|
-
"label": "white",
|
|
378
|
-
"value": "white",
|
|
379
|
-
},
|
|
380
|
-
Object {
|
|
381
|
-
"label": "black",
|
|
382
|
-
"value": "black",
|
|
383
|
-
},
|
|
384
|
-
]
|
|
385
|
-
}
|
|
386
|
-
/>
|
|
387
267
|
<div>
|
|
388
268
|
<div>
|
|
389
269
|
<div>
|
|
@@ -466,7 +346,14 @@ exports[`Container snapshot renders disabled 1`] = `
|
|
|
466
346
|
/>
|
|
467
347
|
</div>
|
|
468
348
|
</div>
|
|
469
|
-
<div
|
|
349
|
+
<div
|
|
350
|
+
style={
|
|
351
|
+
Object {
|
|
352
|
+
"height": 0,
|
|
353
|
+
"maxHeight": 0,
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
>
|
|
470
357
|
<WithStyles(DrawableMain)
|
|
471
358
|
TextEntry={
|
|
472
359
|
TextDrawable {
|
|
@@ -495,6 +382,7 @@ exports[`Container snapshot renders disabled 1`] = `
|
|
|
495
382
|
onSessionChange={[MockFunction]}
|
|
496
383
|
outlineColor="black"
|
|
497
384
|
paintColor="red"
|
|
385
|
+
scale={1}
|
|
498
386
|
session={Object {}}
|
|
499
387
|
toolActive={
|
|
500
388
|
Object {
|
|
@@ -26,7 +26,12 @@ exports[`DrawingResponse DrawableMain snapshot renders 1`] = `
|
|
|
26
26
|
</div>
|
|
27
27
|
<div>
|
|
28
28
|
<WithStyles(DrawableImage)
|
|
29
|
-
dimensions={
|
|
29
|
+
dimensions={
|
|
30
|
+
Object {
|
|
31
|
+
"height": NaN,
|
|
32
|
+
"width": NaN,
|
|
33
|
+
}
|
|
34
|
+
}
|
|
30
35
|
url="url"
|
|
31
36
|
/>
|
|
32
37
|
<ForwardRef
|
|
@@ -34,6 +39,8 @@ exports[`DrawingResponse DrawableMain snapshot renders 1`] = `
|
|
|
34
39
|
height={350}
|
|
35
40
|
onMouseMove={[Function]}
|
|
36
41
|
onMouseUp={[Function]}
|
|
42
|
+
onTouchEnd={[Function]}
|
|
43
|
+
onTouchMove={[Function]}
|
|
37
44
|
width={353}
|
|
38
45
|
>
|
|
39
46
|
<Layer />
|
|
@@ -58,7 +65,12 @@ exports[`DrawingResponse DrawableMain snapshot renders disabled 1`] = `
|
|
|
58
65
|
</div>
|
|
59
66
|
<div>
|
|
60
67
|
<WithStyles(DrawableImage)
|
|
61
|
-
dimensions={
|
|
68
|
+
dimensions={
|
|
69
|
+
Object {
|
|
70
|
+
"height": NaN,
|
|
71
|
+
"width": NaN,
|
|
72
|
+
}
|
|
73
|
+
}
|
|
62
74
|
url="url"
|
|
63
75
|
/>
|
|
64
76
|
<ForwardRef
|
|
@@ -83,9 +95,13 @@ exports[`DrawingResponse DrawableText snapshot renders 1`] = `
|
|
|
83
95
|
name="text_gcifqhhimf8k2d6g8hs"
|
|
84
96
|
onClick={[Function]}
|
|
85
97
|
onDblClick={[Function]}
|
|
98
|
+
onDblTap={[Function]}
|
|
86
99
|
onDragEnd={[MockFunction]}
|
|
87
100
|
onMouseDown={[Function]}
|
|
88
101
|
onMouseUp={[Function]}
|
|
102
|
+
onTap={[Function]}
|
|
103
|
+
onTouchEnd={[Function]}
|
|
104
|
+
onTouchStart={[Function]}
|
|
89
105
|
onTransform={[Function]}
|
|
90
106
|
onTransformEnd={[MockFunction]}
|
|
91
107
|
text="Double click to edit this text. Press Enter to submit."
|
|
@@ -98,6 +114,8 @@ exports[`DrawingResponse DrawableText snapshot renders 1`] = `
|
|
|
98
114
|
key="transformer_gcifqhhimf8k2d6g8hs"
|
|
99
115
|
onMouseDown={[Function]}
|
|
100
116
|
onMouseUp={[Function]}
|
|
117
|
+
onTouchEnd={[Function]}
|
|
118
|
+
onTouchStart={[Function]}
|
|
101
119
|
selectedShapeName="text_gcifqhhimf8k2d6g8hs"
|
|
102
120
|
/>
|
|
103
121
|
</div>
|
|
@@ -127,9 +145,13 @@ exports[`DrawingResponse DrawableText snapshot when there is no value renders 1`
|
|
|
127
145
|
name="text_gcifqhhimf8k2d6g8hs"
|
|
128
146
|
onClick={[Function]}
|
|
129
147
|
onDblClick={[Function]}
|
|
148
|
+
onDblTap={[Function]}
|
|
130
149
|
onDragEnd={[MockFunction]}
|
|
131
150
|
onMouseDown={[Function]}
|
|
132
151
|
onMouseUp={[Function]}
|
|
152
|
+
onTap={[Function]}
|
|
153
|
+
onTouchEnd={[Function]}
|
|
154
|
+
onTouchStart={[Function]}
|
|
133
155
|
onTransform={[Function]}
|
|
134
156
|
onTransformEnd={[MockFunction]}
|
|
135
157
|
text="Double click to edit this text. Press Enter to submit."
|
|
@@ -142,6 +164,8 @@ exports[`DrawingResponse DrawableText snapshot when there is no value renders 1`
|
|
|
142
164
|
key="transformer_gcifqhhimf8k2d6g8hs"
|
|
143
165
|
onMouseDown={[Function]}
|
|
144
166
|
onMouseUp={[Function]}
|
|
167
|
+
onTouchEnd={[Function]}
|
|
168
|
+
onTouchStart={[Function]}
|
|
145
169
|
selectedShapeName="text_gcifqhhimf8k2d6g8hs"
|
|
146
170
|
/>
|
|
147
171
|
</div>
|
|
@@ -29,7 +29,8 @@ export class Container extends Component {
|
|
|
29
29
|
session: PropTypes.object.isRequired,
|
|
30
30
|
onSessionChange: PropTypes.func.isRequired,
|
|
31
31
|
imageDimensions: PropTypes.object.isRequired,
|
|
32
|
-
imageUrl: PropTypes.string.isRequired
|
|
32
|
+
imageUrl: PropTypes.string.isRequired,
|
|
33
|
+
backgroundImageEnabled: PropTypes.bool.isRequired
|
|
33
34
|
};
|
|
34
35
|
|
|
35
36
|
constructor(props) {
|
|
@@ -37,6 +38,7 @@ export class Container extends Component {
|
|
|
37
38
|
const TextEntry = new DrawableText();
|
|
38
39
|
|
|
39
40
|
this.state = {
|
|
41
|
+
scale: 1,
|
|
40
42
|
drawableDimensions: {
|
|
41
43
|
height: 0,
|
|
42
44
|
width: 0
|
|
@@ -80,12 +82,42 @@ export class Container extends Component {
|
|
|
80
82
|
|
|
81
83
|
componentDidMount() {
|
|
82
84
|
this.setDimensions();
|
|
85
|
+
|
|
86
|
+
this.observer = new MutationObserver((mutations) => {
|
|
87
|
+
mutations.forEach(() => {
|
|
88
|
+
const target = document.getElementById('question-container')?.style?.cssText
|
|
89
|
+
const zoom = target?.substring(
|
|
90
|
+
target.indexOf('--pie-zoom') + 11,
|
|
91
|
+
target.lastIndexOf('%')
|
|
92
|
+
);
|
|
93
|
+
const zoomParsed = zoom?.replace(/\s/g, '');
|
|
94
|
+
|
|
95
|
+
if (zoomParsed) {
|
|
96
|
+
const newScale = parseFloat(zoomParsed) / 100;
|
|
97
|
+
if (newScale !== this.state.scale) {
|
|
98
|
+
this.setState({
|
|
99
|
+
scale: parseFloat(zoomParsed) / 100,
|
|
100
|
+
})
|
|
101
|
+
}
|
|
102
|
+
} else if (!zoomParsed && this.state.scale !== 1) {
|
|
103
|
+
this.setState({
|
|
104
|
+
scale: 1,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
const target = document.getElementById('question-container');
|
|
111
|
+
if (target) {
|
|
112
|
+
this.observer.observe(target, { attributes : true, attributeFilter : ['style'] })
|
|
113
|
+
}
|
|
83
114
|
}
|
|
84
115
|
|
|
85
116
|
componentWillUnmount() {
|
|
86
117
|
const { TextEntry } = this.state;
|
|
87
118
|
|
|
88
119
|
TextEntry.removeEventListeners();
|
|
120
|
+
this.observer?.disconnect();
|
|
89
121
|
}
|
|
90
122
|
|
|
91
123
|
handleMakeToolActive(tool) {
|
|
@@ -131,7 +163,8 @@ export class Container extends Component {
|
|
|
131
163
|
imageUrl,
|
|
132
164
|
imageDimensions,
|
|
133
165
|
onSessionChange,
|
|
134
|
-
session
|
|
166
|
+
session,
|
|
167
|
+
backgroundImageEnabled
|
|
135
168
|
} = this.props;
|
|
136
169
|
const {
|
|
137
170
|
drawableDimensions,
|
|
@@ -145,21 +178,25 @@ export class Container extends Component {
|
|
|
145
178
|
TextEntry
|
|
146
179
|
} = this.state;
|
|
147
180
|
|
|
181
|
+
const heightToUse = drawableDimensions.height * this.state.scale;
|
|
182
|
+
|
|
148
183
|
return (
|
|
149
184
|
<div className={classes.base}>
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
185
|
+
{!disabled &&
|
|
186
|
+
<DrawablePalette
|
|
187
|
+
fillColor={fillColor}
|
|
188
|
+
fillList={fillColorList}
|
|
189
|
+
outlineColor={outlineColor}
|
|
190
|
+
outlineList={outlineColorList}
|
|
191
|
+
paintColor={paintColor}
|
|
192
|
+
paintList={paintColorList}
|
|
193
|
+
onFillColorChange={color => this.handleColorChange('fill', color)}
|
|
194
|
+
onOutlineColorChange={color =>
|
|
195
|
+
this.handleColorChange('outline', color)
|
|
196
|
+
}
|
|
197
|
+
onPaintColorChange={color => this.handleColorChange('paint', color)}
|
|
198
|
+
/>
|
|
199
|
+
}
|
|
163
200
|
|
|
164
201
|
<div className={classes.box}>
|
|
165
202
|
<div className={classes.toolbar}>
|
|
@@ -185,8 +222,10 @@ export class Container extends Component {
|
|
|
185
222
|
this.drawable = drawable;
|
|
186
223
|
}}
|
|
187
224
|
className={classes.drawableHeight}
|
|
225
|
+
style={{ height: heightToUse, maxHeight: heightToUse }}
|
|
188
226
|
>
|
|
189
227
|
<DrawableMain
|
|
228
|
+
scale={this.state.scale}
|
|
190
229
|
session={session}
|
|
191
230
|
disabled={disabled}
|
|
192
231
|
onSessionChange={onSessionChange}
|
|
@@ -198,6 +237,7 @@ export class Container extends Component {
|
|
|
198
237
|
imageDimensions={imageDimensions}
|
|
199
238
|
toolActive={toolActive}
|
|
200
239
|
TextEntry={TextEntry}
|
|
240
|
+
backgroundImageEnabled={backgroundImageEnabled}
|
|
201
241
|
/>
|
|
202
242
|
</div>
|
|
203
243
|
</div>
|
|
@@ -89,14 +89,18 @@ export class DrawableMain extends React.Component {
|
|
|
89
89
|
onMouseOutElement = () => this.setState({ isOver: false });
|
|
90
90
|
|
|
91
91
|
handleMouseDown = e => {
|
|
92
|
+
// ONLY IF MOBILE?
|
|
93
|
+
document.body.style.overflow = 'hidden';
|
|
94
|
+
|
|
92
95
|
const { newDrawable, textIsSelected } = this.state;
|
|
93
|
-
const { toolActive, fillColor, outlineColor } = this.props;
|
|
96
|
+
const { toolActive, fillColor, outlineColor, scale } = this.props;
|
|
94
97
|
|
|
95
98
|
if (newDrawable.length === 0 && !textIsSelected) {
|
|
96
99
|
const { x, y } = e.target.getStage().getPointerPosition();
|
|
100
|
+
|
|
97
101
|
const newDrawable = factory(toolActive.type, {
|
|
98
|
-
startx: x,
|
|
99
|
-
starty: y,
|
|
102
|
+
startx: x / scale,
|
|
103
|
+
starty: y / scale,
|
|
100
104
|
fillColor,
|
|
101
105
|
outlineColor,
|
|
102
106
|
createdAt: new Date()
|
|
@@ -109,13 +113,17 @@ export class DrawableMain extends React.Component {
|
|
|
109
113
|
};
|
|
110
114
|
|
|
111
115
|
handleMouseUp = e => {
|
|
116
|
+
// ONLY IF MOBILE?
|
|
117
|
+
document.body.style.overflow = 'initial';
|
|
118
|
+
|
|
112
119
|
const { newDrawable, drawables } = this.state;
|
|
120
|
+
const { scale } = this.props;
|
|
113
121
|
|
|
114
122
|
if (newDrawable.length === 1) {
|
|
115
123
|
const { x, y } = e.target.getStage().getPointerPosition();
|
|
116
124
|
const drawableToAdd = newDrawable[0];
|
|
117
125
|
|
|
118
|
-
drawableToAdd.registerMovement(x, y);
|
|
126
|
+
drawableToAdd.registerMovement(x / scale, y / scale);
|
|
119
127
|
drawables.push(drawableToAdd);
|
|
120
128
|
|
|
121
129
|
this.setState(
|
|
@@ -130,12 +138,13 @@ export class DrawableMain extends React.Component {
|
|
|
130
138
|
|
|
131
139
|
handleMouseMove = e => {
|
|
132
140
|
const { newDrawable } = this.state;
|
|
141
|
+
const { scale } = this.props;
|
|
133
142
|
|
|
134
143
|
if (newDrawable.length === 1) {
|
|
135
144
|
const { x, y } = e.target.getStage().getPointerPosition();
|
|
136
145
|
const updatedNewDrawable = newDrawable[0];
|
|
137
146
|
|
|
138
|
-
updatedNewDrawable.registerMovement(x, y);
|
|
147
|
+
updatedNewDrawable.registerMovement(x / scale, y / scale);
|
|
139
148
|
|
|
140
149
|
this.setState({
|
|
141
150
|
newDrawable: [updatedNewDrawable]
|
|
@@ -185,7 +194,9 @@ export class DrawableMain extends React.Component {
|
|
|
185
194
|
paintColor,
|
|
186
195
|
outlineColor,
|
|
187
196
|
TextEntry,
|
|
188
|
-
|
|
197
|
+
backgroundImageEnabled = true,
|
|
198
|
+
toolActive: { type },
|
|
199
|
+
scale
|
|
189
200
|
} = this.props;
|
|
190
201
|
const { isOver, newDrawable } = this.state;
|
|
191
202
|
|
|
@@ -205,7 +216,8 @@ export class DrawableMain extends React.Component {
|
|
|
205
216
|
handleSessionChange: this.handleSessionChange,
|
|
206
217
|
stage: this.stage,
|
|
207
218
|
onMouseOverElement: this.onMouseOverElement,
|
|
208
|
-
onMouseOutElement: this.onMouseOutElement
|
|
219
|
+
onMouseOutElement: this.onMouseOutElement,
|
|
220
|
+
scale
|
|
209
221
|
};
|
|
210
222
|
|
|
211
223
|
let listeners = {};
|
|
@@ -213,35 +225,45 @@ export class DrawableMain extends React.Component {
|
|
|
213
225
|
if (!disabled) {
|
|
214
226
|
listeners = {
|
|
215
227
|
onMouseUp: this.handleMouseUp,
|
|
216
|
-
|
|
228
|
+
onTouchEnd: this.handleMouseUp,
|
|
229
|
+
onMouseMove: this.handleMouseMove,
|
|
230
|
+
onTouchMove: this.handleMouseMove,
|
|
217
231
|
};
|
|
218
232
|
|
|
219
233
|
if (!draggable) {
|
|
220
234
|
listeners.onMouseDown = this.handleMouseDown;
|
|
235
|
+
listeners.onTouchStart = this.handleMouseDown;
|
|
221
236
|
}
|
|
222
237
|
}
|
|
223
238
|
|
|
239
|
+
const imageHeight = imageDimensions?.height * scale;
|
|
240
|
+
const imageWidth = imageDimensions?.width * scale;
|
|
241
|
+
|
|
224
242
|
return (
|
|
225
243
|
<div>
|
|
226
244
|
<div className={classes.undoControls}>
|
|
227
|
-
<Button disabled={disabled} onClick={this.handleUndo} label="Undo"
|
|
228
|
-
<Button disabled={disabled} onClick={this.handleClearAll} label="Clear all"
|
|
245
|
+
<Button disabled={disabled} onClick={this.handleUndo} label="Undo"/>
|
|
246
|
+
<Button disabled={disabled} onClick={this.handleClearAll} label="Clear all"/>
|
|
229
247
|
</div>
|
|
230
248
|
<div className={classes.base}>
|
|
231
|
-
{imageUrl && (
|
|
232
|
-
<ImageBackground
|
|
249
|
+
{backgroundImageEnabled && imageUrl && (
|
|
250
|
+
<ImageBackground
|
|
251
|
+
dimensions={{ height: imageHeight, width: imageWidth }}
|
|
252
|
+
url={imageUrl}/>
|
|
233
253
|
)}
|
|
234
254
|
|
|
235
255
|
{TextEntry.renderTextareas()}
|
|
236
256
|
|
|
237
257
|
<Stage
|
|
258
|
+
scaleX={scale}
|
|
259
|
+
scaleY={scale}
|
|
238
260
|
ref={ref => {
|
|
239
261
|
this.stage = ref;
|
|
240
262
|
}}
|
|
241
263
|
className={classnames(classes.stage, {
|
|
242
264
|
[classes.active]:
|
|
243
|
-
|
|
244
|
-
|
|
265
|
+
draggable &&
|
|
266
|
+
(isOver || (newDrawable && newDrawable.length === 1))
|
|
245
267
|
})}
|
|
246
268
|
height={drawableDimensions.height}
|
|
247
269
|
width={drawableDimensions.width}
|
|
@@ -297,7 +319,9 @@ DrawableMain.propTypes = {
|
|
|
297
319
|
imageUrl: PropTypes.string.isRequired,
|
|
298
320
|
TextEntry: PropTypes.object.isRequired,
|
|
299
321
|
toolActive: PropTypes.object.isRequired,
|
|
300
|
-
session: PropTypes.object.isRequired
|
|
322
|
+
session: PropTypes.object.isRequired,
|
|
323
|
+
backgroundImageEnabled: PropTypes.bool.isRequired,
|
|
324
|
+
scale: PropTypes.number.isRequired
|
|
301
325
|
};
|
|
302
326
|
|
|
303
327
|
export default withStyles(styles)(DrawableMain);
|