@pie-element/hotspot 4.11.4 → 5.1.1

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 CHANGED
@@ -3,6 +3,43 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [5.1.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/hotspot@5.1.0...@pie-element/hotspot@5.1.1) (2022-07-19)
7
+
8
+ **Note:** Version bump only for package @pie-element/hotspot
9
+
10
+
11
+
12
+
13
+
14
+ # [5.1.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/hotspot@5.0.0...@pie-element/hotspot@5.1.0) (2022-06-28)
15
+
16
+
17
+ ### Features
18
+
19
+ * **hotspot:** add maxImageWidth and maxImageHeight props PD-1801 ([8325bc1](https://github.com/pie-framework/pie-elements/commit/8325bc1bb9014027349bfab863b56bb1d519e5ca))
20
+ * update documentation for items that have validation with settings configurable by client systems PD-1789 ([8ef69cc](https://github.com/pie-framework/pie-elements/commit/8ef69cc0c7439a5803dc95f570efc7cd24c8e334))
21
+
22
+
23
+
24
+
25
+
26
+ # [5.0.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/hotspot@4.11.4...@pie-element/hotspot@5.0.0) (2022-06-28)
27
+
28
+
29
+ ### chore
30
+
31
+ * Merge master with develop. ([cdca48a](https://github.com/pie-framework/pie-elements/commit/cdca48abaa1d4179e4a961e13d171e14b7ed2444))
32
+
33
+
34
+ ### BREAKING CHANGES
35
+
36
+ * Image percent buttons were removed from toolbar.
37
+ New properties maxImageWidth and maxImageHeight were added.
38
+
39
+
40
+
41
+
42
+
6
43
  ## [4.11.4](https://github.com/pie-framework/pie-elements/compare/@pie-element/hotspot@4.11.3...@pie-element/hotspot@4.11.4) (2022-06-13)
7
44
 
8
45
  **Note:** Version bump only for package @pie-element/hotspot
@@ -3,6 +3,42 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [5.1.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/hotspot-configure@5.1.0...@pie-element/hotspot-configure@5.1.1) (2022-07-19)
7
+
8
+ **Note:** Version bump only for package @pie-element/hotspot-configure
9
+
10
+
11
+
12
+
13
+
14
+ # [5.1.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/hotspot-configure@5.0.0...@pie-element/hotspot-configure@5.1.0) (2022-06-28)
15
+
16
+
17
+ ### Features
18
+
19
+ * **hotspot:** add maxImageWidth and maxImageHeight props PD-1801 ([8325bc1](https://github.com/pie-framework/pie-elements/commit/8325bc1bb9014027349bfab863b56bb1d519e5ca))
20
+
21
+
22
+
23
+
24
+
25
+ # [5.0.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/hotspot-configure@4.7.4...@pie-element/hotspot-configure@5.0.0) (2022-06-28)
26
+
27
+
28
+ ### chore
29
+
30
+ * Merge master with develop. ([cdca48a](https://github.com/pie-framework/pie-elements/commit/cdca48abaa1d4179e4a961e13d171e14b7ed2444))
31
+
32
+
33
+ ### BREAKING CHANGES
34
+
35
+ * Image percent buttons were removed from toolbar.
36
+ New properties maxImageWidth and maxImageHeight were added.
37
+
38
+
39
+
40
+
41
+
6
42
  ## [4.7.4](https://github.com/pie-framework/pie-elements/compare/@pie-element/hotspot-configure@4.7.3...@pie-element/hotspot-configure@4.7.4) (2022-06-13)
7
43
 
8
44
  **Note:** Version bump only for package @pie-element/hotspot-configure
@@ -60,7 +60,17 @@ var _default = {
60
60
  enabled: true,
61
61
  label: 'Preserve aspect ratio'
62
62
  },
63
- minShapes: 2
63
+ minShapes: 2,
64
+ maxImageWidth: {
65
+ teacherInstructions: 300,
66
+ prompt: 300,
67
+ rationale: 300
68
+ },
69
+ maxImageHeight: {
70
+ teacherInstructions: 300,
71
+ prompt: 300,
72
+ rationale: 300
73
+ }
64
74
  }
65
75
  };
66
76
  exports["default"] = _default;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/defaults.js"],"names":["model","prompt","toolbarEditorPosition","promptEnabled","imageUrl","shapes","rectangles","polygons","multipleCorrect","partialScoring","dimensions","height","width","hotspotColor","hotspotList","outlineColor","outlineList","rationaleEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","strokeWidth","configuration","settings","label","rationale","spellCheck","enabled","teacherInstructions","preserveAspectRatio","minShapes"],"mappings":";;;;;;eAAe;AACbA,EAAAA,KAAK,EAAE;AACLC,IAAAA,MAAM,EAAE,6BADH;AAELC,IAAAA,qBAAqB,EAAE,QAFlB;AAGLC,IAAAA,aAAa,EAAE,IAHV;AAILC,IAAAA,QAAQ,EAAE,EAJL;AAKLC,IAAAA,MAAM,EAAE;AACNC,MAAAA,UAAU,EAAE,EADN;AAENC,MAAAA,QAAQ,EAAE;AAFJ,KALH;AASLC,IAAAA,eAAe,EAAE,IATZ;AAULC,IAAAA,cAAc,EAAE,KAVX;AAWLC,IAAAA,UAAU,EAAE;AACVC,MAAAA,MAAM,EAAE,CADE;AAEVC,MAAAA,KAAK,EAAE;AAFG,KAXP;AAeLC,IAAAA,YAAY,EAAE,2BAfT;AAgBLC,IAAAA,WAAW,EAAE,CACX,2BADW,CAhBR;AAmBLC,IAAAA,YAAY,EAAE,MAnBT;AAoBLC,IAAAA,WAAW,EAAE,CACX,MADW,CApBR;AAuBLC,IAAAA,gBAAgB,EAAE,IAvBb;AAwBLC,IAAAA,0BAA0B,EAAE,IAxBvB;AAyBLC,IAAAA,0BAA0B,EAAE,IAzBvB;AA0BLC,IAAAA,WAAW,EAAE;AA1BR,GADM;AA6BbC,EAAAA,aAAa,EAAE;AACbb,IAAAA,eAAe,EAAE;AACfc,MAAAA,QAAQ,EAAE,IADK;AAEfC,MAAAA,KAAK,EAAE;AAFQ,KADJ;AAKbd,IAAAA,cAAc,EAAE;AACda,MAAAA,QAAQ,EAAE,KADI;AAEdC,MAAAA,KAAK,EAAE;AAFO,KALH;AASbC,IAAAA,SAAS,EAAE;AACTF,MAAAA,QAAQ,EAAE,IADD;AAETC,MAAAA,KAAK,EAAE;AAFE,KATE;AAabtB,IAAAA,MAAM,EAAE;AACNqB,MAAAA,QAAQ,EAAE,IADJ;AAENC,MAAAA,KAAK,EAAE;AAFD,KAbK;AAiBbE,IAAAA,UAAU,EAAE;AACVF,MAAAA,KAAK,EAAE,YADG;AAEVD,MAAAA,QAAQ,EAAC,KAFC;AAGVI,MAAAA,OAAO,EAAC;AAHE,KAjBC;AAsBbC,IAAAA,mBAAmB,EAAE;AACnBL,MAAAA,QAAQ,EAAE,IADS;AAEnBC,MAAAA,KAAK,EAAE;AAFY,KAtBR;AA0BbK,IAAAA,mBAAmB,EAAE;AACnBN,MAAAA,QAAQ,EAAE,KADS;AAEnBI,MAAAA,OAAO,EAAE,IAFU;AAGnBH,MAAAA,KAAK,EAAE;AAHY,KA1BR;AA+BbM,IAAAA,SAAS,EAAE;AA/BE;AA7BF,C","sourcesContent":["export default {\n model: {\n prompt: 'This is the question prompt',\n toolbarEditorPosition: 'bottom',\n promptEnabled: true,\n imageUrl: '',\n shapes: {\n rectangles: [],\n polygons: []\n },\n multipleCorrect: true,\n partialScoring: false,\n dimensions: {\n height: 0,\n width: 0\n },\n hotspotColor: 'rgba(137, 183, 244, 0.65)',\n hotspotList: [\n 'rgba(137, 183, 244, 0.65)'\n ],\n outlineColor: 'blue',\n outlineList: [\n 'blue'\n ],\n rationaleEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n strokeWidth: 5\n },\n configuration: {\n multipleCorrect: {\n settings: true,\n label: 'Multiple Correct Responses'\n },\n partialScoring: {\n settings: false,\n label: 'Allow Partial Scoring'\n },\n rationale: {\n settings: true,\n label: 'Rationale'\n },\n prompt: {\n settings: true,\n label: 'Prompt'\n },\n spellCheck: {\n label: 'Spellcheck',\n settings:false,\n enabled:true\n },\n teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions'\n },\n preserveAspectRatio: {\n settings: false,\n enabled: true,\n label: 'Preserve aspect ratio'\n },\n minShapes: 2\n }\n};\n"],"file":"defaults.js"}
1
+ {"version":3,"sources":["../src/defaults.js"],"names":["model","prompt","toolbarEditorPosition","promptEnabled","imageUrl","shapes","rectangles","polygons","multipleCorrect","partialScoring","dimensions","height","width","hotspotColor","hotspotList","outlineColor","outlineList","rationaleEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","strokeWidth","configuration","settings","label","rationale","spellCheck","enabled","teacherInstructions","preserveAspectRatio","minShapes","maxImageWidth","maxImageHeight"],"mappings":";;;;;;eAAe;AACbA,EAAAA,KAAK,EAAE;AACLC,IAAAA,MAAM,EAAE,6BADH;AAELC,IAAAA,qBAAqB,EAAE,QAFlB;AAGLC,IAAAA,aAAa,EAAE,IAHV;AAILC,IAAAA,QAAQ,EAAE,EAJL;AAKLC,IAAAA,MAAM,EAAE;AACNC,MAAAA,UAAU,EAAE,EADN;AAENC,MAAAA,QAAQ,EAAE;AAFJ,KALH;AASLC,IAAAA,eAAe,EAAE,IATZ;AAULC,IAAAA,cAAc,EAAE,KAVX;AAWLC,IAAAA,UAAU,EAAE;AACVC,MAAAA,MAAM,EAAE,CADE;AAEVC,MAAAA,KAAK,EAAE;AAFG,KAXP;AAeLC,IAAAA,YAAY,EAAE,2BAfT;AAgBLC,IAAAA,WAAW,EAAE,CACX,2BADW,CAhBR;AAmBLC,IAAAA,YAAY,EAAE,MAnBT;AAoBLC,IAAAA,WAAW,EAAE,CACX,MADW,CApBR;AAuBLC,IAAAA,gBAAgB,EAAE,IAvBb;AAwBLC,IAAAA,0BAA0B,EAAE,IAxBvB;AAyBLC,IAAAA,0BAA0B,EAAE,IAzBvB;AA0BLC,IAAAA,WAAW,EAAE;AA1BR,GADM;AA6BbC,EAAAA,aAAa,EAAE;AACbb,IAAAA,eAAe,EAAE;AACfc,MAAAA,QAAQ,EAAE,IADK;AAEfC,MAAAA,KAAK,EAAE;AAFQ,KADJ;AAKbd,IAAAA,cAAc,EAAE;AACda,MAAAA,QAAQ,EAAE,KADI;AAEdC,MAAAA,KAAK,EAAE;AAFO,KALH;AASbC,IAAAA,SAAS,EAAE;AACTF,MAAAA,QAAQ,EAAE,IADD;AAETC,MAAAA,KAAK,EAAE;AAFE,KATE;AAabtB,IAAAA,MAAM,EAAE;AACNqB,MAAAA,QAAQ,EAAE,IADJ;AAENC,MAAAA,KAAK,EAAE;AAFD,KAbK;AAiBbE,IAAAA,UAAU,EAAE;AACVF,MAAAA,KAAK,EAAE,YADG;AAEVD,MAAAA,QAAQ,EAAC,KAFC;AAGVI,MAAAA,OAAO,EAAC;AAHE,KAjBC;AAsBbC,IAAAA,mBAAmB,EAAE;AACnBL,MAAAA,QAAQ,EAAE,IADS;AAEnBC,MAAAA,KAAK,EAAE;AAFY,KAtBR;AA0BbK,IAAAA,mBAAmB,EAAE;AACnBN,MAAAA,QAAQ,EAAE,KADS;AAEnBI,MAAAA,OAAO,EAAE,IAFU;AAGnBH,MAAAA,KAAK,EAAE;AAHY,KA1BR;AA+BbM,IAAAA,SAAS,EAAE,CA/BE;AAgCbC,IAAAA,aAAa,EAAE;AACbH,MAAAA,mBAAmB,EAAE,GADR;AAEb1B,MAAAA,MAAM,EAAE,GAFK;AAGbuB,MAAAA,SAAS,EAAE;AAHE,KAhCF;AAqCbO,IAAAA,cAAc,EAAE;AACdJ,MAAAA,mBAAmB,EAAE,GADP;AAEd1B,MAAAA,MAAM,EAAE,GAFM;AAGduB,MAAAA,SAAS,EAAE;AAHG;AArCH;AA7BF,C","sourcesContent":["export default {\n model: {\n prompt: 'This is the question prompt',\n toolbarEditorPosition: 'bottom',\n promptEnabled: true,\n imageUrl: '',\n shapes: {\n rectangles: [],\n polygons: []\n },\n multipleCorrect: true,\n partialScoring: false,\n dimensions: {\n height: 0,\n width: 0\n },\n hotspotColor: 'rgba(137, 183, 244, 0.65)',\n hotspotList: [\n 'rgba(137, 183, 244, 0.65)'\n ],\n outlineColor: 'blue',\n outlineList: [\n 'blue'\n ],\n rationaleEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n strokeWidth: 5\n },\n configuration: {\n multipleCorrect: {\n settings: true,\n label: 'Multiple Correct Responses'\n },\n partialScoring: {\n settings: false,\n label: 'Allow Partial Scoring'\n },\n rationale: {\n settings: true,\n label: 'Rationale'\n },\n prompt: {\n settings: true,\n label: 'Prompt'\n },\n spellCheck: {\n label: 'Spellcheck',\n settings:false,\n enabled:true\n },\n teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions'\n },\n preserveAspectRatio: {\n settings: false,\n enabled: true,\n label: 'Preserve aspect ratio'\n },\n minShapes: 2,\n maxImageWidth: {\n teacherInstructions: 300,\n prompt: 300,\n rationale: 300,\n },\n maxImageHeight: {\n teacherInstructions: 300,\n prompt: 300,\n rationale: 300,\n }\n }\n};\n"],"file":"defaults.js"}
@@ -69,14 +69,16 @@ var Container = /*#__PURE__*/function (_Component) {
69
69
  (0, _classCallCheck2["default"])(this, Container);
70
70
  _this = _super.call(this, props);
71
71
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleFileRead", function (file) {
72
- var onImageUpload = _this.props.onImageUpload;
73
- var reader = new FileReader();
72
+ if (file instanceof Blob) {
73
+ var onImageUpload = _this.props.onImageUpload;
74
+ var reader = new FileReader();
74
75
 
75
- reader.onloadend = function () {
76
- return onImageUpload(reader.result);
77
- };
76
+ reader.onloadend = function () {
77
+ return onImageUpload(reader.result);
78
+ };
78
79
 
79
- reader.readAsDataURL(file);
80
+ reader.readAsDataURL(file);
81
+ }
80
82
  });
81
83
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleUploadImage", function (e) {
82
84
  e.preventDefault();
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/hotspot-container.jsx"],"names":["isImage","file","imageType","type","match","Container","props","onImageUpload","reader","FileReader","onloadend","result","readAsDataURL","e","preventDefault","handleFileRead","target","files","setState","dropzoneActive","clipboardData","dataTransfer","items","kind","getAsFile","disableDropzone","state","enableDropzone","newShapes","onUpdateShapes","shapes","length","sort","a","b","parseInt","index","slice","dragEnabled","input","click","showTooltip","classes","dimensions","hotspotColor","imageUrl","multipleCorrect","onUpdateImageDimension","outlineColor","strokeWidth","preserveAspectRatioEnabled","base","box","boxActive","onDragExit","handleOnDragExit","onDragLeave","onDragOver","handleOnDragOver","onDrop","handleOnDrop","onPaste","handleOnPaste","toolbar","replaceButton","replaceSection","handleInputClick","handleUploadImage","ref","handleUndo","handleClearAll","imageSection","drawableHeight","handleDisableDrag","handleEnableDrag","centered","tooltip","tooltipContent","tooltipArrow","icon","toggleTooltip","nextProps","prevState","Component","styles","theme","marginTop","spacing","unit","border","borderRadius","alignItems","display","flexDirection","justifyContent","minHeight","paddingBottom","paddingRight","color","cursor","marginLeft","marginRight","backgroundColor","borderBottom","borderTopLeftRadius","borderTopRightRadius","padding","position","textAlign","background","fontSize","lineHeight","right","width","height","borderLeft","borderRight","borderTop","marginBottom","propTypes","PropTypes","object","isRequired","string","bool","func","shape","rectangles","array","polygons","number","defaultProps"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles/index';\nimport Help from '@material-ui/icons/Help';\n\nimport Drawable from './hotspot-drawable';\nimport Button from './button';\nimport UploadControl from './upload-control';\nimport { getAllShapes, groupShapes } from './utils';\n\nconst isImage = (file) => {\n const imageType = /image.*/;\n return file.type.match(imageType);\n};\n\nexport class Container extends Component {\n static getDerivedStateFromProps(nextProps, prevState) {\n // always transform shapes map into shapes array at this level\n return {\n ...prevState,\n shapes: getAllShapes(nextProps.shapes),\n }\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n dragEnabled: true,\n // always transform shapes map into shapes array at this level\n shapes: getAllShapes(props.shapes)\n }\n }\n\n handleFileRead = (file) => {\n const { onImageUpload } = this.props;\n const reader = new FileReader();\n\n reader.onloadend = () => onImageUpload(reader.result);\n reader.readAsDataURL(file)\n };\n\n handleUploadImage = (e) => {\n e.preventDefault();\n\n this.handleFileRead(e.target.files[0]);\n };\n\n enableDropzone = () => this.setState({ dropzoneActive: true });\n disableDropzone = () => this.setState({ dropzoneActive: false });\n\n handleOnPaste = (e) => {\n const { files } = e.clipboardData;\n\n if (files && isImage(files[0])) {\n this.handleFileRead(files[0]);\n }\n };\n\n handleOnDrop = (e) => {\n e.preventDefault();\n\n const { items, files } = e.dataTransfer;\n\n if (items && items[0].kind === 'file') {\n const file = items[0].getAsFile();\n\n if (isImage(file)) {\n this.handleFileRead(file);\n }\n } else if (isImage(files[0])) {\n this.handleFileRead(files[0]);\n }\n this.disableDropzone();\n };\n\n handleOnDragOver = (e) => {\n e.preventDefault();\n\n const { dropzoneActive } = this.state;\n\n if (!dropzoneActive) {\n this.enableDropzone();\n }\n };\n\n handleOnDragExit = (e) => {\n e.preventDefault();\n\n this.disableDropzone();\n };\n\n onUpdateShapes = newShapes => {\n const { onUpdateShapes } = this.props;\n\n this.setState(\n { shapes: newShapes },\n // always transform shapes array back into shapes map when saving changes\n () => onUpdateShapes(groupShapes(newShapes))\n );\n };\n\n handleUndo = () => {\n const { shapes } = this.state;\n\n if (shapes && shapes.length) {\n // sort by index value\n let newShapes = shapes.sort((a, b) => (parseInt(a.index) - parseInt(b.index)));\n\n newShapes = newShapes ? newShapes.slice(0, newShapes.length - 1) : [];\n\n this.onUpdateShapes(newShapes);\n }\n };\n\n handleClearAll = () => this.onUpdateShapes([]);\n\n handleEnableDrag = () => this.setState({ dragEnabled: true });\n handleDisableDrag = () => this.setState({ dragEnabled: false });\n handleInputClick = () => this.input.click();\n\n toggleTooltip = () => this.setState({ showTooltip: !this.state.showTooltip });\n\n render() {\n const {\n classes,\n dimensions,\n hotspotColor,\n imageUrl,\n multipleCorrect,\n onUpdateImageDimension,\n outlineColor,\n strokeWidth,\n preserveAspectRatioEnabled\n } = this.props;\n const {\n dropzoneActive,\n dragEnabled,\n showTooltip\n } = this.state;\n const { shapes } = this.state;\n\n return (\n <div className={classes.base}>\n <div className={`${classes.box} ${dropzoneActive ? classes.boxActive : ''}`}\n {...dragEnabled ? {\n onDragExit: this.handleOnDragExit,\n onDragLeave: this.handleOnDragExit,\n onDragOver: this.handleOnDragOver,\n onDrop: this.handleOnDrop,\n onPaste: this.handleOnPaste\n } : {}}\n >\n <div className={classes.toolbar}>\n {imageUrl && (\n <UploadControl\n classNameButton={classes.replaceButton}\n classNameSection={classes.replaceSection}\n label=\"Replace Image\"\n onInputClick={this.handleInputClick}\n onUploadImage={this.handleUploadImage}\n setRef={(ref) => {\n this.input = ref;\n }}\n />\n )}\n <Button\n disabled={!(shapes && shapes.length)}\n onClick={this.handleUndo}\n label=\"Undo\"\n />\n <Button\n disabled={!(shapes && shapes.length)}\n onClick={this.handleClearAll}\n label=\"Clear all\"\n />\n </div>\n\n <div\n ref={ref => {\n this.imageSection = ref;\n }}\n className={classes.drawableHeight}>\n {imageUrl\n ? (\n <Drawable\n dimensions={dimensions}\n disableDrag={this.handleDisableDrag}\n enableDrag={this.handleEnableDrag}\n imageUrl={imageUrl}\n hotspotColor={hotspotColor}\n multipleCorrect={multipleCorrect}\n onUpdateImageDimension={onUpdateImageDimension}\n onUpdateShapes={this.onUpdateShapes}\n outlineColor={outlineColor}\n shapes={shapes}\n strokeWidth={strokeWidth}\n preserveAspectRatioEnabled={preserveAspectRatioEnabled}\n />\n )\n : (\n <div className={`${classes.drawableHeight} ${classes.centered}`}>\n <label>Drag and drop or upload image from computer</label>\n <br/>\n <UploadControl\n label=\"Upload Image\"\n onInputClick={this.handleInputClick}\n onUploadImage={this.handleUploadImage}\n setRef={(ref) => {\n this.input = ref;\n }}\n />\n </div>\n )}\n </div>\n\n {imageUrl && (\n <div className={classes.tooltip}>\n {showTooltip && (\n <div className={classes.tooltipContent}>\n <label>\n Click and drag to create a hotspot. Click the hotspot to mark correct. Click\n again to unmark.\n </label>\n <div className={classes.tooltipArrow}/>\n </div>\n )}\n <Help\n className={classes.icon}\n onMouseOut={this.toggleTooltip}\n onMouseOver={this.toggleTooltip}\n />\n </div>\n )}\n </div>\n </div>\n\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 },\n boxActive: {\n border: '1px solid #0032C2'\n },\n centered: {\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center'\n },\n drawableHeight: {\n minHeight: 350,\n paddingBottom: '40px',\n paddingRight: '40px',\n },\n icon: {\n '&:hover': {\n color: '#333131',\n cursor: 'help'\n },\n color: '#C1C1C1'\n },\n replaceButton: {\n marginLeft: 0,\n },\n replaceSection: {\n marginRight: 'auto'\n },\n toolbar: {\n backgroundColor: '#ECEDF1',\n borderBottom: '1px solid #E0E1E6',\n borderTopLeftRadius: '5px',\n borderTopRightRadius: '5px',\n display: 'flex',\n justifyContent: 'flex-end',\n padding: '12px 8px'\n },\n tooltip: {\n position: 'relative',\n textAlign: 'right',\n padding: '5px 9px'\n },\n tooltipContent: {\n background: '#333131',\n borderRadius: '4px',\n color: '#FFFFFF',\n fontSize: '14px',\n lineHeight: '18px',\n marginTop: '-70px',\n padding: '7px 16px',\n position: 'absolute',\n right: '5px',\n textAlign: 'left',\n width: '300px'\n },\n tooltipArrow: {\n width: 0,\n height: 0,\n borderLeft: '10px solid transparent',\n borderRight: '10px solid transparent',\n borderTop: '10px solid #333131',\n marginBottom: -10,\n marginTop: '2px',\n position: 'absolute',\n right: '5px'\n }\n});\n\nContainer.propTypes = {\n classes: PropTypes.object.isRequired,\n dimensions: PropTypes.object.isRequired,\n imageUrl: PropTypes.string.isRequired,\n hotspotColor: PropTypes.string.isRequired,\n multipleCorrect: PropTypes.bool.isRequired,\n onImageUpload: PropTypes.func.isRequired,\n onUpdateImageDimension: PropTypes.func.isRequired,\n onUpdateShapes: PropTypes.func.isRequired,\n outlineColor: PropTypes.string.isRequired,\n shapes: PropTypes.shape({\n rectangles: PropTypes.array,\n polygons: PropTypes.array\n }).isRequired,\n strokeWidth: PropTypes.number,\n preserveAspectRatioEnabled: PropTypes.bool\n};\nContainer.defaultProps = {\n strokeWidth: 5\n};\n\n\nexport default withStyles(styles)(Container);\n"],"file":"hotspot-container.js"}
1
+ {"version":3,"sources":["../src/hotspot-container.jsx"],"names":["isImage","file","imageType","type","match","Container","props","Blob","onImageUpload","reader","FileReader","onloadend","result","readAsDataURL","e","preventDefault","handleFileRead","target","files","setState","dropzoneActive","clipboardData","dataTransfer","items","kind","getAsFile","disableDropzone","state","enableDropzone","newShapes","onUpdateShapes","shapes","length","sort","a","b","parseInt","index","slice","dragEnabled","input","click","showTooltip","classes","dimensions","hotspotColor","imageUrl","multipleCorrect","onUpdateImageDimension","outlineColor","strokeWidth","preserveAspectRatioEnabled","base","box","boxActive","onDragExit","handleOnDragExit","onDragLeave","onDragOver","handleOnDragOver","onDrop","handleOnDrop","onPaste","handleOnPaste","toolbar","replaceButton","replaceSection","handleInputClick","handleUploadImage","ref","handleUndo","handleClearAll","imageSection","drawableHeight","handleDisableDrag","handleEnableDrag","centered","tooltip","tooltipContent","tooltipArrow","icon","toggleTooltip","nextProps","prevState","Component","styles","theme","marginTop","spacing","unit","border","borderRadius","alignItems","display","flexDirection","justifyContent","minHeight","paddingBottom","paddingRight","color","cursor","marginLeft","marginRight","backgroundColor","borderBottom","borderTopLeftRadius","borderTopRightRadius","padding","position","textAlign","background","fontSize","lineHeight","right","width","height","borderLeft","borderRight","borderTop","marginBottom","propTypes","PropTypes","object","isRequired","string","bool","func","shape","rectangles","array","polygons","number","defaultProps"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles/index';\nimport Help from '@material-ui/icons/Help';\n\nimport Drawable from './hotspot-drawable';\nimport Button from './button';\nimport UploadControl from './upload-control';\nimport { getAllShapes, groupShapes } from './utils';\n\nconst isImage = (file) => {\n const imageType = /image.*/;\n return file.type.match(imageType);\n};\n\nexport class Container extends Component {\n static getDerivedStateFromProps(nextProps, prevState) {\n // always transform shapes map into shapes array at this level\n return {\n ...prevState,\n shapes: getAllShapes(nextProps.shapes),\n }\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n dragEnabled: true,\n // always transform shapes map into shapes array at this level\n shapes: getAllShapes(props.shapes)\n }\n }\n\n handleFileRead = (file) => {\n if (file instanceof Blob) {\n const { onImageUpload } = this.props;\n const reader = new FileReader();\n\n reader.onloadend = () => onImageUpload(reader.result);\n reader.readAsDataURL(file)\n }\n };\n\n handleUploadImage = (e) => {\n e.preventDefault();\n\n this.handleFileRead(e.target.files[0]);\n };\n\n enableDropzone = () => this.setState({ dropzoneActive: true });\n disableDropzone = () => this.setState({ dropzoneActive: false });\n\n handleOnPaste = (e) => {\n const { files } = e.clipboardData;\n\n if (files && isImage(files[0])) {\n this.handleFileRead(files[0]);\n }\n };\n\n handleOnDrop = (e) => {\n e.preventDefault();\n\n const { items, files } = e.dataTransfer;\n\n if (items && items[0].kind === 'file') {\n const file = items[0].getAsFile();\n\n if (isImage(file)) {\n this.handleFileRead(file);\n }\n } else if (isImage(files[0])) {\n this.handleFileRead(files[0]);\n }\n this.disableDropzone();\n };\n\n handleOnDragOver = (e) => {\n e.preventDefault();\n\n const { dropzoneActive } = this.state;\n\n if (!dropzoneActive) {\n this.enableDropzone();\n }\n };\n\n handleOnDragExit = (e) => {\n e.preventDefault();\n\n this.disableDropzone();\n };\n\n onUpdateShapes = newShapes => {\n const { onUpdateShapes } = this.props;\n\n this.setState(\n { shapes: newShapes },\n // always transform shapes array back into shapes map when saving changes\n () => onUpdateShapes(groupShapes(newShapes))\n );\n };\n\n handleUndo = () => {\n const { shapes } = this.state;\n\n if (shapes && shapes.length) {\n // sort by index value\n let newShapes = shapes.sort((a, b) => (parseInt(a.index) - parseInt(b.index)));\n\n newShapes = newShapes ? newShapes.slice(0, newShapes.length - 1) : [];\n\n this.onUpdateShapes(newShapes);\n }\n };\n\n handleClearAll = () => this.onUpdateShapes([]);\n\n handleEnableDrag = () => this.setState({ dragEnabled: true });\n handleDisableDrag = () => this.setState({ dragEnabled: false });\n handleInputClick = () => this.input.click();\n\n toggleTooltip = () => this.setState({ showTooltip: !this.state.showTooltip });\n\n render() {\n const {\n classes,\n dimensions,\n hotspotColor,\n imageUrl,\n multipleCorrect,\n onUpdateImageDimension,\n outlineColor,\n strokeWidth,\n preserveAspectRatioEnabled\n } = this.props;\n const {\n dropzoneActive,\n dragEnabled,\n showTooltip\n } = this.state;\n const { shapes } = this.state;\n\n return (\n <div className={classes.base}>\n <div className={`${classes.box} ${dropzoneActive ? classes.boxActive : ''}`}\n {...dragEnabled ? {\n onDragExit: this.handleOnDragExit,\n onDragLeave: this.handleOnDragExit,\n onDragOver: this.handleOnDragOver,\n onDrop: this.handleOnDrop,\n onPaste: this.handleOnPaste\n } : {}}\n >\n <div className={classes.toolbar}>\n {imageUrl && (\n <UploadControl\n classNameButton={classes.replaceButton}\n classNameSection={classes.replaceSection}\n label=\"Replace Image\"\n onInputClick={this.handleInputClick}\n onUploadImage={this.handleUploadImage}\n setRef={(ref) => {\n this.input = ref;\n }}\n />\n )}\n <Button\n disabled={!(shapes && shapes.length)}\n onClick={this.handleUndo}\n label=\"Undo\"\n />\n <Button\n disabled={!(shapes && shapes.length)}\n onClick={this.handleClearAll}\n label=\"Clear all\"\n />\n </div>\n\n <div\n ref={ref => {\n this.imageSection = ref;\n }}\n className={classes.drawableHeight}>\n {imageUrl\n ? (\n <Drawable\n dimensions={dimensions}\n disableDrag={this.handleDisableDrag}\n enableDrag={this.handleEnableDrag}\n imageUrl={imageUrl}\n hotspotColor={hotspotColor}\n multipleCorrect={multipleCorrect}\n onUpdateImageDimension={onUpdateImageDimension}\n onUpdateShapes={this.onUpdateShapes}\n outlineColor={outlineColor}\n shapes={shapes}\n strokeWidth={strokeWidth}\n preserveAspectRatioEnabled={preserveAspectRatioEnabled}\n />\n )\n : (\n <div className={`${classes.drawableHeight} ${classes.centered}`}>\n <label>Drag and drop or upload image from computer</label>\n <br/>\n <UploadControl\n label=\"Upload Image\"\n onInputClick={this.handleInputClick}\n onUploadImage={this.handleUploadImage}\n setRef={(ref) => {\n this.input = ref;\n }}\n />\n </div>\n )}\n </div>\n\n {imageUrl && (\n <div className={classes.tooltip}>\n {showTooltip && (\n <div className={classes.tooltipContent}>\n <label>\n Click and drag to create a hotspot. Click the hotspot to mark correct. Click\n again to unmark.\n </label>\n <div className={classes.tooltipArrow}/>\n </div>\n )}\n <Help\n className={classes.icon}\n onMouseOut={this.toggleTooltip}\n onMouseOver={this.toggleTooltip}\n />\n </div>\n )}\n </div>\n </div>\n\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 },\n boxActive: {\n border: '1px solid #0032C2'\n },\n centered: {\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center'\n },\n drawableHeight: {\n minHeight: 350,\n paddingBottom: '40px',\n paddingRight: '40px',\n },\n icon: {\n '&:hover': {\n color: '#333131',\n cursor: 'help'\n },\n color: '#C1C1C1'\n },\n replaceButton: {\n marginLeft: 0,\n },\n replaceSection: {\n marginRight: 'auto'\n },\n toolbar: {\n backgroundColor: '#ECEDF1',\n borderBottom: '1px solid #E0E1E6',\n borderTopLeftRadius: '5px',\n borderTopRightRadius: '5px',\n display: 'flex',\n justifyContent: 'flex-end',\n padding: '12px 8px'\n },\n tooltip: {\n position: 'relative',\n textAlign: 'right',\n padding: '5px 9px'\n },\n tooltipContent: {\n background: '#333131',\n borderRadius: '4px',\n color: '#FFFFFF',\n fontSize: '14px',\n lineHeight: '18px',\n marginTop: '-70px',\n padding: '7px 16px',\n position: 'absolute',\n right: '5px',\n textAlign: 'left',\n width: '300px'\n },\n tooltipArrow: {\n width: 0,\n height: 0,\n borderLeft: '10px solid transparent',\n borderRight: '10px solid transparent',\n borderTop: '10px solid #333131',\n marginBottom: -10,\n marginTop: '2px',\n position: 'absolute',\n right: '5px'\n }\n});\n\nContainer.propTypes = {\n classes: PropTypes.object.isRequired,\n dimensions: PropTypes.object.isRequired,\n imageUrl: PropTypes.string.isRequired,\n hotspotColor: PropTypes.string.isRequired,\n multipleCorrect: PropTypes.bool.isRequired,\n onImageUpload: PropTypes.func.isRequired,\n onUpdateImageDimension: PropTypes.func.isRequired,\n onUpdateShapes: PropTypes.func.isRequired,\n outlineColor: PropTypes.string.isRequired,\n shapes: PropTypes.shape({\n rectangles: PropTypes.array,\n polygons: PropTypes.array\n }).isRequired,\n strokeWidth: PropTypes.number,\n preserveAspectRatioEnabled: PropTypes.bool\n};\nContainer.defaultProps = {\n strokeWidth: 5\n};\n\n\nexport default withStyles(styles)(Container);\n"],"file":"hotspot-container.js"}
@@ -134,7 +134,11 @@ var Root = /*#__PURE__*/function (_React$Component) {
134
134
  _ref$spellCheck = _ref.spellCheck,
135
135
  spellCheck = _ref$spellCheck === void 0 ? {} : _ref$spellCheck,
136
136
  _ref$preserveAspectRa = _ref.preserveAspectRatio,
137
- preserveAspectRatio = _ref$preserveAspectRa === void 0 ? {} : _ref$preserveAspectRa;
137
+ preserveAspectRatio = _ref$preserveAspectRa === void 0 ? {} : _ref$preserveAspectRa,
138
+ _ref$maxImageWidth = _ref.maxImageWidth,
139
+ maxImageWidth = _ref$maxImageWidth === void 0 ? {} : _ref$maxImageWidth,
140
+ _ref$maxImageHeight = _ref.maxImageHeight,
141
+ maxImageHeight = _ref$maxImageHeight === void 0 ? {} : _ref$maxImageHeight;
138
142
 
139
143
  var _ref2 = model || {},
140
144
  teacherInstructionsEnabled = _ref2.teacherInstructionsEnabled,
@@ -149,6 +153,8 @@ var Root = /*#__PURE__*/function (_React$Component) {
149
153
 
150
154
  var toolbarOpts = {};
151
155
  var validationMessage = (0, _utils.generateValidationMessage)(configuration);
156
+ var defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;
157
+ var defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;
152
158
 
153
159
  switch (model.toolbarEditorPosition) {
154
160
  case 'top':
@@ -192,7 +198,9 @@ var Root = /*#__PURE__*/function (_React$Component) {
192
198
  imageSupport: imageSupport,
193
199
  nonEmpty: false,
194
200
  toolbarOpts: toolbarOpts,
195
- spellCheck: spellCheckEnabled
201
+ spellCheck: spellCheckEnabled,
202
+ maxImageWidth: maxImageWidth && maxImageWidth.teacherInstructions || defaultImageMaxWidth,
203
+ maxImageHeight: maxImageHeight && maxImageHeight.teacherInstructions || defaultImageMaxHeight
196
204
  })), promptEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
197
205
  label: prompt.label,
198
206
  className: classes.prompt
@@ -202,7 +210,9 @@ var Root = /*#__PURE__*/function (_React$Component) {
202
210
  imageSupport: imageSupport,
203
211
  nonEmpty: false,
204
212
  toolbarOpts: toolbarOpts,
205
- spellCheck: spellCheckEnabled
213
+ spellCheck: spellCheckEnabled,
214
+ maxImageWidth: defaultImageMaxWidth,
215
+ maxImageHeight: defaultImageMaxHeight
206
216
  })), rationaleEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
207
217
  label: rationale.label,
208
218
  className: classes.prompt
@@ -211,7 +221,9 @@ var Root = /*#__PURE__*/function (_React$Component) {
211
221
  onChange: onRationaleChanged,
212
222
  imageSupport: imageSupport,
213
223
  toolbarOpts: toolbarOpts,
214
- spellCheck: spellCheckEnabled
224
+ spellCheck: spellCheckEnabled,
225
+ maxImageWidth: maxImageWidth && maxImageWidth.rationale || defaultImageMaxWidth,
226
+ maxImageHeight: maxImageHeight && maxImageHeight.rationale || defaultImageMaxHeight
215
227
  })), /*#__PURE__*/_react["default"].createElement("div", {
216
228
  className: (0, _classnames["default"])(classes.label, classes.flexContainer)
217
229
  }, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/root.jsx"],"names":["Panel","settings","toggle","Root","fieldType","color","onColorChanged","props","cType","value","resizeType","model","dimensions","shapes","configuration","preserveAspectRatio","onUpdateImageDimension","onUpdateShapes","nextImageDimensions","updatedDimensions","enabled","shapesArray","updatedShapes","classes","imageSupport","onConfigurationChanged","onImageUpload","onModelChangedByConfig","onPromptChanged","onRationaleChanged","onTeacherInstructionsChanged","multipleCorrect","partialScoring","prompt","teacherInstructions","rationale","spellCheck","teacherInstructionsEnabled","promptEnabled","rationaleEnabled","spellCheckEnabled","errors","shapesError","selectionsError","toolbarOpts","validationMessage","toolbarEditorPosition","position","base","label","Properties","regular","flexContainer","subheading","tooltip","errorText","hotspotColor","hotspotList","outlineColor","outlineList","handleColorChange","imageUrl","strokeWidth","width","e","handleOnUpdateImageDimensions","field","height","React","Component","styles","theme","marginTop","spacing","unit","container","display","flex","paddingTop","marginRight","marginBottom","switchElement","justifyContent","margin","alignItems","fontSize","whiteSpace","maxWidth","padding","propTypes","PropTypes","object","isRequired","shape","add","func"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAMA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AAQA,IAAQA,KAAR,GAA0BC,kBAA1B,CAAQD,KAAR;AAAA,IAAeE,MAAf,GAA0BD,kBAA1B,CAAeC,MAAf;;IAEaC,I;;;;;;;;;;;;;;;0GACS,UAACC,SAAD,EAAYC,KAAZ,EAAsB;AACxC,UAAQC,cAAR,GAA2B,MAAKC,KAAhC,CAAQD,cAAR;AACA,UAAME,KAAK,aAAMJ,SAAN,UAAX;AAEAE,MAAAA,cAAc,CAACE,KAAD,EAAQH,KAAR,CAAd;AACD,K;sHAE+B,UAACI,KAAD,EAAQC,UAAR,EAAuB;AACrD,wBAKI,MAAKH,KALT;AAAA,0CACEI,KADF;AAAA,UACWC,UADX,qBACWA,UADX;AAAA,UACuBC,MADvB,qBACuBA,MADvB;AAAA,8CAEEC,aAFF,CAEmBC,mBAFnB;AAAA,UAEmBA,mBAFnB,sCAEyC,EAFzC;AAAA,UAGEC,sBAHF,eAGEA,sBAHF;AAAA,UAIEC,cAJF,eAIEA,cAJF;;AAOA,UAAMC,mBAAmB,mCAAQN,UAAR,4CAAqBF,UAArB,EAAkCD,KAAlC,EAAzB,CARqD,CAUrD;;;AACA,UAAMU,iBAAiB,GAAG,kCACxBP,UADwB,EAExBM,mBAFwB,EAGxBH,mBAAmB,CAACK,OAHI,EAIxBV,UAJwB,CAA1B,CAXqD,CAiBrD;;AACA,UAAMW,WAAW,GAAG,yBAAaR,MAAb,CAApB,CAlBqD,CAmBrD;;AACA,UAAMS,aAAa,GAAG,6BAAiBV,UAAjB,EAA6BO,iBAA7B,EAAgDE,WAAhD,CAAtB,CApBqD,CAqBrD;;AAEAJ,MAAAA,cAAc,CAAC,wBAAYK,aAAZ,CAAD,CAAd;AACAN,MAAAA,sBAAsB,CAACG,iBAAD,CAAtB;AACD,K;;;;;;WAED,kBAAS;AAAA;;AACP,yBAaI,KAAKZ,KAbT;AAAA,UACEgB,OADF,gBACEA,OADF;AAAA,UAEET,aAFF,gBAEEA,aAFF;AAAA,UAGEH,KAHF,gBAGEA,KAHF;AAAA,UAIEa,YAJF,gBAIEA,YAJF;AAAA,UAKEC,sBALF,gBAKEA,sBALF;AAAA,UAMEC,aANF,gBAMEA,aANF;AAAA,UAOEC,sBAPF,gBAOEA,sBAPF;AAAA,UAQEC,eARF,gBAQEA,eARF;AAAA,UASEC,kBATF,gBASEA,kBATF;AAAA,UAUEb,sBAVF,gBAUEA,sBAVF;AAAA,UAWEc,4BAXF,gBAWEA,4BAXF;AAAA,UAYEb,cAZF,gBAYEA,cAZF;;AAcA,iBAQIH,aAAa,IAAI,EARrB;AAAA,sCACEiB,eADF;AAAA,UACEA,eADF,qCACoB,EADpB;AAAA,qCAEEC,cAFF;AAAA,UAEEA,cAFF,oCAEmB,EAFnB;AAAA,6BAGEC,MAHF;AAAA,UAGEA,MAHF,4BAGW,EAHX;AAAA,uCAIEC,mBAJF;AAAA,UAIEA,mBAJF,sCAIwB,EAJxB;AAAA,gCAKEC,SALF;AAAA,UAKEA,SALF,+BAKc,EALd;AAAA,iCAMEC,UANF;AAAA,UAMEA,UANF,gCAMe,EANf;AAAA,uCAOErB,mBAPF;AAAA,UAOEA,mBAPF,sCAOwB,EAPxB;;AASA,kBAAmGJ,KAAK,IAAI,EAA5G;AAAA,UAAQ0B,0BAAR,SAAQA,0BAAR;AAAA,UAAoCC,aAApC,SAAoCA,aAApC;AAAA,UAAmDC,gBAAnD,SAAmDA,gBAAnD;AAAA,UAAqEC,iBAArE,SAAqEA,iBAArE;AAAA,UAAwFC,MAAxF,SAAwFA,MAAxF;;AACA,kBAAyCA,MAAM,IAAI,EAAnD;AAAA,UAAQC,WAAR,SAAQA,WAAR;AAAA,UAAqBC,eAArB,SAAqBA,eAArB;;AACA,UAAMC,WAAW,GAAG,EAApB;AAEA,UAAMC,iBAAiB,GAAG,sCAA0B/B,aAA1B,CAA1B;;AAEA,cAAQH,KAAK,CAACmC,qBAAd;AACE,aAAK,KAAL;AACEF,UAAAA,WAAW,CAACG,QAAZ,GAAuB,KAAvB;AACA;;AACF;AACEH,UAAAA,WAAW,CAACG,QAAZ,GAAuB,QAAvB;AACA;AANJ;;AASA,0BACE;AAAK,QAAA,SAAS,EAAExB,OAAO,CAACyB;AAAxB,sBACE,gCAAC,gBAAD,CAAQ,YAAR;AACE,QAAA,QAAQ,eACN,gCAAC,KAAD;AACE,UAAA,KAAK,EAAErC,KADT;AAEE,UAAA,aAAa,EAAEgB,sBAFjB;AAGE,UAAA,aAAa,EAAEb,aAHjB;AAIE,UAAA,qBAAqB,EAAEW,sBAJzB;AAKE,UAAA,MAAM,EAAE;AACN,wBAAY;AACVM,cAAAA,eAAe,EACbA,eAAe,CAAC9B,QAAhB,IAA4BC,MAAM,CAAC6B,eAAe,CAACkB,KAAjB,CAF1B;AAGVjB,cAAAA,cAAc,EACZA,cAAc,CAAC/B,QAAf,IAA2BC,MAAM,CAAC8B,cAAc,CAACiB,KAAhB,CAJzB;AAKVX,cAAAA,aAAa,EACXL,MAAM,CAAChC,QAAP,IAAmBC,MAAM,CAAC+B,MAAM,CAACgB,KAAR;AANjB,aADN;AASNC,YAAAA,UAAU,EAAE;AACVb,cAAAA,0BAA0B,EACxBH,mBAAmB,CAACjC,QAApB,IAAgCC,MAAM,CAACgC,mBAAmB,CAACe,KAArB,CAF9B;AAGVV,cAAAA,gBAAgB,EAAEJ,SAAS,CAAClC,QAAV,IAAsBC,MAAM,CAACiC,SAAS,CAACc,KAAX,CAHpC;AAIVT,cAAAA,iBAAiB,EACfJ,UAAU,CAACnC,QAAX,IAAuBC,MAAM,CAACkC,UAAU,CAACa,KAAZ;AALrB;AATN;AALV;AAFJ,sBA2BE;AAAK,QAAA,SAAS,EAAE1B,OAAO,CAAC4B;AAAxB,SACGd,0BAA0B,iBACzB,gCAAC,wBAAD;AAAgB,QAAA,KAAK,EAAEH,mBAAmB,CAACe,KAA3C;AAAkD,QAAA,SAAS,EAAE1B,OAAO,CAACU;AAArE,sBACE,gCAAC,wBAAD;AACE,QAAA,MAAM,EAAEtB,KAAK,CAACuB,mBAAN,IAA6B,EADvC;AAEE,QAAA,QAAQ,EAAEJ,4BAFZ;AAGE,QAAA,YAAY,EAAEN,YAHhB;AAIE,QAAA,QAAQ,EAAE,KAJZ;AAKE,QAAA,WAAW,EAAEoB,WALf;AAME,QAAA,UAAU,EAAEJ;AANd,QADF,CAFJ,EAaGF,aAAa,iBACZ,gCAAC,wBAAD;AAAgB,QAAA,KAAK,EAAEL,MAAM,CAACgB,KAA9B;AAAqC,QAAA,SAAS,EAAE1B,OAAO,CAACU;AAAxD,sBACE,gCAAC,wBAAD;AACE,QAAA,MAAM,EAAEtB,KAAK,CAACsB,MAAN,IAAgB,EAD1B;AAEE,QAAA,QAAQ,EAAEL,eAFZ;AAGE,QAAA,YAAY,EAAEJ,YAHhB;AAIE,QAAA,QAAQ,EAAE,KAJZ;AAKE,QAAA,WAAW,EAAEoB,WALf;AAME,QAAA,UAAU,EAAEJ;AANd,QADF,CAdJ,EA0BGD,gBAAgB,iBACf,gCAAC,wBAAD;AACE,QAAA,KAAK,EAAEJ,SAAS,CAACc,KADnB;AAEE,QAAA,SAAS,EAAE1B,OAAO,CAACU;AAFrB,sBAIE,gCAAC,wBAAD;AACE,QAAA,MAAM,EAAEtB,KAAK,CAACwB,SAAN,IAAmB,EAD7B;AAEE,QAAA,QAAQ,EAAEN,kBAFZ;AAGE,QAAA,YAAY,EAAEL,YAHhB;AAIE,QAAA,WAAW,EAAEoB,WAJf;AAKE,QAAA,UAAU,EAAEJ;AALd,QAJF,CA3BJ,eAyCE;AAAK,QAAA,SAAS,EAAE,4BAAWjB,OAAO,CAAC0B,KAAnB,EAA0B1B,OAAO,CAAC6B,aAAlC;AAAhB,sBACE,gCAAC,sBAAD;AAAY,QAAA,SAAS,EAAE7B,OAAO,CAAC8B,UAA/B;AAA2C,QAAA,OAAO,EAAC;AAAnD,0BADF,eAIE,gCAAC,mBAAD;AACE,QAAA,OAAO,EAAE;AAAEC,UAAAA,OAAO,EAAE/B,OAAO,CAAC+B;AAAnB,SADX;AAEE,QAAA,oBAAoB,MAFtB;AAGE,QAAA,oBAAoB,MAHtB;AAIE,QAAA,SAAS,EAAE,MAJb;AAKE,QAAA,KAAK,EAAET;AALT,sBAOE,gCAAC,gBAAD;AAAM,QAAA,QAAQ,EAAE,OAAhB;AAAyB,QAAA,KAAK,EAAE,SAAhC;AAA2C,QAAA,KAAK,EAAE;AAAE,mBAAO;AAAT;AAAlD,QAPF,CAJF,CAzCF,EAuDGH,WAAW,iBAAI;AAAK,QAAA,SAAS,EAAEnB,OAAO,CAACgC;AAAxB,SAAoCb,WAApC,CAvDlB,EAwDGC,eAAe,iBAAI;AAAK,QAAA,SAAS,EAAEpB,OAAO,CAACgC;AAAxB,SAAoCZ,eAApC,CAxDtB,eA0DE,gCAAC,0BAAD;AACE,QAAA,YAAY,EAAEhC,KAAK,CAAC6C,YADtB;AAEE,QAAA,WAAW,EAAE7C,KAAK,CAAC8C,WAFrB;AAGE,QAAA,YAAY,EAAE9C,KAAK,CAAC+C,YAHtB;AAIE,QAAA,WAAW,EAAE/C,KAAK,CAACgD,WAJrB;AAKE,QAAA,oBAAoB,EAAE,8BAAAtD,KAAK;AAAA,iBACzB,MAAI,CAACuD,iBAAL,CAAuB,SAAvB,EAAkCvD,KAAlC,CADyB;AAAA,SAL7B;AAQE,QAAA,oBAAoB,EAAE,8BAAAA,KAAK;AAAA,iBACzB,MAAI,CAACuD,iBAAL,CAAuB,SAAvB,EAAkCvD,KAAlC,CADyB;AAAA;AAR7B,QA1DF,eAuEE,gCAAC,4BAAD;AACE,QAAA,UAAU,EAAEM,KAAK,CAACC,UADpB;AAEE,QAAA,QAAQ,EAAED,KAAK,CAACkD,QAFlB;AAGE,QAAA,eAAe,EAAElD,KAAK,CAACoB,eAHzB;AAIE,QAAA,YAAY,EAAEpB,KAAK,CAAC6C,YAJtB;AAKE,QAAA,YAAY,EAAE7C,KAAK,CAAC+C,YALtB;AAME,QAAA,sBAAsB,EAAE1C,sBAN1B;AAOE,QAAA,cAAc,EAAEC,cAPlB;AAQE,QAAA,aAAa,EAAES,aARjB;AASE,QAAA,MAAM,EAAEf,KAAK,CAACE,MAThB;AAUE,QAAA,WAAW,EAAEF,KAAK,CAACmD,WAVrB;AAWE,QAAA,0BAA0B,EAAE/C,mBAAmB,CAACK;AAXlD,QAvEF,EAqFGT,KAAK,CAACkD,QAAN,iBACC,0DACE,gCAAC,sBAAD;AAAY,QAAA,SAAS,EAAEtC,OAAO,CAAC0B,KAA/B;AAAsC,QAAA,OAAO,EAAC;AAA9C,4BADF,eAKE;AAAK,QAAA,SAAS,EAAE1B,OAAO,CAACX;AAAxB,sBACE,gCAAC,yBAAD;AACE,QAAA,GAAG,EAAC,sBADN;AAEE,QAAA,KAAK,EAAC,OAFR;AAGE,QAAA,KAAK,EAAED,KAAK,CAACC,UAAN,CAAiBmD,KAH1B;AAIE,QAAA,GAAG,EAAE,CAJP;AAKE,QAAA,QAAQ,EAAE,kBAACC,CAAD,EAAIvD,KAAJ;AAAA,iBAAc,MAAI,CAACwD,6BAAL,CAAmCxD,KAAnC,EAA0C,OAA1C,CAAd;AAAA,SALZ;AAME,QAAA,yBAAyB,MAN3B;AAOE,QAAA,SAAS,EAAEc,OAAO,CAAC2C;AAPrB,QADF,eAUE,gCAAC,yBAAD;AACE,QAAA,GAAG,EAAC,uBADN;AAEE,QAAA,KAAK,EAAC,QAFR;AAGE,QAAA,KAAK,EAAEvD,KAAK,CAACC,UAAN,CAAiBuD,MAH1B;AAIE,QAAA,GAAG,EAAE,CAJP;AAKE,QAAA,QAAQ,EAAE,kBAACH,CAAD,EAAIvD,KAAJ;AAAA,iBAAc,MAAI,CAACwD,6BAAL,CAAmCxD,KAAnC,EAA0C,QAA1C,CAAd;AAAA,SALZ;AAME,QAAA,yBAAyB,MAN3B;AAOE,QAAA,SAAS,EAAEc,OAAO,CAAC2C;AAPrB,QAVF,CALF,CAtFJ,CA3BF,CADF,CADF;AAkJD;;;EA5NuBE,kBAAMC,S;;;;AA+NhC,IAAMC,MAAM,GAAG,SAATA,MAAS,CAAAC,KAAK;AAAA,SAAK;AACvBvB,IAAAA,IAAI,EAAE;AACJwB,MAAAA,SAAS,EAAED,KAAK,CAACE,OAAN,CAAcC,IAAd,GAAqB;AAD5B,KADiB;AAIvBC,IAAAA,SAAS,EAAE;AACTC,MAAAA,OAAO,EAAE,MADA;AAETJ,MAAAA,SAAS,EAAED,KAAK,CAACE,OAAN,CAAcC;AAFhB,KAJY;AAQvB9D,IAAAA,UAAU,EAAE;AACVgE,MAAAA,OAAO,EAAE;AADC,KARW;AAWvBV,IAAAA,KAAK,EAAE;AACLW,MAAAA,IAAI,EAAE,CADD;AAELd,MAAAA,KAAK,EAAE;AAFF,KAXgB;AAevBd,IAAAA,KAAK,EAAE;AACLuB,MAAAA,SAAS,EAAED,KAAK,CAACE,OAAN,CAAcC,IAAd,GAAqB;AAD3B,KAfgB;AAkBvBzC,IAAAA,MAAM,EAAE;AACN6C,MAAAA,UAAU,EAAEP,KAAK,CAACE,OAAN,CAAcC,IAAd,GAAqB,CAD3B;AAENX,MAAAA,KAAK,EAAE;AAFD,KAlBe;AAsBvBV,IAAAA,UAAU,EAAE;AACV0B,MAAAA,WAAW,EAAE;AADH,KAtBW;AAyBvB5B,IAAAA,OAAO,EAAE;AACP6B,MAAAA,YAAY,EAAET,KAAK,CAACE,OAAN,CAAcC,IAAd,GAAqB;AAD5B,KAzBc;AA4BvBO,IAAAA,aAAa,EAAE;AACbC,MAAAA,cAAc,EAAE,eADH;AAEbC,MAAAA,MAAM,EAAE;AAFK,KA5BQ;AAgCvB/B,IAAAA,aAAa,EAAE;AACbwB,MAAAA,OAAO,EAAE,MADI;AAEbQ,MAAAA,UAAU,EAAE;AAFC,KAhCQ;AAoCvB9B,IAAAA,OAAO,EAAE;AACP+B,MAAAA,QAAQ,EAAE,MADH;AAEPC,MAAAA,UAAU,EAAE,KAFL;AAGPC,MAAAA,QAAQ,EAAE;AAHH,KApCc;AAyCvBhC,IAAAA,SAAS,EAAE;AACT8B,MAAAA,QAAQ,EAAE,MADD;AAEThF,MAAAA,KAAK,EAAE,KAFE;AAGTmF,MAAAA,OAAO,EAAE;AAHA;AAzCY,GAAL;AAAA,CAApB;;AAgDArF,IAAI,CAACsF,SAAL,GAAiB;AACflE,EAAAA,OAAO,EAAEmE,sBAAUC,MAAV,CAAiBC,UADX;AAEf9E,EAAAA,aAAa,EAAE4E,sBAAUC,MAFV;AAGfhF,EAAAA,KAAK,EAAE+E,sBAAUC,MAAV,CAAiBC,UAHT;AAIfpE,EAAAA,YAAY,EAAEkE,sBAAUG,KAAV,CAAgB;AAC5BC,IAAAA,GAAG,EAAEJ,sBAAUK,IADa;AAE5B,cAAQL,sBAAUK;AAFU,GAAhB,CAJC;AAQfrE,EAAAA,aAAa,EAAEgE,sBAAUK,IAAV,CAAeH,UARf;AASftF,EAAAA,cAAc,EAAEoF,sBAAUK,IAAV,CAAeH,UAThB;AAUfhE,EAAAA,eAAe,EAAE8D,sBAAUK,IAAV,CAAeH,UAVjB;AAWf5E,EAAAA,sBAAsB,EAAE0E,sBAAUK,IAAV,CAAeH,UAXxB;AAYf3E,EAAAA,cAAc,EAAEyE,sBAAUK,IAAV,CAAeH,UAZhB;AAafjE,EAAAA,sBAAsB,EAAE+D,sBAAUK,IAAV,CAAeH,UAbxB;AAcf/D,EAAAA,kBAAkB,EAAE6D,sBAAUK,IAAV,CAAeH,UAdpB;AAefnE,EAAAA,sBAAsB,EAAEiE,sBAAUK,IAAV,CAAeH,UAfxB;AAgBf9D,EAAAA,4BAA4B,EAAE4D,sBAAUK,IAAV,CAAeH;AAhB9B,CAAjB;;eAmBe,wBAAWtB,MAAX,EAAmBnE,IAAnB,C","sourcesContent":["import React from 'react';\nimport {\n settings,\n layout,\n InputContainer,\n NumberTextField\n} from '@pie-lib/config-ui';\nimport PropTypes from 'prop-types';\nimport EditableHtml from '@pie-lib/editable-html';\nimport { withStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Info from '@material-ui/icons/Info';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport HotspotPalette from './hotspot-palette';\nimport HotspotContainer from './hotspot-container';\nimport classNames from 'classnames';\nimport {\n updateImageDimensions,\n generateValidationMessage,\n getUpdatedShapes,\n getAllShapes,\n groupShapes\n} from './utils';\n\nconst { Panel, toggle } = settings;\n\nexport class Root extends React.Component {\n handleColorChange = (fieldType, color) => {\n const { onColorChanged } = this.props;\n const cType = `${fieldType}Color`;\n\n onColorChanged(cType, color);\n };\n\n handleOnUpdateImageDimensions = (value, resizeType) => {\n const {\n model: { dimensions, shapes },\n configuration: { preserveAspectRatio = {} },\n onUpdateImageDimension,\n onUpdateShapes,\n } = this.props;\n\n const nextImageDimensions = { ...dimensions, [resizeType]: value };\n\n // if preserveAspectRatio.enabled, updateImageDimensions function makes sure aspect ratio is kept\n const updatedDimensions = updateImageDimensions(\n dimensions,\n nextImageDimensions,\n preserveAspectRatio.enabled,\n resizeType\n );\n // transform shapes map into shapes array\n const shapesArray = getAllShapes(shapes);\n // transform all the shapes to fit the re-sized image\n const updatedShapes = getUpdatedShapes(dimensions, updatedDimensions, shapesArray);\n // transform shapes array back into shapes map\n\n onUpdateShapes(groupShapes(updatedShapes));\n onUpdateImageDimension(updatedDimensions);\n };\n\n render() {\n const {\n classes,\n configuration,\n model,\n imageSupport,\n onConfigurationChanged,\n onImageUpload,\n onModelChangedByConfig,\n onPromptChanged,\n onRationaleChanged,\n onUpdateImageDimension,\n onTeacherInstructionsChanged,\n onUpdateShapes\n } = this.props;\n const {\n multipleCorrect = {},\n partialScoring = {},\n prompt = {},\n teacherInstructions = {},\n rationale = {},\n spellCheck = {},\n preserveAspectRatio = {}\n } = configuration || {};\n const { teacherInstructionsEnabled, promptEnabled, rationaleEnabled, spellCheckEnabled, errors } = model || {};\n const { shapesError, selectionsError } = errors || {};\n const toolbarOpts = {};\n\n const validationMessage = generateValidationMessage(configuration);\n\n switch (model.toolbarEditorPosition) {\n case 'top':\n toolbarOpts.position = 'top';\n break;\n default:\n toolbarOpts.position = 'bottom';\n break;\n }\n\n return (\n <div className={classes.base}>\n <layout.ConfigLayout\n settings={\n <Panel\n model={model}\n onChangeModel={onModelChangedByConfig}\n configuration={configuration}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n 'Settings': {\n multipleCorrect:\n multipleCorrect.settings && toggle(multipleCorrect.label),\n partialScoring:\n partialScoring.settings && toggle(partialScoring.label),\n promptEnabled:\n prompt.settings && toggle(prompt.label),\n },\n Properties: {\n teacherInstructionsEnabled:\n teacherInstructions.settings && toggle(teacherInstructions.label),\n rationaleEnabled: rationale.settings && toggle(rationale.label),\n spellCheckEnabled:\n spellCheck.settings && toggle(spellCheck.label),\n }\n }}\n />\n }\n >\n <div className={classes.regular}>\n {teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className={classes.prompt}>\n <EditableHtml\n markup={model.teacherInstructions || ''}\n onChange={onTeacherInstructionsChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n />\n </InputContainer>\n )}\n {promptEnabled && (\n <InputContainer label={prompt.label} className={classes.prompt}>\n <EditableHtml\n markup={model.prompt || ''}\n onChange={onPromptChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n />\n </InputContainer>\n )}\n\n {rationaleEnabled && (\n <InputContainer\n label={rationale.label}\n className={classes.prompt}\n >\n <EditableHtml\n markup={model.rationale || ''}\n onChange={onRationaleChanged}\n imageSupport={imageSupport}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n />\n </InputContainer>\n )}\n\n <div className={classNames(classes.label, classes.flexContainer)}>\n <Typography className={classes.subheading} variant=\"subheading\">\n Define Hotspot\n </Typography>\n <Tooltip\n classes={{ tooltip: classes.tooltip }}\n disableFocusListener\n disableTouchListener\n placement={'left'}\n title={validationMessage}\n >\n <Info fontSize={'small'} color={'primary'} style={{ float: 'right' }}/>\n </Tooltip>\n </div>\n {shapesError && <div className={classes.errorText}>{shapesError}</div>}\n {selectionsError && <div className={classes.errorText}>{selectionsError}</div>}\n\n <HotspotPalette\n hotspotColor={model.hotspotColor}\n hotspotList={model.hotspotList}\n outlineColor={model.outlineColor}\n outlineList={model.outlineList}\n onHotspotColorChange={color =>\n this.handleColorChange('hotspot', color)\n }\n onOutlineColorChange={color =>\n this.handleColorChange('outline', color)\n }\n />\n\n <HotspotContainer\n dimensions={model.dimensions}\n imageUrl={model.imageUrl}\n multipleCorrect={model.multipleCorrect}\n hotspotColor={model.hotspotColor}\n outlineColor={model.outlineColor}\n onUpdateImageDimension={onUpdateImageDimension}\n onUpdateShapes={onUpdateShapes}\n onImageUpload={onImageUpload}\n shapes={model.shapes}\n strokeWidth={model.strokeWidth}\n preserveAspectRatioEnabled={preserveAspectRatio.enabled}\n />\n\n {model.imageUrl && (\n <div>\n <Typography className={classes.label} variant=\"subheading\">\n Image Dimensions\n </Typography>\n\n <div className={classes.dimensions}>\n <NumberTextField\n key=\"hotspot-manual-width\"\n label=\"Width\"\n value={model.dimensions.width}\n min={0}\n onChange={(e, value) => this.handleOnUpdateImageDimensions(value, 'width')}\n showErrorWhenOutsideRange\n className={classes.field}\n />\n <NumberTextField\n key=\"hotspot-manual-height\"\n label=\"Height\"\n value={model.dimensions.height}\n min={0}\n onChange={(e, value) => this.handleOnUpdateImageDimensions(value, 'height')}\n showErrorWhenOutsideRange\n className={classes.field}\n />\n </div>\n </div>\n )}\n </div>\n </layout.ConfigLayout>\n </div>\n );\n }\n}\n\nconst styles = theme => ({\n base: {\n marginTop: theme.spacing.unit * 3\n },\n container: {\n display: 'flex',\n marginTop: theme.spacing.unit\n },\n dimensions: {\n display: 'flex'\n },\n field: {\n flex: 1,\n width: '90%'\n },\n label: {\n marginTop: theme.spacing.unit * 4\n },\n prompt: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%'\n },\n subheading: {\n marginRight: '5px'\n },\n regular: {\n marginBottom: theme.spacing.unit * 3\n },\n switchElement: {\n justifyContent: 'space-between',\n margin: 0\n },\n flexContainer: {\n display: 'flex',\n alignItems: 'center'\n },\n tooltip: {\n fontSize: '12px',\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n errorText: {\n fontSize: '12px',\n color: 'red',\n padding: '5px 0'\n }\n});\n\nRoot.propTypes = {\n classes: PropTypes.object.isRequired,\n configuration: PropTypes.object,\n model: PropTypes.object.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func,\n delete: PropTypes.func\n }),\n onImageUpload: PropTypes.func.isRequired,\n onColorChanged: PropTypes.func.isRequired,\n onPromptChanged: PropTypes.func.isRequired,\n onUpdateImageDimension: PropTypes.func.isRequired,\n onUpdateShapes: PropTypes.func.isRequired,\n onModelChangedByConfig: PropTypes.func.isRequired,\n onRationaleChanged: PropTypes.func.isRequired,\n onConfigurationChanged: PropTypes.func.isRequired,\n onTeacherInstructionsChanged: PropTypes.func.isRequired,\n};\n\nexport default withStyles(styles)(Root);\n"],"file":"root.js"}
1
+ {"version":3,"sources":["../src/root.jsx"],"names":["Panel","settings","toggle","Root","fieldType","color","onColorChanged","props","cType","value","resizeType","model","dimensions","shapes","configuration","preserveAspectRatio","onUpdateImageDimension","onUpdateShapes","nextImageDimensions","updatedDimensions","enabled","shapesArray","updatedShapes","classes","imageSupport","onConfigurationChanged","onImageUpload","onModelChangedByConfig","onPromptChanged","onRationaleChanged","onTeacherInstructionsChanged","multipleCorrect","partialScoring","prompt","teacherInstructions","rationale","spellCheck","maxImageWidth","maxImageHeight","teacherInstructionsEnabled","promptEnabled","rationaleEnabled","spellCheckEnabled","errors","shapesError","selectionsError","toolbarOpts","validationMessage","defaultImageMaxWidth","defaultImageMaxHeight","toolbarEditorPosition","position","base","label","Properties","regular","flexContainer","subheading","tooltip","errorText","hotspotColor","hotspotList","outlineColor","outlineList","handleColorChange","imageUrl","strokeWidth","width","e","handleOnUpdateImageDimensions","field","height","React","Component","styles","theme","marginTop","spacing","unit","container","display","flex","paddingTop","marginRight","marginBottom","switchElement","justifyContent","margin","alignItems","fontSize","whiteSpace","maxWidth","padding","propTypes","PropTypes","object","isRequired","shape","add","func"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAMA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AAQA,IAAQA,KAAR,GAA0BC,kBAA1B,CAAQD,KAAR;AAAA,IAAeE,MAAf,GAA0BD,kBAA1B,CAAeC,MAAf;;IAEaC,I;;;;;;;;;;;;;;;0GACS,UAACC,SAAD,EAAYC,KAAZ,EAAsB;AACxC,UAAQC,cAAR,GAA2B,MAAKC,KAAhC,CAAQD,cAAR;AACA,UAAME,KAAK,aAAMJ,SAAN,UAAX;AAEAE,MAAAA,cAAc,CAACE,KAAD,EAAQH,KAAR,CAAd;AACD,K;sHAE+B,UAACI,KAAD,EAAQC,UAAR,EAAuB;AACrD,wBAKI,MAAKH,KALT;AAAA,0CACEI,KADF;AAAA,UACWC,UADX,qBACWA,UADX;AAAA,UACuBC,MADvB,qBACuBA,MADvB;AAAA,8CAEEC,aAFF,CAEmBC,mBAFnB;AAAA,UAEmBA,mBAFnB,sCAEyC,EAFzC;AAAA,UAGEC,sBAHF,eAGEA,sBAHF;AAAA,UAIEC,cAJF,eAIEA,cAJF;;AAOA,UAAMC,mBAAmB,mCAAQN,UAAR,4CAAqBF,UAArB,EAAkCD,KAAlC,EAAzB,CARqD,CAUrD;;;AACA,UAAMU,iBAAiB,GAAG,kCACxBP,UADwB,EAExBM,mBAFwB,EAGxBH,mBAAmB,CAACK,OAHI,EAIxBV,UAJwB,CAA1B,CAXqD,CAiBrD;;AACA,UAAMW,WAAW,GAAG,yBAAaR,MAAb,CAApB,CAlBqD,CAmBrD;;AACA,UAAMS,aAAa,GAAG,6BAAiBV,UAAjB,EAA6BO,iBAA7B,EAAgDE,WAAhD,CAAtB,CApBqD,CAqBrD;;AAEAJ,MAAAA,cAAc,CAAC,wBAAYK,aAAZ,CAAD,CAAd;AACAN,MAAAA,sBAAsB,CAACG,iBAAD,CAAtB;AACD,K;;;;;;WAED,kBAAS;AAAA;;AACP,yBAaI,KAAKZ,KAbT;AAAA,UACEgB,OADF,gBACEA,OADF;AAAA,UAEET,aAFF,gBAEEA,aAFF;AAAA,UAGEH,KAHF,gBAGEA,KAHF;AAAA,UAIEa,YAJF,gBAIEA,YAJF;AAAA,UAKEC,sBALF,gBAKEA,sBALF;AAAA,UAMEC,aANF,gBAMEA,aANF;AAAA,UAOEC,sBAPF,gBAOEA,sBAPF;AAAA,UAQEC,eARF,gBAQEA,eARF;AAAA,UASEC,kBATF,gBASEA,kBATF;AAAA,UAUEb,sBAVF,gBAUEA,sBAVF;AAAA,UAWEc,4BAXF,gBAWEA,4BAXF;AAAA,UAYEb,cAZF,gBAYEA,cAZF;;AAcA,iBAUIH,aAAa,IAAI,EAVrB;AAAA,sCACEiB,eADF;AAAA,UACEA,eADF,qCACoB,EADpB;AAAA,qCAEEC,cAFF;AAAA,UAEEA,cAFF,oCAEmB,EAFnB;AAAA,6BAGEC,MAHF;AAAA,UAGEA,MAHF,4BAGW,EAHX;AAAA,uCAIEC,mBAJF;AAAA,UAIEA,mBAJF,sCAIwB,EAJxB;AAAA,gCAKEC,SALF;AAAA,UAKEA,SALF,+BAKc,EALd;AAAA,iCAMEC,UANF;AAAA,UAMEA,UANF,gCAMe,EANf;AAAA,uCAOErB,mBAPF;AAAA,UAOEA,mBAPF,sCAOwB,EAPxB;AAAA,oCAQEsB,aARF;AAAA,UAQEA,aARF,mCAQkB,EARlB;AAAA,qCASEC,cATF;AAAA,UASEA,cATF,oCASmB,EATnB;;AAWA,kBAAmG3B,KAAK,IAAI,EAA5G;AAAA,UAAQ4B,0BAAR,SAAQA,0BAAR;AAAA,UAAoCC,aAApC,SAAoCA,aAApC;AAAA,UAAmDC,gBAAnD,SAAmDA,gBAAnD;AAAA,UAAqEC,iBAArE,SAAqEA,iBAArE;AAAA,UAAwFC,MAAxF,SAAwFA,MAAxF;;AACA,kBAAyCA,MAAM,IAAI,EAAnD;AAAA,UAAQC,WAAR,SAAQA,WAAR;AAAA,UAAqBC,eAArB,SAAqBA,eAArB;;AACA,UAAMC,WAAW,GAAG,EAApB;AAEA,UAAMC,iBAAiB,GAAG,sCAA0BjC,aAA1B,CAA1B;AAEA,UAAMkC,oBAAoB,GAAGX,aAAa,IAAIA,aAAa,CAACJ,MAA5D;AACA,UAAMgB,qBAAqB,GAAGX,cAAc,IAAIA,cAAc,CAACL,MAA/D;;AAEA,cAAQtB,KAAK,CAACuC,qBAAd;AACE,aAAK,KAAL;AACEJ,UAAAA,WAAW,CAACK,QAAZ,GAAuB,KAAvB;AACA;;AACF;AACEL,UAAAA,WAAW,CAACK,QAAZ,GAAuB,QAAvB;AACA;AANJ;;AASA,0BACE;AAAK,QAAA,SAAS,EAAE5B,OAAO,CAAC6B;AAAxB,sBACE,gCAAC,gBAAD,CAAQ,YAAR;AACE,QAAA,QAAQ,eACN,gCAAC,KAAD;AACE,UAAA,KAAK,EAAEzC,KADT;AAEE,UAAA,aAAa,EAAEgB,sBAFjB;AAGE,UAAA,aAAa,EAAEb,aAHjB;AAIE,UAAA,qBAAqB,EAAEW,sBAJzB;AAKE,UAAA,MAAM,EAAE;AACN,wBAAY;AACVM,cAAAA,eAAe,EACbA,eAAe,CAAC9B,QAAhB,IAA4BC,MAAM,CAAC6B,eAAe,CAACsB,KAAjB,CAF1B;AAGVrB,cAAAA,cAAc,EACZA,cAAc,CAAC/B,QAAf,IAA2BC,MAAM,CAAC8B,cAAc,CAACqB,KAAhB,CAJzB;AAKVb,cAAAA,aAAa,EACXP,MAAM,CAAChC,QAAP,IAAmBC,MAAM,CAAC+B,MAAM,CAACoB,KAAR;AANjB,aADN;AASNC,YAAAA,UAAU,EAAE;AACVf,cAAAA,0BAA0B,EACxBL,mBAAmB,CAACjC,QAApB,IAAgCC,MAAM,CAACgC,mBAAmB,CAACmB,KAArB,CAF9B;AAGVZ,cAAAA,gBAAgB,EAAEN,SAAS,CAAClC,QAAV,IAAsBC,MAAM,CAACiC,SAAS,CAACkB,KAAX,CAHpC;AAIVX,cAAAA,iBAAiB,EACfN,UAAU,CAACnC,QAAX,IAAuBC,MAAM,CAACkC,UAAU,CAACiB,KAAZ;AALrB;AATN;AALV;AAFJ,sBA2BE;AAAK,QAAA,SAAS,EAAE9B,OAAO,CAACgC;AAAxB,SACGhB,0BAA0B,iBACzB,gCAAC,wBAAD;AAAgB,QAAA,KAAK,EAAEL,mBAAmB,CAACmB,KAA3C;AAAkD,QAAA,SAAS,EAAE9B,OAAO,CAACU;AAArE,sBACE,gCAAC,wBAAD;AACE,QAAA,MAAM,EAAEtB,KAAK,CAACuB,mBAAN,IAA6B,EADvC;AAEE,QAAA,QAAQ,EAAEJ,4BAFZ;AAGE,QAAA,YAAY,EAAEN,YAHhB;AAIE,QAAA,QAAQ,EAAE,KAJZ;AAKE,QAAA,WAAW,EAAEsB,WALf;AAME,QAAA,UAAU,EAAEJ,iBANd;AAOE,QAAA,aAAa,EAAEL,aAAa,IAAIA,aAAa,CAACH,mBAA/B,IAAsDc,oBAPvE;AAQE,QAAA,cAAc,EAAEV,cAAc,IAAIA,cAAc,CAACJ,mBAAjC,IAAwDe;AAR1E,QADF,CAFJ,EAeGT,aAAa,iBACZ,gCAAC,wBAAD;AAAgB,QAAA,KAAK,EAAEP,MAAM,CAACoB,KAA9B;AAAqC,QAAA,SAAS,EAAE9B,OAAO,CAACU;AAAxD,sBACE,gCAAC,wBAAD;AACE,QAAA,MAAM,EAAEtB,KAAK,CAACsB,MAAN,IAAgB,EAD1B;AAEE,QAAA,QAAQ,EAAEL,eAFZ;AAGE,QAAA,YAAY,EAAEJ,YAHhB;AAIE,QAAA,QAAQ,EAAE,KAJZ;AAKE,QAAA,WAAW,EAAEsB,WALf;AAME,QAAA,UAAU,EAAEJ,iBANd;AAOE,QAAA,aAAa,EAAEM,oBAPjB;AAQE,QAAA,cAAc,EAAEC;AARlB,QADF,CAhBJ,EA8BGR,gBAAgB,iBACf,gCAAC,wBAAD;AACE,QAAA,KAAK,EAAEN,SAAS,CAACkB,KADnB;AAEE,QAAA,SAAS,EAAE9B,OAAO,CAACU;AAFrB,sBAIE,gCAAC,wBAAD;AACE,QAAA,MAAM,EAAEtB,KAAK,CAACwB,SAAN,IAAmB,EAD7B;AAEE,QAAA,QAAQ,EAAEN,kBAFZ;AAGE,QAAA,YAAY,EAAEL,YAHhB;AAIE,QAAA,WAAW,EAAEsB,WAJf;AAKE,QAAA,UAAU,EAAEJ,iBALd;AAME,QAAA,aAAa,EAAEL,aAAa,IAAIA,aAAa,CAACF,SAA/B,IAA4Ca,oBAN7D;AAOE,QAAA,cAAc,EAAEV,cAAc,IAAIA,cAAc,CAACH,SAAjC,IAA8Cc;AAPhE,QAJF,CA/BJ,eA+CE;AAAK,QAAA,SAAS,EAAE,4BAAW1B,OAAO,CAAC8B,KAAnB,EAA0B9B,OAAO,CAACiC,aAAlC;AAAhB,sBACE,gCAAC,sBAAD;AAAY,QAAA,SAAS,EAAEjC,OAAO,CAACkC,UAA/B;AAA2C,QAAA,OAAO,EAAC;AAAnD,0BADF,eAIE,gCAAC,mBAAD;AACE,QAAA,OAAO,EAAE;AAAEC,UAAAA,OAAO,EAAEnC,OAAO,CAACmC;AAAnB,SADX;AAEE,QAAA,oBAAoB,MAFtB;AAGE,QAAA,oBAAoB,MAHtB;AAIE,QAAA,SAAS,EAAE,MAJb;AAKE,QAAA,KAAK,EAAEX;AALT,sBAOE,gCAAC,gBAAD;AAAM,QAAA,QAAQ,EAAE,OAAhB;AAAyB,QAAA,KAAK,EAAE,SAAhC;AAA2C,QAAA,KAAK,EAAE;AAAE,mBAAO;AAAT;AAAlD,QAPF,CAJF,CA/CF,EA6DGH,WAAW,iBAAI;AAAK,QAAA,SAAS,EAAErB,OAAO,CAACoC;AAAxB,SAAoCf,WAApC,CA7DlB,EA8DGC,eAAe,iBAAI;AAAK,QAAA,SAAS,EAAEtB,OAAO,CAACoC;AAAxB,SAAoCd,eAApC,CA9DtB,eAgEE,gCAAC,0BAAD;AACE,QAAA,YAAY,EAAElC,KAAK,CAACiD,YADtB;AAEE,QAAA,WAAW,EAAEjD,KAAK,CAACkD,WAFrB;AAGE,QAAA,YAAY,EAAElD,KAAK,CAACmD,YAHtB;AAIE,QAAA,WAAW,EAAEnD,KAAK,CAACoD,WAJrB;AAKE,QAAA,oBAAoB,EAAE,8BAAA1D,KAAK;AAAA,iBACzB,MAAI,CAAC2D,iBAAL,CAAuB,SAAvB,EAAkC3D,KAAlC,CADyB;AAAA,SAL7B;AAQE,QAAA,oBAAoB,EAAE,8BAAAA,KAAK;AAAA,iBACzB,MAAI,CAAC2D,iBAAL,CAAuB,SAAvB,EAAkC3D,KAAlC,CADyB;AAAA;AAR7B,QAhEF,eA6EE,gCAAC,4BAAD;AACE,QAAA,UAAU,EAAEM,KAAK,CAACC,UADpB;AAEE,QAAA,QAAQ,EAAED,KAAK,CAACsD,QAFlB;AAGE,QAAA,eAAe,EAAEtD,KAAK,CAACoB,eAHzB;AAIE,QAAA,YAAY,EAAEpB,KAAK,CAACiD,YAJtB;AAKE,QAAA,YAAY,EAAEjD,KAAK,CAACmD,YALtB;AAME,QAAA,sBAAsB,EAAE9C,sBAN1B;AAOE,QAAA,cAAc,EAAEC,cAPlB;AAQE,QAAA,aAAa,EAAES,aARjB;AASE,QAAA,MAAM,EAAEf,KAAK,CAACE,MAThB;AAUE,QAAA,WAAW,EAAEF,KAAK,CAACuD,WAVrB;AAWE,QAAA,0BAA0B,EAAEnD,mBAAmB,CAACK;AAXlD,QA7EF,EA2FGT,KAAK,CAACsD,QAAN,iBACC,0DACE,gCAAC,sBAAD;AAAY,QAAA,SAAS,EAAE1C,OAAO,CAAC8B,KAA/B;AAAsC,QAAA,OAAO,EAAC;AAA9C,4BADF,eAKE;AAAK,QAAA,SAAS,EAAE9B,OAAO,CAACX;AAAxB,sBACE,gCAAC,yBAAD;AACE,QAAA,GAAG,EAAC,sBADN;AAEE,QAAA,KAAK,EAAC,OAFR;AAGE,QAAA,KAAK,EAAED,KAAK,CAACC,UAAN,CAAiBuD,KAH1B;AAIE,QAAA,GAAG,EAAE,CAJP;AAKE,QAAA,QAAQ,EAAE,kBAACC,CAAD,EAAI3D,KAAJ;AAAA,iBAAc,MAAI,CAAC4D,6BAAL,CAAmC5D,KAAnC,EAA0C,OAA1C,CAAd;AAAA,SALZ;AAME,QAAA,yBAAyB,MAN3B;AAOE,QAAA,SAAS,EAAEc,OAAO,CAAC+C;AAPrB,QADF,eAUE,gCAAC,yBAAD;AACE,QAAA,GAAG,EAAC,uBADN;AAEE,QAAA,KAAK,EAAC,QAFR;AAGE,QAAA,KAAK,EAAE3D,KAAK,CAACC,UAAN,CAAiB2D,MAH1B;AAIE,QAAA,GAAG,EAAE,CAJP;AAKE,QAAA,QAAQ,EAAE,kBAACH,CAAD,EAAI3D,KAAJ;AAAA,iBAAc,MAAI,CAAC4D,6BAAL,CAAmC5D,KAAnC,EAA0C,QAA1C,CAAd;AAAA,SALZ;AAME,QAAA,yBAAyB,MAN3B;AAOE,QAAA,SAAS,EAAEc,OAAO,CAAC+C;AAPrB,QAVF,CALF,CA5FJ,CA3BF,CADF,CADF;AAwJD;;;EAvOuBE,kBAAMC,S;;;;AA0OhC,IAAMC,MAAM,GAAG,SAATA,MAAS,CAAAC,KAAK;AAAA,SAAK;AACvBvB,IAAAA,IAAI,EAAE;AACJwB,MAAAA,SAAS,EAAED,KAAK,CAACE,OAAN,CAAcC,IAAd,GAAqB;AAD5B,KADiB;AAIvBC,IAAAA,SAAS,EAAE;AACTC,MAAAA,OAAO,EAAE,MADA;AAETJ,MAAAA,SAAS,EAAED,KAAK,CAACE,OAAN,CAAcC;AAFhB,KAJY;AAQvBlE,IAAAA,UAAU,EAAE;AACVoE,MAAAA,OAAO,EAAE;AADC,KARW;AAWvBV,IAAAA,KAAK,EAAE;AACLW,MAAAA,IAAI,EAAE,CADD;AAELd,MAAAA,KAAK,EAAE;AAFF,KAXgB;AAevBd,IAAAA,KAAK,EAAE;AACLuB,MAAAA,SAAS,EAAED,KAAK,CAACE,OAAN,CAAcC,IAAd,GAAqB;AAD3B,KAfgB;AAkBvB7C,IAAAA,MAAM,EAAE;AACNiD,MAAAA,UAAU,EAAEP,KAAK,CAACE,OAAN,CAAcC,IAAd,GAAqB,CAD3B;AAENX,MAAAA,KAAK,EAAE;AAFD,KAlBe;AAsBvBV,IAAAA,UAAU,EAAE;AACV0B,MAAAA,WAAW,EAAE;AADH,KAtBW;AAyBvB5B,IAAAA,OAAO,EAAE;AACP6B,MAAAA,YAAY,EAAET,KAAK,CAACE,OAAN,CAAcC,IAAd,GAAqB;AAD5B,KAzBc;AA4BvBO,IAAAA,aAAa,EAAE;AACbC,MAAAA,cAAc,EAAE,eADH;AAEbC,MAAAA,MAAM,EAAE;AAFK,KA5BQ;AAgCvB/B,IAAAA,aAAa,EAAE;AACbwB,MAAAA,OAAO,EAAE,MADI;AAEbQ,MAAAA,UAAU,EAAE;AAFC,KAhCQ;AAoCvB9B,IAAAA,OAAO,EAAE;AACP+B,MAAAA,QAAQ,EAAE,MADH;AAEPC,MAAAA,UAAU,EAAE,KAFL;AAGPC,MAAAA,QAAQ,EAAE;AAHH,KApCc;AAyCvBhC,IAAAA,SAAS,EAAE;AACT8B,MAAAA,QAAQ,EAAE,MADD;AAETpF,MAAAA,KAAK,EAAE,KAFE;AAGTuF,MAAAA,OAAO,EAAE;AAHA;AAzCY,GAAL;AAAA,CAApB;;AAgDAzF,IAAI,CAAC0F,SAAL,GAAiB;AACftE,EAAAA,OAAO,EAAEuE,sBAAUC,MAAV,CAAiBC,UADX;AAEflF,EAAAA,aAAa,EAAEgF,sBAAUC,MAFV;AAGfpF,EAAAA,KAAK,EAAEmF,sBAAUC,MAAV,CAAiBC,UAHT;AAIfxE,EAAAA,YAAY,EAAEsE,sBAAUG,KAAV,CAAgB;AAC5BC,IAAAA,GAAG,EAAEJ,sBAAUK,IADa;AAE5B,cAAQL,sBAAUK;AAFU,GAAhB,CAJC;AAQfzE,EAAAA,aAAa,EAAEoE,sBAAUK,IAAV,CAAeH,UARf;AASf1F,EAAAA,cAAc,EAAEwF,sBAAUK,IAAV,CAAeH,UAThB;AAUfpE,EAAAA,eAAe,EAAEkE,sBAAUK,IAAV,CAAeH,UAVjB;AAWfhF,EAAAA,sBAAsB,EAAE8E,sBAAUK,IAAV,CAAeH,UAXxB;AAYf/E,EAAAA,cAAc,EAAE6E,sBAAUK,IAAV,CAAeH,UAZhB;AAafrE,EAAAA,sBAAsB,EAAEmE,sBAAUK,IAAV,CAAeH,UAbxB;AAcfnE,EAAAA,kBAAkB,EAAEiE,sBAAUK,IAAV,CAAeH,UAdpB;AAefvE,EAAAA,sBAAsB,EAAEqE,sBAAUK,IAAV,CAAeH,UAfxB;AAgBflE,EAAAA,4BAA4B,EAAEgE,sBAAUK,IAAV,CAAeH;AAhB9B,CAAjB;;eAmBe,wBAAWtB,MAAX,EAAmBvE,IAAnB,C","sourcesContent":["import React from 'react';\nimport {\n settings,\n layout,\n InputContainer,\n NumberTextField\n} from '@pie-lib/config-ui';\nimport PropTypes from 'prop-types';\nimport EditableHtml from '@pie-lib/editable-html';\nimport { withStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Info from '@material-ui/icons/Info';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport HotspotPalette from './hotspot-palette';\nimport HotspotContainer from './hotspot-container';\nimport classNames from 'classnames';\nimport {\n updateImageDimensions,\n generateValidationMessage,\n getUpdatedShapes,\n getAllShapes,\n groupShapes\n} from './utils';\n\nconst { Panel, toggle } = settings;\n\nexport class Root extends React.Component {\n handleColorChange = (fieldType, color) => {\n const { onColorChanged } = this.props;\n const cType = `${fieldType}Color`;\n\n onColorChanged(cType, color);\n };\n\n handleOnUpdateImageDimensions = (value, resizeType) => {\n const {\n model: { dimensions, shapes },\n configuration: { preserveAspectRatio = {} },\n onUpdateImageDimension,\n onUpdateShapes,\n } = this.props;\n\n const nextImageDimensions = { ...dimensions, [resizeType]: value };\n\n // if preserveAspectRatio.enabled, updateImageDimensions function makes sure aspect ratio is kept\n const updatedDimensions = updateImageDimensions(\n dimensions,\n nextImageDimensions,\n preserveAspectRatio.enabled,\n resizeType\n );\n // transform shapes map into shapes array\n const shapesArray = getAllShapes(shapes);\n // transform all the shapes to fit the re-sized image\n const updatedShapes = getUpdatedShapes(dimensions, updatedDimensions, shapesArray);\n // transform shapes array back into shapes map\n\n onUpdateShapes(groupShapes(updatedShapes));\n onUpdateImageDimension(updatedDimensions);\n };\n\n render() {\n const {\n classes,\n configuration,\n model,\n imageSupport,\n onConfigurationChanged,\n onImageUpload,\n onModelChangedByConfig,\n onPromptChanged,\n onRationaleChanged,\n onUpdateImageDimension,\n onTeacherInstructionsChanged,\n onUpdateShapes\n } = this.props;\n const {\n multipleCorrect = {},\n partialScoring = {},\n prompt = {},\n teacherInstructions = {},\n rationale = {},\n spellCheck = {},\n preserveAspectRatio = {},\n maxImageWidth = {},\n maxImageHeight = {}\n } = configuration || {};\n const { teacherInstructionsEnabled, promptEnabled, rationaleEnabled, spellCheckEnabled, errors } = model || {};\n const { shapesError, selectionsError } = errors || {};\n const toolbarOpts = {};\n\n const validationMessage = generateValidationMessage(configuration);\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n\n switch (model.toolbarEditorPosition) {\n case 'top':\n toolbarOpts.position = 'top';\n break;\n default:\n toolbarOpts.position = 'bottom';\n break;\n }\n\n return (\n <div className={classes.base}>\n <layout.ConfigLayout\n settings={\n <Panel\n model={model}\n onChangeModel={onModelChangedByConfig}\n configuration={configuration}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n 'Settings': {\n multipleCorrect:\n multipleCorrect.settings && toggle(multipleCorrect.label),\n partialScoring:\n partialScoring.settings && toggle(partialScoring.label),\n promptEnabled:\n prompt.settings && toggle(prompt.label),\n },\n Properties: {\n teacherInstructionsEnabled:\n teacherInstructions.settings && toggle(teacherInstructions.label),\n rationaleEnabled: rationale.settings && toggle(rationale.label),\n spellCheckEnabled:\n spellCheck.settings && toggle(spellCheck.label),\n }\n }}\n />\n }\n >\n <div className={classes.regular}>\n {teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className={classes.prompt}>\n <EditableHtml\n markup={model.teacherInstructions || ''}\n onChange={onTeacherInstructionsChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={maxImageWidth && maxImageWidth.teacherInstructions || defaultImageMaxWidth}\n maxImageHeight={maxImageHeight && maxImageHeight.teacherInstructions || defaultImageMaxHeight}\n />\n </InputContainer>\n )}\n {promptEnabled && (\n <InputContainer label={prompt.label} className={classes.prompt}>\n <EditableHtml\n markup={model.prompt || ''}\n onChange={onPromptChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={defaultImageMaxWidth}\n maxImageHeight={defaultImageMaxHeight}\n />\n </InputContainer>\n )}\n\n {rationaleEnabled && (\n <InputContainer\n label={rationale.label}\n className={classes.prompt}\n >\n <EditableHtml\n markup={model.rationale || ''}\n onChange={onRationaleChanged}\n imageSupport={imageSupport}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={maxImageWidth && maxImageWidth.rationale || defaultImageMaxWidth}\n maxImageHeight={maxImageHeight && maxImageHeight.rationale || defaultImageMaxHeight}\n />\n </InputContainer>\n )}\n\n <div className={classNames(classes.label, classes.flexContainer)}>\n <Typography className={classes.subheading} variant=\"subheading\">\n Define Hotspot\n </Typography>\n <Tooltip\n classes={{ tooltip: classes.tooltip }}\n disableFocusListener\n disableTouchListener\n placement={'left'}\n title={validationMessage}\n >\n <Info fontSize={'small'} color={'primary'} style={{ float: 'right' }}/>\n </Tooltip>\n </div>\n {shapesError && <div className={classes.errorText}>{shapesError}</div>}\n {selectionsError && <div className={classes.errorText}>{selectionsError}</div>}\n\n <HotspotPalette\n hotspotColor={model.hotspotColor}\n hotspotList={model.hotspotList}\n outlineColor={model.outlineColor}\n outlineList={model.outlineList}\n onHotspotColorChange={color =>\n this.handleColorChange('hotspot', color)\n }\n onOutlineColorChange={color =>\n this.handleColorChange('outline', color)\n }\n />\n\n <HotspotContainer\n dimensions={model.dimensions}\n imageUrl={model.imageUrl}\n multipleCorrect={model.multipleCorrect}\n hotspotColor={model.hotspotColor}\n outlineColor={model.outlineColor}\n onUpdateImageDimension={onUpdateImageDimension}\n onUpdateShapes={onUpdateShapes}\n onImageUpload={onImageUpload}\n shapes={model.shapes}\n strokeWidth={model.strokeWidth}\n preserveAspectRatioEnabled={preserveAspectRatio.enabled}\n />\n\n {model.imageUrl && (\n <div>\n <Typography className={classes.label} variant=\"subheading\">\n Image Dimensions\n </Typography>\n\n <div className={classes.dimensions}>\n <NumberTextField\n key=\"hotspot-manual-width\"\n label=\"Width\"\n value={model.dimensions.width}\n min={0}\n onChange={(e, value) => this.handleOnUpdateImageDimensions(value, 'width')}\n showErrorWhenOutsideRange\n className={classes.field}\n />\n <NumberTextField\n key=\"hotspot-manual-height\"\n label=\"Height\"\n value={model.dimensions.height}\n min={0}\n onChange={(e, value) => this.handleOnUpdateImageDimensions(value, 'height')}\n showErrorWhenOutsideRange\n className={classes.field}\n />\n </div>\n </div>\n )}\n </div>\n </layout.ConfigLayout>\n </div>\n );\n }\n}\n\nconst styles = theme => ({\n base: {\n marginTop: theme.spacing.unit * 3\n },\n container: {\n display: 'flex',\n marginTop: theme.spacing.unit\n },\n dimensions: {\n display: 'flex'\n },\n field: {\n flex: 1,\n width: '90%'\n },\n label: {\n marginTop: theme.spacing.unit * 4\n },\n prompt: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%'\n },\n subheading: {\n marginRight: '5px'\n },\n regular: {\n marginBottom: theme.spacing.unit * 3\n },\n switchElement: {\n justifyContent: 'space-between',\n margin: 0\n },\n flexContainer: {\n display: 'flex',\n alignItems: 'center'\n },\n tooltip: {\n fontSize: '12px',\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n errorText: {\n fontSize: '12px',\n color: 'red',\n padding: '5px 0'\n }\n});\n\nRoot.propTypes = {\n classes: PropTypes.object.isRequired,\n configuration: PropTypes.object,\n model: PropTypes.object.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func,\n delete: PropTypes.func\n }),\n onImageUpload: PropTypes.func.isRequired,\n onColorChanged: PropTypes.func.isRequired,\n onPromptChanged: PropTypes.func.isRequired,\n onUpdateImageDimension: PropTypes.func.isRequired,\n onUpdateShapes: PropTypes.func.isRequired,\n onModelChangedByConfig: PropTypes.func.isRequired,\n onRationaleChanged: PropTypes.func.isRequired,\n onConfigurationChanged: PropTypes.func.isRequired,\n onTeacherInstructionsChanged: PropTypes.func.isRequired,\n};\n\nexport default withStyles(styles)(Root);\n"],"file":"root.js"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pie-element/hotspot-configure",
3
3
  "private": true,
4
- "version": "4.7.4",
4
+ "version": "5.1.1",
5
5
  "description": "",
6
6
  "main": "lib/index.js",
7
7
  "module": "src/index.js",
@@ -10,8 +10,8 @@
10
10
  "@material-ui/core": "^3.9.2",
11
11
  "@material-ui/icons": "^3.0.2",
12
12
  "@pie-framework/pie-configure-events": "^1.2.0",
13
- "@pie-lib/config-ui": "^10.13.3",
14
- "@pie-lib/editable-html": "^7.22.6",
13
+ "@pie-lib/config-ui": "^11.0.6",
14
+ "@pie-lib/editable-html": "^9.0.2",
15
15
  "classnames": "^2.2.6",
16
16
  "debug": "^3.1.0",
17
17
  "konva": "^3.2.4",
@@ -7,6 +7,16 @@ exports[`Root render renders 1`] = `
7
7
  <Panel
8
8
  configuration={
9
9
  Object {
10
+ "maxImageHeight": Object {
11
+ "prompt": 300,
12
+ "rationale": 300,
13
+ "teacherInstructions": 300,
14
+ },
15
+ "maxImageWidth": Object {
16
+ "prompt": 300,
17
+ "rationale": 300,
18
+ "teacherInstructions": 300,
19
+ },
10
20
  "minShapes": 2,
11
21
  "multipleCorrect": Object {
12
22
  "label": "Multiple Correct Responses",
@@ -58,6 +58,16 @@ export default {
58
58
  enabled: true,
59
59
  label: 'Preserve aspect ratio'
60
60
  },
61
- minShapes: 2
61
+ minShapes: 2,
62
+ maxImageWidth: {
63
+ teacherInstructions: 300,
64
+ prompt: 300,
65
+ rationale: 300,
66
+ },
67
+ maxImageHeight: {
68
+ teacherInstructions: 300,
69
+ prompt: 300,
70
+ rationale: 300,
71
+ }
62
72
  }
63
73
  };
@@ -33,11 +33,13 @@ export class Container extends Component {
33
33
  }
34
34
 
35
35
  handleFileRead = (file) => {
36
- const { onImageUpload } = this.props;
37
- const reader = new FileReader();
36
+ if (file instanceof Blob) {
37
+ const { onImageUpload } = this.props;
38
+ const reader = new FileReader();
38
39
 
39
- reader.onloadend = () => onImageUpload(reader.result);
40
- reader.readAsDataURL(file)
40
+ reader.onloadend = () => onImageUpload(reader.result);
41
+ reader.readAsDataURL(file)
42
+ }
41
43
  };
42
44
 
43
45
  handleUploadImage = (e) => {
@@ -81,7 +81,9 @@ export class Root extends React.Component {
81
81
  teacherInstructions = {},
82
82
  rationale = {},
83
83
  spellCheck = {},
84
- preserveAspectRatio = {}
84
+ preserveAspectRatio = {},
85
+ maxImageWidth = {},
86
+ maxImageHeight = {}
85
87
  } = configuration || {};
86
88
  const { teacherInstructionsEnabled, promptEnabled, rationaleEnabled, spellCheckEnabled, errors } = model || {};
87
89
  const { shapesError, selectionsError } = errors || {};
@@ -89,6 +91,9 @@ export class Root extends React.Component {
89
91
 
90
92
  const validationMessage = generateValidationMessage(configuration);
91
93
 
94
+ const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;
95
+ const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;
96
+
92
97
  switch (model.toolbarEditorPosition) {
93
98
  case 'top':
94
99
  toolbarOpts.position = 'top';
@@ -137,6 +142,8 @@ export class Root extends React.Component {
137
142
  nonEmpty={false}
138
143
  toolbarOpts={toolbarOpts}
139
144
  spellCheck={spellCheckEnabled}
145
+ maxImageWidth={maxImageWidth && maxImageWidth.teacherInstructions || defaultImageMaxWidth}
146
+ maxImageHeight={maxImageHeight && maxImageHeight.teacherInstructions || defaultImageMaxHeight}
140
147
  />
141
148
  </InputContainer>
142
149
  )}
@@ -149,6 +156,8 @@ export class Root extends React.Component {
149
156
  nonEmpty={false}
150
157
  toolbarOpts={toolbarOpts}
151
158
  spellCheck={spellCheckEnabled}
159
+ maxImageWidth={defaultImageMaxWidth}
160
+ maxImageHeight={defaultImageMaxHeight}
152
161
  />
153
162
  </InputContainer>
154
163
  )}
@@ -164,6 +173,8 @@ export class Root extends React.Component {
164
173
  imageSupport={imageSupport}
165
174
  toolbarOpts={toolbarOpts}
166
175
  spellCheck={spellCheckEnabled}
176
+ maxImageWidth={maxImageWidth && maxImageWidth.rationale || defaultImageMaxWidth}
177
+ maxImageHeight={maxImageHeight && maxImageHeight.rationale || defaultImageMaxHeight}
167
178
  />
168
179
  </InputContainer>
169
180
  )}
@@ -98,6 +98,48 @@
98
98
  "type": "number",
99
99
  "title": "maxSelections"
100
100
  },
101
+ "maxImageWidth": {
102
+ "title": "ConfigureMaxImageDimensionsProp",
103
+ "type": "object",
104
+ "properties": {
105
+ "teacherInstructions": {
106
+ "description": "Indicates the max dimension for images in teacher instructions",
107
+ "type": "number",
108
+ "title": "teacherInstructions"
109
+ },
110
+ "prompt": {
111
+ "description": "Indicates the max dimension for images in prompt - this is also the default dimension for all other input fields if it's not specified",
112
+ "type": "number",
113
+ "title": "prompt"
114
+ },
115
+ "rationale": {
116
+ "description": "Indicates the max dimension for images in rationale",
117
+ "type": "number",
118
+ "title": "rationale"
119
+ }
120
+ }
121
+ },
122
+ "maxImageHeight": {
123
+ "title": "ConfigureMaxImageDimensionsProp",
124
+ "type": "object",
125
+ "properties": {
126
+ "teacherInstructions": {
127
+ "description": "Indicates the max dimension for images in teacher instructions",
128
+ "type": "number",
129
+ "title": "teacherInstructions"
130
+ },
131
+ "prompt": {
132
+ "description": "Indicates the max dimension for images in prompt - this is also the default dimension for all other input fields if it's not specified",
133
+ "type": "number",
134
+ "title": "prompt"
135
+ },
136
+ "rationale": {
137
+ "description": "Indicates the max dimension for images in rationale",
138
+ "type": "number",
139
+ "title": "rationale"
140
+ }
141
+ }
142
+ },
101
143
  "showPrompt": {
102
144
  "description": "Determines whether prompt field will be displayed or not",
103
145
  "default": true,
@@ -127,6 +169,27 @@
127
169
  "title": "label"
128
170
  }
129
171
  }
172
+ },
173
+ "ConfigureMaxImageDimensionsProp": {
174
+ "title": "ConfigureMaxImageDimensionsProp",
175
+ "type": "object",
176
+ "properties": {
177
+ "teacherInstructions": {
178
+ "description": "Indicates the max dimension for images in teacher instructions",
179
+ "type": "number",
180
+ "title": "teacherInstructions"
181
+ },
182
+ "prompt": {
183
+ "description": "Indicates the max dimension for images in prompt - this is also the default dimension for all other input fields if it's not specified",
184
+ "type": "number",
185
+ "title": "prompt"
186
+ },
187
+ "rationale": {
188
+ "description": "Indicates the max dimension for images in rationale",
189
+ "type": "number",
190
+ "title": "rationale"
191
+ }
192
+ }
130
193
  }
131
194
  },
132
195
  "$schema": "http://json-schema.org/draft-07/schema#"
@@ -74,6 +74,38 @@ Maximum number of shapes
74
74
 
75
75
  Maximum number of selected shapes in correct answer
76
76
 
77
+ # `maxImageWidth` (object)
78
+
79
+ Properties of the `maxImageWidth` object:
80
+
81
+ ## `teacherInstructions` (number)
82
+
83
+ Indicates the max dimension for images in teacher instructions
84
+
85
+ ## `prompt` (number)
86
+
87
+ Indicates the max dimension for images in prompt - this is also the default dimension for all other input fields if it's not specified
88
+
89
+ ## `rationale` (number)
90
+
91
+ Indicates the max dimension for images in rationale
92
+
93
+ # `maxImageHeight` (object)
94
+
95
+ Properties of the `maxImageHeight` object:
96
+
97
+ ## `teacherInstructions` (number)
98
+
99
+ Indicates the max dimension for images in teacher instructions
100
+
101
+ ## `prompt` (number)
102
+
103
+ Indicates the max dimension for images in prompt - this is also the default dimension for all other input fields if it's not specified
104
+
105
+ ## `rationale` (number)
106
+
107
+ Indicates the max dimension for images in rationale
108
+
77
109
  # `showPrompt` (boolean)
78
110
 
79
111
  Determines whether prompt field will be displayed or not
@@ -102,4 +134,20 @@ Indicates if the item has to be displayed in the Settings Panel
102
134
 
103
135
  ### `label` (string)
104
136
 
105
- Indicates the label for the item that has to be displayed in the Settings Panel
137
+ Indicates the label for the item that has to be displayed in the Settings Panel
138
+
139
+ ## `ConfigureMaxImageDimensionsProp` (object)
140
+
141
+ Properties of the `ConfigureMaxImageDimensionsProp` object:
142
+
143
+ ### `teacherInstructions` (number)
144
+
145
+ Indicates the max dimension for images in teacher instructions
146
+
147
+ ### `prompt` (number)
148
+
149
+ Indicates the max dimension for images in prompt - this is also the default dimension for all other input fields if it's not specified
150
+
151
+ ### `rationale` (number)
152
+
153
+ Indicates the max dimension for images in rationale
@@ -266,6 +266,27 @@
266
266
  }
267
267
  }
268
268
  },
269
+ "ConfigureMaxImageDimensionsProp": {
270
+ "title": "ConfigureMaxImageDimensionsProp",
271
+ "type": "object",
272
+ "properties": {
273
+ "teacherInstructions": {
274
+ "description": "Indicates the max dimension for images in teacher instructions",
275
+ "type": "number",
276
+ "title": "teacherInstructions"
277
+ },
278
+ "prompt": {
279
+ "description": "Indicates the max dimension for images in prompt - this is also the default dimension for all other input fields if it's not specified",
280
+ "type": "number",
281
+ "title": "prompt"
282
+ },
283
+ "rationale": {
284
+ "description": "Indicates the max dimension for images in rationale",
285
+ "type": "number",
286
+ "title": "rationale"
287
+ }
288
+ }
289
+ },
269
290
  "Shape": {
270
291
  "title": "Shape",
271
292
  "type": "object",
@@ -187,6 +187,22 @@ Indicates if the item has to be displayed in the Settings Panel
187
187
 
188
188
  Indicates the label for the item that has to be displayed in the Settings Panel
189
189
 
190
+ ## `ConfigureMaxImageDimensionsProp` (object)
191
+
192
+ Properties of the `ConfigureMaxImageDimensionsProp` object:
193
+
194
+ ### `teacherInstructions` (number)
195
+
196
+ Indicates the max dimension for images in teacher instructions
197
+
198
+ ### `prompt` (number)
199
+
200
+ Indicates the max dimension for images in prompt - this is also the default dimension for all other input fields if it's not specified
201
+
202
+ ### `rationale` (number)
203
+
204
+ Indicates the max dimension for images in rationale
205
+
190
206
  ## `Shape` (object)
191
207
 
192
208
  Properties of the `Shape` object:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-element/hotspot",
3
- "version": "4.11.4",
3
+ "version": "5.1.1",
4
4
  "description": "",
5
5
  "repository": "pie-framework/pie-elements",
6
6
  "publishConfig": {
@@ -9,8 +9,8 @@
9
9
  "dependencies": {
10
10
  "@material-ui/core": "^3.9.3",
11
11
  "@pie-framework/pie-player-events": "^0.1.0",
12
- "@pie-lib/math-rendering": "^2.4.3",
13
- "@pie-lib/render-ui": "^4.12.9",
12
+ "@pie-lib/math-rendering": "^2.4.5",
13
+ "@pie-lib/render-ui": "^4.13.1",
14
14
  "konva": "^3.2.5",
15
15
  "prop-types": "^15.6.1",
16
16
  "react": "^16.8.1",
@@ -19,7 +19,7 @@
19
19
  },
20
20
  "author": "pie framework developers",
21
21
  "license": "ISC",
22
- "gitHead": "2b16a41c0627a27ee758af9285afde4d226dc12b",
22
+ "gitHead": "30ddb939cb470e2b4f0281aec44143a9188e3106",
23
23
  "scripts": {
24
24
  "postpublish": "../../scripts/postpublish"
25
25
  },