@pie-element/inline-dropdown 3.10.6-next.3 → 3.11.0
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/CHANGELOG.md +29 -0
- package/LICENSE.md +5 -0
- package/configure/CHANGELOG.md +25 -0
- package/configure/lib/defaults.js +1 -1
- package/configure/lib/index.js +1 -1
- package/configure/lib/inline-dropdown-toolbar.js +1 -1
- package/configure/lib/main.js +54 -8
- package/configure/lib/main.js.map +1 -1
- package/configure/lib/markupUtils.js +1 -1
- package/configure/lib/utils.js +16 -0
- package/configure/lib/utils.js.map +1 -0
- package/configure/package.json +4 -4
- package/controller/CHANGELOG.md +13 -0
- package/controller/lib/defaults.js +1 -1
- package/controller/lib/index.js +21 -1
- package/controller/lib/index.js.map +1 -1
- package/controller/lib/utils.js +1 -1
- package/controller/package.json +1 -1
- package/lib/index.js +1 -1
- package/lib/inline-dropdown.js +1 -1
- package/package.json +6 -6
- package/configure/lib/__tests__/inline-dropdown-toolbar.test.js +0 -124
- package/configure/lib/__tests__/main.test.js +0 -516
- package/configure/lib/__tests__/markupUtils.test.js +0 -108
- package/controller/lib/__tests__/index.test.js +0 -942
- package/docs/demo/pie.manifest.json +0 -11
- package/lib/__tests__/inline-dropdown.test.js +0 -121
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,35 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [3.11.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown@3.10.7...@pie-element/inline-dropdown@3.11.0) (2022-05-03)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* added getters for the session PD-1668 ([de8a754](https://github.com/pie-framework/pie-elements/commit/de8a754f4580370b127257c435e43db405b4bdc4))
|
|
12
|
+
* **explcit-constructed-response, inline-dropdown, drag-in-the-blank:** Fixed some math symbols rendering PD-1535 ([98b99ff](https://github.com/pie-framework/pie-elements/commit/98b99ff26742c15563b365c7fbb7fab981f057d8))
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
* **inline-dropdown:** added configurable validation ([268a876](https://github.com/pie-framework/pie-elements/commit/268a8766c963a35aa7ca2f3831b870f411d1ad10))
|
|
18
|
+
* **inline-dropdown:** added configurable validation PD-1698 ([c326731](https://github.com/pie-framework/pie-elements/commit/c3267310c3620037402b722104dcdf0358e74d42))
|
|
19
|
+
* **inline-dropdown:** added configurable validation PD-1698 ([68405ab](https://github.com/pie-framework/pie-elements/commit/68405ab78680cdc7fda1d893c78ebb4880fbed86))
|
|
20
|
+
* **inline-dropdown:** added validation UI improvements PD-1698 ([477066b](https://github.com/pie-framework/pie-elements/commit/477066b51d746d37ba8ba81ece42c95972466fc3))
|
|
21
|
+
* **inline-dropdown:** ui/ux for validation PD-1699 ([d277f49](https://github.com/pie-framework/pie-elements/commit/d277f4958284cfc8dc8b16df49de924f1810c159))
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
## [3.10.7](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown@3.10.6...@pie-element/inline-dropdown@3.10.7) (2022-04-12)
|
|
28
|
+
|
|
29
|
+
**Note:** Version bump only for package @pie-element/inline-dropdown
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
6
35
|
## [3.10.6](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown@3.10.5...@pie-element/inline-dropdown@3.10.6) (2022-03-28)
|
|
7
36
|
|
|
8
37
|
**Note:** Version bump only for package @pie-element/inline-dropdown
|
package/LICENSE.md
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
Copyright 2019 CoreSpring Inc
|
|
2
|
+
|
|
3
|
+
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
|
|
4
|
+
|
|
5
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
package/configure/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,31 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [3.7.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown-configure@3.6.16...@pie-element/inline-dropdown-configure@3.7.0) (2022-05-03)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **explcit-constructed-response, inline-dropdown, drag-in-the-blank:** Fixed some math symbols rendering PD-1535 ([98b99ff](https://github.com/pie-framework/pie-elements/commit/98b99ff26742c15563b365c7fbb7fab981f057d8))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Features
|
|
15
|
+
|
|
16
|
+
* **inline-dropdown:** added validation UI improvements PD-1698 ([477066b](https://github.com/pie-framework/pie-elements/commit/477066b51d746d37ba8ba81ece42c95972466fc3))
|
|
17
|
+
* **inline-dropdown:** ui/ux for validation PD-1699 ([d277f49](https://github.com/pie-framework/pie-elements/commit/d277f4958284cfc8dc8b16df49de924f1810c159))
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
## [3.6.16](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown-configure@3.6.15...@pie-element/inline-dropdown-configure@3.6.16) (2022-04-12)
|
|
24
|
+
|
|
25
|
+
**Note:** Version bump only for package @pie-element/inline-dropdown-configure
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
6
31
|
## [3.6.15](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown-configure@3.6.14...@pie-element/inline-dropdown-configure@3.6.15) (2022-03-28)
|
|
7
32
|
|
|
8
33
|
**Note:** Version bump only for package @pie-element/inline-dropdown-configure
|
|
@@ -58,4 +58,4 @@ var _default = {
|
|
|
58
58
|
}
|
|
59
59
|
};
|
|
60
60
|
exports["default"] = _default;
|
|
61
|
-
//# sourceMappingURL=
|
|
61
|
+
//# sourceMappingURL=defaults.js.map
|
package/configure/lib/index.js
CHANGED
|
@@ -159,4 +159,4 @@ exports["default"] = InlineDropdown;
|
|
|
159
159
|
|
|
160
160
|
});
|
|
161
161
|
});
|
|
162
|
-
//# sourceMappingURL=
|
|
162
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -441,4 +441,4 @@ var StyledRespAreaToolbar = (0, _styles.withStyles)({
|
|
|
441
441
|
})(RespAreaToolbar);
|
|
442
442
|
var _default = StyledRespAreaToolbar;
|
|
443
443
|
exports["default"] = _default;
|
|
444
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmxpbmUtZHJvcGRvd24tdG9vbGJhci5qc3giXSwibmFtZXMiOlsiTWVudUl0ZW1Db21wIiwiZSIsIm9uUmVtb3ZlQ2hvaWNlIiwicHJvcHMiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsImNsYXNzZXMiLCJjb3JyZWN0Iiwib25DbGljayIsInZhbHVlIiwid3JhcHBlciIsInZhbHVlSG9sZGVyIiwiX19odG1sIiwicmVtb3ZlSWNvbiIsIm9uUmVtb3ZlQ2xpY2siLCJSZWFjdCIsIkNvbXBvbmVudCIsIlByb3BUeXBlcyIsIm9iamVjdCIsImlzUmVxdWlyZWQiLCJib29sIiwiZnVuYyIsInN0cmluZyIsIk1lbnVJdGVtIiwiYmFja2dyb3VuZCIsImJvcmRlckJvdHRvbSIsImJveFNpemluZyIsImRpc3BsYXkiLCJjdXJzb3IiLCJsaW5lSGVpZ2h0IiwicGFkZGluZyIsInBvc2l0aW9uIiwiZm9udFNpemUiLCJmb250U3R5bGUiLCJ0cmFuc2Zvcm0iLCJ0b3AiLCJyaWdodCIsInpJbmRleCIsIndvcmRCcmVhayIsImZpbmRTbGF0ZU5vZGUiLCJrZXkiLCJ3aW5kb3ciLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJjcmVhdGVFbGVtZW50RnJvbUhUTUwiLCJodG1sU3RyaW5nIiwiZGl2IiwiY3JlYXRlRWxlbWVudCIsImlubmVySFRNTCIsInRyaW0iLCJSZXNwQXJlYVRvb2xiYXIiLCJyZXNwQXJlYU1hcmt1cCIsInNldFN0YXRlIiwiZWRpdG9yUmVmIiwiZmluaXNoRWRpdGluZyIsInZhbCIsIm5vZGUiLCJvbkFkZENob2ljZSIsIm9ubHlUZXh0IiwidGV4dENvbnRlbnQiLCJkYXRhIiwiZ2V0IiwibmV3VmFsdWUiLCJpbmRleCIsIm9uVG9vbGJhckRvbmUiLCJvblNlbGVjdENob2ljZSIsInVwZGF0ZSIsInRvSlNPTiIsImNoYW5nZSIsInNldE5vZGVCeUtleSIsIm5leHRUZXh0IiwiZ2V0TmV4dFRleHQiLCJtb3ZlRm9jdXNUbyIsIm1vdmVBbmNob3JUbyIsImV2ZW50IiwiY2xpY2tlZEluc2lkZSIsImNob2ljZXMiLCJvbkNoZWNrIiwiY29ycmVjdFJlc3BvbnNlIiwiZmluZCIsImNob2ljZSIsImxlbmd0aCIsInJlbW92ZU5vZGVCeUtleSIsInNsYXRlRWRpdG9yUmVmIiwicm9vdFJlZiIsInNsYXRlRWRpdG9yIiwiaW5wdXRSZWYiLCJlbGVtZW50IiwiZm9jdXMiLCJkb21Ob2RlIiwiZG9tTm9kZVJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJlZGl0b3IiLCJjbG9zZXN0IiwiZWRpdG9yUmVjdCIsImxlZnQiLCJ0b29sYmFyU3R5bGUiLCJoZWlnaHQiLCJ3aWR0aCIsIlJlYWN0RE9NIiwiZmluZERPTU5vZGUiLCJzcGVsbENoZWNrIiwic3RhdGUiLCJmaWx0ZXJlZERlZmF1bHRQbHVnaW5zIiwiREVGQVVMVF9QTFVHSU5TIiwiZmlsdGVyIiwicCIsImxhYmVsUGx1Z2lucyIsImF1ZGlvIiwiZGlzYWJsZWQiLCJ2aWRlbyIsImJhY2tncm91bmRDb2xvciIsIm9uQ2xpY2tJbnNpZGUiLCJpdGVtQnVpbGRlciIsInJlZiIsInJlc3BBcmVhIiwiYWx3YXlzVmlzaWJsZSIsInNob3dEb25lIiwiZG9uZU9uIiwib25LZXlEb3duIiwib25SZXNwQXJlYUNoYW5nZSIsIm9uRG9uZSIsIm9uQmx1ciIsImZvY3VzSW5wdXQiLCJjaG9pY2VzSG9sZGVyIiwibWFwIiwibGFiZWwiLCJhcnJheSIsInNoYXBlIiwiU3R5bGVkUmVzcEFyZWFUb29sYmFyIiwibWluSGVpZ2h0IiwiZmxleERpcmVjdGlvbiIsImJvcmRlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7OztJQUdNQSxZOzs7Ozs7Ozs7Ozs7Ozs7c0dBU1ksVUFBQUMsQ0FBQyxFQUFJO0FBQ25CLFVBQVFDLGNBQVIsR0FB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QU9qQjhDLEVBQUFBLGNBQWMsRUFBRWhELHNCQUFVSSxJQUFWLENBQWVGLFVBUGQ7QUFRakI2QyxFQUFBQSxhQUFhLEVBQUUvQyxzQkFBVUksSUFBVixDQUFlRixVQVJiO0FBU2pCVixFQUFBQSxLQUFLLEVBQUVRLHNCQUFVK0csS0FBVixDQUFnQjtBQUNyQjVELElBQUFBLE1BQU0sRUFBRW5ELHNCQUFVSSxJQUFWLENBQWVGLFVBREY7QUFFckJ1QixJQUFBQSxRQUFRLEVBQUV6QixzQkFBVStHLEtBQVYsQ0FBZ0I7QUFDeEJ6RCxNQUFBQSxXQUFXLEVBQUV0RCxzQkFBVUksSUFBVixDQUFlRjtBQURKLEtBQWhCO0FBRlcsR0FBaEI7QUFUVSxDO0FBK05yQixJQUFNOEcscUJBQXFCLEdBQUcsd0JBQVc7QUFDdkNkLEVBQUFBLFFBQVEsRUFBRTtBQUNSSixJQUFBQSxlQUFlLEVBQUUsTUFEVDtBQUVSLG9DQUFnQztBQUM5Qm1CLE1BQUFBLFNBQVMsRUFBRTtBQURtQjtBQUZ4QixHQUQ2QjtBQU92Q04sRUFBQUEsYUFBYSxFQUFFO0FBQ2JqRyxJQUFBQSxPQUFPLEVBQUUsTUFESTtBQUVid0csSUFBQUEsYUFBYSxFQUFFLFFBRkY7QUFHYiwwQkFBc0I7QUFDcEJDLE1BQUFBLE1BQU0sRUFBRTtBQURZO0FBSFQsR0FQd0I7QUFjdkNuQixFQUFBQSxXQUFXLEVBQUU7QUFDWG5GLElBQUFBLE9BQU8sRUFBRSxLQURFO0FBRVhDLElBQUFBLFFBQVEsRUFBRTtBQUZDO0FBZDBCLENBQVgsRUFrQjNCbUIsZUFsQjJCLENBQTlCO2VBb0JlK0UscUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IEVkaXRhYmxlSHRtbCBmcm9tICdAcGllLWxpYi9lZGl0YWJsZS1odG1sJztcbmltcG9ydCB7IHJlbmRlck1hdGggfSBmcm9tICdAcGllLWxpYi9tYXRoLXJlbmRlcmluZyc7XG5pbXBvcnQgeyB3aXRoU3R5bGVzIH0gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvc3R5bGVzJztcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2xvZGFzaC9pc0VxdWFsJztcbmltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5JztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsgREVGQVVMVF9QTFVHSU5TIH0gZnJvbSAnQHBpZS1saWIvZWRpdGFibGUtaHRtbCc7XG5cbmNsYXNzIE1lbnVJdGVtQ29tcCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIGNvcnJlY3Q6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gICAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBvblJlbW92ZUNob2ljZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICB2YWx1ZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkXG4gIH07XG5cbiAgb25SZW1vdmVDbGljayA9IGUgPT4ge1xuICAgIGNvbnN0IHsgb25SZW1vdmVDaG9pY2UgfSA9IHRoaXMucHJvcHM7XG5cbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIG9uUmVtb3ZlQ2hvaWNlKCk7XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgY2xhc3NlcywgY29ycmVjdCwgb25DbGljaywgdmFsdWUgfSA9IHRoaXMucHJvcHM7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzbmFtZXMoY2xhc3Nlcy53cmFwcGVyLCB7IFtjbGFzc2VzLmNvcnJlY3RdOiBjb3JyZWN0IH0pfSBvbkNsaWNrPXtvbkNsaWNrfT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy52YWx1ZUhvbGRlcn1cbiAgICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTD17e1xuICAgICAgICAgICAgX19odG1sOiB2YWx1ZVxuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICAgIDxpIGNsYXNzTmFtZT17Y2xhc3Nlcy5yZW1vdmVJY29ufSBvbkNsaWNrPXt0aGlzLm9uUmVtb3ZlQ2xpY2t9PlxuICAgICAgICAgIHhcbiAgICAgICAgPC9pPlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxufVxuXG5jb25zdCBNZW51SXRlbSA9IHdpdGhTdHlsZXMoe1xuICB3cmFwcGVyOiB7XG4gICAgYmFja2dyb3VuZDogJyNmZmYnLFxuICAgIGJvcmRlckJvdHRvbTogJzFweCBzb2xpZCBibGFjaycsXG4gICAgYm94U2l6aW5nOiAnYm9yZGVyLWJveCcsXG4gICAgZGlzcGxheTogJ2Jsb2NrJyxcbiAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICBsaW5lSGVpZ2h0OiAnMzBweCcsXG4gICAgcGFkZGluZzogJzEwcHggMjVweCAxMHB4IDEwcHgnLFxuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnXG4gIH0sXG4gIGNvcnJlY3Q6IHtcbiAgICBiYWNrZ3JvdW5kOiAnI0M0RENGQSdcbiAgfSxcbiAgcmVtb3ZlSWNvbjoge1xuICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgIGZvbnRTaXplOiAnMjBweCcsXG4gICAgZm9udFN0eWxlOiAnbm9ybWFsJyxcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGUoMCwgLTUwJSknLFxuICAgIHRvcDogJzUwJScsXG4gICAgcmlnaHQ6ICc1cHgnLFxuICAgIHpJbmRleDogM1xuICB9LFxuICB2YWx1ZUhvbGRlcjoge1xuICAgIHdvcmRCcmVhazogJ2JyZWFrLWFsbCdcbiAgfVxufSkoTWVudUl0ZW1Db21wKTtcblxuY29uc3QgZmluZFNsYXRlTm9kZSA9IGtleSA9PiB7XG4gIHJldHVybiB3aW5kb3cuZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEta2V5PVwiJyArIGtleSArICdcIl0nKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUVsZW1lbnRGcm9tSFRNTCA9IGh0bWxTdHJpbmcgPT4ge1xuICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblxuICBkaXYuaW5uZXJIVE1MID0gKGh0bWxTdHJpbmcgfHwgJycpLnRyaW0oKTtcblxuICByZXR1cm4gZGl2O1xufTtcblxuZXhwb3J0IGNsYXNzIFJlc3BBcmVhVG9vbGJhciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBub2RlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIG9uRG9uZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgY2hvaWNlczogUHJvcFR5cGVzLmFycmF5LFxuICAgIG9uQWRkQ2hvaWNlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIG9uUmVtb3ZlQ2hvaWNlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIG9uU2VsZWN0Q2hvaWNlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIG9uVG9vbGJhckRvbmU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgdmFsdWU6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBjaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICBkb2N1bWVudDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgICAgZ2V0TmV4dFRleHQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbiAgICAgIH0pXG4gICAgfSlcbiAgfTtcblxuICBzdGF0ZSA9IHtcbiAgICByZXNwQXJlYU1hcmt1cDogJydcbiAgfTtcblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICBjb25zdCB7IG5vZGUgfSA9IHRoaXMucHJvcHM7XG5cbiAgICBjb25zdCBkb21Ob2RlID0gZmluZFNsYXRlTm9kZShub2RlLmtleSk7XG5cbiAgICBpZiAoZG9tTm9kZSkge1xuICAgICAgLy9lc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgIGNvbnN0IGRvbU5vZGVSZWN0ID0gZG9tTm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IGVkaXRvciA9IGRvbU5vZGUuY2xvc2VzdCgnW2RhdGEtc2xhdGUtZWRpdG9yXScpO1xuICAgICAgY29uc3QgZWRpdG9yUmVjdCA9IGVkaXRvci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IHRvcCA9IGRvbU5vZGVSZWN0LnRvcCAtIGVkaXRvclJlY3QudG9wO1xuICAgICAgY29uc3QgbGVmdCA9IGRvbU5vZGVSZWN0LmxlZnQgLSBlZGl0b3JSZWN0LmxlZnQ7XG5cbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICB0b29sYmFyU3R5bGU6IHtcbiAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICB0b3A6IGAke3RvcCArIGRvbU5vZGVSZWN0LmhlaWdodCArIDYwfXB4YCxcbiAgICAgICAgICBsZWZ0OiBgJHtsZWZ0ICsgMjV9cHhgLFxuICAgICAgICAgIHdpZHRoOiBkb21Ob2RlUmVjdC53aWR0aFxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjb21wb25lbnREaWRVcGRhdGUoKSB7XG4gICAgLy9lc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICBjb25zdCBkb21Ob2RlID0gUmVhY3RET00uZmluZERPTU5vZGUodGhpcyk7XG5cbiAgICByZW5kZXJNYXRoKGRvbU5vZGUpO1xuICB9XG5cbiAgb25SZXNwQXJlYUNoYW5nZSA9IHJlc3BBcmVhTWFya3VwID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHsgcmVzcEFyZWFNYXJrdXAgfSk7XG4gIH07XG5cbiAgb25BZGRDaG9pY2UgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMuZWRpdG9yUmVmKSB7XG4gICAgICB0aGlzLmVkaXRvclJlZi5maW5pc2hFZGl0aW5nKCk7XG4gICAgfVxuICB9O1xuXG4gIG9uRG9uZSA9ICh2YWwpID0+IHtcbiAgICBjb25zdCB7IG5vZGUsIG9uQWRkQ2hvaWNlIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IG9ubHlUZXh0ID0gY3JlYXRlRWxlbWVudEZyb21IVE1MKHZhbCkudGV4dENvbnRlbnQudHJpbSgpO1xuXG4gICAgaWYgKCFpc0VtcHR5KG9ubHlUZXh0KSkge1xuICAgICAgb25BZGRDaG9pY2Uobm9kZS5kYXRhLmdldCgnaW5kZXgnKSwgdmFsKTtcbiAgICB9XG4gIH07XG5cbiAgb25TZWxlY3RDaG9pY2UgPSAobmV3VmFsdWUsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgeyBub2RlLCB2YWx1ZSwgb25Ub29sYmFyRG9uZSwgb25TZWxlY3RDaG9pY2UgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgdXBkYXRlID0geyAuLi5ub2RlLmRhdGEudG9KU09OKCksIHZhbHVlOiBuZXdWYWx1ZSB9O1xuICAgIGNvbnN0IGNoYW5nZSA9IHZhbHVlLmNoYW5nZSgpLnNldE5vZGVCeUtleShub2RlLmtleSwgeyBkYXRhOiB1cGRhdGUgfSk7XG5cbiAgICBjb25zdCBuZXh0VGV4dCA9IHZhbHVlLmRvY3VtZW50LmdldE5leHRUZXh0KG5vZGUua2V5KTtcblxuICAgIGNoYW5nZS5tb3ZlRm9jdXNUbyhuZXh0VGV4dC5rZXksIDApLm1vdmVBbmNob3JUbyhuZXh0VGV4dC5rZXksIDApO1xuXG4gICAgb25Ub29sYmFyRG9uZShjaGFuZ2UsIGZhbHNlKTtcblxuICAgIG9uU2VsZWN0Q2hvaWNlKGluZGV4KTtcbiAgfTtcblxuICBvblJlbW92ZUNob2ljZSA9ICh2YWwsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgeyBub2RlLCB2YWx1ZSwgb25Ub29sYmFyRG9uZSwgb25SZW1vdmVDaG9pY2UgfSA9IHRoaXMucHJvcHM7XG5cbiAgICBpZiAoaXNFcXVhbCh2YWwsIG5vZGUuZGF0YS5nZXQoJ3ZhbHVlJykpKSB7XG4gICAgICBjb25zdCB1cGRhdGUgPSB7IC4uLm5vZGUuZGF0YS50b0pTT04oKSwgdmFsdWU6IG51bGwgfTtcbiAgICAgIGNvbnN0IGNoYW5nZSA9IHZhbHVlLmNoYW5nZSgpLnNldE5vZGVCeUtleShub2RlLmtleSwgeyBkYXRhOiB1cGRhdGUgfSk7XG5cbiAgICAgIG9uVG9vbGJhckRvbmUoY2hhbmdlLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgb25SZW1vdmVDaG9pY2UoaW5kZXgpO1xuICB9O1xuXG4gIG9uS2V5RG93biA9IGV2ZW50ID0+IHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICB0aGlzLm9uQWRkQ2hvaWNlKCk7XG4gICAgICAvLyBDYW5jZWxsaW5nIGV2ZW50XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9O1xuXG4gIG9uQmx1ciA9ICgpID0+IHtcbiAgICBpZiAodGhpcy5jbGlja2VkSW5zaWRlKSB7XG4gICAgICB0aGlzLmNsaWNrZWRJbnNpZGUgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7IG5vZGUsIGNob2ljZXMsIG9uQ2hlY2ssIG9uVG9vbGJhckRvbmUsIHZhbHVlIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IGNvcnJlY3RSZXNwb25zZSA9IChjaG9pY2VzIHx8IFtdKS5maW5kKGNob2ljZSA9PiBjaG9pY2UuY29ycmVjdCk7XG5cbiAgICB0aGlzLm9uQWRkQ2hvaWNlKCk7XG4gICAgaWYgKCFjaG9pY2VzIHx8IChjaG9pY2VzICYmIGNob2ljZXMubGVuZ3RoIDwgMikgfHwgIWNvcnJlY3RSZXNwb25zZSkge1xuICAgICAgb25DaGVjaygoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNoYW5nZSA9IHZhbHVlLmNoYW5nZSgpO1xuXG4gICAgICAgIGNoYW5nZS5yZW1vdmVOb2RlQnlLZXkobm9kZS5nZXQoJ2tleScpKTtcbiAgICAgICAgb25Ub29sYmFyRG9uZShjaGFuZ2UsIGZhbHNlKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBvbkNsaWNrSW5zaWRlID0gKCkgPT4ge1xuICAgIHRoaXMuY2xpY2tlZEluc2lkZSA9IHRydWU7XG4gIH07XG5cbiAgZm9jdXNJbnB1dCA9ICgpID0+IHtcbiAgICAvLyB3ZSBuZWVkIHRvIGZvY3VzIHRoZSBpbnB1dCBzbyB0aGF0IG1hdGggaXMgc2F2ZWQgZXZlbiB3aXRob3V0IHByZXNzaW5nIHRoZSBncmVlbiBjaGVja21hcmtcbiAgICBjb25zdCBzbGF0ZUVkaXRvclJlZiA9IHRoaXMuZWRpdG9yUmVmICYmIHRoaXMuZWRpdG9yUmVmLnJvb3RSZWYgJiYgdGhpcy5lZGl0b3JSZWYucm9vdFJlZi5zbGF0ZUVkaXRvcjtcbiAgICBjb25zdCBpbnB1dFJlZiA9IHNsYXRlRWRpdG9yUmVmICYmIHNsYXRlRWRpdG9yUmVmLmVkaXRvclJlZiAmJiBzbGF0ZUVkaXRvclJlZi5lZGl0b3JSZWYuZWxlbWVudDtcblxuICAgIGlmIChpbnB1dFJlZikge1xuICAgICAgaW5wdXRSZWYuZm9jdXMoKTtcbiAgICB9XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgY2xhc3NlcywgY2hvaWNlcywgc3BlbGxDaGVjayB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7IHJlc3BBcmVhTWFya3VwLCB0b29sYmFyU3R5bGUgfSA9IHRoaXMuc3RhdGU7XG5cbiAgICBjb25zdCBmaWx0ZXJlZERlZmF1bHRQbHVnaW5zID0gKERFRkFVTFRfUExVR0lOUyB8fCBbXSkuZmlsdGVyKHAgPT4gcCAhPT0gJ3RhYmxlJyAmJiBwICE9PSAnYnVsbGV0ZWQtbGlzdCcgJiYgcCAhPT0gJ251bWJlcmVkLWxpc3QnKTtcbiAgICBjb25zdCBsYWJlbFBsdWdpbnMgPSB7XG4gICAgICBhdWRpbzogeyBkaXNhYmxlZDogdHJ1ZSB9LFxuICAgICAgdmlkZW86IHsgZGlzYWJsZWQ6IHRydWUgfVxuICAgIH07XG5cbiAgICBpZiAoIXRvb2xiYXJTdHlsZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXZcbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAuLi50b29sYmFyU3R5bGUsXG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnI0UwRTFFNidcbiAgICAgICAgfX1cbiAgICAgICAgb25Nb3VzZURvd249e3RoaXMub25DbGlja0luc2lkZX1cbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMuaXRlbUJ1aWxkZXJ9PlxuICAgICAgICAgIDxFZGl0YWJsZUh0bWxcbiAgICAgICAgICAgIHJlZj17cmVmID0+IHtcbiAgICAgICAgICAgICAgaWYgKHJlZikge1xuICAgICAgICAgICAgICAgIHRoaXMuZWRpdG9yUmVmID0gcmVmO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgYXV0b0ZvY3VzPXt0cnVlfVxuICAgICAgICAgICAgYXV0b1NhdmVcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5yZXNwQXJlYX1cbiAgICAgICAgICAgIHRvb2xiYXJPcHRzPXt7XG4gICAgICAgICAgICAgIHBvc2l0aW9uOiAndG9wJyxcbiAgICAgICAgICAgICAgYWx3YXlzVmlzaWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgIHNob3dEb25lOiBmYWxzZSxcbiAgICAgICAgICAgICAgZG9uZU9uOiAnYmx1cidcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBtYXJrdXA9e3Jlc3BBcmVhTWFya3VwfVxuICAgICAgICAgICAgb25LZXlEb3duPXt0aGlzLm9uS2V5RG93bn1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLm9uUmVzcEFyZWFDaGFuZ2V9XG4gICAgICAgICAgICBvbkRvbmU9e3RoaXMub25Eb25lfVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJBZGQgQ2hvaWNlXCJcbiAgICAgICAgICAgIGFjdGl2ZVBsdWdpbnM9e2ZpbHRlcmVkRGVmYXVsdFBsdWdpbnN9XG4gICAgICAgICAgICBwbHVnaW5Qcm9wcz17bGFiZWxQbHVnaW5zfVxuICAgICAgICAgICAgb25CbHVyPXt0aGlzLm9uQmx1cn1cbiAgICAgICAgICAgIHNwZWxsQ2hlY2s9e3NwZWxsQ2hlY2t9XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8aVxuICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgICAgICAgICAgIGZvbnRTaXplOiAnMjBweCcsXG4gICAgICAgICAgICAgIGZvbnRTdHlsZTogJ25vcm1hbCcsXG4gICAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgICB0b3A6ICc1MCUnLFxuICAgICAgICAgICAgICByaWdodDogJzE1cHgnLFxuICAgICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGUoMCwgLTUwJSknXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgY29udGVudEVkaXRhYmxlPXtmYWxzZX1cbiAgICAgICAgICAgIG9uTW91c2VEb3duPXsoKSA9PiB0aGlzLmZvY3VzSW5wdXQoKX1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRoaXMub25BZGRDaG9pY2UoKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICArXG4gICAgICAgICAgPC9pPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAge2Nob2ljZXMgJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmNob2ljZXNIb2xkZXJ9PlxuICAgICAgICAgICAge2Nob2ljZXMubWFwKCh7IGxhYmVsLCBjb3JyZWN0IH0sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgIDxNZW51SXRlbVxuICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGhpcy5vblNlbGVjdENob2ljZShsYWJlbCwgaW5kZXgpfVxuICAgICAgICAgICAgICAgIG9uUmVtb3ZlQ2hvaWNlPXsoKSA9PiB0aGlzLm9uUmVtb3ZlQ2hvaWNlKGxhYmVsLCBpbmRleCl9XG4gICAgICAgICAgICAgICAgdmFsdWU9e2xhYmVsfVxuICAgICAgICAgICAgICAgIGNvcnJlY3Q9e2NvcnJlY3R9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbn1cblxuY29uc3QgU3R5bGVkUmVzcEFyZWFUb29sYmFyID0gd2l0aFN0eWxlcyh7XG4gIHJlc3BBcmVhOiB7XG4gICAgYmFja2dyb3VuZENvbG9yOiAnI2ZmZicsXG4gICAgJyYgW2RhdGEtc2xhdGUtZWRpdG9yPVwidHJ1ZVwiXSc6IHtcbiAgICAgIG1pbkhlaWdodDogJ2luaXRpYWwgIWltcG9ydGFudCdcbiAgICB9XG4gIH0sXG4gIGNob2ljZXNIb2xkZXI6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgJyYgPiBkaXY6bGFzdC1jaGlsZCc6IHtcbiAgICAgIGJvcmRlcjogJ25vbmUnXG4gICAgfVxuICB9LFxuICBpdGVtQnVpbGRlcjoge1xuICAgIHBhZGRpbmc6ICc4cHgnLFxuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnXG4gIH1cbn0pKFJlc3BBcmVhVG9vbGJhcik7XG5cbmV4cG9ydCBkZWZhdWx0IFN0eWxlZFJlc3BBcmVhVG9vbGJhcjtcbiJdfQ==
|
|
444
|
+
//# sourceMappingURL=inline-dropdown-toolbar.js.map
|
package/configure/lib/main.js
CHANGED
|
@@ -45,6 +45,8 @@ var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
|
|
|
45
45
|
|
|
46
46
|
var _reduce = _interopRequireDefault(require("lodash/reduce"));
|
|
47
47
|
|
|
48
|
+
var _max = _interopRequireDefault(require("lodash/max"));
|
|
49
|
+
|
|
48
50
|
var _styles = require("@material-ui/core/styles");
|
|
49
51
|
|
|
50
52
|
var _Button = _interopRequireDefault(require("@material-ui/core/Button"));
|
|
@@ -55,6 +57,8 @@ var _DialogTitle = _interopRequireDefault(require("@material-ui/core/DialogTitle
|
|
|
55
57
|
|
|
56
58
|
var _DialogActions = _interopRequireDefault(require("@material-ui/core/DialogActions"));
|
|
57
59
|
|
|
60
|
+
var _Tooltip = _interopRequireDefault(require("@material-ui/core/Tooltip"));
|
|
61
|
+
|
|
58
62
|
var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
|
|
59
63
|
|
|
60
64
|
var _ExpansionPanel = _interopRequireDefault(require("@material-ui/core/ExpansionPanel"));
|
|
@@ -65,9 +69,11 @@ var _ExpansionPanelDetails = _interopRequireDefault(require("@material-ui/core/E
|
|
|
65
69
|
|
|
66
70
|
var _ExpandMore = _interopRequireDefault(require("@material-ui/icons/ExpandMore"));
|
|
67
71
|
|
|
72
|
+
var _Info = _interopRequireDefault(require("@material-ui/icons/Info"));
|
|
73
|
+
|
|
68
74
|
var _inlineDropdownToolbar = _interopRequireDefault(require("./inline-dropdown-toolbar"));
|
|
69
75
|
|
|
70
|
-
var
|
|
76
|
+
var _utils = require("./utils");
|
|
71
77
|
|
|
72
78
|
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); }
|
|
73
79
|
|
|
@@ -144,7 +150,8 @@ var styles = function styles(theme) {
|
|
|
144
150
|
fontFamily: 'Cerebri Sans',
|
|
145
151
|
fontSize: '16px',
|
|
146
152
|
lineHeight: '19px',
|
|
147
|
-
color: '#495B8F'
|
|
153
|
+
color: '#495B8F',
|
|
154
|
+
marginRight: '5px'
|
|
148
155
|
},
|
|
149
156
|
rationaleLabel: {
|
|
150
157
|
display: 'flex',
|
|
@@ -155,6 +162,22 @@ var styles = function styles(theme) {
|
|
|
155
162
|
},
|
|
156
163
|
panelDetails: {
|
|
157
164
|
display: 'block'
|
|
165
|
+
},
|
|
166
|
+
flexContainer: {
|
|
167
|
+
display: 'flex',
|
|
168
|
+
alignItems: 'center',
|
|
169
|
+
marginBottom: '5px'
|
|
170
|
+
},
|
|
171
|
+
tooltip: {
|
|
172
|
+
fontSize: '12px',
|
|
173
|
+
whiteSpace: 'pre',
|
|
174
|
+
maxWidth: '500px'
|
|
175
|
+
},
|
|
176
|
+
errorText: {
|
|
177
|
+
fontSize: '12px',
|
|
178
|
+
color: 'red',
|
|
179
|
+
paddingTop: '5px',
|
|
180
|
+
marginTop: '8px'
|
|
158
181
|
}
|
|
159
182
|
};
|
|
160
183
|
};
|
|
@@ -431,7 +454,8 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
431
454
|
_ref2$teacherInstruct = _ref2.teacherInstructions,
|
|
432
455
|
teacherInstructions = _ref2$teacherInstruct === void 0 ? {} : _ref2$teacherInstruct,
|
|
433
456
|
_ref2$spellCheck = _ref2.spellCheck,
|
|
434
|
-
spellCheck = _ref2$spellCheck === void 0 ? {} : _ref2$spellCheck
|
|
457
|
+
spellCheck = _ref2$spellCheck === void 0 ? {} : _ref2$spellCheck,
|
|
458
|
+
maxResponseAreas = _ref2.maxResponseAreas;
|
|
435
459
|
|
|
436
460
|
var _ref3 = model || {},
|
|
437
461
|
rationaleEnabled = _ref3.rationaleEnabled,
|
|
@@ -439,7 +463,11 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
439
463
|
promptEnabled = _ref3.promptEnabled,
|
|
440
464
|
teacherInstructionsEnabled = _ref3.teacherInstructionsEnabled,
|
|
441
465
|
choices = _ref3.choices,
|
|
442
|
-
spellCheckEnabled = _ref3.spellCheckEnabled
|
|
466
|
+
spellCheckEnabled = _ref3.spellCheckEnabled,
|
|
467
|
+
errors = _ref3.errors;
|
|
468
|
+
|
|
469
|
+
var _ref4 = errors || {},
|
|
470
|
+
responseAreasError = _ref4.responseAreasError;
|
|
443
471
|
|
|
444
472
|
var renderChoiceRationale = function renderChoiceRationale() {
|
|
445
473
|
return (Object.keys(choices) || []).map(function (key) {
|
|
@@ -489,6 +517,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
489
517
|
break;
|
|
490
518
|
}
|
|
491
519
|
|
|
520
|
+
var validationMessage = (0, _utils.generateValidationMessage)(configuration);
|
|
492
521
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
493
522
|
className: classes.design
|
|
494
523
|
}, /*#__PURE__*/_react["default"].createElement(_configUi.layout.ConfigLayout, {
|
|
@@ -548,9 +577,24 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
548
577
|
imageSupport: imageSupport,
|
|
549
578
|
toolbarOpts: toolbarOpts,
|
|
550
579
|
spellCheck: spellCheckEnabled
|
|
551
|
-
})), /*#__PURE__*/_react["default"].createElement(
|
|
580
|
+
})), /*#__PURE__*/_react["default"].createElement("div", {
|
|
581
|
+
className: classes.flexContainer
|
|
582
|
+
}, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
|
|
552
583
|
className: classes.text
|
|
553
|
-
}, "Define Template, Choices, and Correct Responses"), /*#__PURE__*/_react["default"].createElement(
|
|
584
|
+
}, "Define Template, Choices, and Correct Responses"), /*#__PURE__*/_react["default"].createElement(_Tooltip["default"], {
|
|
585
|
+
classes: {
|
|
586
|
+
tooltip: classes.tooltip
|
|
587
|
+
},
|
|
588
|
+
disableFocusListener: true,
|
|
589
|
+
disableTouchListener: true,
|
|
590
|
+
placement: 'right',
|
|
591
|
+
title: validationMessage
|
|
592
|
+
}, /*#__PURE__*/_react["default"].createElement(_Info["default"], {
|
|
593
|
+
fontSize: 'small',
|
|
594
|
+
color: 'primary'
|
|
595
|
+
}))), responseAreasError && /*#__PURE__*/_react["default"].createElement("div", {
|
|
596
|
+
className: classes.errorText
|
|
597
|
+
}, responseAreasError), /*#__PURE__*/_react["default"].createElement(InfoDialog, {
|
|
554
598
|
open: dialog.open,
|
|
555
599
|
title: dialog.message,
|
|
556
600
|
onCancel: dialog.onCancel,
|
|
@@ -565,6 +609,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
565
609
|
options: {
|
|
566
610
|
duplicates: true
|
|
567
611
|
},
|
|
612
|
+
maxResponseAreas: maxResponseAreas,
|
|
568
613
|
respAreaToolbar: function respAreaToolbar(node, value, onToolbarDone) {
|
|
569
614
|
var respAreaChoices = _this2.state.respAreaChoices;
|
|
570
615
|
return function () {
|
|
@@ -593,7 +638,8 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
593
638
|
imageSupport: imageSupport,
|
|
594
639
|
onBlur: this.onBlur,
|
|
595
640
|
disabled: false,
|
|
596
|
-
highlightShape: false
|
|
641
|
+
highlightShape: false,
|
|
642
|
+
error: responseAreasError
|
|
597
643
|
}), /*#__PURE__*/_react["default"].createElement("br", null), choiceRationaleEnabled && renderChoiceRationale())));
|
|
598
644
|
}
|
|
599
645
|
}]);
|
|
@@ -616,4 +662,4 @@ exports.Main = Main;
|
|
|
616
662
|
var Styled = (0, _styles.withStyles)(styles)(Main);
|
|
617
663
|
var _default = Styled;
|
|
618
664
|
exports["default"] = _default;
|
|
619
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLmpzeCJdLCJuYW1lcyI6WyJ0b2dnbGUiLCJzZXR0aW5ncyIsIlBhbmVsIiwiSW5mb0RpYWxvZyIsIm9wZW4iLCJvbkNhbmNlbCIsIm9uT2siLCJ0aXRsZSIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsImJvb2wiLCJmdW5jIiwic3RyaW5nIiwic3R5bGVzIiwidGhlbWUiLCJwcm9tcHRIb2xkZXIiLCJ3aWR0aCIsInBhZGRpbmdCb3R0b20iLCJzcGFjaW5nIiwidW5pdCIsIm1hcmdpbkJvdHRvbSIsInByb21wdCIsInBhZGRpbmdUb3AiLCJtYXJrdXAiLCJtaW5IZWlnaHQiLCJkZXNpZ24iLCJjaG9pY2VDb25maWd1cmF0aW9uIiwic3dpdGNoRWxlbWVudCIsImp1c3RpZnlDb250ZW50IiwibWFyZ2luIiwiYWRkQnV0dG9uIiwidGV4dCIsImZvbnRGYW1pbHkiLCJmb250U2l6ZSIsImxpbmVIZWlnaHQiLCJjb2xvciIsInJhdGlvbmFsZUxhYmVsIiwiZGlzcGxheSIsIndoaXRlU3BhY2UiLCJyYXRpb25hbGVDaG9pY2VzIiwibWFyZ2luVG9wIiwicGFuZWxEZXRhaWxzIiwiY3JlYXRlRWxlbWVudEZyb21IVE1MIiwiaHRtbFN0cmluZyIsImRpdiIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImlubmVySFRNTCIsInRyaW0iLCJwcmVwYXJlVmFsIiwiaHRtbCIsInRtcCIsInZhbHVlIiwidGV4dENvbnRlbnQiLCJpbm5lclRleHQiLCJNYWluIiwiZGlhbG9nIiwibmV3VmFsIiwicHJvcHMiLCJvbk1vZGVsQ2hhbmdlZCIsIm1vZGVsIiwib25Nb2RlbENoYW5nZSIsInJhdGlvbmFsZSIsImluZGV4IiwiY2hvaWNlIiwiaW5kZXhPZkNob2ljZSIsImNob2ljZXMiLCJmaW5kSW5kZXgiLCJlbGVtIiwibGFiZWwiLCJzcGxpY2UiLCJ0ZWFjaGVySW5zdHJ1Y3Rpb25zIiwic2xhdGVNYXJrdXAiLCJjYWxsYmFjayIsInNldFN0YXRlIiwibWVzc2FnZSIsInJlc3BBcmVhQ2hvaWNlcyIsInN0YXRlIiwiZG9tTWFya3VwIiwiYWxsUmVzcEFyZWFzIiwicXVlcnlTZWxlY3RvckFsbCIsImFsbENob2ljZXMiLCJmb3JFYWNoIiwiZWwiLCJkYXRhc2V0IiwiZXhpc3RpbmdSZXNwQXJlYUNob2ljZXMiLCJvYmoiLCJrZXkiLCJuZXdSZXNwQXJlYUNob2ljZXMiLCJzaG91bGRXYXJuIiwibmV3Q2hvaWNlcyIsImxlbmd0aCIsImZpbmQiLCJjIiwiY29ycmVjdCIsInJlbW92ZSIsInIiLCJtYXAiLCJwYXJzZUludCIsImZpbHRlciIsInZhbCIsImlzTmFOIiwicHVzaCIsInJlc3BJbmRleCIsInNlbGVjdGVkSW5kZXgiLCJjaCIsIm5Qcm9wcyIsIm5ld1N0YXRlIiwiZG9tTm9kZSIsIlJlYWN0RE9NIiwiZmluZERPTU5vZGUiLCJjbGFzc2VzIiwiY29uZmlndXJhdGlvbiIsIm9uQ29uZmlndXJhdGlvbkNoYW5nZWQiLCJpbWFnZVN1cHBvcnQiLCJwYXJ0aWFsU2NvcmluZyIsImxvY2tDaG9pY2VPcmRlciIsImNob2ljZVJhdGlvbmFsZSIsInNwZWxsQ2hlY2siLCJyYXRpb25hbGVFbmFibGVkIiwiY2hvaWNlUmF0aW9uYWxlRW5hYmxlZCIsInByb21wdEVuYWJsZWQiLCJ0ZWFjaGVySW5zdHJ1Y3Rpb25zRW5hYmxlZCIsInNwZWxsQ2hlY2tFbmFibGVkIiwicmVuZGVyQ2hvaWNlUmF0aW9uYWxlIiwiT2JqZWN0Iiwia2V5cyIsIl9faHRtbCIsIm9uQ2hvaWNlUmF0aW9uYWxlQ2hhbmdlZCIsInRvb2xiYXJPcHRzIiwidG9vbGJhckVkaXRvclBvc2l0aW9uIiwicG9zaXRpb24iLCJTZXR0aW5ncyIsIlByb3BlcnRpZXMiLCJvblRlYWNoZXJJbnN0cnVjdGlvbnNDaGFuZ2VkIiwib25Qcm9tcHRDaGFuZ2VkIiwib25SYXRpb25hbGVDaGFuZ2VkIiwiQUxMX1BMVUdJTlMiLCJ0eXBlIiwib3B0aW9ucyIsImR1cGxpY2F0ZXMiLCJyZXNwQXJlYVRvb2xiYXIiLCJub2RlIiwib25Ub29sYmFyRG9uZSIsIm9uQWRkQ2hvaWNlIiwib25DaGVjayIsIm9uUmVtb3ZlQ2hvaWNlIiwiZGF0YSIsImdldCIsIm9uU2VsZWN0Q2hvaWNlIiwib25DaGFuZ2UiLCJvbkJsdXIiLCJSZWFjdCIsIkNvbXBvbmVudCIsIm9iamVjdCIsImlzUmVxdWlyZWQiLCJkaXNhYmxlU2lkZVBhbmVsIiwic2hhcGUiLCJhZGQiLCJTdHlsZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFRQSxNQUFSLEdBQTBCQyxrQkFBMUIsQ0FBUUQsTUFBUjtBQUFBLElBQWdCRSxLQUFoQixHQUEwQkQsa0JBQTFCLENBQWdCQyxLQUFoQjs7QUFFQSxJQUFNQyxVQUFVLEdBQUcsU0FBYkEsVUFBYTtBQUFBLE1BQUdDLElBQUgsUUFBR0EsSUFBSDtBQUFBLE1BQVNDLFFBQVQsUUFBU0EsUUFBVDtBQUFBLE1BQW1CQyxJQUFuQixRQUFtQkEsSUFBbkI7QUFBQSxNQUF5QkMsS0FBekIsUUFBeUJBLEtBQXpCO0FBQUEsc0JBQ2pCLGdDQUFDLGtCQUFEO0FBQVEsSUFBQSxJQUFJLEVBQUVIO0FBQWQsa0JBQ0UsZ0NBQUMsdUJBQUQsUUFBY0csS0FBZCxDQURGLGVBRUUsZ0NBQUMseUJBQUQsUUFDR0QsSUFBSSxpQkFDSCxnQ0FBQyxrQkFBRDtBQUFRLElBQUEsT0FBTyxFQUFFQSxJQUFqQjtBQUF1QixJQUFBLEtBQUssRUFBQztBQUE3QixVQUZKLEVBTUdELFFBQVEsaUJBQ1AsZ0NBQUMsa0JBQUQ7QUFBUSxJQUFBLE9BQU8sRUFBRUEsUUFBakI7QUFBMkIsSUFBQSxLQUFLLEVBQUM7QUFBakMsY0FQ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O2lDQUFuQmxHLEksZUFDUTtBQUNqQnlELEVBQUFBLGFBQWEsRUFBRXZHLHNCQUFVaUosTUFBVixDQUFpQkMsVUFEZjtBQUVqQi9GLEVBQUFBLEtBQUssRUFBRW5ELHNCQUFVaUosTUFBVixDQUFpQkMsVUFGUDtBQUdqQkMsRUFBQUEsZ0JBQWdCLEVBQUVuSixzQkFBVUMsSUFIWDtBQUlqQmlELEVBQUFBLGNBQWMsRUFBRWxELHNCQUFVRSxJQUFWLENBQWVnSixVQUpkO0FBS2pCMUMsRUFBQUEsc0JBQXNCLEVBQUV4RyxzQkFBVUUsSUFBVixDQUFlZ0osVUFMdEI7QUFNakI1QyxFQUFBQSxPQUFPLEVBQUV0RyxzQkFBVWlKLE1BQVYsQ0FBaUJDLFVBTlQ7QUFPakJ6QyxFQUFBQSxZQUFZLEVBQUV6RyxzQkFBVW9KLEtBQVYsQ0FBZ0I7QUFDNUJDLElBQUFBLEdBQUcsRUFBRXJKLHNCQUFVRSxJQUFWLENBQWVnSixVQURRO0FBRTVCLGNBQVFsSixzQkFBVUUsSUFBVixDQUFlZ0o7QUFGSyxHQUFoQjtBQVBHLEM7QUFtZHJCLElBQU1JLE1BQU0sR0FBRyx3QkFBV2xKLE1BQVgsRUFBbUIwQyxJQUFuQixDQUFmO2VBRWV3RyxNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBFZGl0YWJsZUh0bWwsIHsgQUxMX1BMVUdJTlMgfSBmcm9tICdAcGllLWxpYi9lZGl0YWJsZS1odG1sJztcbmltcG9ydCB7IElucHV0Q29udGFpbmVyLCBsYXlvdXQsIHNldHRpbmdzIH0gZnJvbSAnQHBpZS1saWIvY29uZmlnLXVpJztcbmltcG9ydCB7IHJlbmRlck1hdGggfSBmcm9tICdAcGllLWxpYi9tYXRoLXJlbmRlcmluZyc7XG5pbXBvcnQgY2xvbmVEZWVwIGZyb20gJ2xvZGFzaC9jbG9uZURlZXAnO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSAnbG9kYXNoL2lzRXF1YWwnO1xuaW1wb3J0IGlzVW5kZWZpbmVkIGZyb20gJ2xvZGFzaC9pc1VuZGVmaW5lZCc7XG5pbXBvcnQgaXNFbXB0eSBmcm9tICdsb2Rhc2gvaXNFbXB0eSc7XG5pbXBvcnQgcmVkdWNlIGZyb20gJ2xvZGFzaC9yZWR1Y2UnO1xuaW1wb3J0IHsgd2l0aFN0eWxlcyB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL3N0eWxlcyc7XG5pbXBvcnQgQnV0dG9uIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0J1dHRvbic7XG5pbXBvcnQgRGlhbG9nIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0RpYWxvZyc7XG5pbXBvcnQgRGlhbG9nVGl0bGUgZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvRGlhbG9nVGl0bGUnO1xuaW1wb3J0IERpYWxvZ0FjdGlvbnMgZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvRGlhbG9nQWN0aW9ucyc7XG5pbXBvcnQgVHlwb2dyYXBoeSBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9UeXBvZ3JhcGh5JztcbmltcG9ydCBFeHBhbnNpb25QYW5lbCBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9FeHBhbnNpb25QYW5lbCc7XG5pbXBvcnQgRXhwYW5zaW9uUGFuZWxTdW1tYXJ5IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0V4cGFuc2lvblBhbmVsU3VtbWFyeSc7XG5pbXBvcnQgRXhwYW5zaW9uUGFuZWxEZXRhaWxzIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0V4cGFuc2lvblBhbmVsRGV0YWlscyc7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0V4cGFuZE1vcmUnO1xuaW1wb3J0IElubGluZURyb3Bkb3duVG9vbGJhciBmcm9tICcuL2lubGluZS1kcm9wZG93bi10b29sYmFyJztcbmltcG9ydCBtYXggZnJvbSAnbG9kYXNoL21heCc7XG5cbmNvbnN0IHsgdG9nZ2xlLCBQYW5lbCB9ID0gc2V0dGluZ3M7XG5cbmNvbnN0IEluZm9EaWFsb2cgPSAoeyBvcGVuLCBvbkNhbmNlbCwgb25PaywgdGl0bGUgfSkgPT4gKFxuICA8RGlhbG9nIG9wZW49e29wZW59PlxuICAgIDxEaWFsb2dUaXRsZT57dGl0bGV9PC9EaWFsb2dUaXRsZT5cbiAgICA8RGlhbG9nQWN0aW9ucz5cbiAgICAgIHtvbk9rICYmIChcbiAgICAgICAgPEJ1dHRvbiBvbkNsaWNrPXtvbk9rfSBjb2xvcj1cInByaW1hcnlcIj5cbiAgICAgICAgICBPS1xuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgICB7b25DYW5jZWwgJiYgKFxuICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9e29uQ2FuY2VsfSBjb2xvcj1cInByaW1hcnlcIj5cbiAgICAgICAgICBDYW5jZWxcbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvRGlhbG9nQWN0aW9ucz5cbiAgPC9EaWFsb2c+XG4pO1xuXG5JbmZvRGlhbG9nLnByb3BUeXBlcyA9IHtcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2FuY2VsOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25PazogUHJvcFR5cGVzLmZ1bmMsXG4gIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5jb25zdCBzdHlsZXMgPSB0aGVtZSA9PiAoe1xuICBwcm9tcHRIb2xkZXI6IHtcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIHBhZGRpbmdCb3R0b206IHRoZW1lLnNwYWNpbmcudW5pdCAqIDIsXG4gICAgbWFyZ2luQm90dG9tOiB0aGVtZS5zcGFjaW5nLnVuaXQgKiAyXG4gIH0sXG4gIHByb21wdDoge1xuICAgIHBhZGRpbmdUb3A6IHRoZW1lLnNwYWNpbmcudW5pdCAqIDIsXG4gICAgd2lkdGg6ICcxMDAlJ1xuICB9LFxuICBtYXJrdXA6IHtcbiAgICBtaW5IZWlnaHQ6ICcxMDBweCcsXG4gICAgcGFkZGluZ1RvcDogdGhlbWUuc3BhY2luZy51bml0ICogMixcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgICcmIFtkYXRhLXNsYXRlLWVkaXRvcj1cInRydWVcIl0nOiB7XG4gICAgICBtaW5IZWlnaHQ6ICcxMDBweCdcbiAgICB9XG4gIH0sXG4gIGRlc2lnbjoge1xuICAgIHBhZGRpbmdUb3A6IHRoZW1lLnNwYWNpbmcudW5pdCAqIDNcbiAgfSxcbiAgY2hvaWNlQ29uZmlndXJhdGlvbjoge1xuICAgIHBhZGRpbmdUb3A6IHRoZW1lLnNwYWNpbmcudW5pdCAqIDIsXG4gICAgcGFkZGluZ0JvdHRvbTogdGhlbWUuc3BhY2luZy51bml0ICogMlxuICB9LFxuICBzd2l0Y2hFbGVtZW50OiB7XG4gICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgICBtYXJnaW46IDBcbiAgfSxcbiAgYWRkQnV0dG9uOiB7XG4gICAgZmxvYXQ6ICdyaWdodCdcbiAgfSxcbiAgdGV4dDoge1xuICAgIGZvbnRGYW1pbHk6ICdDZXJlYnJpIFNhbnMnLFxuICAgIGZvbnRTaXplOiAnMTZweCcsXG4gICAgbGluZUhlaWdodDogJzE5cHgnLFxuICAgIGNvbG9yOiAnIzQ5NUI4RidcbiAgfSxcbiAgcmF0aW9uYWxlTGFiZWw6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgd2hpdGVTcGFjZTogJ2JyZWFrLXNwYWNlcydcbiAgfSxcbiAgcmF0aW9uYWxlQ2hvaWNlczoge1xuICAgIG1hcmdpblRvcDogJzE2cHgnXG4gIH0sXG4gIHBhbmVsRGV0YWlsczoge1xuICAgZGlzcGxheTogJ2Jsb2NrJ1xuICB9XG59KTtcblxuY29uc3QgY3JlYXRlRWxlbWVudEZyb21IVE1MID0gaHRtbFN0cmluZyA9PiB7XG4gIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gIGRpdi5pbm5lckhUTUwgPSAoaHRtbFN0cmluZyB8fCAnJykudHJpbSgpO1xuXG4gIHJldHVybiBkaXY7XG59O1xuXG5jb25zdCBwcmVwYXJlVmFsID0gaHRtbCA9PiB7XG4gIGNvbnN0IHRtcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ0RJVicpO1xuXG4gIHRtcC5pbm5lckhUTUwgPSBodG1sO1xuXG4gIGNvbnN0IHZhbHVlID0gdG1wLnRleHRDb250ZW50IHx8IHRtcC5pbm5lclRleHQgfHwgJyc7XG5cbiAgcmV0dXJuIHZhbHVlLnRyaW0oKTtcbn07XG5cbmV4cG9ydCBjbGFzcyBNYWluIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBjb25maWd1cmF0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgbW9kZWw6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBkaXNhYmxlU2lkZVBhbmVsOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBvbk1vZGVsQ2hhbmdlZDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBvbkNvbmZpZ3VyYXRpb25DaGFuZ2VkOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBpbWFnZVN1cHBvcnQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBhZGQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICBkZWxldGU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbiAgICB9KVxuICB9O1xuXG4gIHN0YXRlID0ge1xuICAgIGRpYWxvZzoge1xuICAgICAgb3BlbjogZmFsc2VcbiAgICB9XG4gIH07XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgY29uc3Qge1xuICAgICAgbW9kZWw6IHsgY2hvaWNlcyB9XG4gICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICB0aGlzLnNldFN0YXRlKHsgcmVzcEFyZWFDaG9pY2VzOiBjbG9uZURlZXAoY2hvaWNlcykgfSk7XG4gIH1cblxuICBVTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuUHJvcHMpIHtcbiAgICBjb25zdCBuZXdTdGF0ZSA9IHt9O1xuXG4gICAgaWYgKFxuICAgICAgIWlzRXF1YWwoblByb3BzLm1vZGVsLmNob2ljZXMsIHRoaXMucHJvcHMubW9kZWwuY2hvaWNlcykgfHxcbiAgICAgICFpc0VxdWFsKG5Qcm9wcy5tb2RlbC5jaG9pY2VzLCB0aGlzLnN0YXRlLnJlc3BBcmVhQ2hvaWNlcylcbiAgICApIHtcbiAgICAgIG5ld1N0YXRlLnJlc3BBcmVhQ2hvaWNlcyA9IGNsb25lRGVlcChuUHJvcHMubW9kZWwuY2hvaWNlcyk7XG4gICAgfVxuXG4gICAgaWYgKCFpc0VtcHR5KG5ld1N0YXRlKSkge1xuICAgICAgdGhpcy5zZXRTdGF0ZShuZXdTdGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgY29tcG9uZW50RGlkVXBkYXRlKCkge1xuICAgIC8vZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgY29uc3QgZG9tTm9kZSA9IFJlYWN0RE9NLmZpbmRET01Ob2RlKHRoaXMpO1xuXG4gICAgcmVuZGVyTWF0aChkb21Ob2RlKTtcbiAgfVxuXG4gIG9uTW9kZWxDaGFuZ2UgPSBuZXdWYWwgPT4ge1xuICAgIHRoaXMucHJvcHMub25Nb2RlbENoYW5nZWQoe1xuICAgICAgLi4udGhpcy5wcm9wcy5tb2RlbCxcbiAgICAgIC4uLm5ld1ZhbFxuICAgIH0pO1xuICB9O1xuXG4gIG9uUHJvbXB0Q2hhbmdlZCA9IHByb21wdCA9PiB7XG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHsgcHJvbXB0IH0pO1xuICB9O1xuXG4gIG9uUmF0aW9uYWxlQ2hhbmdlZCA9IHJhdGlvbmFsZSA9PiB7XG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHsgcmF0aW9uYWxlIH0pO1xuICB9O1xuXG4gIG9uQ2hvaWNlUmF0aW9uYWxlQ2hhbmdlZCA9IChpbmRleCwgY2hvaWNlKSA9PiB7XG4gICAgY29uc3QgeyBtb2RlbCB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBpbmRleE9mQ2hvaWNlID0gbW9kZWwuY2hvaWNlcyAmJiBtb2RlbC5jaG9pY2VzW2luZGV4XSAmJiBtb2RlbC5jaG9pY2VzW2luZGV4XVxuICAgICAgLmZpbmRJbmRleChlbGVtID0+IGVsZW0ubGFiZWwgPT09IGNob2ljZS5sYWJlbCAmJiBlbGVtLnZhbHVlID09PSBjaG9pY2UudmFsdWUpO1xuXG4gICAgbW9kZWwuY2hvaWNlc1tpbmRleF0gJiYgbW9kZWwuY2hvaWNlc1tpbmRleF0uc3BsaWNlKGluZGV4T2ZDaG9pY2UsIDEsIGNob2ljZSk7XG5cbiAgICB0aGlzLm9uTW9kZWxDaGFuZ2UobW9kZWwpO1xuICB9O1xuXG4gIG9uVGVhY2hlckluc3RydWN0aW9uc0NoYW5nZWQgPSB0ZWFjaGVySW5zdHJ1Y3Rpb25zID0+IHtcbiAgICB0aGlzLm9uTW9kZWxDaGFuZ2UoeyB0ZWFjaGVySW5zdHJ1Y3Rpb25zIH0pO1xuICB9O1xuXG4gIG9uTWFya3VwQ2hhbmdlZCA9IHNsYXRlTWFya3VwID0+IHtcbiAgICB0aGlzLm9uTW9kZWxDaGFuZ2UoeyBzbGF0ZU1hcmt1cCB9KTtcbiAgfTtcblxuICBvbkNoZWNrID0gY2FsbGJhY2sgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgZGlhbG9nOiB7XG4gICAgICAgIG9wZW46IHRydWUsXG4gICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgJ1Jlc3BvbnNlIGFyZWFzIHdpdGggdW5kZXIgMiBvcHRpb25zIG9yIHdpdGggbm8gY29ycmVjdCBhbnN3ZXJzIHdpbGwgYmUgZGlzY2FyZGVkJyxcbiAgICAgICAgb25PazogKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGRpYWxvZzoge1xuICAgICAgICAgICAgICAgIG9wZW46IGZhbHNlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uQ2FuY2VsOiAoKSA9PlxuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgZGlhbG9nOiB7XG4gICAgICAgICAgICAgIG9wZW46IGZhbHNlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICBvbkNoYW5nZSA9IG1hcmt1cCA9PiB7XG4gICAgY29uc3QgeyByZXNwQXJlYUNob2ljZXMgfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3QgZG9tTWFya3VwID0gY3JlYXRlRWxlbWVudEZyb21IVE1MKG1hcmt1cCk7XG4gICAgY29uc3QgYWxsUmVzcEFyZWFzID0gZG9tTWFya3VwLnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgICAnW2RhdGEtdHlwZT1cImlubGluZV9kcm9wZG93blwiXSdcbiAgICApO1xuXG4gICAgY29uc3QgYWxsQ2hvaWNlcyA9IHt9O1xuXG4gICAgYWxsUmVzcEFyZWFzLmZvckVhY2goZWwgPT4ge1xuICAgICAgYWxsQ2hvaWNlc1tlbC5kYXRhc2V0LmluZGV4XSA9IGVsLmRhdGFzZXQudmFsdWUgfHwgJyc7XG4gICAgfSk7XG5cbiAgICBjb25zdCBleGlzdGluZ1Jlc3BBcmVhQ2hvaWNlcyA9IHJlZHVjZShcbiAgICAgIHJlc3BBcmVhQ2hvaWNlcyxcbiAgICAgIChvYmosIGNob2ljZXMsIGtleSkgPT4ge1xuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGFsbENob2ljZXNba2V5XSkpIHtcbiAgICAgICAgICBvYmpba2V5XSA9IHJlc3BBcmVhQ2hvaWNlc1trZXldO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgIH0sXG4gICAgICB7fVxuICAgICk7XG5cbiAgICBjb25zdCBuZXdSZXNwQXJlYUNob2ljZXMgPSB7fTtcbiAgICBsZXQgc2hvdWxkV2FybiA9IGZhbHNlO1xuXG4gICAgYWxsUmVzcEFyZWFzLmZvckVhY2goKGVsLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgbmV3Q2hvaWNlcyA9IGV4aXN0aW5nUmVzcEFyZWFDaG9pY2VzW2VsLmRhdGFzZXQuaW5kZXhdIHx8IFtdO1xuXG4gICAgICBpZiAobmV3Q2hvaWNlcy5sZW5ndGggPCAyIHx8ICFuZXdDaG9pY2VzLmZpbmQoYyA9PiBjLmNvcnJlY3QpKSB7XG4gICAgICAgIGVsLnJlbW92ZSgpO1xuICAgICAgICBzaG91bGRXYXJuID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld1Jlc3BBcmVhQ2hvaWNlc1tpbmRleF0gPVxuICAgICAgICAgIGV4aXN0aW5nUmVzcEFyZWFDaG9pY2VzW2VsLmRhdGFzZXQuaW5kZXhdIHx8IFtdO1xuICAgICAgICBlbC5kYXRhc2V0LmluZGV4ID0gaW5kZXg7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoc2hvdWxkV2Fybikge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGRpYWxvZzoge1xuICAgICAgICAgIG9wZW46IHRydWUsXG4gICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICdSZXNwb25zZSBhcmVhcyB3aXRoIHVuZGVyIDIgb3B0aW9ucyBvciB3aXRoIG5vIGNvcnJlY3QgYW5zd2VycyB3aWxsIGJlIGRpc2NhcmRlZCcsXG4gICAgICAgICAgb25PazogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZShcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRpYWxvZzoge1xuICAgICAgICAgICAgICAgICAgb3BlbjogZmFsc2VcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICgpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHtcbiAgICAgICAgICAgICAgICAgIGNob2ljZXM6IGNsb25lRGVlcChuZXdSZXNwQXJlYUNob2ljZXMpLFxuICAgICAgICAgICAgICAgICAgc2xhdGVNYXJrdXA6IGRvbU1hcmt1cC5pbm5lckhUTUxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uQ2FuY2VsOiAoKSA9PlxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgIGRpYWxvZzoge1xuICAgICAgICAgICAgICAgIG9wZW46IGZhbHNlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9uTW9kZWxDaGFuZ2Uoe1xuICAgICAgICBjaG9pY2VzOiBjbG9uZURlZXAobmV3UmVzcEFyZWFDaG9pY2VzKSxcbiAgICAgICAgc2xhdGVNYXJrdXA6IGRvbU1hcmt1cC5pbm5lckhUTUxcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBvbkFkZENob2ljZSA9IChpbmRleCwgbGFiZWwpID0+IHtcbiAgICBjb25zdCB7IHJlc3BBcmVhQ2hvaWNlcyB9ID0gdGhpcy5zdGF0ZTtcblxuICAgIGlmICghcmVzcEFyZWFDaG9pY2VzW2luZGV4XSkge1xuICAgICAgcmVzcEFyZWFDaG9pY2VzW2luZGV4XSA9IFtdO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIChyZXNwQXJlYUNob2ljZXNbaW5kZXhdIHx8IFtdKS5maW5kKFxuICAgICAgICByID0+IHByZXBhcmVWYWwoci5sYWJlbCkgPT09IHByZXBhcmVWYWwobGFiZWwpXG4gICAgICApXG4gICAgKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgZGlhbG9nOiB7XG4gICAgICAgICAgb3BlbjogdHJ1ZSxcbiAgICAgICAgICBtZXNzYWdlOiAnRHVwbGljYXRlIGFuc3dlcnMgYXJlIG5vdCBhbGxvd2VkLicsXG4gICAgICAgICAgb25PazogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgIGRpYWxvZzoge1xuICAgICAgICAgICAgICAgIG9wZW46IGZhbHNlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IChyZXNwQXJlYUNob2ljZXNbaW5kZXhdICYmIG1heChyZXNwQXJlYUNob2ljZXNbaW5kZXhdLm1hcChjID0+IHBhcnNlSW50KGMudmFsdWUpKS5maWx0ZXIodmFsID0+ICFpc05hTih2YWwpKSkpIHx8IDA7XG5cbiAgICByZXNwQXJlYUNob2ljZXNbaW5kZXhdLnB1c2goe1xuICAgICAgbGFiZWwsXG4gICAgICB2YWx1ZTogYCR7dmFsdWUgKyAxfWAsXG4gICAgICBjb3JyZWN0OiBmYWxzZVxuICAgIH0pO1xuXG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHsgY2hvaWNlczogY2xvbmVEZWVwKHJlc3BBcmVhQ2hvaWNlcykgfSk7XG4gIH07XG5cbiAgb25SZW1vdmVDaG9pY2UgPSAocmVzcEluZGV4LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHsgcmVzcEFyZWFDaG9pY2VzIH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgcmVzcEFyZWFDaG9pY2VzW3Jlc3BJbmRleF0uc3BsaWNlKGluZGV4LCAxKTtcblxuICAgIHRoaXMub25Nb2RlbENoYW5nZSh7IGNob2ljZXM6IGNsb25lRGVlcChyZXNwQXJlYUNob2ljZXMpIH0pO1xuICB9O1xuXG4gIG9uU2VsZWN0Q2hvaWNlID0gKHJlc3BJbmRleCwgc2VsZWN0ZWRJbmRleCkgPT4ge1xuICAgIGNvbnN0IHsgcmVzcEFyZWFDaG9pY2VzIH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgcmVzcEFyZWFDaG9pY2VzW3Jlc3BJbmRleF0gPSByZXNwQXJlYUNob2ljZXNbcmVzcEluZGV4XS5tYXAoXG4gICAgICAoY2gsIGluZGV4KSA9PiAoeyAuLi5jaCwgY29ycmVjdDogaW5kZXggPT09IHNlbGVjdGVkSW5kZXggfSlcbiAgICApO1xuXG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHsgY2hvaWNlczogY2xvbmVEZWVwKHJlc3BBcmVhQ2hvaWNlcykgfSk7XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgZGlhbG9nIH0gPSB0aGlzLnN0YXRlO1xuICAgIGNvbnN0IHtcbiAgICAgIGNsYXNzZXMsXG4gICAgICBtb2RlbCxcbiAgICAgIGNvbmZpZ3VyYXRpb24sXG4gICAgICBvbkNvbmZpZ3VyYXRpb25DaGFuZ2VkLFxuICAgICAgaW1hZ2VTdXBwb3J0XG4gICAgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3Qge1xuICAgICAgcHJvbXB0ID0ge30sXG4gICAgICBwYXJ0aWFsU2NvcmluZyA9IHt9LFxuICAgICAgbG9ja0Nob2ljZU9yZGVyID0ge30sXG4gICAgICByYXRpb25hbGUgPSB7fSxcbiAgICAgIGNob2ljZVJhdGlvbmFsZSA9IHt9LFxuICAgICAgdGVhY2hlckluc3RydWN0aW9ucyA9IHt9LFxuICAgICAgc3BlbGxDaGVjayA9IHt9LFxuICAgIH0gPSBjb25maWd1cmF0aW9uIHx8IHt9O1xuICAgIGNvbnN0IHtcbiAgICAgIHJhdGlvbmFsZUVuYWJsZWQsXG4gICAgICBjaG9pY2VSYXRpb25hbGVFbmFibGVkLFxuICAgICAgcHJvbXB0RW5hYmxlZCxcbiAgICAgIHRlYWNoZXJJbnN0cnVjdGlvbnNFbmFibGVkLFxuICAgICAgY2hvaWNlcyxcbiAgICAgIHNwZWxsQ2hlY2tFbmFibGVkXG4gICAgfSA9XG4gICAgbW9kZWwgfHwge307XG5cbiAgICBjb25zdCByZW5kZXJDaG9pY2VSYXRpb25hbGUgPSAoKSA9PiAoT2JqZWN0LmtleXMoY2hvaWNlcykgfHwgW10pLm1hcChrZXkgPT5cbiAgICAgIDxkaXYga2V5PXtrZXl9IGNsYXNzTmFtZT17Y2xhc3Nlcy5yYXRpb25hbGVDaG9pY2VzfT5cbiAgICAgICAgPEV4cGFuc2lvblBhbmVsPlxuICAgICAgICAgIDxFeHBhbnNpb25QYW5lbFN1bW1hcnkgZXhwYW5kSWNvbj17PEV4cGFuZE1vcmVJY29uLz59PlxuICAgICAgICAgICAgPFR5cG9ncmFwaHkgY2xhc3NOYW1lPXtjbGFzc2VzLnRleHR9PlxuICAgICAgICAgICAgICB7YFJhdGlvbmFsZSBmb3IgcmVzcG9uc2UgYXJlYSAjJHtwYXJzZUludChrZXkpICsgMX1gfVxuICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDwvRXhwYW5zaW9uUGFuZWxTdW1tYXJ5PlxuICAgICAgICAgIDxFeHBhbnNpb25QYW5lbERldGFpbHMgY2xhc3NOYW1lPXtjbGFzc2VzLnBhbmVsRGV0YWlsc30+XG4gICAgICAgICAgICB7KGNob2ljZXNba2V5XSB8fCBbXSkubWFwKGNob2ljZSA9PlxuICAgICAgICAgICAgICA8SW5wdXRDb250YWluZXJcbiAgICAgICAgICAgICAgICBrZXk9e2Nob2ljZS5sYWJlbH1cbiAgICAgICAgICAgICAgICBsYWJlbD17XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMucmF0aW9uYWxlTGFiZWx9XG4gICAgICAgICAgICAgICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7XG4gICAgICAgICAgICAgICAgICAgICAgX19odG1sOlxuICAgICAgICAgICAgICAgICAgICAgICAgYCR7cmF0aW9uYWxlLmxhYmVsfSBmb3IgJHtjaG9pY2UubGFiZWx9ICgke2Nob2ljZS5jb3JyZWN0ID8gJ2NvcnJlY3QnIDogJ2luY29ycmVjdCd9KWBcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5wcm9tcHRIb2xkZXJ9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8RWRpdGFibGVIdG1sXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMucHJvbXB0fVxuICAgICAgICAgICAgICAgICAgbWFya3VwPXtjaG9pY2UucmF0aW9uYWxlIHx8ICcnfVxuICAgICAgICAgICAgICAgICAgc3BlbGxDaGVjaz17c3BlbGxDaGVja0VuYWJsZWR9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17YyA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQ2hvaWNlUmF0aW9uYWxlQ2hhbmdlZChrZXksIHtcbiAgICAgICAgICAgICAgICAgICAgICAuLi5jaG9pY2UsXG4gICAgICAgICAgICAgICAgICAgICAgcmF0aW9uYWxlOiBjXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBpbWFnZVN1cHBvcnQ9e2ltYWdlU3VwcG9ydH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0lucHV0Q29udGFpbmVyPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L0V4cGFuc2lvblBhbmVsRGV0YWlscz5cbiAgICAgICAgPC9FeHBhbnNpb25QYW5lbD5cbiAgICAgIDwvZGl2PlxuICAgIClcblxuICAgIGNvbnN0IHRvb2xiYXJPcHRzID0ge307XG5cbiAgICBzd2l0Y2ggKG1vZGVsLnRvb2xiYXJFZGl0b3JQb3NpdGlvbikge1xuICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgdG9vbGJhck9wdHMucG9zaXRpb24gPSAndG9wJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0b29sYmFyT3B0cy5wb3NpdGlvbiA9ICdib3R0b20nO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMuZGVzaWdufT5cbiAgICAgICAgPGxheW91dC5Db25maWdMYXlvdXRcbiAgICAgICAgICBzZXR0aW5ncz17XG4gICAgICAgICAgICA8UGFuZWxcbiAgICAgICAgICAgICAgbW9kZWw9e21vZGVsfVxuICAgICAgICAgICAgICBjb25maWd1cmF0aW9uPXtjb25maWd1cmF0aW9ufVxuICAgICAgICAgICAgICBvbkNoYW5nZU1vZGVsPXttb2RlbCA9PiB0aGlzLm9uTW9kZWxDaGFuZ2UobW9kZWwpfVxuICAgICAgICAgICAgICBvbkNoYW5nZUNvbmZpZ3VyYXRpb249e2NvbmZpZ3VyYXRpb24gPT5cbiAgICAgICAgICAgICAgICBvbkNvbmZpZ3VyYXRpb25DaGFuZ2VkKGNvbmZpZ3VyYXRpb24sIHRydWUpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZ3JvdXBzPXt7XG4gICAgICAgICAgICAgICAgU2V0dGluZ3M6IHtcbiAgICAgICAgICAgICAgICAgIHBhcnRpYWxTY29yaW5nOlxuICAgICAgICAgICAgICAgICAgICBwYXJ0aWFsU2NvcmluZy5zZXR0aW5ncyAmJiB0b2dnbGUocGFydGlhbFNjb3JpbmcubGFiZWwpLFxuICAgICAgICAgICAgICAgICAgbG9ja0Nob2ljZU9yZGVyOlxuICAgICAgICAgICAgICAgICAgICBsb2NrQ2hvaWNlT3JkZXIuc2V0dGluZ3MgJiYgdG9nZ2xlKGxvY2tDaG9pY2VPcmRlci5sYWJlbClcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgIHRlYWNoZXJJbnN0cnVjdGlvbnNFbmFibGVkOlxuICAgICAgICAgICAgICAgICAgICB0ZWFjaGVySW5zdHJ1Y3Rpb25zLnNldHRpbmdzICYmXG4gICAgICAgICAgICAgICAgICAgIHRvZ2dsZSh0ZWFjaGVySW5zdHJ1Y3Rpb25zLmxhYmVsKSxcbiAgICAgICAgICAgICAgICAgIHJhdGlvbmFsZUVuYWJsZWQ6XG4gICAgICAgICAgICAgICAgICAgIHJhdGlvbmFsZS5zZXR0aW5ncyAmJiB0b2dnbGUocmF0aW9uYWxlLmxhYmVsKSxcbiAgICAgICAgICAgICAgICAgIGNob2ljZVJhdGlvbmFsZUVuYWJsZWQ6XG4gICAgICAgICAgICAgICAgICAgIGNob2ljZVJhdGlvbmFsZS5zZXR0aW5ncyAmJiB0b2dnbGUoY2hvaWNlUmF0aW9uYWxlLmxhYmVsKSxcbiAgICAgICAgICAgICAgICAgIHByb21wdEVuYWJsZWQ6IHByb21wdC5zZXR0aW5ncyAmJiB0b2dnbGUocHJvbXB0LmxhYmVsKSxcbiAgICAgICAgICAgICAgICAgIHNwZWxsQ2hlY2tFbmFibGVkOlxuICAgICAgICAgICAgICAgICAgc3BlbGxDaGVjay5zZXR0aW5ncyAmJiB0b2dnbGUoc3BlbGxDaGVjay5sYWJlbClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICB7dGVhY2hlckluc3RydWN0aW9uc0VuYWJsZWQgJiYgKFxuICAgICAgICAgICAgICA8SW5wdXRDb250YWluZXJcbiAgICAgICAgICAgICAgICBsYWJlbD17dGVhY2hlckluc3RydWN0aW9ucy5sYWJlbH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMucHJvbXB0SG9sZGVyfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEVkaXRhYmxlSHRtbFxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLnByb21wdH1cbiAgICAgICAgICAgICAgICAgIG1hcmt1cD17bW9kZWwudGVhY2hlckluc3RydWN0aW9ucyB8fCAnJ31cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLm9uVGVhY2hlckluc3RydWN0aW9uc0NoYW5nZWR9XG4gICAgICAgICAgICAgICAgICBpbWFnZVN1cHBvcnQ9e2ltYWdlU3VwcG9ydH1cbiAgICAgICAgICAgICAgICAgIG5vbkVtcHR5PXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgIHRvb2xiYXJPcHRzPXt0b29sYmFyT3B0c31cbiAgICAgICAgICAgICAgICAgIHNwZWxsQ2hlY2s9e3NwZWxsQ2hlY2tFbmFibGVkfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvSW5wdXRDb250YWluZXI+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7cHJvbXB0RW5hYmxlZCAmJiAoXG4gICAgICAgICAgICAgIDxJbnB1dENvbnRhaW5lclxuICAgICAgICAgICAgICAgIGxhYmVsPXtwcm9tcHQubGFiZWx9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLnByb21wdEhvbGRlcn1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxFZGl0YWJsZUh0bWxcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5wcm9tcHR9XG4gICAgICAgICAgICAgICAgICBtYXJrdXA9e21vZGVsLnByb21wdH1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLm9uUHJvbXB0Q2hhbmdlZH1cbiAgICAgICAgICAgICAgICAgIGltYWdlU3VwcG9ydD17aW1hZ2VTdXBwb3J0fVxuICAgICAgICAgICAgICAgICAgbm9uRW1wdHk9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZVVuZGVybGluZVxuICAgICAgICAgICAgICAgICAgdG9vbGJhck9wdHM9e3Rvb2xiYXJPcHRzfVxuICAgICAgICAgICAgICAgICAgc3BlbGxDaGVjaz17c3BlbGxDaGVja0VuYWJsZWR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9JbnB1dENvbnRhaW5lcj5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHtyYXRpb25hbGVFbmFibGVkICYmIChcbiAgICAgICAgICAgICAgPElucHV0Q29udGFpbmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9e3JhdGlvbmFsZS5sYWJlbH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMucHJvbXB0SG9sZGVyfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEVkaXRhYmxlSHRtbFxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLnByb21wdH1cbiAgICAgICAgICAgICAgICAgIG1hcmt1cD17bW9kZWwucmF0aW9uYWxlIHx8ICcnfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMub25SYXRpb25hbGVDaGFuZ2VkfVxuICAgICAgICAgICAgICAgICAgaW1hZ2VTdXBwb3J0PXtpbWFnZVN1cHBvcnR9XG4gICAgICAgICAgICAgICAgICB0b29sYmFyT3B0cz17dG9vbGJhck9wdHN9XG4gICAgICAgICAgICAgICAgICBzcGVsbENoZWNrPXtzcGVsbENoZWNrRW5hYmxlZH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0lucHV0Q29udGFpbmVyPlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgPFR5cG9ncmFwaHkgY2xhc3NOYW1lPXtjbGFzc2VzLnRleHR9PlxuICAgICAgICAgICAgICBEZWZpbmUgVGVtcGxhdGUsIENob2ljZXMsIGFuZCBDb3JyZWN0IFJlc3BvbnNlc1xuICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgPEluZm9EaWFsb2dcbiAgICAgICAgICAgICAgb3Blbj17ZGlhbG9nLm9wZW59XG4gICAgICAgICAgICAgIHRpdGxlPXtkaWFsb2cubWVzc2FnZX1cbiAgICAgICAgICAgICAgb25DYW5jZWw9e2RpYWxvZy5vbkNhbmNlbH1cbiAgICAgICAgICAgICAgb25Paz17ZGlhbG9nLm9uT2t9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPEVkaXRhYmxlSHRtbFxuICAgICAgICAgICAgICBhY3RpdmVQbHVnaW5zPXtBTExfUExVR0lOU31cbiAgICAgICAgICAgICAgdG9vbGJhck9wdHM9e3sgcG9zaXRpb246ICd0b3AnIH19XG4gICAgICAgICAgICAgIHJlc3BvbnNlQXJlYVByb3BzPXt7XG4gICAgICAgICAgICAgICAgdHlwZTogJ2lubGluZS1kcm9wZG93bicsXG4gICAgICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgZHVwbGljYXRlczogdHJ1ZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcmVzcEFyZWFUb29sYmFyOiAobm9kZSwgdmFsdWUsIG9uVG9vbGJhckRvbmUpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcmVzcEFyZWFDaG9pY2VzIH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm4gKCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICA8SW5saW5lRHJvcGRvd25Ub29sYmFyXG4gICAgICAgICAgICAgICAgICAgICAgb25BZGRDaG9pY2U9e3RoaXMub25BZGRDaG9pY2V9XG4gICAgICAgICAgICAgICAgICAgICAgb25DaGVjaz17dGhpcy5vbkNoZWNrfVxuICAgICAgICAgICAgICAgICAgICAgIG9uUmVtb3ZlQ2hvaWNlPXtpbmRleCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblJlbW92ZUNob2ljZShub2RlLmRhdGEuZ2V0KCdpbmRleCcpLCBpbmRleClcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3RDaG9pY2U9e2luZGV4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uU2VsZWN0Q2hvaWNlKG5vZGUuZGF0YS5nZXQoJ2luZGV4JyksIGluZGV4KVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBub2RlPXtub2RlfVxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICBvblRvb2xiYXJEb25lPXtvblRvb2xiYXJEb25lfVxuICAgICAgICAgICAgICAgICAgICAgIGNob2ljZXM9e3Jlc3BBcmVhQ2hvaWNlc1tub2RlLmRhdGEuZ2V0KCdpbmRleCcpXX1cbiAgICAgICAgICAgICAgICAgICAgICBzcGVsbENoZWNrPXtzcGVsbENoZWNrRW5hYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBzcGVsbENoZWNrPXtzcGVsbENoZWNrRW5hYmxlZH1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLm1hcmt1cH1cbiAgICAgICAgICAgICAgbWFya3VwPXttb2RlbC5zbGF0ZU1hcmt1cCB8fCAnJ31cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMub25DaGFuZ2V9XG4gICAgICAgICAgICAgIGltYWdlU3VwcG9ydD17aW1hZ2VTdXBwb3J0fVxuICAgICAgICAgICAgICBvbkJsdXI9e3RoaXMub25CbHVyfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIGhpZ2hsaWdodFNoYXBlPXtmYWxzZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgIHtjaG9pY2VSYXRpb25hbGVFbmFibGVkICYmIHJlbmRlckNob2ljZVJhdGlvbmFsZSgpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2xheW91dC5Db25maWdMYXlvdXQ+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG59XG5cbmNvbnN0IFN0eWxlZCA9IHdpdGhTdHlsZXMoc3R5bGVzKShNYWluKTtcblxuZXhwb3J0IGRlZmF1bHQgU3R5bGVkO1xuIl19
|
|
665
|
+
//# sourceMappingURL=main.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/main.jsx"],"names":["toggle","settings","Panel","InfoDialog","open","onCancel","onOk","title","propTypes","PropTypes","bool","func","string","styles","theme","promptHolder","width","paddingBottom","spacing","unit","marginBottom","prompt","paddingTop","markup","minHeight","design","choiceConfiguration","switchElement","justifyContent","margin","addButton","text","fontFamily","fontSize","lineHeight","color","rationaleLabel","display","whiteSpace","rationaleChoices","marginTop","panelDetails","createElementFromHTML","htmlString","div","document","createElement","innerHTML","trim","prepareVal","html","tmp","value","textContent","innerText","Main","dialog","newVal","props","onModelChanged","model","onModelChange","rationale","index","choice","indexOfChoice","choices","findIndex","elem","label","splice","teacherInstructions","slateMarkup","callback","setState","message","respAreaChoices","state","domMarkup","allRespAreas","querySelectorAll","allChoices","forEach","el","dataset","existingRespAreaChoices","obj","key","newRespAreaChoices","shouldWarn","newChoices","length","find","c","correct","remove","r","map","parseInt","filter","val","isNaN","push","respIndex","selectedIndex","ch","nProps","newState","domNode","ReactDOM","findDOMNode","classes","configuration","onConfigurationChanged","imageSupport","partialScoring","lockChoiceOrder","choiceRationale","spellCheck","rationaleEnabled","choiceRationaleEnabled","promptEnabled","teacherInstructionsEnabled","spellCheckEnabled","renderChoiceRationale","Object","keys","__html","onChoiceRationaleChanged","toolbarOpts","toolbarEditorPosition","position","Settings","Properties","onTeacherInstructionsChanged","onPromptChanged","onRationaleChanged","ALL_PLUGINS","type","options","duplicates","respAreaToolbar","node","onToolbarDone","onAddChoice","onCheck","onRemoveChoice","data","get","onSelectChoice","onChange","onBlur","React","Component","object","isRequired","disableSidePanel","shape","add","Styled"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport EditableHtml, { ALL_PLUGINS } from '@pie-lib/editable-html';\nimport { InputContainer, layout, settings } from '@pie-lib/config-ui';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport cloneDeep from 'lodash/cloneDeep';\nimport isEqual from 'lodash/isEqual';\nimport isUndefined from 'lodash/isUndefined';\nimport isEmpty from 'lodash/isEmpty';\nimport reduce from 'lodash/reduce';\nimport { withStyles } from '@material-ui/core/styles';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport Typography from '@material-ui/core/Typography';\nimport ExpansionPanel from '@material-ui/core/ExpansionPanel';\nimport ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';\nimport ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport InlineDropdownToolbar from './inline-dropdown-toolbar';\nimport max from 'lodash/max';\n\nconst { toggle, Panel } = settings;\n\nconst InfoDialog = ({ open, onCancel, onOk, title }) => (\n <Dialog open={open}>\n <DialogTitle>{title}</DialogTitle>\n <DialogActions>\n {onOk && (\n <Button onClick={onOk} color=\"primary\">\n OK\n </Button>\n )}\n {onCancel && (\n <Button onClick={onCancel} color=\"primary\">\n Cancel\n </Button>\n )}\n </DialogActions>\n </Dialog>\n);\n\nInfoDialog.propTypes = {\n open: PropTypes.bool,\n onCancel: PropTypes.func,\n onOk: PropTypes.func,\n title: PropTypes.string\n};\n\nconst styles = theme => ({\n promptHolder: {\n width: '100%',\n paddingBottom: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2\n },\n prompt: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%'\n },\n markup: {\n minHeight: '100px',\n paddingTop: theme.spacing.unit * 2,\n width: '100%',\n '& [data-slate-editor=\"true\"]': {\n minHeight: '100px'\n }\n },\n design: {\n paddingTop: theme.spacing.unit * 3\n },\n choiceConfiguration: {\n paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 2\n },\n switchElement: {\n justifyContent: 'space-between',\n margin: 0\n },\n addButton: {\n float: 'right'\n },\n text: {\n fontFamily: 'Cerebri Sans',\n fontSize: '16px',\n lineHeight: '19px',\n color: '#495B8F'\n },\n rationaleLabel: {\n display: 'flex',\n whiteSpace: 'break-spaces'\n },\n rationaleChoices: {\n marginTop: '16px'\n },\n panelDetails: {\n display: 'block'\n }\n});\n\nconst createElementFromHTML = htmlString => {\n const div = document.createElement('div');\n\n div.innerHTML = (htmlString || '').trim();\n\n return div;\n};\n\nconst prepareVal = html => {\n const tmp = document.createElement('DIV');\n\n tmp.innerHTML = html;\n\n const value = tmp.textContent || tmp.innerText || '';\n\n return value.trim();\n};\n\nexport class Main extends React.Component {\n static propTypes = {\n configuration: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n disableSidePanel: PropTypes.bool,\n onModelChanged: PropTypes.func.isRequired,\n onConfigurationChanged: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired\n })\n };\n\n state = {\n dialog: {\n open: false\n }\n };\n\n componentDidMount() {\n const {\n model: { choices }\n } = this.props;\n\n this.setState({ respAreaChoices: cloneDeep(choices) });\n }\n\n UNSAFE_componentWillReceiveProps(nProps) {\n const newState = {};\n\n if (\n !isEqual(nProps.model.choices, this.props.model.choices) ||\n !isEqual(nProps.model.choices, this.state.respAreaChoices)\n ) {\n newState.respAreaChoices = cloneDeep(nProps.model.choices);\n }\n\n if (!isEmpty(newState)) {\n this.setState(newState);\n }\n }\n\n componentDidUpdate() {\n //eslint-disable-next-line\n const domNode = ReactDOM.findDOMNode(this);\n\n renderMath(domNode);\n }\n\n onModelChange = newVal => {\n this.props.onModelChanged({\n ...this.props.model,\n ...newVal\n });\n };\n\n onPromptChanged = prompt => {\n this.onModelChange({ prompt });\n };\n\n onRationaleChanged = rationale => {\n this.onModelChange({ rationale });\n };\n\n onChoiceRationaleChanged = (index, choice) => {\n const { model } = this.props;\n const indexOfChoice = model.choices && model.choices[index] && model.choices[index]\n .findIndex(elem => elem.label === choice.label && elem.value === choice.value);\n\n model.choices[index] && model.choices[index].splice(indexOfChoice, 1, choice);\n\n this.onModelChange(model);\n };\n\n onTeacherInstructionsChanged = teacherInstructions => {\n this.onModelChange({ teacherInstructions });\n };\n\n onMarkupChanged = slateMarkup => {\n this.onModelChange({ slateMarkup });\n };\n\n onCheck = callback => {\n this.setState({\n dialog: {\n open: true,\n message:\n 'Response areas with under 2 options or with no correct answers will be discarded',\n onOk: () => {\n this.setState(\n {\n dialog: {\n open: false\n }\n },\n callback\n );\n },\n onCancel: () =>\n this.setState({\n dialog: {\n open: false\n }\n })\n }\n });\n };\n\n onChange = markup => {\n const { respAreaChoices } = this.state;\n const domMarkup = createElementFromHTML(markup);\n const allRespAreas = domMarkup.querySelectorAll(\n '[data-type=\"inline_dropdown\"]'\n );\n\n const allChoices = {};\n\n allRespAreas.forEach(el => {\n allChoices[el.dataset.index] = el.dataset.value || '';\n });\n\n const existingRespAreaChoices = reduce(\n respAreaChoices,\n (obj, choices, key) => {\n if (!isUndefined(allChoices[key])) {\n obj[key] = respAreaChoices[key];\n }\n\n return obj;\n },\n {}\n );\n\n const newRespAreaChoices = {};\n let shouldWarn = false;\n\n allRespAreas.forEach((el, index) => {\n const newChoices = existingRespAreaChoices[el.dataset.index] || [];\n\n if (newChoices.length < 2 || !newChoices.find(c => c.correct)) {\n el.remove();\n shouldWarn = true;\n } else {\n newRespAreaChoices[index] =\n existingRespAreaChoices[el.dataset.index] || [];\n el.dataset.index = index;\n }\n });\n\n if (shouldWarn) {\n this.setState({\n dialog: {\n open: true,\n message:\n 'Response areas with under 2 options or with no correct answers will be discarded',\n onOk: () => {\n this.setState(\n {\n dialog: {\n open: false\n }\n },\n () =>\n this.onModelChange({\n choices: cloneDeep(newRespAreaChoices),\n slateMarkup: domMarkup.innerHTML\n })\n );\n },\n onCancel: () =>\n this.setState({\n dialog: {\n open: false\n }\n })\n }\n });\n } else {\n this.onModelChange({\n choices: cloneDeep(newRespAreaChoices),\n slateMarkup: domMarkup.innerHTML\n });\n }\n };\n\n onAddChoice = (index, label) => {\n const { respAreaChoices } = this.state;\n\n if (!respAreaChoices[index]) {\n respAreaChoices[index] = [];\n }\n\n if (\n (respAreaChoices[index] || []).find(\n r => prepareVal(r.label) === prepareVal(label)\n )\n ) {\n this.setState({\n dialog: {\n open: true,\n message: 'Duplicate answers are not allowed.',\n onOk: () => {\n this.setState({\n dialog: {\n open: false\n }\n });\n }\n }\n });\n\n return;\n }\n\n const value = (respAreaChoices[index] && max(respAreaChoices[index].map(c => parseInt(c.value)).filter(val => !isNaN(val)))) || 0;\n\n respAreaChoices[index].push({\n label,\n value: `${value + 1}`,\n correct: false\n });\n\n this.onModelChange({ choices: cloneDeep(respAreaChoices) });\n };\n\n onRemoveChoice = (respIndex, index) => {\n const { respAreaChoices } = this.state;\n\n respAreaChoices[respIndex].splice(index, 1);\n\n this.onModelChange({ choices: cloneDeep(respAreaChoices) });\n };\n\n onSelectChoice = (respIndex, selectedIndex) => {\n const { respAreaChoices } = this.state;\n\n respAreaChoices[respIndex] = respAreaChoices[respIndex].map(\n (ch, index) => ({ ...ch, correct: index === selectedIndex })\n );\n\n this.onModelChange({ choices: cloneDeep(respAreaChoices) });\n };\n\n render() {\n const { dialog } = this.state;\n const {\n classes,\n model,\n configuration,\n onConfigurationChanged,\n imageSupport\n } = this.props;\n const {\n prompt = {},\n partialScoring = {},\n lockChoiceOrder = {},\n rationale = {},\n choiceRationale = {},\n teacherInstructions = {},\n spellCheck = {},\n } = configuration || {};\n const {\n rationaleEnabled,\n choiceRationaleEnabled,\n promptEnabled,\n teacherInstructionsEnabled,\n choices,\n spellCheckEnabled\n } =\n model || {};\n\n const renderChoiceRationale = () => (Object.keys(choices) || []).map(key =>\n <div key={key} className={classes.rationaleChoices}>\n <ExpansionPanel>\n <ExpansionPanelSummary expandIcon={<ExpandMoreIcon/>}>\n <Typography className={classes.text}>\n {`Rationale for response area #${parseInt(key) + 1}`}\n </Typography>\n </ExpansionPanelSummary>\n <ExpansionPanelDetails className={classes.panelDetails}>\n {(choices[key] || []).map(choice =>\n <InputContainer\n key={choice.label}\n label={\n <span\n className={classes.rationaleLabel}\n dangerouslySetInnerHTML={{\n __html:\n `${rationale.label} for ${choice.label} (${choice.correct ? 'correct' : 'incorrect'})`\n }}\n />\n }\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={choice.rationale || ''}\n spellCheck={spellCheckEnabled}\n onChange={c =>\n this.onChoiceRationaleChanged(key, {\n ...choice,\n rationale: c\n })\n }\n imageSupport={imageSupport}\n />\n </InputContainer>\n )}\n </ExpansionPanelDetails>\n </ExpansionPanel>\n </div>\n )\n\n const toolbarOpts = {};\n\n switch (model.toolbarEditorPosition) {\n case 'top':\n toolbarOpts.position = 'top';\n break;\n default:\n toolbarOpts.position = 'bottom';\n break;\n }\n\n return (\n <div className={classes.design}>\n <layout.ConfigLayout\n settings={\n <Panel\n model={model}\n configuration={configuration}\n onChangeModel={model => this.onModelChange(model)}\n onChangeConfiguration={configuration =>\n onConfigurationChanged(configuration, true)\n }\n groups={{\n Settings: {\n partialScoring:\n partialScoring.settings && toggle(partialScoring.label),\n lockChoiceOrder:\n lockChoiceOrder.settings && toggle(lockChoiceOrder.label)\n },\n Properties: {\n teacherInstructionsEnabled:\n teacherInstructions.settings &&\n toggle(teacherInstructions.label),\n rationaleEnabled:\n rationale.settings && toggle(rationale.label),\n choiceRationaleEnabled:\n choiceRationale.settings && toggle(choiceRationale.label),\n promptEnabled: prompt.settings && toggle(prompt.label),\n spellCheckEnabled:\n spellCheck.settings && toggle(spellCheck.label)\n }\n }}\n />\n }\n >\n <div>\n {teacherInstructionsEnabled && (\n <InputContainer\n label={teacherInstructions.label}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.teacherInstructions || ''}\n onChange={this.onTeacherInstructionsChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n />\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer\n label={prompt.label}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt}\n onChange={this.onPromptChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n disableUnderline\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n />\n </InputContainer>\n )}\n\n {rationaleEnabled && (\n <InputContainer\n label={rationale.label}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.rationale || ''}\n onChange={this.onRationaleChanged}\n imageSupport={imageSupport}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n />\n </InputContainer>\n )}\n\n <Typography className={classes.text}>\n Define Template, Choices, and Correct Responses\n </Typography>\n <InfoDialog\n open={dialog.open}\n title={dialog.message}\n onCancel={dialog.onCancel}\n onOk={dialog.onOk}\n />\n <EditableHtml\n activePlugins={ALL_PLUGINS}\n toolbarOpts={{ position: 'top' }}\n responseAreaProps={{\n type: 'inline-dropdown',\n options: {\n duplicates: true\n },\n respAreaToolbar: (node, value, onToolbarDone) => {\n const { respAreaChoices } = this.state;\n\n return () => (\n <InlineDropdownToolbar\n onAddChoice={this.onAddChoice}\n onCheck={this.onCheck}\n onRemoveChoice={index =>\n this.onRemoveChoice(node.data.get('index'), index)\n }\n onSelectChoice={index =>\n this.onSelectChoice(node.data.get('index'), index)\n }\n node={node}\n value={value}\n onToolbarDone={onToolbarDone}\n choices={respAreaChoices[node.data.get('index')]}\n spellCheck={spellCheckEnabled}\n />\n );\n }\n }}\n spellCheck={spellCheckEnabled}\n className={classes.markup}\n markup={model.slateMarkup || ''}\n onChange={this.onChange}\n imageSupport={imageSupport}\n onBlur={this.onBlur}\n disabled={false}\n highlightShape={false}\n />\n <br />\n {choiceRationaleEnabled && renderChoiceRationale()}\n </div>\n </layout.ConfigLayout>\n </div>\n );\n }\n}\n\nconst Styled = withStyles(styles)(Main);\n\nexport default Styled;\n"],"file":"main.js"}
|
|
1
|
+
{"version":3,"sources":["../src/main.jsx"],"names":["toggle","settings","Panel","InfoDialog","open","onCancel","onOk","title","propTypes","PropTypes","bool","func","string","styles","theme","promptHolder","width","paddingBottom","spacing","unit","marginBottom","prompt","paddingTop","markup","minHeight","design","choiceConfiguration","switchElement","justifyContent","margin","addButton","text","fontFamily","fontSize","lineHeight","color","marginRight","rationaleLabel","display","whiteSpace","rationaleChoices","marginTop","panelDetails","flexContainer","alignItems","tooltip","maxWidth","errorText","createElementFromHTML","htmlString","div","document","createElement","innerHTML","trim","prepareVal","html","tmp","value","textContent","innerText","Main","dialog","newVal","props","onModelChanged","model","onModelChange","rationale","index","choice","indexOfChoice","choices","findIndex","elem","label","splice","teacherInstructions","slateMarkup","callback","setState","message","respAreaChoices","state","domMarkup","allRespAreas","querySelectorAll","allChoices","forEach","el","dataset","existingRespAreaChoices","obj","key","newRespAreaChoices","shouldWarn","newChoices","length","find","c","correct","remove","r","map","parseInt","filter","val","isNaN","push","respIndex","selectedIndex","ch","nProps","newState","domNode","ReactDOM","findDOMNode","classes","configuration","onConfigurationChanged","imageSupport","partialScoring","lockChoiceOrder","choiceRationale","spellCheck","maxResponseAreas","rationaleEnabled","choiceRationaleEnabled","promptEnabled","teacherInstructionsEnabled","spellCheckEnabled","errors","responseAreasError","renderChoiceRationale","Object","keys","__html","onChoiceRationaleChanged","toolbarOpts","toolbarEditorPosition","position","validationMessage","Settings","Properties","onTeacherInstructionsChanged","onPromptChanged","onRationaleChanged","ALL_PLUGINS","type","options","duplicates","respAreaToolbar","node","onToolbarDone","onAddChoice","onCheck","onRemoveChoice","data","get","onSelectChoice","onChange","onBlur","React","Component","object","isRequired","disableSidePanel","shape","add","Styled"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport EditableHtml, { ALL_PLUGINS } from '@pie-lib/editable-html';\nimport { InputContainer, layout, settings } from '@pie-lib/config-ui';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport cloneDeep from 'lodash/cloneDeep';\nimport isEqual from 'lodash/isEqual';\nimport isUndefined from 'lodash/isUndefined';\nimport isEmpty from 'lodash/isEmpty';\nimport reduce from 'lodash/reduce';\nimport max from 'lodash/max';\nimport { withStyles } from '@material-ui/core/styles';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport Typography from '@material-ui/core/Typography';\nimport ExpansionPanel from '@material-ui/core/ExpansionPanel';\nimport ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';\nimport ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport Info from '@material-ui/icons/Info';\nimport InlineDropdownToolbar from './inline-dropdown-toolbar';\nimport { generateValidationMessage } from './utils';\n\nconst { toggle, Panel } = settings;\n\nconst InfoDialog = ({ open, onCancel, onOk, title }) => (\n <Dialog open={open}>\n <DialogTitle>{title}</DialogTitle>\n <DialogActions>\n {onOk && (\n <Button onClick={onOk} color=\"primary\">\n OK\n </Button>\n )}\n {onCancel && (\n <Button onClick={onCancel} color=\"primary\">\n Cancel\n </Button>\n )}\n </DialogActions>\n </Dialog>\n);\n\nInfoDialog.propTypes = {\n open: PropTypes.bool,\n onCancel: PropTypes.func,\n onOk: PropTypes.func,\n title: PropTypes.string\n};\n\nconst styles = theme => ({\n promptHolder: {\n width: '100%',\n paddingBottom: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2\n },\n prompt: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%'\n },\n markup: {\n minHeight: '100px',\n paddingTop: theme.spacing.unit * 2,\n width: '100%',\n '& [data-slate-editor=\"true\"]': {\n minHeight: '100px'\n }\n },\n design: {\n paddingTop: theme.spacing.unit * 3\n },\n choiceConfiguration: {\n paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 2\n },\n switchElement: {\n justifyContent: 'space-between',\n margin: 0\n },\n addButton: {\n float: 'right'\n },\n text: {\n fontFamily: 'Cerebri Sans',\n fontSize: '16px',\n lineHeight: '19px',\n color: '#495B8F',\n marginRight: '5px'\n },\n rationaleLabel: {\n display: 'flex',\n whiteSpace: 'break-spaces'\n },\n rationaleChoices: {\n marginTop: '16px'\n },\n panelDetails: {\n display: 'block'\n },\n flexContainer: {\n display: 'flex',\n alignItems: 'center',\n marginBottom: '5px'\n },\n tooltip: {\n fontSize: '12px',\n whiteSpace: 'pre',\n maxWidth: '500px'\n },\n errorText: {\n fontSize: '12px',\n color: 'red',\n paddingTop: '5px',\n marginTop: '8px'\n }\n});\n\nconst createElementFromHTML = htmlString => {\n const div = document.createElement('div');\n\n div.innerHTML = (htmlString || '').trim();\n\n return div;\n};\n\nconst prepareVal = html => {\n const tmp = document.createElement('DIV');\n\n tmp.innerHTML = html;\n\n const value = tmp.textContent || tmp.innerText || '';\n\n return value.trim();\n};\n\nexport class Main extends React.Component {\n static propTypes = {\n configuration: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n disableSidePanel: PropTypes.bool,\n onModelChanged: PropTypes.func.isRequired,\n onConfigurationChanged: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired\n })\n };\n\n state = {\n dialog: {\n open: false\n }\n };\n\n componentDidMount() {\n const {\n model: { choices }\n } = this.props;\n\n this.setState({ respAreaChoices: cloneDeep(choices) });\n }\n\n UNSAFE_componentWillReceiveProps(nProps) {\n const newState = {};\n\n if (\n !isEqual(nProps.model.choices, this.props.model.choices) ||\n !isEqual(nProps.model.choices, this.state.respAreaChoices)\n ) {\n newState.respAreaChoices = cloneDeep(nProps.model.choices);\n }\n\n if (!isEmpty(newState)) {\n this.setState(newState);\n }\n }\n\n componentDidUpdate() {\n //eslint-disable-next-line\n const domNode = ReactDOM.findDOMNode(this);\n\n renderMath(domNode);\n }\n\n onModelChange = newVal => {\n this.props.onModelChanged({\n ...this.props.model,\n ...newVal\n });\n };\n\n onPromptChanged = prompt => {\n this.onModelChange({ prompt });\n };\n\n onRationaleChanged = rationale => {\n this.onModelChange({ rationale });\n };\n\n onChoiceRationaleChanged = (index, choice) => {\n const { model } = this.props;\n const indexOfChoice = model.choices && model.choices[index] && model.choices[index]\n .findIndex(elem => elem.label === choice.label && elem.value === choice.value);\n\n model.choices[index] && model.choices[index].splice(indexOfChoice, 1, choice);\n\n this.onModelChange(model);\n };\n\n onTeacherInstructionsChanged = teacherInstructions => {\n this.onModelChange({ teacherInstructions });\n };\n\n onMarkupChanged = slateMarkup => {\n this.onModelChange({ slateMarkup });\n };\n\n onCheck = callback => {\n this.setState({\n dialog: {\n open: true,\n message:\n 'Response areas with under 2 options or with no correct answers will be discarded',\n onOk: () => {\n this.setState(\n {\n dialog: {\n open: false\n }\n },\n callback\n );\n },\n onCancel: () =>\n this.setState({\n dialog: {\n open: false\n }\n })\n }\n });\n };\n\n onChange = markup => {\n const { respAreaChoices } = this.state;\n const domMarkup = createElementFromHTML(markup);\n const allRespAreas = domMarkup.querySelectorAll(\n '[data-type=\"inline_dropdown\"]'\n );\n\n const allChoices = {};\n\n allRespAreas.forEach(el => {\n allChoices[el.dataset.index] = el.dataset.value || '';\n });\n\n const existingRespAreaChoices = reduce(\n respAreaChoices,\n (obj, choices, key) => {\n if (!isUndefined(allChoices[key])) {\n obj[key] = respAreaChoices[key];\n }\n\n return obj;\n },\n {}\n );\n\n const newRespAreaChoices = {};\n let shouldWarn = false;\n\n allRespAreas.forEach((el, index) => {\n const newChoices = existingRespAreaChoices[el.dataset.index] || [];\n\n if (newChoices.length < 2 || !newChoices.find(c => c.correct)) {\n el.remove();\n shouldWarn = true;\n } else {\n newRespAreaChoices[index] =\n existingRespAreaChoices[el.dataset.index] || [];\n el.dataset.index = index;\n }\n });\n\n if (shouldWarn) {\n this.setState({\n dialog: {\n open: true,\n message:\n 'Response areas with under 2 options or with no correct answers will be discarded',\n onOk: () => {\n this.setState(\n {\n dialog: {\n open: false\n }\n },\n () =>\n this.onModelChange({\n choices: cloneDeep(newRespAreaChoices),\n slateMarkup: domMarkup.innerHTML\n })\n );\n },\n onCancel: () =>\n this.setState({\n dialog: {\n open: false\n }\n })\n }\n });\n } else {\n this.onModelChange({\n choices: cloneDeep(newRespAreaChoices),\n slateMarkup: domMarkup.innerHTML\n });\n }\n };\n\n onAddChoice = (index, label) => {\n const { respAreaChoices } = this.state;\n\n if (!respAreaChoices[index]) {\n respAreaChoices[index] = [];\n }\n\n if (\n (respAreaChoices[index] || []).find(\n r => prepareVal(r.label) === prepareVal(label)\n )\n ) {\n this.setState({\n dialog: {\n open: true,\n message: 'Duplicate answers are not allowed.',\n onOk: () => {\n this.setState({\n dialog: {\n open: false\n }\n });\n }\n }\n });\n\n return;\n }\n\n const value = (respAreaChoices[index] && max(respAreaChoices[index].map(c => parseInt(c.value)).filter(val => !isNaN(val)))) || 0;\n\n respAreaChoices[index].push({\n label,\n value: `${value + 1}`,\n correct: false\n });\n\n this.onModelChange({ choices: cloneDeep(respAreaChoices) });\n };\n\n onRemoveChoice = (respIndex, index) => {\n const { respAreaChoices } = this.state;\n\n respAreaChoices[respIndex].splice(index, 1);\n\n this.onModelChange({ choices: cloneDeep(respAreaChoices) });\n };\n\n onSelectChoice = (respIndex, selectedIndex) => {\n const { respAreaChoices } = this.state;\n\n respAreaChoices[respIndex] = respAreaChoices[respIndex].map(\n (ch, index) => ({ ...ch, correct: index === selectedIndex })\n );\n\n this.onModelChange({ choices: cloneDeep(respAreaChoices) });\n };\n\n render() {\n const { dialog } = this.state;\n const {\n classes,\n model,\n configuration,\n onConfigurationChanged,\n imageSupport\n } = this.props;\n const {\n prompt = {},\n partialScoring = {},\n lockChoiceOrder = {},\n rationale = {},\n choiceRationale = {},\n teacherInstructions = {},\n spellCheck = {},\n maxResponseAreas\n } = configuration || {};\n const {\n rationaleEnabled,\n choiceRationaleEnabled,\n promptEnabled,\n teacherInstructionsEnabled,\n choices,\n spellCheckEnabled,\n errors\n } = model || {};\n const { responseAreasError } = errors || {};\n\n const renderChoiceRationale = () => (Object.keys(choices) || []).map(key =>\n <div key={key} className={classes.rationaleChoices}>\n <ExpansionPanel>\n <ExpansionPanelSummary expandIcon={<ExpandMoreIcon/>}>\n <Typography className={classes.text}>\n {`Rationale for response area #${parseInt(key) + 1}`}\n </Typography>\n </ExpansionPanelSummary>\n <ExpansionPanelDetails className={classes.panelDetails}>\n {(choices[key] || []).map(choice =>\n <InputContainer\n key={choice.label}\n label={\n <span\n className={classes.rationaleLabel}\n dangerouslySetInnerHTML={{\n __html:\n `${rationale.label} for ${choice.label} (${choice.correct ? 'correct' : 'incorrect'})`\n }}\n />\n }\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={choice.rationale || ''}\n spellCheck={spellCheckEnabled}\n onChange={c =>\n this.onChoiceRationaleChanged(key, {\n ...choice,\n rationale: c\n })\n }\n imageSupport={imageSupport}\n />\n </InputContainer>\n )}\n </ExpansionPanelDetails>\n </ExpansionPanel>\n </div>\n )\n\n const toolbarOpts = {};\n\n switch (model.toolbarEditorPosition) {\n case 'top':\n toolbarOpts.position = 'top';\n break;\n default:\n toolbarOpts.position = 'bottom';\n break;\n }\n\n const validationMessage = generateValidationMessage(configuration);\n\n return (\n <div className={classes.design}>\n <layout.ConfigLayout\n settings={\n <Panel\n model={model}\n configuration={configuration}\n onChangeModel={model => this.onModelChange(model)}\n onChangeConfiguration={configuration =>\n onConfigurationChanged(configuration, true)\n }\n groups={{\n Settings: {\n partialScoring:\n partialScoring.settings && toggle(partialScoring.label),\n lockChoiceOrder:\n lockChoiceOrder.settings && toggle(lockChoiceOrder.label)\n },\n Properties: {\n teacherInstructionsEnabled:\n teacherInstructions.settings &&\n toggle(teacherInstructions.label),\n rationaleEnabled:\n rationale.settings && toggle(rationale.label),\n choiceRationaleEnabled:\n choiceRationale.settings && toggle(choiceRationale.label),\n promptEnabled: prompt.settings && toggle(prompt.label),\n spellCheckEnabled:\n spellCheck.settings && toggle(spellCheck.label)\n }\n }}\n />\n }\n >\n <div>\n {teacherInstructionsEnabled && (\n <InputContainer\n label={teacherInstructions.label}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.teacherInstructions || ''}\n onChange={this.onTeacherInstructionsChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n />\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer\n label={prompt.label}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt}\n onChange={this.onPromptChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n disableUnderline\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n />\n </InputContainer>\n )}\n\n {rationaleEnabled && (\n <InputContainer\n label={rationale.label}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.rationale || ''}\n onChange={this.onRationaleChanged}\n imageSupport={imageSupport}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n />\n </InputContainer>\n )}\n\n <div className={classes.flexContainer}>\n <Typography className={classes.text}>\n Define Template, Choices, and Correct Responses\n </Typography>\n <Tooltip\n classes={{ tooltip: classes.tooltip }}\n disableFocusListener\n disableTouchListener\n placement={'right'}\n title={validationMessage}\n >\n <Info fontSize={'small'} color={'primary'}/>\n </Tooltip>\n </div>\n {responseAreasError && <div className={classes.errorText}>{responseAreasError}</div>}\n\n <InfoDialog\n open={dialog.open}\n title={dialog.message}\n onCancel={dialog.onCancel}\n onOk={dialog.onOk}\n />\n <EditableHtml\n activePlugins={ALL_PLUGINS}\n toolbarOpts={{ position: 'top' }}\n responseAreaProps={{\n type: 'inline-dropdown',\n options: {\n duplicates: true\n },\n maxResponseAreas: maxResponseAreas,\n respAreaToolbar: (node, value, onToolbarDone) => {\n const { respAreaChoices } = this.state;\n\n return () => (\n <InlineDropdownToolbar\n onAddChoice={this.onAddChoice}\n onCheck={this.onCheck}\n onRemoveChoice={index =>\n this.onRemoveChoice(node.data.get('index'), index)\n }\n onSelectChoice={index =>\n this.onSelectChoice(node.data.get('index'), index)\n }\n node={node}\n value={value}\n onToolbarDone={onToolbarDone}\n choices={respAreaChoices[node.data.get('index')]}\n spellCheck={spellCheckEnabled}\n />\n );\n }\n }}\n spellCheck={spellCheckEnabled}\n className={classes.markup}\n markup={model.slateMarkup || ''}\n onChange={this.onChange}\n imageSupport={imageSupport}\n onBlur={this.onBlur}\n disabled={false}\n highlightShape={false}\n error={responseAreasError}\n />\n <br />\n {choiceRationaleEnabled && renderChoiceRationale()}\n </div>\n </layout.ConfigLayout>\n </div>\n );\n }\n}\n\nconst Styled = withStyles(styles)(Main);\n\nexport default Styled;\n"],"file":"main.js"}
|