@pie-element/charting 7.13.1-next.1 → 7.13.1-next.10

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.
@@ -0,0 +1,257 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports["default"] = exports.ChartingConfig = void 0;
11
+
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+
14
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
+
16
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
17
+
18
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
+
20
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
+
22
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
+
24
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
+
26
+ var React = _interopRequireWildcard(require("react"));
27
+
28
+ var _propTypes = _interopRequireDefault(require("prop-types"));
29
+
30
+ var _styles = require("@material-ui/core/styles");
31
+
32
+ var _charting = require("@pie-lib/pie-toolbox/charting");
33
+
34
+ var _configUi = require("@pie-lib/pie-toolbox/config-ui");
35
+
36
+ var _Checkbox = _interopRequireDefault(require("@material-ui/core/Checkbox"));
37
+
38
+ var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
39
+
40
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
41
+
42
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
43
+
44
+ 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; }
45
+
46
+ 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; }
47
+
48
+ 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); }; }
49
+
50
+ 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; } }
51
+
52
+ var styles = function styles(theme) {
53
+ return {
54
+ container: {
55
+ marginBottom: theme.spacing.unit * 2.5,
56
+ display: 'flex',
57
+ flex: 1
58
+ },
59
+ title: {
60
+ marginBottom: theme.spacing.unit
61
+ },
62
+ column: {
63
+ flex: 1
64
+ }
65
+ };
66
+ };
67
+
68
+ var restoreCorrectAnswer = function restoreCorrectAnswer(correctAnswer, data) {
69
+ if (!correctAnswer) {
70
+ return data;
71
+ }
72
+
73
+ var correctResponseDefinition = [];
74
+ (data || []).forEach(function (category, currentIndex) {
75
+ var _correctAnswer$curren, _correctAnswer$curren2;
76
+
77
+ var editable = category.editable,
78
+ interactive = category.interactive;
79
+ var label = editable && (_correctAnswer$curren = correctAnswer[currentIndex]) !== null && _correctAnswer$curren !== void 0 && _correctAnswer$curren.label ? correctAnswer[currentIndex].label : category.label;
80
+ var value = interactive && (_correctAnswer$curren2 = correctAnswer[currentIndex]) !== null && _correctAnswer$curren2 !== void 0 && _correctAnswer$curren2.value ? correctAnswer[currentIndex].value : category.value;
81
+ correctResponseDefinition[currentIndex] = {
82
+ label: label,
83
+ value: value,
84
+ editable: category.editable,
85
+ interactive: category.interactive
86
+ };
87
+ });
88
+ return correctResponseDefinition;
89
+ };
90
+
91
+ var ChartingConfig = /*#__PURE__*/function (_React$Component) {
92
+ (0, _inherits2["default"])(ChartingConfig, _React$Component);
93
+
94
+ var _super = _createSuper(ChartingConfig);
95
+
96
+ function ChartingConfig(props) {
97
+ var _this;
98
+
99
+ (0, _classCallCheck2["default"])(this, ChartingConfig);
100
+ _this = _super.call(this, props);
101
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleAlertDialog", function (open, callback) {
102
+ return _this.setState({
103
+ dialog: {
104
+ open: open
105
+ }
106
+ }, callback);
107
+ });
108
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeData", function (data) {
109
+ return _this.props.onChange(_objectSpread(_objectSpread({}, _this.props.model), {}, {
110
+ data: data
111
+ }));
112
+ });
113
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeAddRemoveEnabled", function (value) {
114
+ var model = _this.props.model;
115
+ var correctAnswer = restoreCorrectAnswer(model.correctAnswer.data, model.data);
116
+
117
+ if (!value) {
118
+ _this.setState({
119
+ dialog: {
120
+ open: true,
121
+ title: 'Warning',
122
+ text: 'This change will remove any correct answer categories that are not part of the initial item configuration.',
123
+ onConfirm: function onConfirm() {
124
+ return _this.handleAlertDialog(false, _this.props.onChange(_objectSpread(_objectSpread({}, _this.props.model), {}, {
125
+ addCategoryEnabled: value,
126
+ correctAnswer: {
127
+ data: correctAnswer
128
+ }
129
+ })));
130
+ },
131
+ onClose: function onClose() {
132
+ return _this.handleAlertDialog(false);
133
+ }
134
+ }
135
+ });
136
+ } else {
137
+ _this.props.onChange(_objectSpread(_objectSpread({}, _this.props.model), {}, {
138
+ addCategoryEnabled: value
139
+ }));
140
+ }
141
+ });
142
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeTitle", function (title) {
143
+ return _this.props.onChange(_objectSpread(_objectSpread({}, _this.props.model), {}, {
144
+ title: title
145
+ }));
146
+ });
147
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeLabel", function (type, label) {
148
+ return _this.props.onChange(_objectSpread(_objectSpread({}, _this.props.model), {}, (0, _defineProperty2["default"])({}, type, _objectSpread(_objectSpread({}, _this.props.model[type]), {}, {
149
+ label: label
150
+ }))));
151
+ });
152
+ _this.state = {
153
+ dialog: {
154
+ open: false
155
+ }
156
+ };
157
+ return _this;
158
+ }
159
+
160
+ (0, _createClass2["default"])(ChartingConfig, [{
161
+ key: "render",
162
+ value: function render() {
163
+ var _this2 = this,
164
+ _chartingOptions$addC;
165
+
166
+ var _this$props = this.props,
167
+ classes = _this$props.classes,
168
+ model = _this$props.model,
169
+ charts = _this$props.charts,
170
+ labelsPlaceholders = _this$props.labelsPlaceholders,
171
+ titlePlaceholder = _this$props.titlePlaceholder,
172
+ showPixelGuides = _this$props.showPixelGuides,
173
+ authorNewCategoryDefaults = _this$props.authorNewCategoryDefaults,
174
+ chartingOptions = _this$props.chartingOptions,
175
+ _this$props$mathMlOpt = _this$props.mathMlOptions,
176
+ mathMlOptions = _this$props$mathMlOpt === void 0 ? {} : _this$props$mathMlOpt,
177
+ labelsCharactersLimit = _this$props.labelsCharactersLimit;
178
+ var dialog = this.state.dialog;
179
+
180
+ var _ref = model || {},
181
+ _ref$domain = _ref.domain,
182
+ domain = _ref$domain === void 0 ? {} : _ref$domain,
183
+ _ref$range = _ref.range,
184
+ range = _ref$range === void 0 ? {} : _ref$range;
185
+
186
+ return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
187
+ className: classes.title
188
+ }, "Define Initial Chart Attributes"), /*#__PURE__*/React.createElement("div", {
189
+ className: classes.container
190
+ }, /*#__PURE__*/React.createElement("div", {
191
+ className: classes.column,
192
+ key: "graph"
193
+ }, /*#__PURE__*/React.createElement(_Typography["default"], {
194
+ component: "div",
195
+ type: "body1"
196
+ }, /*#__PURE__*/React.createElement("span", null, "Use the tools below to set up the chart as it will initially appear to students.")), /*#__PURE__*/React.createElement(_charting.Chart, {
197
+ defineChart: true,
198
+ chartingOptions: chartingOptions,
199
+ showPixelGuides: showPixelGuides,
200
+ chartType: model.chartType,
201
+ size: model.graph,
202
+ domain: domain,
203
+ range: range,
204
+ charts: charts // index is a property used for setting the correct answer data; it's needed in order to remove categories from other data sets from the same index it was removed from the initial data
205
+ ,
206
+ data: model.data.map(function (category, index) {
207
+ return _objectSpread(_objectSpread({}, category), {}, {
208
+ index: index
209
+ });
210
+ }),
211
+ title: model.title,
212
+ onDataChange: this.changeData,
213
+ onChangeTitle: this.changeTitle,
214
+ onChangeLabels: this.changeLabel,
215
+ addCategoryEnabled: true,
216
+ changeInteractiveEnabled: model.changeInteractiveEnabled,
217
+ changeEditableEnabled: model.changeEditableEnabled,
218
+ categoryDefaultLabel: authorNewCategoryDefaults === null || authorNewCategoryDefaults === void 0 ? void 0 : authorNewCategoryDefaults.label,
219
+ categoryDefaults: authorNewCategoryDefaults,
220
+ labelsPlaceholders: labelsPlaceholders,
221
+ titlePlaceholder: titlePlaceholder === null || titlePlaceholder === void 0 ? void 0 : titlePlaceholder.label,
222
+ mathMlOptions: mathMlOptions,
223
+ labelsCharactersLimit: labelsCharactersLimit
224
+ }), model.changeAddCategoryEnabled && /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(_Checkbox["default"], {
225
+ checked: model.addCategoryEnabled,
226
+ onChange: function onChange(e) {
227
+ _this2.changeAddRemoveEnabled(e.target.checked);
228
+ }
229
+ }), chartingOptions === null || chartingOptions === void 0 ? void 0 : (_chartingOptions$addC = chartingOptions.addCategory) === null || _chartingOptions$addC === void 0 ? void 0 : _chartingOptions$addC.authoringLabel), /*#__PURE__*/React.createElement(_configUi.AlertDialog, {
230
+ open: dialog.open,
231
+ title: dialog.title,
232
+ text: dialog.text,
233
+ onClose: dialog.onClose,
234
+ onConfirm: dialog.onConfirm
235
+ }))));
236
+ }
237
+ }]);
238
+ return ChartingConfig;
239
+ }(React.Component);
240
+
241
+ exports.ChartingConfig = ChartingConfig;
242
+ (0, _defineProperty2["default"])(ChartingConfig, "propTypes", {
243
+ classes: _propTypes["default"].object.isRequired,
244
+ model: _propTypes["default"].object.isRequired,
245
+ onChange: _propTypes["default"].func.isRequired,
246
+ charts: _propTypes["default"].array,
247
+ labelsPlaceholders: _propTypes["default"].object,
248
+ titlePlaceholder: _propTypes["default"].object,
249
+ showPixelGuides: _propTypes["default"].bool,
250
+ authorNewCategoryDefaults: _propTypes["default"].object,
251
+ chartingOptions: _propTypes["default"].object
252
+ });
253
+
254
+ var _default = (0, _styles.withStyles)(styles)(ChartingConfig);
255
+
256
+ exports["default"] = _default;
257
+ //# sourceMappingURL=charting-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/charting-config.jsx"],"names":["styles","theme","container","marginBottom","spacing","unit","display","flex","title","column","restoreCorrectAnswer","correctAnswer","data","correctResponseDefinition","forEach","category","currentIndex","editable","interactive","label","value","ChartingConfig","props","open","callback","setState","dialog","onChange","model","text","onConfirm","handleAlertDialog","addCategoryEnabled","onClose","type","state","classes","charts","labelsPlaceholders","titlePlaceholder","showPixelGuides","authorNewCategoryDefaults","chartingOptions","mathMlOptions","labelsCharactersLimit","domain","range","chartType","graph","map","index","changeData","changeTitle","changeLabel","changeInteractiveEnabled","changeEditableEnabled","changeAddCategoryEnabled","e","changeAddRemoveEnabled","target","checked","addCategory","authoringLabel","React","Component","PropTypes","object","isRequired","func","array","bool"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { Chart } from '@pie-lib/pie-toolbox/charting';\nimport { AlertDialog } from '@pie-lib/pie-toolbox/config-ui';\nimport Checkbox from '@material-ui/core/Checkbox';\n\nimport Typography from '@material-ui/core/Typography';\n\nconst styles = (theme) => ({\n container: {\n marginBottom: theme.spacing.unit * 2.5,\n display: 'flex',\n flex: 1,\n },\n title: {\n marginBottom: theme.spacing.unit,\n },\n column: {\n flex: 1,\n },\n});\n\nconst restoreCorrectAnswer = (correctAnswer, data) => {\n if (!correctAnswer) {\n return data;\n }\n\n let correctResponseDefinition = [];\n\n (data || []).forEach((category, currentIndex) => {\n const { editable, interactive } = category;\n\n const label = editable && correctAnswer[currentIndex]?.label ? correctAnswer[currentIndex].label : category.label;\n\n const value =\n interactive && correctAnswer[currentIndex]?.value ? correctAnswer[currentIndex].value : category.value;\n\n correctResponseDefinition[currentIndex] = {\n label: label,\n value: value,\n editable: category.editable,\n interactive: category.interactive,\n };\n });\n\n return correctResponseDefinition;\n};\n\nexport class ChartingConfig extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n charts: PropTypes.array,\n labelsPlaceholders: PropTypes.object,\n titlePlaceholder: PropTypes.object,\n showPixelGuides: PropTypes.bool,\n authorNewCategoryDefaults: PropTypes.object,\n chartingOptions: PropTypes.object,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n dialog: {\n open: false,\n },\n };\n }\n\n handleAlertDialog = (open, callback) =>\n this.setState(\n {\n dialog: { open },\n },\n callback,\n );\n\n changeData = (data) => this.props.onChange({ ...this.props.model, data });\n\n changeAddRemoveEnabled = (value) => {\n const { model } = this.props;\n const correctAnswer = restoreCorrectAnswer(model.correctAnswer.data, model.data);\n\n if (!value) {\n this.setState({\n dialog: {\n open: true,\n title: 'Warning',\n text: 'This change will remove any correct answer categories that are not part of the initial item configuration.',\n onConfirm: () =>\n this.handleAlertDialog(\n false,\n this.props.onChange({\n ...this.props.model,\n addCategoryEnabled: value,\n correctAnswer: { data: correctAnswer },\n }),\n ),\n onClose: () => this.handleAlertDialog(false),\n },\n });\n } else {\n this.props.onChange({ ...this.props.model, addCategoryEnabled: value });\n }\n };\n\n changeTitle = (title) => this.props.onChange({ ...this.props.model, title });\n\n changeLabel = (type, label) =>\n this.props.onChange({\n ...this.props.model,\n [type]: {\n ...this.props.model[type],\n label,\n },\n });\n\n render() {\n const {\n classes,\n model,\n charts,\n labelsPlaceholders,\n titlePlaceholder,\n showPixelGuides,\n authorNewCategoryDefaults,\n chartingOptions,\n mathMlOptions = {},\n labelsCharactersLimit,\n } = this.props;\n const { dialog } = this.state;\n const { domain = {}, range = {} } = model || {};\n\n return (\n <div>\n <div className={classes.title}>Define Initial Chart Attributes</div>\n <div className={classes.container}>\n <div className={classes.column} key=\"graph\">\n <Typography component=\"div\" type=\"body1\">\n <span>Use the tools below to set up the chart as it will initially appear to students.</span>\n </Typography>\n\n <Chart\n defineChart={true}\n chartingOptions={chartingOptions}\n showPixelGuides={showPixelGuides}\n chartType={model.chartType}\n size={model.graph}\n domain={domain}\n range={range}\n charts={charts}\n // index is a property used for setting the correct answer data; it's needed in order to remove categories from other data sets from the same index it was removed from the initial data\n data={model.data.map((category, index) => ({\n ...category,\n index: index,\n }))}\n title={model.title}\n onDataChange={this.changeData}\n onChangeTitle={this.changeTitle}\n onChangeLabels={this.changeLabel}\n addCategoryEnabled={true}\n changeInteractiveEnabled={model.changeInteractiveEnabled}\n changeEditableEnabled={model.changeEditableEnabled}\n categoryDefaultLabel={authorNewCategoryDefaults?.label}\n categoryDefaults={authorNewCategoryDefaults}\n labelsPlaceholders={labelsPlaceholders}\n titlePlaceholder={titlePlaceholder?.label}\n mathMlOptions={mathMlOptions}\n labelsCharactersLimit={labelsCharactersLimit}\n />\n {model.changeAddCategoryEnabled && (\n <div>\n <Checkbox\n checked={model.addCategoryEnabled}\n onChange={(e) => {\n this.changeAddRemoveEnabled(e.target.checked);\n }}\n />\n {chartingOptions?.addCategory?.authoringLabel}\n </div>\n )}\n <AlertDialog\n open={dialog.open}\n title={dialog.title}\n text={dialog.text}\n onClose={dialog.onClose}\n onConfirm={dialog.onConfirm}\n />\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(ChartingConfig);\n"],"file":"charting-config.js"}