@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.
Files changed (72) hide show
  1. package/CHANGELOG.md +158 -0
  2. package/configure/CHANGELOG.md +117 -0
  3. package/configure/lib/defaults.js +18 -3
  4. package/configure/lib/defaults.js.map +1 -1
  5. package/configure/lib/image-container.js +23 -14
  6. package/configure/lib/image-container.js.map +1 -1
  7. package/configure/lib/index.js +3 -9
  8. package/configure/lib/index.js.map +1 -1
  9. package/configure/lib/root.js +44 -11
  10. package/configure/lib/root.js.map +1 -1
  11. package/configure/package.json +3 -3
  12. package/configure/src/__tests__/__snapshots__/image-container.test.jsx.snap +3 -2
  13. package/configure/src/__tests__/__snapshots__/root.test.jsx.snap +22 -14
  14. package/configure/src/defaults.js +17 -2
  15. package/configure/src/image-container.jsx +71 -45
  16. package/configure/src/index.js +0 -6
  17. package/configure/src/root.jsx +53 -24
  18. package/controller/CHANGELOG.md +24 -0
  19. package/controller/lib/index.js +13 -9
  20. package/controller/lib/index.js.map +1 -1
  21. package/controller/package.json +1 -1
  22. package/controller/src/__tests__/index.test.js +18 -9
  23. package/controller/src/index.js +4 -1
  24. package/docs/config-schema.json +79 -0
  25. package/docs/config-schema.json.md +61 -1
  26. package/docs/demo/generate.js +2 -0
  27. package/docs/pie-schema.json +43 -0
  28. package/docs/pie-schema.json.md +35 -0
  29. package/lib/drawing-response/container.js +65 -15
  30. package/lib/drawing-response/container.js.map +1 -1
  31. package/lib/drawing-response/drawable-circle.js +1 -1
  32. package/lib/drawing-response/drawable-circle.js.map +1 -1
  33. package/lib/drawing-response/drawable-eraser.js +1 -1
  34. package/lib/drawing-response/drawable-eraser.js.map +1 -1
  35. package/lib/drawing-response/drawable-free-path.js +1 -1
  36. package/lib/drawing-response/drawable-free-path.js.map +1 -1
  37. package/lib/drawing-response/drawable-helper.js.map +1 -1
  38. package/lib/drawing-response/drawable-image.js +1 -0
  39. package/lib/drawing-response/drawable-image.js.map +1 -1
  40. package/lib/drawing-response/drawable-line.js +1 -1
  41. package/lib/drawing-response/drawable-line.js.map +1 -1
  42. package/lib/drawing-response/drawable-main.js +37 -14
  43. package/lib/drawing-response/drawable-main.js.map +1 -1
  44. package/lib/drawing-response/drawable-palette.js +1 -1
  45. package/lib/drawing-response/drawable-palette.js.map +1 -1
  46. package/lib/drawing-response/drawable-rectangle.js +1 -1
  47. package/lib/drawing-response/drawable-rectangle.js.map +1 -1
  48. package/lib/drawing-response/drawable-text.js +15 -5
  49. package/lib/drawing-response/drawable-text.js.map +1 -1
  50. package/lib/drawing-response/drawable-transformer.js +1 -1
  51. package/lib/drawing-response/drawable-transformer.js.map +1 -1
  52. package/lib/drawing-response/index.js +9 -9
  53. package/lib/drawing-response/index.js.map +1 -1
  54. package/lib/index.js +4 -1
  55. package/lib/index.js.map +1 -1
  56. package/package.json +4 -4
  57. package/src/drawing-response/__tests__/__snapshots__/container.test.jsx.snap +18 -130
  58. package/src/drawing-response/__tests__/__snapshots__/drawing-main.test.jsx.snap +26 -2
  59. package/src/drawing-response/__tests__/container.test.jsx +7 -0
  60. package/src/drawing-response/__tests__/drawing-main.test.jsx +2 -1
  61. package/src/drawing-response/container.jsx +55 -15
  62. package/src/drawing-response/drawable-image.jsx +1 -0
  63. package/src/drawing-response/drawable-main.jsx +39 -15
  64. package/src/drawing-response/drawable-text.jsx +7 -1
  65. package/src/drawing-response/index.jsx +6 -4
  66. package/src/index.js +5 -0
  67. package/module/configure.js +0 -1099
  68. package/module/controller.js +0 -66
  69. package/module/demo.js +0 -38
  70. package/module/element.js +0 -1893
  71. package/module/index.html +0 -16
  72. package/module/manifest.json +0 -14
@@ -37,13 +37,13 @@ var _imageContainer = _interopRequireDefault(require("./image-container"));
37
37
 
38
38
  var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
39
39
 
40
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
40
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
41
41
 
42
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
42
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
43
43
 
44
44
  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); }; }
45
45
 
46
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
46
+ 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; } }
47
47
 
48
48
  var Panel = _configUi.settings.Panel,
49
49
  toggle = _configUi.settings.toggle;
@@ -116,11 +116,33 @@ var Root = /*#__PURE__*/function (_React$Component) {
116
116
  _ref$prompt = _ref.prompt,
117
117
  prompt = _ref$prompt === void 0 ? {} : _ref$prompt,
118
118
  _ref$teacherInstructi = _ref.teacherInstructions,
119
- teacherInstructions = _ref$teacherInstructi === void 0 ? {} : _ref$teacherInstructi;
119
+ teacherInstructions = _ref$teacherInstructi === void 0 ? {} : _ref$teacherInstructi,
120
+ _ref$spellCheck = _ref.spellCheck,
121
+ spellCheck = _ref$spellCheck === void 0 ? {} : _ref$spellCheck,
122
+ _ref$maxImageWidth = _ref.maxImageWidth,
123
+ maxImageWidth = _ref$maxImageWidth === void 0 ? {} : _ref$maxImageWidth,
124
+ _ref$maxImageHeight = _ref.maxImageHeight,
125
+ maxImageHeight = _ref$maxImageHeight === void 0 ? {} : _ref$maxImageHeight;
120
126
 
121
127
  var _ref2 = model || {},
122
128
  teacherInstructionsEnabled = _ref2.teacherInstructionsEnabled,
123
- promptEnabled = _ref2.promptEnabled;
129
+ promptEnabled = _ref2.promptEnabled,
130
+ spellCheckEnabled = _ref2.spellCheckEnabled,
131
+ backgroundImageEnabled = _ref2.backgroundImageEnabled;
132
+
133
+ var toolbarOpts = {};
134
+ var defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;
135
+ var defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;
136
+
137
+ switch (model.toolbarEditorPosition) {
138
+ case 'top':
139
+ toolbarOpts.position = 'top';
140
+ break;
141
+
142
+ default:
143
+ toolbarOpts.position = 'bottom';
144
+ break;
145
+ }
124
146
 
125
147
  return /*#__PURE__*/_react["default"].createElement("div", {
126
148
  className: classes.base
@@ -132,11 +154,12 @@ var Root = /*#__PURE__*/function (_React$Component) {
132
154
  onChangeConfiguration: onConfigurationChanged,
133
155
  groups: {
134
156
  Settings: {
135
- 'backgroundImage.enabled': backgroundImage.settings && toggle(backgroundImage.label, true),
157
+ backgroundImageEnabled: backgroundImage.settings && toggle(backgroundImage.label),
136
158
  promptEnabled: prompt.settings && toggle(prompt.label)
137
159
  },
138
160
  Properties: {
139
- teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label)
161
+ teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),
162
+ spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label)
140
163
  }
141
164
  }
142
165
  })
@@ -149,20 +172,30 @@ var Root = /*#__PURE__*/function (_React$Component) {
149
172
  markup: model.teacherInstructions || '',
150
173
  onChange: this.onTeacherInstructionsChanged,
151
174
  imageSupport: imageSupport,
152
- nonEmpty: false
175
+ nonEmpty: false,
176
+ toolbarOpts: toolbarOpts,
177
+ spellCheck: spellCheckEnabled,
178
+ maxImageWidth: maxImageWidth && maxImageWidth.teacherInstructions || defaultImageMaxWidth,
179
+ maxImageHeight: maxImageHeight && maxImageHeight.teacherInstructions || defaultImageMaxHeight
153
180
  })), promptEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
154
181
  label: "Item Stem",
155
182
  className: classes.prompt
156
183
  }, /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
157
184
  markup: model.prompt,
158
- onChange: this.onPromptChanged
159
- })), backgroundImage.enabled && /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
185
+ onChange: this.onPromptChanged,
186
+ toolbarOpts: toolbarOpts,
187
+ spellCheck: spellCheckEnabled,
188
+ imageSupport: imageSupport,
189
+ maxImageWidth: defaultImageMaxWidth,
190
+ maxImageHeight: defaultImageMaxHeight
191
+ })), backgroundImageEnabled && /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
160
192
  className: classes.label,
161
193
  variant: "subheading"
162
194
  }, "Define Background Image"), /*#__PURE__*/_react["default"].createElement(_imageContainer["default"], {
163
195
  imageUrl: model.imageUrl,
164
196
  onUpdateImageDimension: this.onUpdateImageDimension,
165
- onImageUpload: this.onImageUpload
197
+ onImageUpload: this.onImageUpload,
198
+ imageDimensions: model.imageDimensions
166
199
  })))));
167
200
  }
168
201
  }]);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/root.jsx"],"names":["Panel","settings","toggle","Root","prompt","props","model","onModelChanged","update","teacherInstructions","dimensions","imageDimensions","imageUrl","classes","configuration","imageSupport","onConfigurationChanged","backgroundImage","teacherInstructionsEnabled","promptEnabled","base","Settings","label","Properties","regular","onTeacherInstructionsChanged","onPromptChanged","enabled","onUpdateImageDimension","onImageUpload","React","Component","styles","theme","marginTop","spacing","unit","paddingTop","width","marginBottom","propTypes","PropTypes","object","isRequired","shape","add","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { settings, layout, InputContainer } from '@pie-lib/config-ui';\nimport PropTypes from 'prop-types';\nimport EditableHtml from '@pie-lib/editable-html';\nimport Typography from '@material-ui/core/Typography';\nimport { withStyles } from '@material-ui/core/styles';\n\nimport ImageContainer from './image-container';\nimport cloneDeep from 'lodash/cloneDeep';\n\nconst { Panel, toggle } = settings;\n\nexport class Root extends React.Component {\n onPromptChanged = prompt => {\n const { model, onModelChanged } = this.props;\n const update = cloneDeep(model);\n\n onModelChanged({\n ...update,\n prompt\n });\n };\n\n onTeacherInstructionsChanged = teacherInstructions => {\n const { model, onModelChanged } = this.props;\n\n onModelChanged({\n ...model,\n teacherInstructions\n });\n };\n\n onUpdateImageDimension = (dimensions) => {\n const { model, onModelChanged } = this.props;\n\n onModelChanged({\n ...model,\n imageDimensions: dimensions\n });\n };\n\n onImageUpload = imageUrl => {\n const { model, onModelChanged } = this.props;\n\n onModelChanged({\n ...model,\n imageUrl\n });\n };\n\n render() {\n const {\n classes,\n configuration,\n model,\n imageSupport,\n onConfigurationChanged,\n onModelChanged\n } = this.props;\n const { backgroundImage = {}, prompt = {}, teacherInstructions = {} } =\n configuration || {};\n const { teacherInstructionsEnabled, promptEnabled } =\n model || {};\n\n return (\n <div className={classes.base}>\n <layout.ConfigLayout\n settings={\n <Panel\n model={model}\n onChangeModel={onModelChanged}\n configuration={configuration}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n Settings: {\n 'backgroundImage.enabled':\n backgroundImage.settings &&\n toggle(backgroundImage.label, true),\n promptEnabled: prompt.settings && toggle(prompt.label)\n },\n Properties: {\n teacherInstructionsEnabled:\n teacherInstructions.settings &&\n toggle(teacherInstructions.label)\n }\n }}\n />\n }\n >\n <div className={classes.regular}>\n {teacherInstructionsEnabled && (\n <InputContainer\n label={teacherInstructions.label}\n className={classes.prompt}\n >\n <EditableHtml\n markup={model.teacherInstructions || ''}\n onChange={this.onTeacherInstructionsChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n />\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer label=\"Item Stem\" className={classes.prompt}>\n <EditableHtml\n markup={model.prompt}\n onChange={this.onPromptChanged}\n />\n </InputContainer>\n )}\n\n {backgroundImage.enabled && (\n <div>\n <Typography className={classes.label} variant=\"subheading\">\n Define Background Image\n </Typography>\n\n <ImageContainer\n imageUrl={model.imageUrl}\n onUpdateImageDimension={this.onUpdateImageDimension}\n onImageUpload={this.onImageUpload}\n />\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 label: {\n marginTop: theme.spacing.unit * 4\n },\n prompt: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%'\n },\n regular: {\n marginBottom: theme.spacing.unit * 3\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 onModelChanged: PropTypes.func.isRequired,\n onConfigurationChanged: 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","prompt","props","model","onModelChanged","update","teacherInstructions","dimensions","imageDimensions","imageUrl","classes","configuration","imageSupport","onConfigurationChanged","backgroundImage","spellCheck","maxImageWidth","maxImageHeight","teacherInstructionsEnabled","promptEnabled","spellCheckEnabled","backgroundImageEnabled","toolbarOpts","defaultImageMaxWidth","defaultImageMaxHeight","toolbarEditorPosition","position","base","Settings","label","Properties","regular","onTeacherInstructionsChanged","onPromptChanged","onUpdateImageDimension","onImageUpload","React","Component","styles","theme","marginTop","spacing","unit","paddingTop","width","marginBottom","propTypes","PropTypes","object","isRequired","shape","add","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { settings, layout, InputContainer } from '@pie-lib/config-ui';\nimport PropTypes from 'prop-types';\nimport EditableHtml from '@pie-lib/editable-html';\nimport Typography from '@material-ui/core/Typography';\nimport { withStyles } from '@material-ui/core/styles';\n\nimport ImageContainer from './image-container';\nimport cloneDeep from 'lodash/cloneDeep';\n\nconst { Panel, toggle } = settings;\n\nexport class Root extends React.Component {\n onPromptChanged = (prompt) => {\n const { model, onModelChanged } = this.props;\n const update = cloneDeep(model);\n\n onModelChanged({\n ...update,\n prompt,\n });\n };\n\n onTeacherInstructionsChanged = (teacherInstructions) => {\n const { model, onModelChanged } = this.props;\n\n onModelChanged({\n ...model,\n teacherInstructions,\n });\n };\n\n onUpdateImageDimension = (dimensions) => {\n const { model, onModelChanged } = this.props;\n\n onModelChanged({\n ...model,\n imageDimensions: dimensions,\n });\n };\n\n onImageUpload = (imageUrl) => {\n const { model, onModelChanged } = this.props;\n\n onModelChanged({\n ...model,\n imageUrl,\n });\n };\n\n render() {\n const {\n classes,\n configuration,\n model,\n imageSupport,\n onConfigurationChanged,\n onModelChanged,\n } = this.props;\n const {\n backgroundImage = {},\n prompt = {},\n teacherInstructions = {},\n spellCheck = {},\n maxImageWidth = {},\n maxImageHeight = {}\n } = configuration || {};\n const { teacherInstructionsEnabled, promptEnabled, spellCheckEnabled, backgroundImageEnabled } =\n model || {};\n const toolbarOpts = {};\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={onModelChanged}\n configuration={configuration}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n Settings: {\n backgroundImageEnabled: backgroundImage.settings && toggle(backgroundImage.label),\n promptEnabled: prompt.settings && toggle(prompt.label)\n },\n Properties: {\n teacherInstructionsEnabled:\n teacherInstructions.settings &&\n toggle(teacherInstructions.label),\n spellCheckEnabled:\n spellCheck.settings && toggle(spellCheck.label),\n },\n }}\n />\n }\n >\n <div className={classes.regular}>\n {teacherInstructionsEnabled && (\n <InputContainer\n label={teacherInstructions.label}\n className={classes.prompt}\n >\n <EditableHtml\n markup={model.teacherInstructions || ''}\n onChange={this.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\n {promptEnabled && (\n <InputContainer label=\"Item Stem\" className={classes.prompt}>\n <EditableHtml\n markup={model.prompt}\n onChange={this.onPromptChanged}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n imageSupport={imageSupport}\n maxImageWidth={defaultImageMaxWidth}\n maxImageHeight={defaultImageMaxHeight}\n />\n </InputContainer>\n )}\n\n {backgroundImageEnabled && (\n <div>\n <Typography className={classes.label} variant=\"subheading\">\n Define Background Image\n </Typography>\n\n <ImageContainer\n imageUrl={model.imageUrl}\n onUpdateImageDimension={this.onUpdateImageDimension}\n onImageUpload={this.onImageUpload}\n imageDimensions={model.imageDimensions}\n />\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 label: {\n marginTop: theme.spacing.unit * 4,\n },\n prompt: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%',\n },\n regular: {\n marginBottom: theme.spacing.unit * 3,\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 onModelChanged: PropTypes.func.isRequired,\n onConfigurationChanged: 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/drawing-response-configure",
3
3
  "private": true,
4
- "version": "3.2.2",
4
+ "version": "3.2.19",
5
5
  "description": "",
6
6
  "main": "lib/index.js",
7
7
  "module": "src/index.js",
@@ -9,8 +9,8 @@
9
9
  "dependencies": {
10
10
  "@material-ui/core": "^3.9.2",
11
11
  "@pie-framework/pie-configure-events": "^1.2.0",
12
- "@pie-lib/config-ui": "^10.9.2",
13
- "@pie-lib/editable-html": "^7.16.19",
12
+ "@pie-lib/config-ui": "^10.13.3",
13
+ "@pie-lib/editable-html": "^7.22.6",
14
14
  "classnames": "^2.2.6",
15
15
  "debug": "^3.1.0",
16
16
  "lodash": "^4.17.15",
@@ -31,8 +31,9 @@ exports[`ImageContainer snapshot renders 1`] = `
31
31
  src="url"
32
32
  style={
33
33
  Object {
34
- "maxHeight": 0,
35
- "maxWidth": 0,
34
+ "maxHeight": "auto",
35
+ "maxWidth": "100%",
36
+ "width": undefined,
36
37
  }
37
38
  }
38
39
  />
@@ -8,14 +8,26 @@ exports[`Root snapshot renders 1`] = `
8
8
  configuration={
9
9
  Object {
10
10
  "backgroundImage": Object {
11
- "enabled": true,
12
11
  "label": "Background Image",
13
12
  "settings": true,
14
13
  },
14
+ "maxImageHeight": Object {
15
+ "prompt": 300,
16
+ "teacherInstructions": 300,
17
+ },
18
+ "maxImageWidth": Object {
19
+ "prompt": 300,
20
+ "teacherInstructions": 300,
21
+ },
15
22
  "prompt": Object {
16
23
  "label": "Prompt",
17
24
  "settings": true,
18
25
  },
26
+ "spellCheck": Object {
27
+ "enabled": true,
28
+ "label": "Spellcheck",
29
+ "settings": false,
30
+ },
19
31
  "teacherInstructions": Object {
20
32
  "label": "Teacher Instructions",
21
33
  "settings": true,
@@ -25,10 +37,11 @@ exports[`Root snapshot renders 1`] = `
25
37
  groups={
26
38
  Object {
27
39
  "Properties": Object {
40
+ "spellCheckEnabled": false,
28
41
  "teacherInstructionsEnabled": undefined,
29
42
  },
30
43
  "Settings": Object {
31
- "backgroundImage.enabled": undefined,
44
+ "backgroundImageEnabled": undefined,
32
45
  "promptEnabled": undefined,
33
46
  },
34
47
  }
@@ -55,21 +68,16 @@ exports[`Root snapshot renders 1`] = `
55
68
  >
56
69
  <EditableHtml
57
70
  markup="Test Prompt"
71
+ maxImageHeight={300}
72
+ maxImageWidth={300}
58
73
  onChange={[Function]}
74
+ toolbarOpts={
75
+ Object {
76
+ "position": "bottom",
77
+ }
78
+ }
59
79
  />
60
80
  </Component>
61
- <div>
62
- <WithStyles(Typography)
63
- variant="subheading"
64
- >
65
- Define Background Image
66
- </WithStyles(Typography)>
67
- <WithStyles(ImageContainer)
68
- imageUrl=""
69
- onImageUpload={[Function]}
70
- onUpdateImageDimension={[Function]}
71
- />
72
- </div>
73
81
  </div>
74
82
  </ConfigLayout>
75
83
  </div>
@@ -9,12 +9,19 @@ export default {
9
9
  promptEnabled: true,
10
10
  teacherInstructionsEnabled: true,
11
11
  studentInstructionsEnabled: true,
12
+ backgroundImageEnabled: true,
13
+ spellCheckEnabled:true,
14
+ toolbarEditorPosition: 'bottom',
12
15
  },
13
16
  configuration: {
17
+ spellCheck: {
18
+ label: 'Spellcheck',
19
+ settings:false,
20
+ enabled:true
21
+ },
14
22
  backgroundImage: {
15
23
  settings: true,
16
- label: 'Background Image',
17
- enabled: true
24
+ label: 'Background Image'
18
25
  },
19
26
  prompt: {
20
27
  settings: true,
@@ -23,6 +30,14 @@ export default {
23
30
  teacherInstructions: {
24
31
  settings: true,
25
32
  label: 'Teacher Instructions',
33
+ },
34
+ maxImageWidth: {
35
+ teacherInstructions: 300,
36
+ prompt: 300
37
+ },
38
+ maxImageHeight: {
39
+ teacherInstructions: 300,
40
+ prompt: 300
26
41
  }
27
42
  }
28
43
  };
@@ -13,11 +13,11 @@ export class ImageContainer extends Component {
13
13
  constructor(props) {
14
14
  super(props);
15
15
  this.state = {
16
- maxImageWidth: 0,
17
- maxImageHeight: 0,
16
+ maxImageWidth: "100%",
17
+ maxImageHeight: "auto",
18
18
  dragEnabled: true,
19
19
  dropzoneActive: false,
20
- }
20
+ };
21
21
  }
22
22
 
23
23
  componentDidMount() {
@@ -26,7 +26,7 @@ export class ImageContainer extends Component {
26
26
  const { height, width } = positionInfo;
27
27
  this.setState({
28
28
  maxImageWidth: width,
29
- maxImageHeight: height
29
+ maxImageHeight: height,
30
30
  });
31
31
  }
32
32
  }
@@ -46,7 +46,7 @@ export class ImageContainer extends Component {
46
46
  this.handleFileRead(file);
47
47
  };
48
48
 
49
- makeDropzoneActive= () => this.setState({ dropzoneActive: true });
49
+ makeDropzoneActive = () => this.setState({ dropzoneActive: true });
50
50
 
51
51
  makeDropzoneInactive = () => this.setState({ dropzoneActive: false });
52
52
 
@@ -90,7 +90,7 @@ export class ImageContainer extends Component {
90
90
 
91
91
  const dimensions = {
92
92
  height: offsetHeight,
93
- width: offsetWidth
93
+ width: offsetWidth,
94
94
  };
95
95
 
96
96
  this.setState({ dimensions });
@@ -117,20 +117,27 @@ export class ImageContainer extends Component {
117
117
 
118
118
  startResizing = (e) => {
119
119
  const box = this.image;
120
- const { maxImageWidth } = this.state;
120
+ const { maxImageWidth, dimensions } = this.state;
121
121
 
122
122
  const bounds = e.target.getBoundingClientRect();
123
123
  const x = e.clientX - bounds.left;
124
124
  const y = e.clientY - bounds.top;
125
125
 
126
+ const imageAspectRatio = dimensions.width / dimensions.height;
127
+
126
128
  const fitsContainer = x <= maxImageWidth + 5;
127
129
  const hasMinimumWidth = x > 150 && y > 150;
128
130
 
129
131
  if (fitsContainer && hasMinimumWidth) {
130
132
  box.style.width = `${x}px`;
131
- box.style.height = `${y}px`;
133
+ box.style.height = `${x/imageAspectRatio}px`;
132
134
 
133
- this.setState({ dimensions: { height: y, width: x }});
135
+ this.setState({
136
+ dimensions: {
137
+ height:x/imageAspectRatio,
138
+ width:x,
139
+ },
140
+ });
134
141
  }
135
142
 
136
143
  this.handleDisableDrag();
@@ -141,26 +148,22 @@ export class ImageContainer extends Component {
141
148
 
142
149
  return (
143
150
  <div>
144
- <Button
145
- label={label}
146
- onClick={this.handleInputClick}
147
- />
151
+ <Button label={label} onClick={this.handleInputClick} />
148
152
  <input
149
153
  accept="image/*"
150
154
  className={classes.input}
151
155
  onChange={this.handleUploadImage}
152
- ref={ref => { this.input = ref; }}
156
+ ref={(ref) => {
157
+ this.input = ref;
158
+ }}
153
159
  type="file"
154
160
  />
155
161
  </div>
156
- )
162
+ );
157
163
  }
158
164
 
159
165
  render() {
160
- const {
161
- classes,
162
- imageUrl
163
- } = this.props;
166
+ const { classes, imageUrl, imageDimensions } = this.props;
164
167
  const {
165
168
  dropzoneActive,
166
169
  dragEnabled,
@@ -169,32 +172,55 @@ export class ImageContainer extends Component {
169
172
  } = this.state;
170
173
 
171
174
  return (
172
- <div className={classes.base} >
173
- <div className={`${classes.box} ${dropzoneActive ? classes.boxActive : ''}`}
174
- {...dragEnabled ? {
175
- onDragExit: this.handleOnDragExit,
176
- onDragLeave: this.handleOnDragExit,
177
- onDragOver: this.handleOnDragOver ,
178
- onDrop: this.handleOnDrop
179
- } : {}}
175
+ <div className={classes.base}>
176
+ <div
177
+ className={`${classes.box} ${
178
+ dropzoneActive ? classes.boxActive : ''
179
+ }`}
180
+ {...(dragEnabled
181
+ ? {
182
+ onDragExit: this.handleOnDragExit,
183
+ onDragLeave: this.handleOnDragExit,
184
+ onDragOver: this.handleOnDragOver,
185
+ onDrop: this.handleOnDrop,
186
+ }
187
+ : {})}
180
188
  >
181
189
  <div className={classes.toolbar}>
182
- {this.renderUploadControl(imageUrl ? 'Replace Image' : 'Upload Image')}
190
+ {this.renderUploadControl(
191
+ imageUrl ? 'Replace Image' : 'Upload Image'
192
+ )}
183
193
  </div>
184
194
 
185
- <div ref={ref => { this.imageSection = ref; }} className={classes.drawableHeight}>
195
+ <div
196
+ ref={(ref) => {
197
+ this.imageSection = ref;
198
+ }}
199
+ className={classes.drawableHeight}
200
+ >
186
201
  {imageUrl ? (
187
202
  <div className={classes.imageContainer}>
188
203
  <img
189
204
  className={classes.image}
190
205
  height="auto"
191
206
  onLoad={this.handleOnImageLoad}
192
- ref={ref => { this.image = ref; }}
207
+ ref={(ref) => {
208
+ this.image = ref;
209
+ }}
193
210
  src={imageUrl}
194
- style={{ maxWidth: maxImageWidth, maxHeight: maxImageHeight }}
195
- alt=''
211
+ style={{
212
+ width: imageDimensions && imageDimensions.width ? imageDimensions.width : undefined,
213
+ maxWidth: maxImageWidth,
214
+ maxHeight: maxImageHeight
215
+ }}
216
+ alt=""
217
+ />
218
+ <div
219
+ ref={(ref) => {
220
+ this.resize = ref;
221
+ }}
222
+ className={classes.resize}
196
223
  />
197
- <div ref={ref => { this.resize = ref; }} className={classes.resize} />
198
224
  </div>
199
225
  ) : (
200
226
  <div className={`${classes.drawableHeight} ${classes.centered}`}>
@@ -210,25 +236,25 @@ export class ImageContainer extends Component {
210
236
  }
211
237
  }
212
238
 
213
- const styles = theme => ({
239
+ const styles = (theme) => ({
214
240
  base: {
215
- marginTop: theme.spacing.unit * 2
241
+ marginTop: theme.spacing.unit * 2,
216
242
  },
217
243
  box: {
218
244
  border: '1px solid #E0E1E6',
219
- borderRadius: '5px'
245
+ borderRadius: '5px',
220
246
  },
221
247
  boxActive: {
222
- border: '1px solid #0032C2'
248
+ border: '1px solid #0032C2',
223
249
  },
224
250
  centered: {
225
251
  alignItems: 'center',
226
252
  display: 'flex',
227
253
  flexDirection: 'column',
228
- justifyContent: 'center'
254
+ justifyContent: 'center',
229
255
  },
230
256
  drawableHeight: {
231
- minHeight: 350
257
+ minHeight: 350,
232
258
  },
233
259
  image: {
234
260
  alignItems: 'center',
@@ -237,7 +263,7 @@ const styles = theme => ({
237
263
  },
238
264
  imageContainer: {
239
265
  position: 'relative',
240
- width: 'fit-content'
266
+ width: 'fit-content',
241
267
  },
242
268
  resize: {
243
269
  borderBottom: '1px solid #727272',
@@ -247,10 +273,10 @@ const styles = theme => ({
247
273
  height: '10px',
248
274
  position: 'absolute',
249
275
  right: '-10px',
250
- width: '10px'
276
+ width: '10px',
251
277
  },
252
278
  input: {
253
- display: 'none'
279
+ display: 'none',
254
280
  },
255
281
  toolbar: {
256
282
  backgroundColor: '#ECEDF1',
@@ -258,15 +284,15 @@ const styles = theme => ({
258
284
  borderTopLeftRadius: '5px',
259
285
  borderTopRightRadius: '5px',
260
286
  display: 'flex',
261
- padding: '12px 8px'
262
- }
287
+ padding: '12px 8px',
288
+ },
263
289
  });
264
290
 
265
291
  ImageContainer.propTypes = {
266
292
  classes: PropTypes.object.isRequired,
267
293
  imageUrl: PropTypes.string.isRequired,
268
294
  onImageUpload: PropTypes.func.isRequired,
269
- onUpdateImageDimension: PropTypes.func.isRequired
295
+ onUpdateImageDimension: PropTypes.func.isRequired,
270
296
  };
271
297
 
272
298
  export default withStyles(styles)(ImageContainer);
@@ -49,12 +49,6 @@ export default class DrawableResponseConfigure extends HTMLElement {
49
49
  };
50
50
 
51
51
  onConfigurationChanged = (c) => {
52
- if (!c.backgroundImage.enabled) {
53
- this.onModelChanged({
54
- ...this._model,
55
- imageUrl: ''
56
- });
57
- }
58
52
  this._configuration = c;
59
53
  this._render();
60
54
  };