@pie-element/hotspot 5.7.1-beta.0 → 5.7.1-beta.3

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 (46) hide show
  1. package/configure/package.json +2 -2
  2. package/package.json +2 -2
  3. package/configure/lib/button.js +0 -61
  4. package/configure/lib/button.js.map +0 -1
  5. package/configure/lib/defaults.js +0 -82
  6. package/configure/lib/defaults.js.map +0 -1
  7. package/configure/lib/hotspot-container.js +0 -398
  8. package/configure/lib/hotspot-container.js.map +0 -1
  9. package/configure/lib/hotspot-drawable.js +0 -445
  10. package/configure/lib/hotspot-drawable.js.map +0 -1
  11. package/configure/lib/hotspot-palette.js +0 -154
  12. package/configure/lib/hotspot-palette.js.map +0 -1
  13. package/configure/lib/hotspot-polygon.js +0 -202
  14. package/configure/lib/hotspot-polygon.js.map +0 -1
  15. package/configure/lib/hotspot-rectangle.js +0 -150
  16. package/configure/lib/hotspot-rectangle.js.map +0 -1
  17. package/configure/lib/index.js +0 -212
  18. package/configure/lib/index.js.map +0 -1
  19. package/configure/lib/root.js +0 -401
  20. package/configure/lib/root.js.map +0 -1
  21. package/configure/lib/upload-control.js +0 -68
  22. package/configure/lib/upload-control.js.map +0 -1
  23. package/configure/lib/utils.js +0 -160
  24. package/configure/lib/utils.js.map +0 -1
  25. package/controller/lib/defaults.js +0 -26
  26. package/controller/lib/defaults.js.map +0 -1
  27. package/controller/lib/index.js +0 -263
  28. package/controller/lib/index.js.map +0 -1
  29. package/controller/lib/utils.js +0 -50
  30. package/controller/lib/utils.js.map +0 -1
  31. package/lib/hotspot/container.js +0 -246
  32. package/lib/hotspot/container.js.map +0 -1
  33. package/lib/hotspot/icons.js +0 -8
  34. package/lib/hotspot/icons.js.map +0 -1
  35. package/lib/hotspot/image.js +0 -133
  36. package/lib/hotspot/image.js.map +0 -1
  37. package/lib/hotspot/index.js +0 -207
  38. package/lib/hotspot/index.js.map +0 -1
  39. package/lib/hotspot/polygon.js +0 -225
  40. package/lib/hotspot/polygon.js.map +0 -1
  41. package/lib/hotspot/rectangle.js +0 -207
  42. package/lib/hotspot/rectangle.js.map +0 -1
  43. package/lib/index.js +0 -114
  44. package/lib/index.js.map +0 -1
  45. package/lib/session-updater.js +0 -30
  46. package/lib/session-updater.js.map +0 -1
@@ -1,401 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports["default"] = exports.Root = void 0;
9
-
10
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
-
12
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
-
14
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
15
-
16
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
-
18
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
-
20
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
-
22
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
23
-
24
- var _react = _interopRequireDefault(require("react"));
25
-
26
- var _configUi = require("@pie-lib/config-ui");
27
-
28
- var _propTypes = _interopRequireDefault(require("prop-types"));
29
-
30
- var _editableHtml = _interopRequireDefault(require("@pie-lib/editable-html"));
31
-
32
- var _styles = require("@material-ui/core/styles");
33
-
34
- var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
35
-
36
- var _Info = _interopRequireDefault(require("@material-ui/icons/Info"));
37
-
38
- var _Tooltip = _interopRequireDefault(require("@material-ui/core/Tooltip"));
39
-
40
- var _hotspotPalette = _interopRequireDefault(require("./hotspot-palette"));
41
-
42
- var _hotspotContainer = _interopRequireDefault(require("./hotspot-container"));
43
-
44
- var _classnames = _interopRequireDefault(require("classnames"));
45
-
46
- var _utils = require("./utils");
47
-
48
- 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; }
49
-
50
- 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; }
51
-
52
- 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); }; }
53
-
54
- 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; } }
55
-
56
- var Panel = _configUi.settings.Panel,
57
- toggle = _configUi.settings.toggle;
58
-
59
- var Root = /*#__PURE__*/function (_React$Component) {
60
- (0, _inherits2["default"])(Root, _React$Component);
61
-
62
- var _super = _createSuper(Root);
63
-
64
- function Root() {
65
- var _this;
66
-
67
- (0, _classCallCheck2["default"])(this, Root);
68
-
69
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
70
- args[_key] = arguments[_key];
71
- }
72
-
73
- _this = _super.call.apply(_super, [this].concat(args));
74
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleColorChange", function (fieldType, color) {
75
- var onColorChanged = _this.props.onColorChanged;
76
- var cType = "".concat(fieldType, "Color");
77
- onColorChanged(cType, color);
78
- });
79
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleOnUpdateImageDimensions", function (value, resizeType) {
80
- var _this$props = _this.props,
81
- _this$props$model = _this$props.model,
82
- dimensions = _this$props$model.dimensions,
83
- shapes = _this$props$model.shapes,
84
- _this$props$configura = _this$props.configuration.preserveAspectRatio,
85
- preserveAspectRatio = _this$props$configura === void 0 ? {} : _this$props$configura,
86
- onUpdateImageDimension = _this$props.onUpdateImageDimension,
87
- onUpdateShapes = _this$props.onUpdateShapes;
88
-
89
- var nextImageDimensions = _objectSpread(_objectSpread({}, dimensions), {}, (0, _defineProperty2["default"])({}, resizeType, value)); // if preserveAspectRatio.enabled, updateImageDimensions function makes sure aspect ratio is kept
90
-
91
-
92
- var updatedDimensions = (0, _utils.updateImageDimensions)(dimensions, nextImageDimensions, preserveAspectRatio.enabled, resizeType); // transform shapes map into shapes array
93
-
94
- var shapesArray = (0, _utils.getAllShapes)(shapes); // transform all the shapes to fit the re-sized image
95
-
96
- var updatedShapes = (0, _utils.getUpdatedShapes)(dimensions, updatedDimensions, shapesArray); // transform shapes array back into shapes map
97
-
98
- onUpdateShapes((0, _utils.groupShapes)(updatedShapes));
99
- onUpdateImageDimension(updatedDimensions);
100
- });
101
- return _this;
102
- }
103
-
104
- (0, _createClass2["default"])(Root, [{
105
- key: "render",
106
- value: function render() {
107
- var _this2 = this;
108
-
109
- var _this$props2 = this.props,
110
- classes = _this$props2.classes,
111
- configuration = _this$props2.configuration,
112
- model = _this$props2.model,
113
- imageSupport = _this$props2.imageSupport,
114
- uploadSoundSupport = _this$props2.uploadSoundSupport,
115
- onConfigurationChanged = _this$props2.onConfigurationChanged,
116
- onImageUpload = _this$props2.onImageUpload,
117
- onModelChangedByConfig = _this$props2.onModelChangedByConfig,
118
- onPromptChanged = _this$props2.onPromptChanged,
119
- onRationaleChanged = _this$props2.onRationaleChanged,
120
- onUpdateImageDimension = _this$props2.onUpdateImageDimension,
121
- onTeacherInstructionsChanged = _this$props2.onTeacherInstructionsChanged,
122
- onUpdateShapes = _this$props2.onUpdateShapes;
123
-
124
- var _ref = configuration || {},
125
- _ref$maxImageWidth = _ref.maxImageWidth,
126
- maxImageWidth = _ref$maxImageWidth === void 0 ? {} : _ref$maxImageWidth,
127
- _ref$maxImageHeight = _ref.maxImageHeight,
128
- maxImageHeight = _ref$maxImageHeight === void 0 ? {} : _ref$maxImageHeight,
129
- _ref$multipleCorrect = _ref.multipleCorrect,
130
- multipleCorrect = _ref$multipleCorrect === void 0 ? {} : _ref$multipleCorrect,
131
- _ref$partialScoring = _ref.partialScoring,
132
- partialScoring = _ref$partialScoring === void 0 ? {} : _ref$partialScoring,
133
- _ref$preserveAspectRa = _ref.preserveAspectRatio,
134
- preserveAspectRatio = _ref$preserveAspectRa === void 0 ? {} : _ref$preserveAspectRa,
135
- _ref$prompt = _ref.prompt,
136
- prompt = _ref$prompt === void 0 ? {} : _ref$prompt,
137
- _ref$rationale = _ref.rationale,
138
- rationale = _ref$rationale === void 0 ? {} : _ref$rationale,
139
- settingsPanelDisabled = _ref.settingsPanelDisabled,
140
- _ref$spellCheck = _ref.spellCheck,
141
- spellCheck = _ref$spellCheck === void 0 ? {} : _ref$spellCheck,
142
- _ref$teacherInstructi = _ref.teacherInstructions,
143
- teacherInstructions = _ref$teacherInstructi === void 0 ? {} : _ref$teacherInstructi,
144
- _ref$withRubric = _ref.withRubric,
145
- withRubric = _ref$withRubric === void 0 ? {} : _ref$withRubric;
146
-
147
- var _ref2 = model || {},
148
- errors = _ref2.errors,
149
- promptEnabled = _ref2.promptEnabled,
150
- rationaleEnabled = _ref2.rationaleEnabled,
151
- spellCheckEnabled = _ref2.spellCheckEnabled,
152
- teacherInstructionsEnabled = _ref2.teacherInstructionsEnabled,
153
- toolbarEditorPosition = _ref2.toolbarEditorPosition;
154
-
155
- var _ref3 = errors || {},
156
- shapesError = _ref3.shapesError,
157
- selectionsError = _ref3.selectionsError;
158
-
159
- var validationMessage = (0, _utils.generateValidationMessage)(configuration);
160
- var defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;
161
- var defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;
162
- var toolbarOpts = {
163
- position: toolbarEditorPosition === 'top' ? 'top' : 'bottom'
164
- };
165
- var panelSettings = {
166
- multipleCorrect: multipleCorrect.settings && toggle(multipleCorrect.label),
167
- partialScoring: partialScoring.settings && toggle(partialScoring.label),
168
- promptEnabled: prompt.settings && toggle(prompt.label)
169
- };
170
- var panelProperties = {
171
- teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),
172
- rationaleEnabled: rationale.settings && toggle(rationale.label),
173
- spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),
174
- rubricEnabled: (withRubric === null || withRubric === void 0 ? void 0 : withRubric.settings) && toggle(withRubric === null || withRubric === void 0 ? void 0 : withRubric.label)
175
- };
176
- return /*#__PURE__*/_react["default"].createElement("div", {
177
- className: classes.base
178
- }, /*#__PURE__*/_react["default"].createElement(_configUi.layout.ConfigLayout, {
179
- hideSettings: settingsPanelDisabled,
180
- settings: /*#__PURE__*/_react["default"].createElement(Panel, {
181
- model: model,
182
- onChangeModel: onModelChangedByConfig,
183
- configuration: configuration,
184
- onChangeConfiguration: onConfigurationChanged,
185
- groups: {
186
- Settings: panelSettings,
187
- Properties: panelProperties
188
- }
189
- })
190
- }, /*#__PURE__*/_react["default"].createElement("div", {
191
- className: classes.regular
192
- }, teacherInstructionsEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
193
- label: teacherInstructions.label,
194
- className: classes.prompt
195
- }, /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
196
- markup: model.teacherInstructions || '',
197
- onChange: onTeacherInstructionsChanged,
198
- imageSupport: imageSupport,
199
- nonEmpty: false,
200
- toolbarOpts: toolbarOpts,
201
- spellCheck: spellCheckEnabled,
202
- maxImageWidth: maxImageWidth && maxImageWidth.teacherInstructions || defaultImageMaxWidth,
203
- maxImageHeight: maxImageHeight && maxImageHeight.teacherInstructions || defaultImageMaxHeight,
204
- uploadSoundSupport: uploadSoundSupport,
205
- languageCharactersProps: [{
206
- language: 'spanish'
207
- }, {
208
- language: 'special'
209
- }]
210
- })), promptEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
211
- label: prompt.label,
212
- className: classes.prompt
213
- }, /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
214
- markup: model.prompt || '',
215
- onChange: onPromptChanged,
216
- imageSupport: imageSupport,
217
- nonEmpty: false,
218
- toolbarOpts: toolbarOpts,
219
- spellCheck: spellCheckEnabled,
220
- maxImageWidth: defaultImageMaxWidth,
221
- maxImageHeight: defaultImageMaxHeight,
222
- uploadSoundSupport: uploadSoundSupport,
223
- languageCharactersProps: [{
224
- language: 'spanish'
225
- }, {
226
- language: 'special'
227
- }]
228
- })), rationaleEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
229
- label: rationale.label,
230
- className: classes.prompt
231
- }, /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
232
- markup: model.rationale || '',
233
- onChange: onRationaleChanged,
234
- imageSupport: imageSupport,
235
- toolbarOpts: toolbarOpts,
236
- spellCheck: spellCheckEnabled,
237
- maxImageWidth: maxImageWidth && maxImageWidth.rationale || defaultImageMaxWidth,
238
- maxImageHeight: maxImageHeight && maxImageHeight.rationale || defaultImageMaxHeight,
239
- uploadSoundSupport: uploadSoundSupport,
240
- languageCharactersProps: [{
241
- language: 'spanish'
242
- }, {
243
- language: 'special'
244
- }]
245
- })), /*#__PURE__*/_react["default"].createElement("div", {
246
- className: (0, _classnames["default"])(classes.label, classes.flexContainer)
247
- }, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
248
- className: classes.subheading,
249
- variant: "subheading"
250
- }, "Define Hotspot"), /*#__PURE__*/_react["default"].createElement(_Tooltip["default"], {
251
- classes: {
252
- tooltip: classes.tooltip
253
- },
254
- disableFocusListener: true,
255
- disableTouchListener: true,
256
- placement: 'left',
257
- title: validationMessage
258
- }, /*#__PURE__*/_react["default"].createElement(_Info["default"], {
259
- fontSize: 'small',
260
- color: 'primary',
261
- style: {
262
- "float": 'right'
263
- }
264
- }))), /*#__PURE__*/_react["default"].createElement(_hotspotPalette["default"], {
265
- hotspotColor: model.hotspotColor,
266
- hotspotList: model.hotspotList,
267
- outlineColor: model.outlineColor,
268
- outlineList: model.outlineList,
269
- onHotspotColorChange: function onHotspotColorChange(color) {
270
- return _this2.handleColorChange('hotspot', color);
271
- },
272
- onOutlineColorChange: function onOutlineColorChange(color) {
273
- return _this2.handleColorChange('outline', color);
274
- }
275
- }), /*#__PURE__*/_react["default"].createElement(_hotspotContainer["default"], {
276
- dimensions: model.dimensions,
277
- imageUrl: model.imageUrl,
278
- multipleCorrect: model.multipleCorrect,
279
- hasErrors: !!shapesError || !!selectionsError,
280
- hotspotColor: model.hotspotColor,
281
- outlineColor: model.outlineColor,
282
- onUpdateImageDimension: onUpdateImageDimension,
283
- onUpdateShapes: onUpdateShapes,
284
- onImageUpload: onImageUpload,
285
- shapes: model.shapes,
286
- strokeWidth: model.strokeWidth,
287
- preserveAspectRatioEnabled: preserveAspectRatio.enabled
288
- }), shapesError && /*#__PURE__*/_react["default"].createElement("div", {
289
- className: classes.errorText
290
- }, shapesError), selectionsError && /*#__PURE__*/_react["default"].createElement("div", {
291
- className: classes.errorText
292
- }, selectionsError), model.imageUrl && /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
293
- className: classes.label,
294
- variant: "subheading"
295
- }, "Image Dimensions"), /*#__PURE__*/_react["default"].createElement("div", {
296
- className: classes.dimensions
297
- }, /*#__PURE__*/_react["default"].createElement(_configUi.NumberTextField, {
298
- key: "hotspot-manual-width",
299
- label: "Width",
300
- value: model.dimensions.width,
301
- min: 0,
302
- onChange: function onChange(e, value) {
303
- return _this2.handleOnUpdateImageDimensions(value, 'width');
304
- },
305
- showErrorWhenOutsideRange: true,
306
- className: classes.field
307
- }), /*#__PURE__*/_react["default"].createElement(_configUi.NumberTextField, {
308
- key: "hotspot-manual-height",
309
- label: "Height",
310
- value: model.dimensions.height,
311
- min: 0,
312
- onChange: function onChange(e, value) {
313
- return _this2.handleOnUpdateImageDimensions(value, 'height');
314
- },
315
- showErrorWhenOutsideRange: true,
316
- className: classes.field
317
- }))))));
318
- }
319
- }]);
320
- return Root;
321
- }(_react["default"].Component);
322
-
323
- exports.Root = Root;
324
-
325
- var styles = function styles(theme) {
326
- return {
327
- base: {
328
- marginTop: theme.spacing.unit * 3
329
- },
330
- container: {
331
- display: 'flex',
332
- marginTop: theme.spacing.unit
333
- },
334
- dimensions: {
335
- display: 'flex'
336
- },
337
- field: {
338
- flex: 1,
339
- width: '90%'
340
- },
341
- label: {
342
- marginTop: theme.spacing.unit * 4
343
- },
344
- prompt: {
345
- paddingTop: theme.spacing.unit * 2,
346
- width: '100%'
347
- },
348
- subheading: {
349
- marginRight: theme.spacing.unit
350
- },
351
- regular: {
352
- marginBottom: theme.spacing.unit * 3
353
- },
354
- switchElement: {
355
- justifyContent: 'space-between',
356
- margin: 0
357
- },
358
- flexContainer: {
359
- display: 'flex',
360
- alignItems: 'center'
361
- },
362
- tooltip: {
363
- fontSize: '12px',
364
- whiteSpace: 'pre',
365
- maxWidth: '500px'
366
- },
367
- errorText: {
368
- fontSize: '12px',
369
- color: theme.palette.error.main,
370
- paddingTop: theme.spacing.unit
371
- }
372
- };
373
- };
374
-
375
- Root.propTypes = {
376
- classes: _propTypes["default"].object.isRequired,
377
- configuration: _propTypes["default"].object,
378
- model: _propTypes["default"].object.isRequired,
379
- imageSupport: _propTypes["default"].shape({
380
- add: _propTypes["default"].func,
381
- "delete": _propTypes["default"].func
382
- }),
383
- uploadSoundSupport: _propTypes["default"].shape({
384
- add: _propTypes["default"].func,
385
- "delete": _propTypes["default"].func
386
- }),
387
- onImageUpload: _propTypes["default"].func.isRequired,
388
- onColorChanged: _propTypes["default"].func.isRequired,
389
- onPromptChanged: _propTypes["default"].func.isRequired,
390
- onUpdateImageDimension: _propTypes["default"].func.isRequired,
391
- onUpdateShapes: _propTypes["default"].func.isRequired,
392
- onModelChangedByConfig: _propTypes["default"].func.isRequired,
393
- onRationaleChanged: _propTypes["default"].func.isRequired,
394
- onConfigurationChanged: _propTypes["default"].func.isRequired,
395
- onTeacherInstructionsChanged: _propTypes["default"].func.isRequired
396
- };
397
-
398
- var _default = (0, _styles.withStyles)(styles)(Root);
399
-
400
- exports["default"] = _default;
401
- //# sourceMappingURL=root.js.map
@@ -1 +0,0 @@
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","uploadSoundSupport","onConfigurationChanged","onImageUpload","onModelChangedByConfig","onPromptChanged","onRationaleChanged","onTeacherInstructionsChanged","maxImageWidth","maxImageHeight","multipleCorrect","partialScoring","prompt","rationale","settingsPanelDisabled","spellCheck","teacherInstructions","withRubric","errors","promptEnabled","rationaleEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","shapesError","selectionsError","validationMessage","defaultImageMaxWidth","defaultImageMaxHeight","toolbarOpts","position","panelSettings","label","panelProperties","rubricEnabled","base","Settings","Properties","regular","language","flexContainer","subheading","tooltip","hotspotColor","hotspotList","outlineColor","outlineList","handleColorChange","imageUrl","strokeWidth","errorText","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","palette","error","main","propTypes","PropTypes","object","isRequired","shape","add","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { settings, layout, InputContainer, NumberTextField } 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 { updateImageDimensions, generateValidationMessage, getUpdatedShapes, getAllShapes, groupShapes } 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 uploadSoundSupport,\n onConfigurationChanged,\n onImageUpload,\n onModelChangedByConfig,\n onPromptChanged,\n onRationaleChanged,\n onUpdateImageDimension,\n onTeacherInstructionsChanged,\n onUpdateShapes,\n } = this.props;\n const {\n maxImageWidth = {},\n maxImageHeight = {},\n multipleCorrect = {},\n partialScoring = {},\n preserveAspectRatio = {},\n prompt = {},\n rationale = {},\n settingsPanelDisabled,\n spellCheck = {},\n teacherInstructions = {},\n withRubric = {},\n } = configuration || {};\n const {\n errors,\n promptEnabled,\n rationaleEnabled,\n spellCheckEnabled,\n teacherInstructionsEnabled,\n toolbarEditorPosition,\n } = model || {};\n const { shapesError, selectionsError } = errors || {};\n const validationMessage = generateValidationMessage(configuration);\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n\n const toolbarOpts = {\n position: toolbarEditorPosition === 'top' ? 'top' : 'bottom',\n };\n\n const panelSettings = {\n multipleCorrect: multipleCorrect.settings && toggle(multipleCorrect.label),\n partialScoring: partialScoring.settings && toggle(partialScoring.label),\n promptEnabled: prompt.settings && toggle(prompt.label),\n };\n const panelProperties = {\n teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),\n rationaleEnabled: rationale.settings && toggle(rationale.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n rubricEnabled: withRubric?.settings && toggle(withRubric?.label),\n };\n\n return (\n <div className={classes.base}>\n <layout.ConfigLayout\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n onChangeModel={onModelChangedByConfig}\n configuration={configuration}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n Settings: panelSettings,\n Properties: panelProperties,\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 uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\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 uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n\n {rationaleEnabled && (\n <InputContainer label={rationale.label} className={classes.prompt}>\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 uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\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\n <HotspotPalette\n hotspotColor={model.hotspotColor}\n hotspotList={model.hotspotList}\n outlineColor={model.outlineColor}\n outlineList={model.outlineList}\n onHotspotColorChange={(color) => this.handleColorChange('hotspot', color)}\n onOutlineColorChange={(color) => this.handleColorChange('outline', color)}\n />\n\n <HotspotContainer\n dimensions={model.dimensions}\n imageUrl={model.imageUrl}\n multipleCorrect={model.multipleCorrect}\n hasErrors={!!shapesError || !!selectionsError}\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 {shapesError && <div className={classes.errorText}>{shapesError}</div>}\n {selectionsError && <div className={classes.errorText}>{selectionsError}</div>}\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\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: theme.spacing.unit,\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: theme.palette.error.main,\n paddingTop: theme.spacing.unit,\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 uploadSoundSupport: 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,68 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports["default"] = void 0;
9
-
10
- var _react = _interopRequireDefault(require("react"));
11
-
12
- var _propTypes = _interopRequireDefault(require("prop-types"));
13
-
14
- var _index = require("@material-ui/core/styles/index");
15
-
16
- var _button = _interopRequireDefault(require("./button"));
17
-
18
- var UploadControl = function UploadControl(_ref) {
19
- var classNameButton = _ref.classNameButton,
20
- classNameSection = _ref.classNameSection,
21
- classes = _ref.classes,
22
- label = _ref.label,
23
- onInputClick = _ref.onInputClick,
24
- onUploadImage = _ref.onUploadImage,
25
- setRef = _ref.setRef;
26
- return /*#__PURE__*/_react["default"].createElement("div", {
27
- className: classNameSection
28
- }, /*#__PURE__*/_react["default"].createElement(_button["default"], {
29
- className: classNameButton,
30
- label: label,
31
- onClick: onInputClick
32
- }), /*#__PURE__*/_react["default"].createElement("input", {
33
- accept: "image/*",
34
- className: classes.input,
35
- onChange: onUploadImage,
36
- ref: function ref(_ref2) {
37
- setRef(_ref2);
38
- },
39
- type: "file"
40
- }));
41
- };
42
-
43
- var styles = function styles() {
44
- return {
45
- input: {
46
- display: 'none'
47
- }
48
- };
49
- };
50
-
51
- UploadControl.propTypes = {
52
- classes: _propTypes["default"].object.isRequired,
53
- classNameButton: _propTypes["default"].string,
54
- classNameSection: _propTypes["default"].string,
55
- label: _propTypes["default"].string.isRequired,
56
- onInputClick: _propTypes["default"].func.isRequired,
57
- onUploadImage: _propTypes["default"].func.isRequired,
58
- setRef: _propTypes["default"].func.isRequired
59
- };
60
- UploadControl.defaultProps = {
61
- classNameButton: '',
62
- classNameSection: ''
63
- };
64
-
65
- var _default = (0, _index.withStyles)(styles)(UploadControl);
66
-
67
- exports["default"] = _default;
68
- //# sourceMappingURL=upload-control.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/upload-control.jsx"],"names":["UploadControl","classNameButton","classNameSection","classes","label","onInputClick","onUploadImage","setRef","input","ref","styles","display","propTypes","PropTypes","object","isRequired","string","func","defaultProps"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AAEA;;AAEA,IAAMA,aAAa,GAAG,SAAhBA,aAAgB;AAAA,MAAGC,eAAH,QAAGA,eAAH;AAAA,MAAoBC,gBAApB,QAAoBA,gBAApB;AAAA,MAAsCC,OAAtC,QAAsCA,OAAtC;AAAA,MAA+CC,KAA/C,QAA+CA,KAA/C;AAAA,MAAsDC,YAAtD,QAAsDA,YAAtD;AAAA,MAAoEC,aAApE,QAAoEA,aAApE;AAAA,MAAmFC,MAAnF,QAAmFA,MAAnF;AAAA,sBACpB;AAAK,IAAA,SAAS,EAAEL;AAAhB,kBACE,gCAAC,kBAAD;AAAQ,IAAA,SAAS,EAAED,eAAnB;AAAoC,IAAA,KAAK,EAAEG,KAA3C;AAAkD,IAAA,OAAO,EAAEC;AAA3D,IADF,eAEE;AACE,IAAA,MAAM,EAAC,SADT;AAEE,IAAA,SAAS,EAAEF,OAAO,CAACK,KAFrB;AAGE,IAAA,QAAQ,EAAEF,aAHZ;AAIE,IAAA,GAAG,EAAE,aAACG,KAAD,EAAS;AACZF,MAAAA,MAAM,CAACE,KAAD,CAAN;AACD,KANH;AAOE,IAAA,IAAI,EAAC;AAPP,IAFF,CADoB;AAAA,CAAtB;;AAeA,IAAMC,MAAM,GAAG,SAATA,MAAS;AAAA,SAAO;AACpBF,IAAAA,KAAK,EAAE;AACLG,MAAAA,OAAO,EAAE;AADJ;AADa,GAAP;AAAA,CAAf;;AAMAX,aAAa,CAACY,SAAd,GAA0B;AACxBT,EAAAA,OAAO,EAAEU,sBAAUC,MAAV,CAAiBC,UADF;AAExBd,EAAAA,eAAe,EAAEY,sBAAUG,MAFH;AAGxBd,EAAAA,gBAAgB,EAAEW,sBAAUG,MAHJ;AAIxBZ,EAAAA,KAAK,EAAES,sBAAUG,MAAV,CAAiBD,UAJA;AAKxBV,EAAAA,YAAY,EAAEQ,sBAAUI,IAAV,CAAeF,UALL;AAMxBT,EAAAA,aAAa,EAAEO,sBAAUI,IAAV,CAAeF,UANN;AAOxBR,EAAAA,MAAM,EAAEM,sBAAUI,IAAV,CAAeF;AAPC,CAA1B;AAUAf,aAAa,CAACkB,YAAd,GAA6B;AAC3BjB,EAAAA,eAAe,EAAE,EADU;AAE3BC,EAAAA,gBAAgB,EAAE;AAFS,CAA7B;;eAKe,uBAAWQ,MAAX,EAAmBV,aAAnB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles/index';\n\nimport Button from './button';\n\nconst UploadControl = ({ classNameButton, classNameSection, classes, label, onInputClick, onUploadImage, setRef }) => (\n <div className={classNameSection}>\n <Button className={classNameButton} label={label} onClick={onInputClick} />\n <input\n accept=\"image/*\"\n className={classes.input}\n onChange={onUploadImage}\n ref={(ref) => {\n setRef(ref);\n }}\n type=\"file\"\n />\n </div>\n);\n\nconst styles = () => ({\n input: {\n display: 'none',\n },\n});\n\nUploadControl.propTypes = {\n classes: PropTypes.object.isRequired,\n classNameButton: PropTypes.string,\n classNameSection: PropTypes.string,\n label: PropTypes.string.isRequired,\n onInputClick: PropTypes.func.isRequired,\n onUploadImage: PropTypes.func.isRequired,\n setRef: PropTypes.func.isRequired,\n};\n\nUploadControl.defaultProps = {\n classNameButton: '',\n classNameSection: '',\n};\n\nexport default withStyles(styles)(UploadControl);\n"],"file":"upload-control.js"}