@pie-element/hotspot 6.15.2-next.1 → 6.15.2-next.2
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/configure/lib/DeleteWidget.js +79 -0
- package/configure/lib/DeleteWidget.js.map +1 -0
- package/configure/lib/button.js +61 -0
- package/configure/lib/button.js.map +1 -0
- package/configure/lib/buttons/circle.js +40 -0
- package/configure/lib/buttons/circle.js.map +1 -0
- package/configure/lib/buttons/polygon.js +46 -0
- package/configure/lib/buttons/polygon.js.map +1 -0
- package/configure/lib/buttons/rectangle.js +46 -0
- package/configure/lib/buttons/rectangle.js.map +1 -0
- package/configure/lib/defaults.js +143 -0
- package/configure/lib/defaults.js.map +1 -0
- package/configure/lib/hotspot-circle.js +246 -0
- package/configure/lib/hotspot-circle.js.map +1 -0
- package/configure/lib/hotspot-container.js +417 -0
- package/configure/lib/hotspot-container.js.map +1 -0
- package/configure/lib/hotspot-drawable.js +548 -0
- package/configure/lib/hotspot-drawable.js.map +1 -0
- package/configure/lib/hotspot-palette.js +154 -0
- package/configure/lib/hotspot-palette.js.map +1 -0
- package/configure/lib/hotspot-polygon.js +364 -0
- package/configure/lib/hotspot-polygon.js.map +1 -0
- package/configure/lib/hotspot-rectangle.js +240 -0
- package/configure/lib/hotspot-rectangle.js.map +1 -0
- package/configure/lib/icons.js +7 -0
- package/configure/lib/icons.js.map +1 -0
- package/configure/lib/index.js +254 -0
- package/configure/lib/index.js.map +1 -0
- package/configure/lib/root.js +418 -0
- package/configure/lib/root.js.map +1 -0
- package/configure/lib/shapes/circle.js +115 -0
- package/configure/lib/shapes/circle.js.map +1 -0
- package/configure/lib/shapes/polygon.js +111 -0
- package/configure/lib/shapes/polygon.js.map +1 -0
- package/configure/lib/shapes/rectagle.js +115 -0
- package/configure/lib/shapes/rectagle.js.map +1 -0
- package/configure/lib/upload-control.js +68 -0
- package/configure/lib/upload-control.js.map +1 -0
- package/configure/lib/utils.js +237 -0
- package/configure/lib/utils.js.map +1 -0
- package/configure/package.json +1 -1
- package/controller/lib/defaults.js +33 -0
- package/controller/lib/defaults.js.map +1 -0
- package/controller/lib/index.js +289 -0
- package/controller/lib/index.js.map +1 -0
- package/controller/lib/utils.js +54 -0
- package/controller/lib/utils.js.map +1 -0
- package/controller/package.json +1 -1
- package/lib/hotspot/circle.js +191 -0
- package/lib/hotspot/circle.js.map +1 -0
- package/lib/hotspot/container.js +282 -0
- package/lib/hotspot/container.js.map +1 -0
- package/lib/hotspot/icons.js +8 -0
- package/lib/hotspot/icons.js.map +1 -0
- package/lib/hotspot/index.js +209 -0
- package/lib/hotspot/index.js.map +1 -0
- package/lib/hotspot/polygon.js +225 -0
- package/lib/hotspot/polygon.js.map +1 -0
- package/lib/hotspot/rectangle.js +207 -0
- package/lib/hotspot/rectangle.js.map +1 -0
- package/lib/index.js +114 -0
- package/lib/index.js.map +1 -0
- package/lib/session-updater.js +30 -0
- package/lib/session-updater.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["log","HotspotConfigure","c","_configuration","_render","m","propertyType","_model","shapes","rectangles","polygons","circles","map","shape","correct","onModelChanged","colorType","color","prompt","rationale","teacherInstructions","dimensions","imageUrl","handler","dispatchEvent","InsertImageEvent","src","done","DeleteImageEvent","createDefaultModel","sensibleDefaults","configuration","bind","s","newConfiguration","language","enabled","languageChoices","options","length","value","settings","find","option","push","label","reset","resetValue","ModelUpdatedEvent","dispatchModelUpdated","InsertSoundEvent","DeleteSoundEvent","element","React","createElement","Root","model","onColorChanged","onImageUpload","onRationaleChanged","onConfigurationChanged","onPromptChanged","onUpdateImageDimension","imageSupport","add","insertImage","onDeleteImage","uploadSoundSupport","insertSound","onDeleteSound","onUpdateShapes","onModelChangedByConfig","onTeacherInstructionsChanged","ReactDOM","render","HTMLElement","hotspotList","hotspotColor","outlineList","outlineColor"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport debug from 'debug';\nimport {\n ModelUpdatedEvent,\n DeleteImageEvent,\n InsertImageEvent,\n InsertSoundEvent,\n DeleteSoundEvent,\n} from '@pie-framework/pie-configure-events';\n\nimport Root from './root';\nimport sensibleDefaults from './defaults';\n\nconst log = debug('hotspot:configure');\n\nexport default class HotspotConfigure extends HTMLElement {\n static createDefaultModel = (model = {}) => ({\n ...sensibleDefaults.model,\n ...model,\n hotspotList: model.hotspotList || [model.hotspotColor] || sensibleDefaults.model.hotspotList,\n outlineList: model.outlineList || [model.outlineColor] || sensibleDefaults.model.outlineList,\n shapes: model.shapes || sensibleDefaults.model.shapes || {},\n });\n\n constructor() {\n super();\n this._model = HotspotConfigure.createDefaultModel();\n this._configuration = sensibleDefaults.configuration;\n this.onModelChanged = this.onModelChanged.bind(this);\n }\n\n set model(s) {\n this._model = HotspotConfigure.createDefaultModel(s);\n this._render();\n }\n\n set configuration(c) {\n const newConfiguration = {\n ...sensibleDefaults.configuration,\n ...c,\n };\n\n this._configuration = newConfiguration;\n\n // if language:enabled is true, then the corresponding default item model should include a language value;\n // if it is false, then the language field should be omitted from the item model.\n // if a default item model includes a language value (e.g., en_US) and the corresponding authoring view settings have language:settings = true,\n // then (a) language:enabled should also be true, and (b) that default language value should be represented in languageChoices[] (as a key).\n if (newConfiguration?.language?.enabled) {\n if (newConfiguration?.languageChoices?.options?.length) {\n this._model.language = newConfiguration?.languageChoices.options[0].value;\n }\n } else if (newConfiguration.language.settings && this._model.language) {\n this._configuration.language.enabled = true;\n\n if (!this._configuration.languageChoices.options || !this._configuration.languageChoices.options.length) {\n this._configuration.languageChoices.options = [];\n }\n\n // check if the language is already included in the languageChoices.options array\n // and if not, then add it.\n if (!this._configuration.languageChoices.options.find((option) => option.value === this._model.language)) {\n this._configuration.languageChoices.options.push({\n value: this._model.language,\n label: this._model.language,\n });\n }\n } else {\n delete this._model.language;\n }\n\n this._render();\n }\n\n dispatchModelUpdated(reset) {\n const resetValue = !!reset;\n\n this.dispatchEvent(new ModelUpdatedEvent(this._model, resetValue));\n }\n\n onModelChanged(m, reset) {\n this._model = m;\n this.dispatchModelUpdated(reset);\n this._render();\n }\n\n onConfigurationChanged = (c) => {\n this._configuration = c;\n this._render();\n };\n\n onModelChangedByConfig = (m, propertyType) => {\n const _model = m;\n\n if (propertyType === 'multipleCorrect') {\n const { rectangles = [], polygons = [], circles = [] } = _model.shapes || {};\n\n _model.shapes.rectangles = rectangles.map((shape) => ({ ...shape, correct: false }));\n _model.shapes.polygons = polygons.map((shape) => ({ ...shape, correct: false }));\n _model.shapes.circles = circles.map((shape) => ({ ...shape, correct: false }));\n }\n\n this.onModelChanged(_model);\n };\n\n onColorChanged = (colorType, color) => {\n this.onModelChanged({\n ...this._model,\n [colorType]: color,\n });\n };\n\n onPromptChanged = (prompt) => {\n this.onModelChanged({\n ...this._model,\n prompt,\n });\n };\n\n onRationaleChanged = (rationale) => {\n this.onModelChanged({\n ...this._model,\n rationale,\n });\n };\n\n onTeacherInstructionsChanged = (teacherInstructions) => {\n this.onModelChanged({\n ...this._model,\n teacherInstructions,\n });\n };\n\n onUpdateImageDimension = (dimensions) => {\n this.onModelChanged({\n ...this._model,\n dimensions,\n });\n };\n\n onUpdateShapes = (shapes) => {\n this.onModelChanged({\n ...this._model,\n shapes,\n });\n };\n\n onImageUpload = (imageUrl) => {\n this.onModelChanged({\n ...this._model,\n imageUrl,\n });\n };\n\n insertImage = (handler) => {\n this.dispatchEvent(new InsertImageEvent(handler));\n };\n\n onDeleteImage = (src, done) => {\n this.dispatchEvent(new DeleteImageEvent(src, done));\n };\n\n insertSound(handler) {\n this.dispatchEvent(new InsertSoundEvent(handler));\n }\n\n onDeleteSound(src, done) {\n this.dispatchEvent(new DeleteSoundEvent(src, done));\n }\n\n _render() {\n log('_render');\n let element = React.createElement(Root, {\n configuration: this._configuration,\n model: this._model,\n onColorChanged: this.onColorChanged,\n onImageUpload: this.onImageUpload,\n onRationaleChanged: this.onRationaleChanged,\n onConfigurationChanged: this.onConfigurationChanged,\n onPromptChanged: this.onPromptChanged,\n onUpdateImageDimension: this.onUpdateImageDimension,\n imageSupport: {\n add: this.insertImage,\n delete: this.onDeleteImage,\n },\n uploadSoundSupport: {\n add: this.insertSound.bind(this),\n delete: this.onDeleteSound.bind(this),\n },\n onUpdateShapes: this.onUpdateShapes,\n onModelChangedByConfig: this.onModelChangedByConfig,\n onTeacherInstructionsChanged: this.onTeacherInstructionsChanged,\n });\n\n ReactDOM.render(element, this);\n }\n}\n"],"file":"index.js"}
|
|
@@ -0,0 +1,418 @@
|
|
|
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/pie-toolbox/config-ui");
|
|
27
|
+
|
|
28
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
29
|
+
|
|
30
|
+
var _editableHtml = require("@pie-lib/pie-toolbox/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 _utils = require("./utils");
|
|
45
|
+
|
|
46
|
+
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; }
|
|
47
|
+
|
|
48
|
+
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; }
|
|
49
|
+
|
|
50
|
+
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); }; }
|
|
51
|
+
|
|
52
|
+
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; } }
|
|
53
|
+
|
|
54
|
+
var Panel = _configUi.settings.Panel,
|
|
55
|
+
toggle = _configUi.settings.toggle,
|
|
56
|
+
dropdown = _configUi.settings.dropdown;
|
|
57
|
+
|
|
58
|
+
var Root = /*#__PURE__*/function (_React$Component) {
|
|
59
|
+
(0, _inherits2["default"])(Root, _React$Component);
|
|
60
|
+
|
|
61
|
+
var _super = _createSuper(Root);
|
|
62
|
+
|
|
63
|
+
function Root() {
|
|
64
|
+
var _this;
|
|
65
|
+
|
|
66
|
+
(0, _classCallCheck2["default"])(this, Root);
|
|
67
|
+
|
|
68
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
69
|
+
args[_key] = arguments[_key];
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
73
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleColorChange", function (fieldType, color) {
|
|
74
|
+
var onColorChanged = _this.props.onColorChanged;
|
|
75
|
+
var cType = "".concat(fieldType, "Color");
|
|
76
|
+
onColorChanged(cType, color);
|
|
77
|
+
});
|
|
78
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleOnUpdateImageDimensions", function (value, resizeType) {
|
|
79
|
+
var _this$props = _this.props,
|
|
80
|
+
_this$props$model = _this$props.model,
|
|
81
|
+
dimensions = _this$props$model.dimensions,
|
|
82
|
+
shapes = _this$props$model.shapes,
|
|
83
|
+
_this$props$configura = _this$props.configuration.preserveAspectRatio,
|
|
84
|
+
preserveAspectRatio = _this$props$configura === void 0 ? {} : _this$props$configura,
|
|
85
|
+
onUpdateImageDimension = _this$props.onUpdateImageDimension,
|
|
86
|
+
onUpdateShapes = _this$props.onUpdateShapes;
|
|
87
|
+
|
|
88
|
+
var nextImageDimensions = _objectSpread(_objectSpread({}, dimensions), {}, (0, _defineProperty2["default"])({}, resizeType, value)); // if preserveAspectRatio.enabled, updateImageDimensions function makes sure aspect ratio is kept
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
var updatedDimensions = (0, _utils.updateImageDimensions)(dimensions, nextImageDimensions, preserveAspectRatio.enabled, resizeType); // transform shapes map into shapes array
|
|
92
|
+
|
|
93
|
+
var shapesArray = (0, _utils.getAllShapes)(shapes); // transform all the shapes to fit the re-sized image
|
|
94
|
+
|
|
95
|
+
var updatedShapes = (0, _utils.getUpdatedShapes)(dimensions, updatedDimensions, shapesArray); // transform shapes array back into shapes map
|
|
96
|
+
|
|
97
|
+
onUpdateShapes((0, _utils.groupShapes)(updatedShapes));
|
|
98
|
+
onUpdateImageDimension(updatedDimensions);
|
|
99
|
+
});
|
|
100
|
+
return _this;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
(0, _createClass2["default"])(Root, [{
|
|
104
|
+
key: "render",
|
|
105
|
+
value: function render() {
|
|
106
|
+
var _this2 = this;
|
|
107
|
+
|
|
108
|
+
var _this$props2 = this.props,
|
|
109
|
+
classes = _this$props2.classes,
|
|
110
|
+
configuration = _this$props2.configuration,
|
|
111
|
+
model = _this$props2.model,
|
|
112
|
+
imageSupport = _this$props2.imageSupport,
|
|
113
|
+
uploadSoundSupport = _this$props2.uploadSoundSupport,
|
|
114
|
+
onConfigurationChanged = _this$props2.onConfigurationChanged,
|
|
115
|
+
onImageUpload = _this$props2.onImageUpload,
|
|
116
|
+
onModelChangedByConfig = _this$props2.onModelChangedByConfig,
|
|
117
|
+
onPromptChanged = _this$props2.onPromptChanged,
|
|
118
|
+
onRationaleChanged = _this$props2.onRationaleChanged,
|
|
119
|
+
onUpdateImageDimension = _this$props2.onUpdateImageDimension,
|
|
120
|
+
onTeacherInstructionsChanged = _this$props2.onTeacherInstructionsChanged,
|
|
121
|
+
onUpdateShapes = _this$props2.onUpdateShapes;
|
|
122
|
+
|
|
123
|
+
var _ref = configuration || {},
|
|
124
|
+
_ref$baseInputConfigu = _ref.baseInputConfiguration,
|
|
125
|
+
baseInputConfiguration = _ref$baseInputConfigu === void 0 ? {} : _ref$baseInputConfigu,
|
|
126
|
+
_ref$contentDimension = _ref.contentDimensions,
|
|
127
|
+
contentDimensions = _ref$contentDimension === void 0 ? {} : _ref$contentDimension,
|
|
128
|
+
_ref$maxImageWidth = _ref.maxImageWidth,
|
|
129
|
+
maxImageWidth = _ref$maxImageWidth === void 0 ? {} : _ref$maxImageWidth,
|
|
130
|
+
_ref$maxImageHeight = _ref.maxImageHeight,
|
|
131
|
+
maxImageHeight = _ref$maxImageHeight === void 0 ? {} : _ref$maxImageHeight,
|
|
132
|
+
_ref$multipleCorrect = _ref.multipleCorrect,
|
|
133
|
+
multipleCorrect = _ref$multipleCorrect === void 0 ? {} : _ref$multipleCorrect,
|
|
134
|
+
_ref$partialScoring = _ref.partialScoring,
|
|
135
|
+
partialScoring = _ref$partialScoring === void 0 ? {} : _ref$partialScoring,
|
|
136
|
+
_ref$preserveAspectRa = _ref.preserveAspectRatio,
|
|
137
|
+
preserveAspectRatio = _ref$preserveAspectRa === void 0 ? {} : _ref$preserveAspectRa,
|
|
138
|
+
_ref$prompt = _ref.prompt,
|
|
139
|
+
prompt = _ref$prompt === void 0 ? {} : _ref$prompt,
|
|
140
|
+
_ref$rationale = _ref.rationale,
|
|
141
|
+
rationale = _ref$rationale === void 0 ? {} : _ref$rationale,
|
|
142
|
+
settingsPanelDisabled = _ref.settingsPanelDisabled,
|
|
143
|
+
_ref$spellCheck = _ref.spellCheck,
|
|
144
|
+
spellCheck = _ref$spellCheck === void 0 ? {} : _ref$spellCheck,
|
|
145
|
+
_ref$teacherInstructi = _ref.teacherInstructions,
|
|
146
|
+
teacherInstructions = _ref$teacherInstructi === void 0 ? {} : _ref$teacherInstructi,
|
|
147
|
+
_ref$withRubric = _ref.withRubric,
|
|
148
|
+
withRubric = _ref$withRubric === void 0 ? {} : _ref$withRubric,
|
|
149
|
+
_ref$mathMlOptions = _ref.mathMlOptions,
|
|
150
|
+
mathMlOptions = _ref$mathMlOptions === void 0 ? {} : _ref$mathMlOptions,
|
|
151
|
+
_ref$language = _ref.language,
|
|
152
|
+
language = _ref$language === void 0 ? {} : _ref$language,
|
|
153
|
+
_ref$languageChoices = _ref.languageChoices,
|
|
154
|
+
languageChoices = _ref$languageChoices === void 0 ? {} : _ref$languageChoices;
|
|
155
|
+
|
|
156
|
+
var _ref2 = model || {},
|
|
157
|
+
errors = _ref2.errors,
|
|
158
|
+
promptEnabled = _ref2.promptEnabled,
|
|
159
|
+
rationaleEnabled = _ref2.rationaleEnabled,
|
|
160
|
+
spellCheckEnabled = _ref2.spellCheckEnabled,
|
|
161
|
+
teacherInstructionsEnabled = _ref2.teacherInstructionsEnabled,
|
|
162
|
+
toolbarEditorPosition = _ref2.toolbarEditorPosition;
|
|
163
|
+
|
|
164
|
+
var _ref3 = errors || {},
|
|
165
|
+
promptError = _ref3.prompt,
|
|
166
|
+
rationaleError = _ref3.rationale,
|
|
167
|
+
shapesError = _ref3.shapes,
|
|
168
|
+
selectionsError = _ref3.selections,
|
|
169
|
+
teacherInstructionsError = _ref3.teacherInstructions;
|
|
170
|
+
|
|
171
|
+
var validationMessage = (0, _utils.generateValidationMessage)(configuration);
|
|
172
|
+
var defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;
|
|
173
|
+
var defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;
|
|
174
|
+
var toolbarOpts = {
|
|
175
|
+
position: toolbarEditorPosition === 'top' ? 'top' : 'bottom'
|
|
176
|
+
};
|
|
177
|
+
var panelSettings = {
|
|
178
|
+
multipleCorrect: multipleCorrect.settings && toggle(multipleCorrect.label),
|
|
179
|
+
partialScoring: partialScoring.settings && toggle(partialScoring.label),
|
|
180
|
+
promptEnabled: prompt.settings && toggle(prompt.label),
|
|
181
|
+
'language.enabled': language.settings && toggle(language.label, true),
|
|
182
|
+
language: language.settings && language.enabled && dropdown(languageChoices.label, languageChoices.options)
|
|
183
|
+
};
|
|
184
|
+
var panelProperties = {
|
|
185
|
+
teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),
|
|
186
|
+
rationaleEnabled: rationale.settings && toggle(rationale.label),
|
|
187
|
+
spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),
|
|
188
|
+
rubricEnabled: (withRubric === null || withRubric === void 0 ? void 0 : withRubric.settings) && toggle(withRubric === null || withRubric === void 0 ? void 0 : withRubric.label)
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
var getPluginProps = function getPluginProps() {
|
|
192
|
+
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
193
|
+
return _objectSpread(_objectSpread({}, baseInputConfiguration), props);
|
|
194
|
+
};
|
|
195
|
+
|
|
196
|
+
return /*#__PURE__*/_react["default"].createElement(_configUi.layout.ConfigLayout, {
|
|
197
|
+
dimensions: contentDimensions,
|
|
198
|
+
hideSettings: settingsPanelDisabled,
|
|
199
|
+
settings: /*#__PURE__*/_react["default"].createElement(Panel, {
|
|
200
|
+
model: model,
|
|
201
|
+
onChangeModel: onModelChangedByConfig,
|
|
202
|
+
configuration: configuration,
|
|
203
|
+
onChangeConfiguration: onConfigurationChanged,
|
|
204
|
+
groups: {
|
|
205
|
+
Settings: panelSettings,
|
|
206
|
+
Properties: panelProperties
|
|
207
|
+
}
|
|
208
|
+
})
|
|
209
|
+
}, teacherInstructionsEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
|
|
210
|
+
label: teacherInstructions.label,
|
|
211
|
+
className: classes.promptContainer
|
|
212
|
+
}, /*#__PURE__*/_react["default"].createElement(_editableHtml.EditableHtml, {
|
|
213
|
+
markup: model.teacherInstructions || '',
|
|
214
|
+
onChange: onTeacherInstructionsChanged,
|
|
215
|
+
imageSupport: imageSupport,
|
|
216
|
+
nonEmpty: false,
|
|
217
|
+
error: teacherInstructionsError,
|
|
218
|
+
toolbarOpts: toolbarOpts,
|
|
219
|
+
pluginProps: getPluginProps(teacherInstructions === null || teacherInstructions === void 0 ? void 0 : teacherInstructions.inputConfiguration),
|
|
220
|
+
spellCheck: spellCheckEnabled,
|
|
221
|
+
maxImageWidth: maxImageWidth && maxImageWidth.teacherInstructions || defaultImageMaxWidth,
|
|
222
|
+
maxImageHeight: maxImageHeight && maxImageHeight.teacherInstructions || defaultImageMaxHeight,
|
|
223
|
+
uploadSoundSupport: uploadSoundSupport,
|
|
224
|
+
languageCharactersProps: [{
|
|
225
|
+
language: 'spanish'
|
|
226
|
+
}, {
|
|
227
|
+
language: 'special'
|
|
228
|
+
}],
|
|
229
|
+
mathMlOptions: mathMlOptions
|
|
230
|
+
}), teacherInstructionsError && /*#__PURE__*/_react["default"].createElement("div", {
|
|
231
|
+
className: classes.errorText
|
|
232
|
+
}, teacherInstructionsError)), promptEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
|
|
233
|
+
label: prompt.label,
|
|
234
|
+
className: classes.promptContainer
|
|
235
|
+
}, /*#__PURE__*/_react["default"].createElement(_editableHtml.EditableHtml, {
|
|
236
|
+
markup: model.prompt || '',
|
|
237
|
+
onChange: onPromptChanged,
|
|
238
|
+
imageSupport: imageSupport,
|
|
239
|
+
nonEmpty: false,
|
|
240
|
+
error: promptError,
|
|
241
|
+
toolbarOpts: toolbarOpts,
|
|
242
|
+
pluginProps: getPluginProps(prompt === null || prompt === void 0 ? void 0 : prompt.inputConfiguration),
|
|
243
|
+
spellCheck: spellCheckEnabled,
|
|
244
|
+
maxImageWidth: defaultImageMaxWidth,
|
|
245
|
+
maxImageHeight: defaultImageMaxHeight,
|
|
246
|
+
uploadSoundSupport: uploadSoundSupport,
|
|
247
|
+
languageCharactersProps: [{
|
|
248
|
+
language: 'spanish'
|
|
249
|
+
}, {
|
|
250
|
+
language: 'special'
|
|
251
|
+
}],
|
|
252
|
+
mathMlOptions: mathMlOptions
|
|
253
|
+
}), promptError && /*#__PURE__*/_react["default"].createElement("div", {
|
|
254
|
+
className: classes.errorText
|
|
255
|
+
}, promptError)), /*#__PURE__*/_react["default"].createElement("div", {
|
|
256
|
+
className: classes.flexContainer
|
|
257
|
+
}, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
|
|
258
|
+
className: classes.subheading,
|
|
259
|
+
variant: "subheading"
|
|
260
|
+
}, "Define Hotspot"), /*#__PURE__*/_react["default"].createElement(_Tooltip["default"], {
|
|
261
|
+
classes: {
|
|
262
|
+
tooltip: classes.tooltip
|
|
263
|
+
},
|
|
264
|
+
disableFocusListener: true,
|
|
265
|
+
disableTouchListener: true,
|
|
266
|
+
placement: 'left',
|
|
267
|
+
title: validationMessage
|
|
268
|
+
}, /*#__PURE__*/_react["default"].createElement(_Info["default"], {
|
|
269
|
+
fontSize: 'small',
|
|
270
|
+
color: 'primary',
|
|
271
|
+
style: {
|
|
272
|
+
"float": 'right'
|
|
273
|
+
}
|
|
274
|
+
}))), /*#__PURE__*/_react["default"].createElement(_hotspotPalette["default"], {
|
|
275
|
+
hotspotColor: model.hotspotColor,
|
|
276
|
+
hotspotList: model.hotspotList,
|
|
277
|
+
outlineColor: model.outlineColor,
|
|
278
|
+
outlineList: model.outlineList,
|
|
279
|
+
onHotspotColorChange: function onHotspotColorChange(color) {
|
|
280
|
+
return _this2.handleColorChange('hotspot', color);
|
|
281
|
+
},
|
|
282
|
+
onOutlineColorChange: function onOutlineColorChange(color) {
|
|
283
|
+
return _this2.handleColorChange('outline', color);
|
|
284
|
+
}
|
|
285
|
+
}), /*#__PURE__*/_react["default"].createElement(_hotspotContainer["default"], {
|
|
286
|
+
dimensions: model.dimensions,
|
|
287
|
+
imageUrl: model.imageUrl,
|
|
288
|
+
multipleCorrect: model.multipleCorrect,
|
|
289
|
+
hasErrors: !!shapesError || !!selectionsError,
|
|
290
|
+
hotspotColor: model.hotspotColor,
|
|
291
|
+
outlineColor: model.outlineColor,
|
|
292
|
+
onUpdateImageDimension: onUpdateImageDimension,
|
|
293
|
+
onUpdateShapes: onUpdateShapes,
|
|
294
|
+
onImageUpload: onImageUpload,
|
|
295
|
+
shapes: model.shapes,
|
|
296
|
+
strokeWidth: model.strokeWidth,
|
|
297
|
+
preserveAspectRatioEnabled: preserveAspectRatio.enabled,
|
|
298
|
+
insertImage: imageSupport && imageSupport.add
|
|
299
|
+
}), shapesError && /*#__PURE__*/_react["default"].createElement("div", {
|
|
300
|
+
className: classes.errorText
|
|
301
|
+
}, shapesError), selectionsError && /*#__PURE__*/_react["default"].createElement("div", {
|
|
302
|
+
className: classes.errorText
|
|
303
|
+
}, selectionsError), model.imageUrl && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
|
|
304
|
+
variant: "subheading"
|
|
305
|
+
}, "Image Dimensions"), /*#__PURE__*/_react["default"].createElement("div", {
|
|
306
|
+
className: classes.dimensions
|
|
307
|
+
}, /*#__PURE__*/_react["default"].createElement(_configUi.NumberTextField, {
|
|
308
|
+
key: "hotspot-manual-width",
|
|
309
|
+
label: "Width",
|
|
310
|
+
value: model.dimensions.width,
|
|
311
|
+
min: 0,
|
|
312
|
+
onChange: function onChange(e, value) {
|
|
313
|
+
return _this2.handleOnUpdateImageDimensions(value, 'width');
|
|
314
|
+
},
|
|
315
|
+
showErrorWhenOutsideRange: true,
|
|
316
|
+
className: classes.field
|
|
317
|
+
}), /*#__PURE__*/_react["default"].createElement(_configUi.NumberTextField, {
|
|
318
|
+
key: "hotspot-manual-height",
|
|
319
|
+
label: "Height",
|
|
320
|
+
value: model.dimensions.height,
|
|
321
|
+
min: 0,
|
|
322
|
+
onChange: function onChange(e, value) {
|
|
323
|
+
return _this2.handleOnUpdateImageDimensions(value, 'height');
|
|
324
|
+
},
|
|
325
|
+
showErrorWhenOutsideRange: true,
|
|
326
|
+
className: classes.field
|
|
327
|
+
}))), rationaleEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
|
|
328
|
+
label: rationale.label,
|
|
329
|
+
className: classes.promptContainer
|
|
330
|
+
}, /*#__PURE__*/_react["default"].createElement(_editableHtml.EditableHtml, {
|
|
331
|
+
markup: model.rationale || '',
|
|
332
|
+
onChange: onRationaleChanged,
|
|
333
|
+
imageSupport: imageSupport,
|
|
334
|
+
error: rationaleError,
|
|
335
|
+
toolbarOpts: toolbarOpts,
|
|
336
|
+
pluginProps: getPluginProps(rationale === null || rationale === void 0 ? void 0 : rationale.inputConfiguration),
|
|
337
|
+
spellCheck: spellCheckEnabled,
|
|
338
|
+
maxImageWidth: maxImageWidth && maxImageWidth.rationale || defaultImageMaxWidth,
|
|
339
|
+
maxImageHeight: maxImageHeight && maxImageHeight.rationale || defaultImageMaxHeight,
|
|
340
|
+
uploadSoundSupport: uploadSoundSupport,
|
|
341
|
+
languageCharactersProps: [{
|
|
342
|
+
language: 'spanish'
|
|
343
|
+
}, {
|
|
344
|
+
language: 'special'
|
|
345
|
+
}],
|
|
346
|
+
mathMlOptions: mathMlOptions
|
|
347
|
+
}), rationaleError && /*#__PURE__*/_react["default"].createElement("div", {
|
|
348
|
+
className: classes.errorText
|
|
349
|
+
}, rationaleError)));
|
|
350
|
+
}
|
|
351
|
+
}]);
|
|
352
|
+
return Root;
|
|
353
|
+
}(_react["default"].Component);
|
|
354
|
+
|
|
355
|
+
exports.Root = Root;
|
|
356
|
+
|
|
357
|
+
var styles = function styles(theme) {
|
|
358
|
+
return {
|
|
359
|
+
dimensions: {
|
|
360
|
+
display: 'flex',
|
|
361
|
+
marginBottom: theme.spacing.unit * 1.5
|
|
362
|
+
},
|
|
363
|
+
field: {
|
|
364
|
+
flex: 1,
|
|
365
|
+
width: '90%'
|
|
366
|
+
},
|
|
367
|
+
promptContainer: {
|
|
368
|
+
paddingTop: theme.spacing.unit * 2,
|
|
369
|
+
marginBottom: theme.spacing.unit * 2,
|
|
370
|
+
width: '100%'
|
|
371
|
+
},
|
|
372
|
+
subheading: {
|
|
373
|
+
marginRight: theme.spacing.unit
|
|
374
|
+
},
|
|
375
|
+
flexContainer: {
|
|
376
|
+
display: 'flex',
|
|
377
|
+
alignItems: 'center'
|
|
378
|
+
},
|
|
379
|
+
tooltip: {
|
|
380
|
+
fontSize: theme.typography.fontSize - 2,
|
|
381
|
+
whiteSpace: 'pre',
|
|
382
|
+
maxWidth: '500px'
|
|
383
|
+
},
|
|
384
|
+
errorText: {
|
|
385
|
+
fontSize: theme.typography.fontSize - 2,
|
|
386
|
+
color: theme.palette.error.main,
|
|
387
|
+
paddingTop: theme.spacing.unit
|
|
388
|
+
}
|
|
389
|
+
};
|
|
390
|
+
};
|
|
391
|
+
|
|
392
|
+
Root.propTypes = {
|
|
393
|
+
classes: _propTypes["default"].object.isRequired,
|
|
394
|
+
configuration: _propTypes["default"].object,
|
|
395
|
+
model: _propTypes["default"].object.isRequired,
|
|
396
|
+
imageSupport: _propTypes["default"].shape({
|
|
397
|
+
add: _propTypes["default"].func,
|
|
398
|
+
"delete": _propTypes["default"].func
|
|
399
|
+
}),
|
|
400
|
+
uploadSoundSupport: _propTypes["default"].shape({
|
|
401
|
+
add: _propTypes["default"].func,
|
|
402
|
+
"delete": _propTypes["default"].func
|
|
403
|
+
}),
|
|
404
|
+
onImageUpload: _propTypes["default"].func.isRequired,
|
|
405
|
+
onColorChanged: _propTypes["default"].func.isRequired,
|
|
406
|
+
onPromptChanged: _propTypes["default"].func.isRequired,
|
|
407
|
+
onUpdateImageDimension: _propTypes["default"].func.isRequired,
|
|
408
|
+
onUpdateShapes: _propTypes["default"].func.isRequired,
|
|
409
|
+
onModelChangedByConfig: _propTypes["default"].func.isRequired,
|
|
410
|
+
onRationaleChanged: _propTypes["default"].func.isRequired,
|
|
411
|
+
onConfigurationChanged: _propTypes["default"].func.isRequired,
|
|
412
|
+
onTeacherInstructionsChanged: _propTypes["default"].func.isRequired
|
|
413
|
+
};
|
|
414
|
+
|
|
415
|
+
var _default = (0, _styles.withStyles)(styles)(Root);
|
|
416
|
+
|
|
417
|
+
exports["default"] = _default;
|
|
418
|
+
//# sourceMappingURL=root.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/root.jsx"],"names":["Panel","settings","toggle","dropdown","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","baseInputConfiguration","contentDimensions","maxImageWidth","maxImageHeight","multipleCorrect","partialScoring","prompt","rationale","settingsPanelDisabled","spellCheck","teacherInstructions","withRubric","mathMlOptions","language","languageChoices","errors","promptEnabled","rationaleEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","promptError","rationaleError","shapesError","selectionsError","selections","teacherInstructionsError","validationMessage","defaultImageMaxWidth","defaultImageMaxHeight","toolbarOpts","position","panelSettings","label","options","panelProperties","rubricEnabled","getPluginProps","Settings","Properties","promptContainer","inputConfiguration","errorText","flexContainer","subheading","tooltip","hotspotColor","hotspotList","outlineColor","outlineList","handleColorChange","imageUrl","strokeWidth","add","width","e","handleOnUpdateImageDimensions","field","height","React","Component","styles","theme","display","marginBottom","spacing","unit","flex","paddingTop","marginRight","alignItems","fontSize","typography","whiteSpace","maxWidth","palette","error","main","propTypes","PropTypes","object","isRequired","shape","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { settings, layout, InputContainer, NumberTextField } from '@pie-lib/pie-toolbox/config-ui';\nimport PropTypes from 'prop-types';\nimport { EditableHtml } from '@pie-lib/pie-toolbox/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 { updateImageDimensions, generateValidationMessage, getUpdatedShapes, getAllShapes, groupShapes } from './utils';\n\nconst { Panel, toggle, dropdown } = 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 baseInputConfiguration = {},\n contentDimensions = {},\n maxImageWidth = {},\n maxImageHeight = {},\n multipleCorrect = {},\n partialScoring = {},\n preserveAspectRatio = {},\n prompt = {},\n rationale = {},\n settingsPanelDisabled,\n spellCheck = {},\n teacherInstructions = {},\n withRubric = {},\n mathMlOptions = {},\n language = {},\n languageChoices = {},\n } = configuration || {};\n const {\n errors,\n promptEnabled,\n rationaleEnabled,\n spellCheckEnabled,\n teacherInstructionsEnabled,\n toolbarEditorPosition,\n } = model || {};\n const {\n prompt: promptError,\n rationale: rationaleError,\n shapes: shapesError,\n selections: selectionsError,\n teacherInstructions: teacherInstructionsError,\n } = 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 'language.enabled': language.settings && toggle(language.label, true),\n language: language.settings && language.enabled && dropdown(languageChoices.label, languageChoices.options),\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 const getPluginProps = (props = {}) => ({\n ...baseInputConfiguration,\n ...props,\n });\n\n return (\n <layout.ConfigLayout\n dimensions={contentDimensions}\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 {teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className={classes.promptContainer}>\n <EditableHtml\n markup={model.teacherInstructions || ''}\n onChange={onTeacherInstructionsChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n error={teacherInstructionsError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(teacherInstructions?.inputConfiguration)}\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 mathMlOptions={mathMlOptions}\n />\n {teacherInstructionsError && <div className={classes.errorText}>{teacherInstructionsError}</div>}\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer label={prompt.label} className={classes.promptContainer}>\n <EditableHtml\n markup={model.prompt || ''}\n onChange={onPromptChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n error={promptError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(prompt?.inputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={defaultImageMaxWidth}\n maxImageHeight={defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {promptError && <div className={classes.errorText}>{promptError}</div>}\n </InputContainer>\n )}\n\n <div className={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 insertImage={imageSupport && imageSupport.add}\n />\n {shapesError && <div className={classes.errorText}>{shapesError}</div>}\n {selectionsError && <div className={classes.errorText}>{selectionsError}</div>}\n\n {model.imageUrl && (\n <React.Fragment>\n <Typography variant=\"subheading\">Image Dimensions</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 </React.Fragment>\n )}\n\n {rationaleEnabled && (\n <InputContainer label={rationale.label} className={classes.promptContainer}>\n <EditableHtml\n markup={model.rationale || ''}\n onChange={onRationaleChanged}\n imageSupport={imageSupport}\n error={rationaleError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(rationale?.inputConfiguration)}\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 mathMlOptions={mathMlOptions}\n />\n {rationaleError && <div className={classes.errorText}>{rationaleError}</div>}\n </InputContainer>\n )}\n </layout.ConfigLayout>\n );\n }\n}\n\nconst styles = (theme) => ({\n dimensions: {\n display: 'flex',\n marginBottom: theme.spacing.unit * 1.5,\n },\n field: {\n flex: 1,\n width: '90%',\n },\n promptContainer: {\n paddingTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n width: '100%',\n },\n subheading: {\n marginRight: theme.spacing.unit,\n },\n flexContainer: {\n display: 'flex',\n alignItems: 'center',\n },\n tooltip: {\n fontSize: theme.typography.fontSize - 2,\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\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"}
|
|
@@ -0,0 +1,115 @@
|
|
|
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 _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
+
|
|
12
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
13
|
+
|
|
14
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
|
+
|
|
16
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
17
|
+
|
|
18
|
+
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; }
|
|
19
|
+
|
|
20
|
+
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; }
|
|
21
|
+
|
|
22
|
+
var CircleShape = /*#__PURE__*/function () {
|
|
23
|
+
function CircleShape() {
|
|
24
|
+
(0, _classCallCheck2["default"])(this, CircleShape);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
(0, _createClass2["default"])(CircleShape, null, [{
|
|
28
|
+
key: "create",
|
|
29
|
+
value: function create(shapes, e) {
|
|
30
|
+
var newShapes = (0, _toConsumableArray2["default"])(shapes);
|
|
31
|
+
var highestId = Math.max.apply(Math, (0, _toConsumableArray2["default"])(newShapes.map(function (shape) {
|
|
32
|
+
return parseInt(shape.id);
|
|
33
|
+
})).concat([0]));
|
|
34
|
+
var newCircle = {
|
|
35
|
+
id: "".concat(highestId + 1),
|
|
36
|
+
radius: 0,
|
|
37
|
+
x: e.evt.layerX,
|
|
38
|
+
y: e.evt.layerY,
|
|
39
|
+
group: 'circles',
|
|
40
|
+
index: newShapes.length
|
|
41
|
+
};
|
|
42
|
+
newShapes.push(newCircle);
|
|
43
|
+
return {
|
|
44
|
+
shapes: newShapes,
|
|
45
|
+
isDrawing: true,
|
|
46
|
+
isDrawingShapeId: newCircle.id
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
}, {
|
|
50
|
+
key: "finalizeCreation",
|
|
51
|
+
value: function finalizeCreation(state, props) {
|
|
52
|
+
var currentShapeIndex = state.shapes.findIndex(function (shape) {
|
|
53
|
+
return shape.id === state.isDrawingShapeId;
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
if (currentShapeIndex !== -1) {
|
|
57
|
+
var currentShape = state.shapes[currentShapeIndex]; // Check if the shape is a valid circle (has more than 0 radius) before finalizing
|
|
58
|
+
|
|
59
|
+
if (currentShape.radius > 0) {
|
|
60
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
61
|
+
isDrawing: false,
|
|
62
|
+
stateShapes: false,
|
|
63
|
+
isDrawingShapeId: undefined
|
|
64
|
+
});
|
|
65
|
+
} else {
|
|
66
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
67
|
+
isDrawing: false,
|
|
68
|
+
stateShapes: false,
|
|
69
|
+
isDrawingShapeId: undefined,
|
|
70
|
+
shapes: state.shapes.filter(function (shape) {
|
|
71
|
+
return shape.id !== state.isDrawingShapeId;
|
|
72
|
+
})
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
78
|
+
isDrawing: false,
|
|
79
|
+
stateShapes: false,
|
|
80
|
+
isDrawingShapeId: undefined
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}, {
|
|
84
|
+
key: "handleMouseMove",
|
|
85
|
+
value: function handleMouseMove(state, e) {
|
|
86
|
+
var isDrawing = state.isDrawing,
|
|
87
|
+
isDrawingShapeId = state.isDrawingShapeId,
|
|
88
|
+
shapes = state.shapes;
|
|
89
|
+
|
|
90
|
+
if (isDrawing) {
|
|
91
|
+
var tempShapes = (0, _toConsumableArray2["default"])(shapes);
|
|
92
|
+
var resizingShapeIndex = tempShapes.findIndex(function (shape) {
|
|
93
|
+
return shape.id === isDrawingShapeId;
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
if (resizingShapeIndex !== -1) {
|
|
97
|
+
var resizingShape = tempShapes[resizingShapeIndex]; // Calculate radius based on mouse position
|
|
98
|
+
|
|
99
|
+
var dx = e.evt.layerX - resizingShape.x;
|
|
100
|
+
var dy = e.evt.layerY - resizingShape.y;
|
|
101
|
+
resizingShape.radius = Math.sqrt(dx * dx + dy * dy);
|
|
102
|
+
return {
|
|
103
|
+
shapes: tempShapes
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
return state;
|
|
109
|
+
}
|
|
110
|
+
}]);
|
|
111
|
+
return CircleShape;
|
|
112
|
+
}();
|
|
113
|
+
|
|
114
|
+
exports["default"] = CircleShape;
|
|
115
|
+
//# sourceMappingURL=circle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/shapes/circle.js"],"names":["CircleShape","shapes","e","newShapes","highestId","Math","max","map","shape","parseInt","id","newCircle","radius","x","evt","layerX","y","layerY","group","index","length","push","isDrawing","isDrawingShapeId","state","props","currentShapeIndex","findIndex","currentShape","stateShapes","undefined","filter","tempShapes","resizingShapeIndex","resizingShape","dx","dy","sqrt"],"mappings":"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","sourcesContent":["export default class CircleShape {\n static create(shapes, e) {\n const newShapes = [...shapes];\n const highestId = Math.max(...newShapes.map((shape) => parseInt(shape.id)), 0);\n const newCircle = {\n id: `${highestId + 1}`,\n radius: 0,\n x: e.evt.layerX,\n y: e.evt.layerY,\n group: 'circles',\n index: newShapes.length,\n };\n\n newShapes.push(newCircle);\n\n return {\n shapes: newShapes,\n isDrawing: true,\n isDrawingShapeId: newCircle.id,\n };\n }\n\n static finalizeCreation(state, props) {\n const currentShapeIndex = state.shapes.findIndex((shape) => shape.id === state.isDrawingShapeId);\n\n if (currentShapeIndex !== -1) {\n const currentShape = state.shapes[currentShapeIndex];\n\n // Check if the shape is a valid circle (has more than 0 radius) before finalizing\n if (currentShape.radius > 0) {\n return {\n ...state,\n isDrawing: false,\n stateShapes: false,\n isDrawingShapeId: undefined,\n };\n } else {\n return {\n ...state,\n isDrawing: false,\n stateShapes: false,\n isDrawingShapeId: undefined,\n shapes: state.shapes.filter((shape) => shape.id !== state.isDrawingShapeId),\n };\n }\n }\n\n return {\n ...state,\n isDrawing: false,\n stateShapes: false,\n isDrawingShapeId: undefined,\n };\n }\n\n static handleMouseMove(state, e) {\n const { isDrawing, isDrawingShapeId, shapes } = state;\n\n if (isDrawing) {\n const tempShapes = [...shapes];\n const resizingShapeIndex = tempShapes.findIndex((shape) => shape.id === isDrawingShapeId);\n\n if (resizingShapeIndex !== -1) {\n const resizingShape = tempShapes[resizingShapeIndex];\n\n // Calculate radius based on mouse position\n const dx = e.evt.layerX - resizingShape.x;\n const dy = e.evt.layerY - resizingShape.y;\n resizingShape.radius = Math.sqrt(dx * dx + dy * dy);\n\n return {\n shapes: tempShapes,\n };\n }\n }\n\n return state;\n }\n}\n"],"file":"circle.js"}
|