@pie-element/graphing-solution-set 6.2.2-beta.6 → 6.2.2-beta.8

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/lib/main.js ADDED
@@ -0,0 +1,355 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = exports.Main = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+ var _styles = require("@mui/material/styles");
12
+ var _graphingSolutionSet = require("@pie-lib/graphing-solution-set");
13
+ var _renderUi = require("@pie-lib/render-ui");
14
+ var _correctAnswerToggle = _interopRequireDefault(require("@pie-lib/correct-answer-toggle"));
15
+ var _utils = require("./utils");
16
+ var _configUi = require("@pie-lib/config-ui");
17
+ const MainContainer = (0, _styles.styled)(_renderUi.UiLayout)({
18
+ color: _renderUi.color.text(),
19
+ backgroundColor: _renderUi.color.background()
20
+ });
21
+ const TeacherInstructions = (0, _styles.styled)(_renderUi.Collapsible)(({
22
+ theme
23
+ }) => ({
24
+ marginBottom: theme.spacing(2)
25
+ }));
26
+ const Graph = (0, _styles.styled)(_graphingSolutionSet.GraphContainer)(({
27
+ theme
28
+ }) => ({
29
+ marginTop: theme.spacing(2),
30
+ marginBottom: theme.spacing(2)
31
+ }));
32
+ class Main extends _react.default.Component {
33
+ constructor(...args) {
34
+ super(...args);
35
+ (0, _defineProperty2.default)(this, "state", {
36
+ showingCorrect: false,
37
+ dialog: {
38
+ open: false
39
+ }
40
+ });
41
+ /*
42
+ * Function to handle the AlertDialog
43
+ * @param {boolean} open - open state of the dialog
44
+ * @param {function} callback - callback function to be called after setting the state
45
+ * */
46
+ (0, _defineProperty2.default)(this, "handleAlertDialog", (open, callback) => this.setState({
47
+ dialog: {
48
+ open
49
+ }
50
+ }, callback));
51
+ /*
52
+ * Function to toggle the correct answer
53
+ * @param {boolean} showingCorrect - state of the correct answer
54
+ * */
55
+ (0, _defineProperty2.default)(this, "toggleCorrect", showingCorrect => this.setState({
56
+ showingCorrect
57
+ }));
58
+ /*
59
+ * Reset the graph to original state
60
+ * */
61
+ (0, _defineProperty2.default)(this, "onResetClick", () => {
62
+ const {
63
+ model,
64
+ session,
65
+ setGssData
66
+ } = this.props;
67
+ let {
68
+ gssData
69
+ } = model;
70
+ this.setState({
71
+ dialog: {
72
+ open: true,
73
+ title: 'Warning',
74
+ text: `This will remove all the elements added on the graph and reset graph to original state. Are you sure you want to continue?`,
75
+ onConfirm: () => {
76
+ // Reset the graph to original state
77
+ session.answer = [];
78
+ gssData.selectedTool = 'lineA';
79
+ gssData.lineA.lineType = 'Solid';
80
+ if (gssData.lineB) gssData.lineB.lineType = 'Solid';
81
+ // Set the gssData and session
82
+ setGssData(gssData, session);
83
+ this.handleAlertDialog(false);
84
+ },
85
+ onClose: () => this.handleAlertDialog(false)
86
+ }
87
+ });
88
+ });
89
+ /*
90
+ * Function to handle the event of solution set selected
91
+ * @param {object} point - point selected on the graph
92
+ * */
93
+ (0, _defineProperty2.default)(this, "onSolutionSetSelected", point => {
94
+ const {
95
+ model,
96
+ session,
97
+ setGssData
98
+ } = this.props;
99
+ const {
100
+ gssData,
101
+ disabled
102
+ } = model;
103
+ if (disabled) {
104
+ return;
105
+ }
106
+ for (const section of gssData.sections) {
107
+ if ((0, _utils.pointInsidePolygon)(point, section)) {
108
+ let polygon = {
109
+ points: section,
110
+ building: false,
111
+ type: 'polygon',
112
+ closed: true,
113
+ isSolution: true
114
+ };
115
+ session.answer = session.answer.filter(mark => mark.type !== 'polygon');
116
+ session.answer.push(polygon);
117
+ break;
118
+ }
119
+ }
120
+ setGssData(gssData, session);
121
+ });
122
+ /*
123
+ * Function to handle the event of change in GSS Line Data
124
+ * @param {object} gssData - GSS Line Data
125
+ * @param {string} oldSelectedTool - old selected tool
126
+ * */
127
+ (0, _defineProperty2.default)(this, "onChangeGssLineData", (gssData, oldSelectedTool) => {
128
+ const {
129
+ model,
130
+ session
131
+ } = this.props;
132
+ const {
133
+ domain,
134
+ range,
135
+ disabled
136
+ } = model;
137
+ if (disabled) {
138
+ return;
139
+ }
140
+ if (gssData.selectedTool === 'solutionSet') {
141
+ let lines = session.answer.filter(mark => mark.type !== 'polygon');
142
+ if (!(0, _utils.checkIfLinesAreAdded)(gssData, lines)) {
143
+ gssData.selectedTool = oldSelectedTool;
144
+ this.setState({
145
+ dialog: {
146
+ open: true,
147
+ title: 'Warning',
148
+ text: 'Please define the line(s) and then select a solution set for the item.',
149
+ onConfirm: () => this.handleAlertDialog(false)
150
+ }
151
+ });
152
+ } else {
153
+ let lines = session.answer.filter(mark => mark.type !== 'polygon');
154
+ gssData = (0, _utils.findSectionsInSolutionSet)(gssData, lines, domain, range);
155
+ }
156
+ this.handleGssDataChange(gssData, session);
157
+ } else {
158
+ let polygons = session.answer.filter(mark => mark.type === 'polygon');
159
+ if (oldSelectedTool === 'solutionSet' && polygons.length > 0) {
160
+ this.setState({
161
+ dialog: {
162
+ open: true,
163
+ title: 'Warning',
164
+ text: 'Changing a line after adding a solution set will clear your selected solution set. Click \'Clear Solution Set\' to change the line. Otherwise, click \'Cancel\'.',
165
+ onConfirm: () => {
166
+ session.answer = session.answer.filter(mark => mark.type !== 'polygon');
167
+ this.handleGssDataChange(gssData, session);
168
+ this.handleAlertDialog(false);
169
+ },
170
+ onConfirmText: 'CLEAR SOLUTION SET',
171
+ onClose: () => {
172
+ gssData.selectedTool = oldSelectedTool;
173
+ this.handleGssDataChange(gssData, session);
174
+ this.handleAlertDialog(false);
175
+ }
176
+ }
177
+ });
178
+ } else {
179
+ this.handleGssDataChange(gssData, session);
180
+ }
181
+ }
182
+ });
183
+ /*
184
+ * Function to handle the event of change in GSS Data
185
+ * @param {object} gssData - GSS Data
186
+ * @param {object} session - session data
187
+ * */
188
+ (0, _defineProperty2.default)(this, "handleGssDataChange", (gssData, session) => {
189
+ const {
190
+ setGssData
191
+ } = this.props;
192
+ if (session.answer && session.answer.length > 0 && session.answer[0] && gssData.lineA) {
193
+ session.answer[0].fill = gssData.lineA.lineType;
194
+ }
195
+ if (session.answer && session.answer.length > 1 && session.answer[1] && gssData.lineB) {
196
+ session.answer[1].fill = gssData.lineB.lineType;
197
+ }
198
+ if (gssData.selectedTool === 'lineB' && session.answer.length === 0 || gssData.selectedTool === 'lineB' && session.answer[0].building) {
199
+ this.setState({
200
+ dialog: {
201
+ open: true,
202
+ title: 'Warning',
203
+ text: 'Please add Line A to the graph before adding Line B',
204
+ onConfirm: () => this.handleAlertDialog(false)
205
+ }
206
+ });
207
+ gssData.selectedTool = 'lineA';
208
+ }
209
+ if (gssData.selectedTool === 'lineA' && session.answer.length > 1 && session.answer[1].building) {
210
+ this.setState({
211
+ dialog: {
212
+ open: true,
213
+ title: 'Warning',
214
+ text: 'Please add Line B to the graph before switching to Line A',
215
+ onConfirm: () => this.handleAlertDialog(false)
216
+ }
217
+ });
218
+ gssData.selectedTool = 'lineB';
219
+ }
220
+ setGssData(gssData, session);
221
+ });
222
+ }
223
+ /*
224
+ * Render the component
225
+ * */
226
+ render() {
227
+ const {
228
+ model,
229
+ onAnswersChange,
230
+ session
231
+ } = this.props;
232
+ const {
233
+ showingCorrect,
234
+ dialog
235
+ } = this.state;
236
+ const {
237
+ answer
238
+ } = session || {};
239
+ const {
240
+ answersCorrected,
241
+ arrows,
242
+ coordinatesOnHover,
243
+ correctResponse,
244
+ defaultTool,
245
+ disabled,
246
+ domain,
247
+ extraCSSRules,
248
+ labels,
249
+ labelsEnabled,
250
+ prompt,
251
+ range,
252
+ rationale,
253
+ size,
254
+ showToggle,
255
+ title,
256
+ titleEnabled,
257
+ teacherInstructions,
258
+ language,
259
+ gssLineData,
260
+ gssData
261
+ } = model || {};
262
+ const marks = answersCorrected || answer || [];
263
+ const showRationale = model.rationale && ((0, _renderUi.hasText)(model.rationale) || (0, _renderUi.hasMedia)(model.rationale));
264
+ const showTeacherInstructions = model.teacherInstructions && ((0, _renderUi.hasText)(model.teacherInstructions) || (0, _renderUi.hasMedia)(model.teacherInstructions));
265
+ return /*#__PURE__*/_react.default.createElement(MainContainer, {
266
+ extraCSSRules: extraCSSRules
267
+ }, showTeacherInstructions && /*#__PURE__*/_react.default.createElement(TeacherInstructions, {
268
+ labels: {
269
+ hidden: 'Show Teacher Instructions',
270
+ visible: 'Hide Teacher Instructions'
271
+ }
272
+ }, /*#__PURE__*/_react.default.createElement(_renderUi.PreviewPrompt, {
273
+ prompt: teacherInstructions
274
+ })), prompt && /*#__PURE__*/_react.default.createElement(_renderUi.PreviewPrompt, {
275
+ className: "prompt",
276
+ prompt: prompt
277
+ }), /*#__PURE__*/_react.default.createElement(_correctAnswerToggle.default, {
278
+ show: showToggle,
279
+ toggled: showingCorrect,
280
+ onToggle: this.toggleCorrect,
281
+ language: language
282
+ }), showingCorrect && showToggle ? /*#__PURE__*/_react.default.createElement(Graph, {
283
+ axesSettings: {
284
+ includeArrows: arrows
285
+ },
286
+ coordinatesOnHover: coordinatesOnHover,
287
+ disabled: true,
288
+ disabledLabels: true,
289
+ disabledTitle: true,
290
+ domain: domain,
291
+ labels: labels,
292
+ marks: correctResponse.map(i => ({
293
+ ...i,
294
+ correctness: 'correct'
295
+ })),
296
+ onChangeMarks: onAnswersChange,
297
+ range: range,
298
+ showLabels: labelsEnabled,
299
+ showTitle: titleEnabled,
300
+ size: size,
301
+ title: title,
302
+ language: language,
303
+ gssLineData: gssLineData,
304
+ onChangeGssLineData: this.onChangeGssLineData,
305
+ onSolutionSetSelected: this.onSolutionSetSelected,
306
+ toolbarTools: ['line', 'polygon']
307
+ }) : /*#__PURE__*/_react.default.createElement(Graph, {
308
+ axesSettings: {
309
+ includeArrows: arrows
310
+ },
311
+ coordinatesOnHover: coordinatesOnHover,
312
+ defaultTool: defaultTool,
313
+ disabled: disabled,
314
+ disabledLabels: true,
315
+ disabledTitle: true,
316
+ domain: domain,
317
+ labels: labels,
318
+ marks: marks,
319
+ onChangeMarks: onAnswersChange,
320
+ onCustomReset: this.onResetClick,
321
+ range: range,
322
+ showLabels: labelsEnabled,
323
+ showTitle: titleEnabled,
324
+ size: size,
325
+ title: title,
326
+ language: language,
327
+ gssLineData: gssData,
328
+ onChangeGssLineData: this.onChangeGssLineData,
329
+ onSolutionSetSelected: this.onSolutionSetSelected,
330
+ toolbarTools: ['line', 'polygon']
331
+ }), showRationale && /*#__PURE__*/_react.default.createElement(_renderUi.Collapsible, {
332
+ labels: {
333
+ hidden: 'Show Rationale',
334
+ visible: 'Hide Rationale'
335
+ }
336
+ }, /*#__PURE__*/_react.default.createElement(_renderUi.PreviewPrompt, {
337
+ prompt: rationale
338
+ })), /*#__PURE__*/_react.default.createElement(_configUi.AlertDialog, {
339
+ open: dialog.open,
340
+ title: dialog.title,
341
+ text: dialog.text,
342
+ onClose: dialog.onClose,
343
+ onConfirm: dialog.onConfirm,
344
+ onConfirmText: dialog.onConfirmText ? dialog.onConfirmText : 'OK'
345
+ }));
346
+ }
347
+ }
348
+ exports.Main = Main;
349
+ (0, _defineProperty2.default)(Main, "propTypes", {
350
+ model: _propTypes.default.object.isRequired,
351
+ session: _propTypes.default.object.isRequired,
352
+ onAnswersChange: _propTypes.default.func
353
+ });
354
+ var _default = exports.default = Main;
355
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","names":["_react","_interopRequireDefault","require","_propTypes","_styles","_graphingSolutionSet","_renderUi","_correctAnswerToggle","_utils","_configUi","MainContainer","styled","UiLayout","color","text","backgroundColor","background","TeacherInstructions","Collapsible","theme","marginBottom","spacing","Graph","GraphContainer","marginTop","Main","React","Component","constructor","args","_defineProperty2","default","showingCorrect","dialog","open","callback","setState","model","session","setGssData","props","gssData","title","onConfirm","answer","selectedTool","lineA","lineType","lineB","handleAlertDialog","onClose","point","disabled","section","sections","pointInsidePolygon","polygon","points","building","type","closed","isSolution","filter","mark","push","oldSelectedTool","domain","range","lines","checkIfLinesAreAdded","findSectionsInSolutionSet","handleGssDataChange","polygons","length","onConfirmText","fill","render","onAnswersChange","state","answersCorrected","arrows","coordinatesOnHover","correctResponse","defaultTool","extraCSSRules","labels","labelsEnabled","prompt","rationale","size","showToggle","titleEnabled","teacherInstructions","language","gssLineData","marks","showRationale","hasText","hasMedia","showTeacherInstructions","createElement","hidden","visible","PreviewPrompt","className","show","toggled","onToggle","toggleCorrect","axesSettings","includeArrows","disabledLabels","disabledTitle","map","i","correctness","onChangeMarks","showLabels","showTitle","onChangeGssLineData","onSolutionSetSelected","toolbarTools","onCustomReset","onResetClick","AlertDialog","exports","PropTypes","object","isRequired","func","_default"],"sources":["../src/main.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\nimport { GraphContainer } from '@pie-lib/graphing-solution-set';\nimport { color, Collapsible, hasText, hasMedia, PreviewPrompt, UiLayout } from '@pie-lib/render-ui';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { findSectionsInSolutionSet, pointInsidePolygon, checkIfLinesAreAdded } from './utils';\nimport { AlertDialog } from '@pie-lib/config-ui';\n\nconst MainContainer = styled(UiLayout)({\n color: color.text(),\n backgroundColor: color.background(),\n});\n\nconst TeacherInstructions = styled(Collapsible)(({ theme }) => ({\n marginBottom: theme.spacing(2),\n}));\n\nconst Graph = styled(GraphContainer)(({ theme }) => ({\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n}));\n\nexport class Main extends React.Component {\n static propTypes = {\n model: PropTypes.object.isRequired,\n session: PropTypes.object.isRequired,\n onAnswersChange: PropTypes.func,\n };\n\n state = {\n showingCorrect: false,\n dialog: {\n open: false,\n },\n };\n\n /*\n * Function to handle the AlertDialog\n * @param {boolean} open - open state of the dialog\n * @param {function} callback - callback function to be called after setting the state\n * */\n handleAlertDialog = (open, callback) =>\n this.setState(\n {\n dialog: { open },\n },\n callback,\n );\n\n /*\n * Function to toggle the correct answer\n * @param {boolean} showingCorrect - state of the correct answer\n * */\n toggleCorrect = (showingCorrect) => this.setState({ showingCorrect });\n\n /*\n * Reset the graph to original state\n * */\n onResetClick = () => {\n const { model, session, setGssData } = this.props;\n let { gssData } = model;\n this.setState({\n dialog: {\n open: true,\n title: 'Warning',\n text: `This will remove all the elements added on the graph and reset graph to original state. Are you sure you want to continue?`,\n onConfirm: () => {\n // Reset the graph to original state\n session.answer = [];\n gssData.selectedTool = 'lineA';\n gssData.lineA.lineType = 'Solid';\n if (gssData.lineB) gssData.lineB.lineType = 'Solid';\n // Set the gssData and session\n setGssData(gssData, session);\n this.handleAlertDialog(false);\n },\n onClose: () => this.handleAlertDialog(false),\n },\n });\n };\n\n /*\n * Function to handle the event of solution set selected\n * @param {object} point - point selected on the graph\n * */\n onSolutionSetSelected = (point) => {\n const { model, session, setGssData } = this.props;\n const { gssData, disabled } = model;\n if (disabled) {\n return;\n }\n for (const section of gssData.sections) {\n if (pointInsidePolygon(point, section)) {\n let polygon = {\n points: section,\n building: false,\n type: 'polygon',\n closed: true,\n isSolution: true,\n };\n session.answer = session.answer.filter((mark) => mark.type !== 'polygon');\n session.answer.push(polygon);\n break;\n }\n }\n setGssData(gssData, session);\n };\n\n /*\n * Function to handle the event of change in GSS Line Data\n * @param {object} gssData - GSS Line Data\n * @param {string} oldSelectedTool - old selected tool\n * */\n onChangeGssLineData = (gssData, oldSelectedTool) => {\n const { model, session } = this.props;\n const { domain, range, disabled } = model;\n if (disabled) {\n return;\n }\n if (gssData.selectedTool === 'solutionSet') {\n let lines = session.answer.filter((mark) => mark.type !== 'polygon');\n if (!checkIfLinesAreAdded(gssData, lines)) {\n gssData.selectedTool = oldSelectedTool;\n this.setState({\n dialog: {\n open: true,\n title: 'Warning',\n text: 'Please define the line(s) and then select a solution set for the item.',\n onConfirm: () => this.handleAlertDialog(false),\n },\n });\n } else {\n let lines = session.answer.filter((mark) => mark.type !== 'polygon');\n gssData = findSectionsInSolutionSet(gssData, lines, domain, range);\n }\n this.handleGssDataChange(gssData, session);\n } else {\n let polygons = session.answer.filter((mark) => mark.type === 'polygon');\n if (oldSelectedTool === 'solutionSet' && polygons.length > 0) {\n this.setState({\n dialog: {\n open: true,\n title: 'Warning',\n text: 'Changing a line after adding a solution set will clear your selected solution set. Click \\'Clear Solution Set\\' to change the line. Otherwise, click \\'Cancel\\'.',\n onConfirm: () => {\n session.answer = session.answer.filter((mark) => mark.type !== 'polygon');\n this.handleGssDataChange(gssData, session);\n this.handleAlertDialog(false);\n },\n onConfirmText: 'CLEAR SOLUTION SET',\n onClose: () => {\n gssData.selectedTool = oldSelectedTool;\n this.handleGssDataChange(gssData, session);\n this.handleAlertDialog(false);\n },\n },\n });\n } else {\n this.handleGssDataChange(gssData, session);\n }\n }\n };\n\n /*\n * Function to handle the event of change in GSS Data\n * @param {object} gssData - GSS Data\n * @param {object} session - session data\n * */\n handleGssDataChange = (gssData, session) => {\n const { setGssData } = this.props;\n if (session.answer && session.answer.length > 0 && session.answer[0] && gssData.lineA) {\n session.answer[0].fill = gssData.lineA.lineType;\n }\n if (session.answer && session.answer.length > 1 && session.answer[1] && gssData.lineB) {\n session.answer[1].fill = gssData.lineB.lineType;\n }\n if (\n (gssData.selectedTool === 'lineB' && session.answer.length === 0) ||\n (gssData.selectedTool === 'lineB' && session.answer[0].building)\n ) {\n this.setState({\n dialog: {\n open: true,\n title: 'Warning',\n text: 'Please add Line A to the graph before adding Line B',\n onConfirm: () => this.handleAlertDialog(false),\n },\n });\n gssData.selectedTool = 'lineA';\n }\n if (gssData.selectedTool === 'lineA' && session.answer.length > 1 && session.answer[1].building) {\n this.setState({\n dialog: {\n open: true,\n title: 'Warning',\n text: 'Please add Line B to the graph before switching to Line A',\n onConfirm: () => this.handleAlertDialog(false),\n },\n });\n gssData.selectedTool = 'lineB';\n }\n setGssData(gssData, session);\n };\n\n /*\n * Render the component\n * */\n render() {\n const { model, onAnswersChange, session } = this.props;\n const { showingCorrect, dialog } = this.state;\n const { answer } = session || {};\n const {\n answersCorrected,\n arrows,\n coordinatesOnHover,\n correctResponse,\n defaultTool,\n disabled,\n domain,\n extraCSSRules,\n labels,\n labelsEnabled,\n prompt,\n range,\n rationale,\n size,\n showToggle,\n title,\n titleEnabled,\n teacherInstructions,\n language,\n gssLineData,\n gssData,\n } = model || {};\n const marks = answersCorrected || answer || [];\n const showRationale = model.rationale && (hasText(model.rationale) || hasMedia(model.rationale));\n const showTeacherInstructions =\n model.teacherInstructions && (hasText(model.teacherInstructions) || hasMedia(model.teacherInstructions));\n return (\n <MainContainer extraCSSRules={extraCSSRules}>\n {showTeacherInstructions && (\n <TeacherInstructions\n labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}\n >\n <PreviewPrompt prompt={teacherInstructions} />\n </TeacherInstructions>\n )}\n {prompt && <PreviewPrompt className=\"prompt\" prompt={prompt} />}\n <CorrectAnswerToggle\n show={showToggle}\n toggled={showingCorrect}\n onToggle={this.toggleCorrect}\n language={language}\n />\n {showingCorrect && showToggle ? (\n <Graph\n axesSettings={{ includeArrows: arrows }}\n coordinatesOnHover={coordinatesOnHover}\n disabled={true}\n disabledLabels={true}\n disabledTitle={true}\n domain={domain}\n labels={labels}\n marks={correctResponse.map((i) => ({ ...i, correctness: 'correct' }))}\n onChangeMarks={onAnswersChange}\n range={range}\n showLabels={labelsEnabled}\n showTitle={titleEnabled}\n size={size}\n title={title}\n language={language}\n gssLineData={gssLineData}\n onChangeGssLineData={this.onChangeGssLineData}\n onSolutionSetSelected={this.onSolutionSetSelected}\n toolbarTools={['line', 'polygon']}\n />\n ) : (\n <Graph\n axesSettings={{ includeArrows: arrows }}\n coordinatesOnHover={coordinatesOnHover}\n defaultTool={defaultTool}\n disabled={disabled}\n disabledLabels={true}\n disabledTitle={true}\n domain={domain}\n labels={labels}\n marks={marks}\n onChangeMarks={onAnswersChange}\n onCustomReset={this.onResetClick}\n range={range}\n showLabels={labelsEnabled}\n showTitle={titleEnabled}\n size={size}\n title={title}\n language={language}\n gssLineData={gssData}\n onChangeGssLineData={this.onChangeGssLineData}\n onSolutionSetSelected={this.onSolutionSetSelected}\n toolbarTools={['line', 'polygon']}\n />\n )}\n {showRationale && (\n <Collapsible labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}>\n <PreviewPrompt prompt={rationale} />\n </Collapsible>\n )}\n <AlertDialog\n open={dialog.open}\n title={dialog.title}\n text={dialog.text}\n onClose={dialog.onClose}\n onConfirm={dialog.onConfirm}\n onConfirmText={dialog.onConfirmText ? dialog.onConfirmText : 'OK'}\n />\n </MainContainer>\n );\n }\n}\n\nexport default Main;\n"],"mappings":"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","ignoreList":[]}