@pie-element/categorize 11.3.4-next.3 → 12.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/CHANGELOG.md +0 -11
  2. package/configure/CHANGELOG.md +0 -11
  3. package/configure/lib/__tests__/main.test.js +100 -0
  4. package/configure/lib/__tests__/utils.js +39 -0
  5. package/configure/lib/defaults.js +3 -6
  6. package/configure/lib/defaults.js.map +1 -1
  7. package/configure/lib/design/__tests__/builder.test.js +34 -0
  8. package/configure/lib/design/__tests__/buttons.test.js +36 -0
  9. package/configure/lib/design/__tests__/header.test.js +37 -0
  10. package/configure/lib/design/__tests__/index.test.js +125 -0
  11. package/configure/lib/design/__tests__/input-header.test.js +41 -0
  12. package/configure/lib/design/builder.js +16 -34
  13. package/configure/lib/design/builder.js.map +1 -1
  14. package/configure/lib/design/buttons.js +42 -96
  15. package/configure/lib/design/buttons.js.map +1 -1
  16. package/configure/lib/design/categories/RowLabel.js +34 -47
  17. package/configure/lib/design/categories/RowLabel.js.map +1 -1
  18. package/configure/lib/design/categories/__tests__/alternateResponses.test.js +93 -0
  19. package/configure/lib/design/categories/__tests__/category.test.js +65 -0
  20. package/configure/lib/design/categories/__tests__/choice-preview.test.js +52 -0
  21. package/configure/lib/design/categories/__tests__/droppable-placeholder.test.js +63 -0
  22. package/configure/lib/design/categories/__tests__/index.test.js +91 -0
  23. package/configure/lib/design/categories/alternateResponses.js +97 -252
  24. package/configure/lib/design/categories/alternateResponses.js.map +1 -1
  25. package/configure/lib/design/categories/category.js +136 -209
  26. package/configure/lib/design/categories/category.js.map +1 -1
  27. package/configure/lib/design/categories/choice-preview.js +62 -127
  28. package/configure/lib/design/categories/choice-preview.js.map +1 -1
  29. package/configure/lib/design/categories/droppable-placeholder.js +74 -166
  30. package/configure/lib/design/categories/droppable-placeholder.js.map +1 -1
  31. package/configure/lib/design/categories/index.js +196 -385
  32. package/configure/lib/design/categories/index.js.map +1 -1
  33. package/configure/lib/design/choices/__tests__/choice.test.js +62 -0
  34. package/configure/lib/design/choices/__tests__/config.test.js +66 -0
  35. package/configure/lib/design/choices/__tests__/index.test.js +70 -0
  36. package/configure/lib/design/choices/choice.js +156 -265
  37. package/configure/lib/design/choices/choice.js.map +1 -1
  38. package/configure/lib/design/choices/config.js +43 -99
  39. package/configure/lib/design/choices/config.js.map +1 -1
  40. package/configure/lib/design/choices/index.js +149 -237
  41. package/configure/lib/design/choices/index.js.map +1 -1
  42. package/configure/lib/design/header.js +58 -112
  43. package/configure/lib/design/header.js.map +1 -1
  44. package/configure/lib/design/index.js +633 -478
  45. package/configure/lib/design/index.js.map +1 -1
  46. package/configure/lib/design/input-header.js +95 -151
  47. package/configure/lib/design/input-header.js.map +1 -1
  48. package/configure/lib/design/utils.js +5 -16
  49. package/configure/lib/design/utils.js.map +1 -1
  50. package/configure/lib/index.js +121 -184
  51. package/configure/lib/index.js.map +1 -1
  52. package/configure/lib/main.js +31 -75
  53. package/configure/lib/main.js.map +1 -1
  54. package/configure/lib/utils.js +23 -33
  55. package/configure/lib/utils.js.map +1 -1
  56. package/configure/package.json +15 -15
  57. package/controller/CHANGELOG.md +0 -11
  58. package/controller/lib/__tests__/index.test.js +526 -0
  59. package/controller/lib/defaults.js +3 -6
  60. package/controller/lib/defaults.js.map +1 -1
  61. package/controller/lib/index.js +238 -319
  62. package/controller/lib/index.js.map +1 -1
  63. package/controller/lib/utils.js +29 -66
  64. package/controller/lib/utils.js.map +1 -1
  65. package/controller/package.json +5 -5
  66. package/docs/demo/.pie/.configure/package.json +10 -0
  67. package/docs/demo/.pie/.configure/yarn.lock +2181 -0
  68. package/docs/demo/.pie/.controllers/package.json +10 -0
  69. package/docs/demo/.pie/.controllers/yarn.lock +110 -0
  70. package/docs/demo/.pie/info.entry.js +89 -0
  71. package/docs/demo/.pie/info.webpack.config.js +119 -0
  72. package/docs/demo/.pie/package.json +10 -0
  73. package/docs/demo/.pie/yarn.lock +2190 -0
  74. package/docs/demo/pie.manifest.json +11 -0
  75. package/lib/__tests__/index.test.js +197 -0
  76. package/lib/categorize/__tests__/categories.test.js +138 -0
  77. package/lib/categorize/__tests__/category.test.js +137 -0
  78. package/lib/categorize/__tests__/choice.test.js +88 -0
  79. package/lib/categorize/__tests__/choices.test.js +118 -0
  80. package/lib/categorize/__tests__/droppable-placeholder.test.js +96 -0
  81. package/lib/categorize/__tests__/grid-content.test.js +48 -0
  82. package/lib/categorize/__tests__/index.test.js +152 -0
  83. package/lib/categorize/categories.js +107 -165
  84. package/lib/categorize/categories.js.map +1 -1
  85. package/lib/categorize/category.js +74 -124
  86. package/lib/categorize/category.js.map +1 -1
  87. package/lib/categorize/choice.js +119 -246
  88. package/lib/categorize/choice.js.map +1 -1
  89. package/lib/categorize/choices.js +67 -132
  90. package/lib/categorize/choices.js.map +1 -1
  91. package/lib/categorize/droppable-placeholder.js +47 -104
  92. package/lib/categorize/droppable-placeholder.js.map +1 -1
  93. package/lib/categorize/grid-content.js +40 -88
  94. package/lib/categorize/grid-content.js.map +1 -1
  95. package/lib/categorize/index.js +342 -318
  96. package/lib/categorize/index.js.map +1 -1
  97. package/lib/index.js +286 -307
  98. package/lib/index.js.map +1 -1
  99. package/package.json +16 -14
  100. package/esm/configure.js +0 -34401
  101. package/esm/configure.js.map +0 -1
  102. package/esm/controller.js +0 -1468
  103. package/esm/controller.js.map +0 -1
  104. package/esm/element.js +0 -13134
  105. package/esm/element.js.map +0 -1
  106. package/esm/package.json +0 -3
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _react = _interopRequireDefault(require("react"));
5
+ var _react2 = require("@testing-library/react");
6
+ var _styles = require("@mui/material/styles");
7
+ var _choicePreview = require("../choice-preview");
8
+ jest.mock('@pie-lib/drag', () => ({
9
+ DraggableChoice: props => /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("button", {
10
+ onClick: props.onRemoveChoice
11
+ }, "Remove"), props.choice.content)
12
+ }));
13
+ jest.mock('@pie-lib/render-ui', () => ({
14
+ HtmlAndMath: props => /*#__PURE__*/_react.default.createElement("div", null, props.text),
15
+ color: {
16
+ tertiary: () => '#000'
17
+ }
18
+ }));
19
+ const theme = (0, _styles.createTheme)();
20
+ describe('ChoicePreview', () => {
21
+ let onDelete = jest.fn();
22
+ beforeEach(() => {
23
+ onDelete = jest.fn();
24
+ });
25
+ const renderChoicePreview = extras => {
26
+ const defaults = {
27
+ classes: {},
28
+ className: 'className',
29
+ choice: {
30
+ content: 'content',
31
+ id: '1'
32
+ },
33
+ onDelete
34
+ };
35
+ const props = {
36
+ ...defaults,
37
+ ...extras
38
+ };
39
+ return (0, _react2.render)(/*#__PURE__*/_react.default.createElement(_styles.ThemeProvider, {
40
+ theme: theme
41
+ }, /*#__PURE__*/_react.default.createElement(_choicePreview.ChoicePreview, props)));
42
+ };
43
+ describe('renders', () => {
44
+ it('renders without crashing', () => {
45
+ const {
46
+ container
47
+ } = renderChoicePreview();
48
+ expect(container).toBeInTheDocument();
49
+ });
50
+ });
51
+ });
52
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfc3R5bGVzIiwiX2Nob2ljZVByZXZpZXciLCJqZXN0IiwibW9jayIsIkRyYWdnYWJsZUNob2ljZSIsInByb3BzIiwiZGVmYXVsdCIsImNyZWF0ZUVsZW1lbnQiLCJvbkNsaWNrIiwib25SZW1vdmVDaG9pY2UiLCJjaG9pY2UiLCJjb250ZW50IiwiSHRtbEFuZE1hdGgiLCJ0ZXh0IiwiY29sb3IiLCJ0ZXJ0aWFyeSIsInRoZW1lIiwiY3JlYXRlVGhlbWUiLCJkZXNjcmliZSIsIm9uRGVsZXRlIiwiZm4iLCJiZWZvcmVFYWNoIiwicmVuZGVyQ2hvaWNlUHJldmlldyIsImV4dHJhcyIsImRlZmF1bHRzIiwiY2xhc3NlcyIsImNsYXNzTmFtZSIsImlkIiwicmVuZGVyIiwiVGhlbWVQcm92aWRlciIsIkNob2ljZVByZXZpZXciLCJpdCIsImNvbnRhaW5lciIsImV4cGVjdCIsInRvQmVJblRoZURvY3VtZW50Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2Rlc2lnbi9jYXRlZ29yaWVzL19fdGVzdHNfXy9jaG9pY2UtcHJldmlldy50ZXN0LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSAnQHRlc3RpbmctbGlicmFyeS9yZWFjdCc7XG5pbXBvcnQgeyBUaGVtZVByb3ZpZGVyLCBjcmVhdGVUaGVtZSB9IGZyb20gJ0BtdWkvbWF0ZXJpYWwvc3R5bGVzJztcbmltcG9ydCB7IENob2ljZVByZXZpZXcgfSBmcm9tICcuLi9jaG9pY2UtcHJldmlldyc7XG5cbmplc3QubW9jaygnQHBpZS1saWIvZHJhZycsICgpID0+ICh7XG4gIERyYWdnYWJsZUNob2ljZTogKHByb3BzKSA9PiAoXG4gICAgPGRpdj5cbiAgICAgIDxidXR0b24gb25DbGljaz17cHJvcHMub25SZW1vdmVDaG9pY2V9PlJlbW92ZTwvYnV0dG9uPlxuICAgICAge3Byb3BzLmNob2ljZS5jb250ZW50fVxuICAgIDwvZGl2PlxuICApLFxufSkpO1xuXG5qZXN0Lm1vY2soJ0BwaWUtbGliL3JlbmRlci11aScsICgpID0+ICh7XG4gIEh0bWxBbmRNYXRoOiAocHJvcHMpID0+IDxkaXY+e3Byb3BzLnRleHR9PC9kaXY+LFxuICBjb2xvcjoge1xuICAgIHRlcnRpYXJ5OiAoKSA9PiAnIzAwMCcsXG4gIH0sXG59KSk7XG5cbmNvbnN0IHRoZW1lID0gY3JlYXRlVGhlbWUoKTtcblxuZGVzY3JpYmUoJ0Nob2ljZVByZXZpZXcnLCAoKSA9PiB7XG4gIGxldCBvbkRlbGV0ZSA9IGplc3QuZm4oKTtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBvbkRlbGV0ZSA9IGplc3QuZm4oKTtcbiAgfSk7XG5cbiAgY29uc3QgcmVuZGVyQ2hvaWNlUHJldmlldyA9IChleHRyYXMpID0+IHtcbiAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgIGNsYXNzZXM6IHt9LFxuICAgICAgY2xhc3NOYW1lOiAnY2xhc3NOYW1lJyxcbiAgICAgIGNob2ljZToge1xuICAgICAgICBjb250ZW50OiAnY29udGVudCcsXG4gICAgICAgIGlkOiAnMScsXG4gICAgICB9LFxuICAgICAgb25EZWxldGUsXG4gICAgfTtcbiAgICBjb25zdCBwcm9wcyA9IHsgLi4uZGVmYXVsdHMsIC4uLmV4dHJhcyB9O1xuICAgIHJldHVybiByZW5kZXIoXG4gICAgICA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9PlxuICAgICAgICA8Q2hvaWNlUHJldmlldyB7Li4ucHJvcHN9IC8+XG4gICAgICA8L1RoZW1lUHJvdmlkZXI+XG4gICAgKTtcbiAgfTtcblxuICBkZXNjcmliZSgncmVuZGVycycsICgpID0+IHtcbiAgICBpdCgncmVuZGVycyB3aXRob3V0IGNyYXNoaW5nJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlckNob2ljZVByZXZpZXcoKTtcbiAgICAgIGV4cGVjdChjb250YWluZXIpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLGNBQUEsR0FBQUgsT0FBQTtBQUVBSSxJQUFJLENBQUNDLElBQUksQ0FBQyxlQUFlLEVBQUUsT0FBTztFQUNoQ0MsZUFBZSxFQUFHQyxLQUFLLGlCQUNyQlQsTUFBQSxDQUFBVSxPQUFBLENBQUFDLGFBQUEsMkJBQ0VYLE1BQUEsQ0FBQVUsT0FBQSxDQUFBQyxhQUFBO0lBQVFDLE9BQU8sRUFBRUgsS0FBSyxDQUFDSTtFQUFlLEdBQUMsUUFBYyxDQUFDLEVBQ3JESixLQUFLLENBQUNLLE1BQU0sQ0FBQ0MsT0FDWDtBQUVULENBQUMsQ0FBQyxDQUFDO0FBRUhULElBQUksQ0FBQ0MsSUFBSSxDQUFDLG9CQUFvQixFQUFFLE9BQU87RUFDckNTLFdBQVcsRUFBR1AsS0FBSyxpQkFBS1QsTUFBQSxDQUFBVSxPQUFBLENBQUFDLGFBQUEsY0FBTUYsS0FBSyxDQUFDUSxJQUFVLENBQUM7RUFDL0NDLEtBQUssRUFBRTtJQUNMQyxRQUFRLEVBQUVBLENBQUEsS0FBTTtFQUNsQjtBQUNGLENBQUMsQ0FBQyxDQUFDO0FBRUgsTUFBTUMsS0FBSyxHQUFHLElBQUFDLG1CQUFXLEVBQUMsQ0FBQztBQUUzQkMsUUFBUSxDQUFDLGVBQWUsRUFBRSxNQUFNO0VBQzlCLElBQUlDLFFBQVEsR0FBR2pCLElBQUksQ0FBQ2tCLEVBQUUsQ0FBQyxDQUFDO0VBRXhCQyxVQUFVLENBQUMsTUFBTTtJQUNmRixRQUFRLEdBQUdqQixJQUFJLENBQUNrQixFQUFFLENBQUMsQ0FBQztFQUN0QixDQUFDLENBQUM7RUFFRixNQUFNRSxtQkFBbUIsR0FBSUMsTUFBTSxJQUFLO0lBQ3RDLE1BQU1DLFFBQVEsR0FBRztNQUNmQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO01BQ1hDLFNBQVMsRUFBRSxXQUFXO01BQ3RCaEIsTUFBTSxFQUFFO1FBQ05DLE9BQU8sRUFBRSxTQUFTO1FBQ2xCZ0IsRUFBRSxFQUFFO01BQ04sQ0FBQztNQUNEUjtJQUNGLENBQUM7SUFDRCxNQUFNZCxLQUFLLEdBQUc7TUFBRSxHQUFHbUIsUUFBUTtNQUFFLEdBQUdEO0lBQU8sQ0FBQztJQUN4QyxPQUFPLElBQUFLLGNBQU0sZUFDWGhDLE1BQUEsQ0FBQVUsT0FBQSxDQUFBQyxhQUFBLENBQUNQLE9BQUEsQ0FBQTZCLGFBQWE7TUFBQ2IsS0FBSyxFQUFFQTtJQUFNLGdCQUMxQnBCLE1BQUEsQ0FBQVUsT0FBQSxDQUFBQyxhQUFBLENBQUNOLGNBQUEsQ0FBQTZCLGFBQWEsRUFBS3pCLEtBQVEsQ0FDZCxDQUNqQixDQUFDO0VBQ0gsQ0FBQztFQUVEYSxRQUFRLENBQUMsU0FBUyxFQUFFLE1BQU07SUFDeEJhLEVBQUUsQ0FBQywwQkFBMEIsRUFBRSxNQUFNO01BQ25DLE1BQU07UUFBRUM7TUFBVSxDQUFDLEdBQUdWLG1CQUFtQixDQUFDLENBQUM7TUFDM0NXLE1BQU0sQ0FBQ0QsU0FBUyxDQUFDLENBQUNFLGlCQUFpQixDQUFDLENBQUM7SUFDdkMsQ0FBQyxDQUFDO0VBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _react = _interopRequireDefault(require("react"));
5
+ var _react2 = require("@testing-library/react");
6
+ var _styles = require("@mui/material/styles");
7
+ var _droppablePlaceholder = _interopRequireDefault(require("../droppable-placeholder"));
8
+ jest.mock('../choice-preview', () => {
9
+ const React = require('react');
10
+ return {
11
+ __esModule: true,
12
+ default: props => /*#__PURE__*/React.createElement("div", null, props.choice && props.choice.content)
13
+ };
14
+ });
15
+ const theme = (0, _styles.createTheme)();
16
+ describe('DroppablePlaceholder', () => {
17
+ let connectDropTarget = jest.fn(o => o);
18
+ let onDropChoice = jest.fn();
19
+ let onDeleteChoice = jest.fn();
20
+ beforeEach(() => {
21
+ connectDropTarget = jest.fn(o => o);
22
+ onDropChoice = jest.fn();
23
+ onDeleteChoice = jest.fn();
24
+ });
25
+ const renderPlaceholder = extras => {
26
+ const defaults = {
27
+ classes: {},
28
+ className: 'className',
29
+ onDeleteChoice,
30
+ onDropChoice,
31
+ connectDropTarget,
32
+ categoryId: '1',
33
+ choices: [{
34
+ id: '1',
35
+ content: 'content'
36
+ }]
37
+ };
38
+ const props = {
39
+ ...defaults,
40
+ ...extras
41
+ };
42
+ return (0, _react2.render)(/*#__PURE__*/_react.default.createElement(_styles.ThemeProvider, {
43
+ theme: theme
44
+ }, /*#__PURE__*/_react.default.createElement(_droppablePlaceholder.default, props)));
45
+ };
46
+ describe('renders', () => {
47
+ it('renders without crashing', () => {
48
+ const {
49
+ container
50
+ } = renderPlaceholder();
51
+ expect(container).toBeInTheDocument();
52
+ });
53
+ it('renders helper when no choices', () => {
54
+ const {
55
+ container
56
+ } = renderPlaceholder({
57
+ choices: []
58
+ });
59
+ expect(container).toBeInTheDocument();
60
+ });
61
+ });
62
+ });
63
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfc3R5bGVzIiwiX2Ryb3BwYWJsZVBsYWNlaG9sZGVyIiwiamVzdCIsIm1vY2siLCJSZWFjdCIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwicHJvcHMiLCJjcmVhdGVFbGVtZW50IiwiY2hvaWNlIiwiY29udGVudCIsInRoZW1lIiwiY3JlYXRlVGhlbWUiLCJkZXNjcmliZSIsImNvbm5lY3REcm9wVGFyZ2V0IiwiZm4iLCJvIiwib25Ecm9wQ2hvaWNlIiwib25EZWxldGVDaG9pY2UiLCJiZWZvcmVFYWNoIiwicmVuZGVyUGxhY2Vob2xkZXIiLCJleHRyYXMiLCJkZWZhdWx0cyIsImNsYXNzZXMiLCJjbGFzc05hbWUiLCJjYXRlZ29yeUlkIiwiY2hvaWNlcyIsImlkIiwicmVuZGVyIiwiVGhlbWVQcm92aWRlciIsIml0IiwiY29udGFpbmVyIiwiZXhwZWN0IiwidG9CZUluVGhlRG9jdW1lbnQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGVzaWduL2NhdGVnb3JpZXMvX190ZXN0c19fL2Ryb3BwYWJsZS1wbGFjZWhvbGRlci50ZXN0LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSAnQHRlc3RpbmctbGlicmFyeS9yZWFjdCc7XG5pbXBvcnQgeyBUaGVtZVByb3ZpZGVyLCBjcmVhdGVUaGVtZSB9IGZyb20gJ0BtdWkvbWF0ZXJpYWwvc3R5bGVzJztcblxuaW1wb3J0IERyb3BwYWJsZVBsYWNlSG9sZGVyIGZyb20gJy4uL2Ryb3BwYWJsZS1wbGFjZWhvbGRlcic7XG5cbmplc3QubW9jaygnLi4vY2hvaWNlLXByZXZpZXcnLCAoKSA9PiB7XG4gIGNvbnN0IFJlYWN0ID0gcmVxdWlyZSgncmVhY3QnKTtcbiAgcmV0dXJuIHtcbiAgICBfX2VzTW9kdWxlOiB0cnVlLFxuICAgIGRlZmF1bHQ6IChwcm9wcykgPT4gPGRpdj57cHJvcHMuY2hvaWNlICYmIHByb3BzLmNob2ljZS5jb250ZW50fTwvZGl2PixcbiAgfTtcbn0pO1xuXG5jb25zdCB0aGVtZSA9IGNyZWF0ZVRoZW1lKCk7XG5cbmRlc2NyaWJlKCdEcm9wcGFibGVQbGFjZWhvbGRlcicsICgpID0+IHtcbiAgbGV0IGNvbm5lY3REcm9wVGFyZ2V0ID0gamVzdC5mbigobykgPT4gbyk7XG4gIGxldCBvbkRyb3BDaG9pY2UgPSBqZXN0LmZuKCk7XG4gIGxldCBvbkRlbGV0ZUNob2ljZSA9IGplc3QuZm4oKTtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBjb25uZWN0RHJvcFRhcmdldCA9IGplc3QuZm4oKG8pID0+IG8pO1xuICAgIG9uRHJvcENob2ljZSA9IGplc3QuZm4oKTtcbiAgICBvbkRlbGV0ZUNob2ljZSA9IGplc3QuZm4oKTtcbiAgfSk7XG5cbiAgY29uc3QgcmVuZGVyUGxhY2Vob2xkZXIgPSAoZXh0cmFzKSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdHMgPSB7XG4gICAgICBjbGFzc2VzOiB7fSxcbiAgICAgIGNsYXNzTmFtZTogJ2NsYXNzTmFtZScsXG4gICAgICBvbkRlbGV0ZUNob2ljZSxcbiAgICAgIG9uRHJvcENob2ljZSxcbiAgICAgIGNvbm5lY3REcm9wVGFyZ2V0LFxuICAgICAgY2F0ZWdvcnlJZDogJzEnLFxuICAgICAgY2hvaWNlczogW3sgaWQ6ICcxJywgY29udGVudDogJ2NvbnRlbnQnIH1dLFxuICAgIH07XG4gICAgY29uc3QgcHJvcHMgPSB7XG4gICAgICAuLi5kZWZhdWx0cyxcbiAgICAgIC4uLmV4dHJhcyxcbiAgICB9O1xuICAgIHJldHVybiByZW5kZXIoXG4gICAgICA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9PlxuICAgICAgICA8RHJvcHBhYmxlUGxhY2VIb2xkZXIgey4uLnByb3BzfSAvPlxuICAgICAgPC9UaGVtZVByb3ZpZGVyPlxuICAgICk7XG4gIH07XG5cbiAgZGVzY3JpYmUoJ3JlbmRlcnMnLCAoKSA9PiB7XG4gICAgaXQoJ3JlbmRlcnMgd2l0aG91dCBjcmFzaGluZycsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXJQbGFjZWhvbGRlcigpO1xuICAgICAgZXhwZWN0KGNvbnRhaW5lcikudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIGhlbHBlciB3aGVuIG5vIGNob2ljZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyUGxhY2Vob2xkZXIoeyBjaG9pY2VzOiBbXSB9KTtcbiAgICAgIGV4cGVjdChjb250YWluZXIpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG5cbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBRixPQUFBO0FBRUEsSUFBQUcscUJBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUVBSSxJQUFJLENBQUNDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxNQUFNO0VBQ25DLE1BQU1DLEtBQUssR0FBR04sT0FBTyxDQUFDLE9BQU8sQ0FBQztFQUM5QixPQUFPO0lBQ0xPLFVBQVUsRUFBRSxJQUFJO0lBQ2hCQyxPQUFPLEVBQUdDLEtBQUssaUJBQUtILEtBQUEsQ0FBQUksYUFBQSxjQUFNRCxLQUFLLENBQUNFLE1BQU0sSUFBSUYsS0FBSyxDQUFDRSxNQUFNLENBQUNDLE9BQWE7RUFDdEUsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLE1BQU1DLEtBQUssR0FBRyxJQUFBQyxtQkFBVyxFQUFDLENBQUM7QUFFM0JDLFFBQVEsQ0FBQyxzQkFBc0IsRUFBRSxNQUFNO0VBQ3JDLElBQUlDLGlCQUFpQixHQUFHWixJQUFJLENBQUNhLEVBQUUsQ0FBRUMsQ0FBQyxJQUFLQSxDQUFDLENBQUM7RUFDekMsSUFBSUMsWUFBWSxHQUFHZixJQUFJLENBQUNhLEVBQUUsQ0FBQyxDQUFDO0VBQzVCLElBQUlHLGNBQWMsR0FBR2hCLElBQUksQ0FBQ2EsRUFBRSxDQUFDLENBQUM7RUFFOUJJLFVBQVUsQ0FBQyxNQUFNO0lBQ2ZMLGlCQUFpQixHQUFHWixJQUFJLENBQUNhLEVBQUUsQ0FBRUMsQ0FBQyxJQUFLQSxDQUFDLENBQUM7SUFDckNDLFlBQVksR0FBR2YsSUFBSSxDQUFDYSxFQUFFLENBQUMsQ0FBQztJQUN4QkcsY0FBYyxHQUFHaEIsSUFBSSxDQUFDYSxFQUFFLENBQUMsQ0FBQztFQUM1QixDQUFDLENBQUM7RUFFRixNQUFNSyxpQkFBaUIsR0FBSUMsTUFBTSxJQUFLO0lBQ3BDLE1BQU1DLFFBQVEsR0FBRztNQUNmQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO01BQ1hDLFNBQVMsRUFBRSxXQUFXO01BQ3RCTixjQUFjO01BQ2RELFlBQVk7TUFDWkgsaUJBQWlCO01BQ2pCVyxVQUFVLEVBQUUsR0FBRztNQUNmQyxPQUFPLEVBQUUsQ0FBQztRQUFFQyxFQUFFLEVBQUUsR0FBRztRQUFFakIsT0FBTyxFQUFFO01BQVUsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsTUFBTUgsS0FBSyxHQUFHO01BQ1osR0FBR2UsUUFBUTtNQUNYLEdBQUdEO0lBQ0wsQ0FBQztJQUNELE9BQU8sSUFBQU8sY0FBTSxlQUNYaEMsTUFBQSxDQUFBVSxPQUFBLENBQUFFLGFBQUEsQ0FBQ1IsT0FBQSxDQUFBNkIsYUFBYTtNQUFDbEIsS0FBSyxFQUFFQTtJQUFNLGdCQUMxQmYsTUFBQSxDQUFBVSxPQUFBLENBQUFFLGFBQUEsQ0FBQ1AscUJBQUEsQ0FBQUssT0FBb0IsRUFBS0MsS0FBUSxDQUNyQixDQUNqQixDQUFDO0VBQ0gsQ0FBQztFQUVETSxRQUFRLENBQUMsU0FBUyxFQUFFLE1BQU07SUFDeEJpQixFQUFFLENBQUMsMEJBQTBCLEVBQUUsTUFBTTtNQUNuQyxNQUFNO1FBQUVDO01BQVUsQ0FBQyxHQUFHWCxpQkFBaUIsQ0FBQyxDQUFDO01BQ3pDWSxNQUFNLENBQUNELFNBQVMsQ0FBQyxDQUFDRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3ZDLENBQUMsQ0FBQztJQUVGSCxFQUFFLENBQUMsZ0NBQWdDLEVBQUUsTUFBTTtNQUN6QyxNQUFNO1FBQUVDO01BQVUsQ0FBQyxHQUFHWCxpQkFBaUIsQ0FBQztRQUFFTSxPQUFPLEVBQUU7TUFBRyxDQUFDLENBQUM7TUFDeERNLE1BQU0sQ0FBQ0QsU0FBUyxDQUFDLENBQUNFLGlCQUFpQixDQUFDLENBQUM7SUFDdkMsQ0FBQyxDQUFDO0VBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _react = _interopRequireDefault(require("react"));
5
+ var _react2 = require("@testing-library/react");
6
+ var _styles = require("@mui/material/styles");
7
+ var _index = require("../index");
8
+ jest.mock('../category', () => ({
9
+ __esModule: true,
10
+ default: props => /*#__PURE__*/_react.default.createElement("div", props)
11
+ }));
12
+ jest.mock('../../header', () => ({
13
+ __esModule: true,
14
+ default: props => /*#__PURE__*/_react.default.createElement("div", props)
15
+ }));
16
+ const theme = (0, _styles.createTheme)();
17
+ describe('Categories', () => {
18
+ let onModelChanged;
19
+ let renderCategories;
20
+ beforeEach(() => {
21
+ let model = {
22
+ choices: [{
23
+ id: '0',
24
+ content: 'Choice 0',
25
+ categoryCount: 0
26
+ }, {
27
+ id: '1',
28
+ content: 'Choice 0',
29
+ categoryCount: 0
30
+ }, {
31
+ id: '2',
32
+ content: 'Choice 3',
33
+ categoryCount: 0
34
+ }],
35
+ choicesPosition: 'below',
36
+ choicesLabel: '',
37
+ lockChoiceOrder: true,
38
+ categoriesPerRow: 2,
39
+ categories: [{
40
+ id: '0',
41
+ label: 'Category 0',
42
+ choices: []
43
+ }],
44
+ rowLabels: [''],
45
+ correctResponse: [],
46
+ partialScoring: true
47
+ };
48
+ onModelChanged = jest.fn();
49
+ renderCategories = extras => {
50
+ model = {
51
+ ...model,
52
+ ...extras
53
+ };
54
+ const defaults = {
55
+ classes: {
56
+ categories: 'categories',
57
+ categoriesHolder: 'categoriesHolder',
58
+ row: 'row'
59
+ },
60
+ categories: [{
61
+ id: '1',
62
+ label: 'foo',
63
+ choices: []
64
+ }],
65
+ className: 'className',
66
+ model,
67
+ configuration: {
68
+ rowLabels: {},
69
+ baseInputConfiguration: {}
70
+ },
71
+ onModelChanged,
72
+ extras
73
+ };
74
+ const props = {
75
+ ...defaults
76
+ };
77
+ return (0, _react2.render)(/*#__PURE__*/_react.default.createElement(_styles.ThemeProvider, {
78
+ theme: theme
79
+ }, /*#__PURE__*/_react.default.createElement(_index.Categories, props)));
80
+ };
81
+ });
82
+ describe('renders', () => {
83
+ it('renders without crashing', () => {
84
+ const {
85
+ container
86
+ } = renderCategories();
87
+ expect(container).toBeInTheDocument();
88
+ });
89
+ });
90
+ });
91
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfc3R5bGVzIiwiX2luZGV4IiwiamVzdCIsIm1vY2siLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsInByb3BzIiwiY3JlYXRlRWxlbWVudCIsInRoZW1lIiwiY3JlYXRlVGhlbWUiLCJkZXNjcmliZSIsIm9uTW9kZWxDaGFuZ2VkIiwicmVuZGVyQ2F0ZWdvcmllcyIsImJlZm9yZUVhY2giLCJtb2RlbCIsImNob2ljZXMiLCJpZCIsImNvbnRlbnQiLCJjYXRlZ29yeUNvdW50IiwiY2hvaWNlc1Bvc2l0aW9uIiwiY2hvaWNlc0xhYmVsIiwibG9ja0Nob2ljZU9yZGVyIiwiY2F0ZWdvcmllc1BlclJvdyIsImNhdGVnb3JpZXMiLCJsYWJlbCIsInJvd0xhYmVscyIsImNvcnJlY3RSZXNwb25zZSIsInBhcnRpYWxTY29yaW5nIiwiZm4iLCJleHRyYXMiLCJkZWZhdWx0cyIsImNsYXNzZXMiLCJjYXRlZ29yaWVzSG9sZGVyIiwicm93IiwiY2xhc3NOYW1lIiwiY29uZmlndXJhdGlvbiIsImJhc2VJbnB1dENvbmZpZ3VyYXRpb24iLCJyZW5kZXIiLCJUaGVtZVByb3ZpZGVyIiwiQ2F0ZWdvcmllcyIsIml0IiwiY29udGFpbmVyIiwiZXhwZWN0IiwidG9CZUluVGhlRG9jdW1lbnQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGVzaWduL2NhdGVnb3JpZXMvX190ZXN0c19fL2luZGV4LnRlc3QuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyByZW5kZXIgfSBmcm9tICdAdGVzdGluZy1saWJyYXJ5L3JlYWN0JztcbmltcG9ydCB7IFRoZW1lUHJvdmlkZXIsIGNyZWF0ZVRoZW1lIH0gZnJvbSAnQG11aS9tYXRlcmlhbC9zdHlsZXMnO1xuXG5pbXBvcnQgeyBDYXRlZ29yaWVzIH0gZnJvbSAnLi4vaW5kZXgnO1xuXG5qZXN0Lm1vY2soJy4uL2NhdGVnb3J5JywgKCkgPT4gKHtcbiAgX19lc01vZHVsZTogdHJ1ZSxcbiAgZGVmYXVsdDogKHByb3BzKSA9PiA8ZGl2IHsuLi5wcm9wc30gLz4sXG59KSk7XG5qZXN0Lm1vY2soJy4uLy4uL2hlYWRlcicsICgpID0+ICh7XG4gIF9fZXNNb2R1bGU6IHRydWUsXG4gIGRlZmF1bHQ6IChwcm9wcykgPT4gPGRpdiB7Li4ucHJvcHN9IC8+LFxufSkpO1xuXG5jb25zdCB0aGVtZSA9IGNyZWF0ZVRoZW1lKCk7XG5cbmRlc2NyaWJlKCdDYXRlZ29yaWVzJywgKCkgPT4ge1xuICBsZXQgb25Nb2RlbENoYW5nZWQ7XG4gIGxldCByZW5kZXJDYXRlZ29yaWVzO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGxldCBtb2RlbCA9IHtcbiAgICAgIGNob2ljZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnMCcsXG4gICAgICAgICAgY29udGVudDogJ0Nob2ljZSAwJyxcbiAgICAgICAgICBjYXRlZ29yeUNvdW50OiAwLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICBjb250ZW50OiAnQ2hvaWNlIDAnLFxuICAgICAgICAgIGNhdGVnb3J5Q291bnQ6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJzInLFxuICAgICAgICAgIGNvbnRlbnQ6ICdDaG9pY2UgMycsXG4gICAgICAgICAgY2F0ZWdvcnlDb3VudDogMCxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBjaG9pY2VzUG9zaXRpb246ICdiZWxvdycsXG4gICAgICBjaG9pY2VzTGFiZWw6ICcnLFxuICAgICAgbG9ja0Nob2ljZU9yZGVyOiB0cnVlLFxuICAgICAgY2F0ZWdvcmllc1BlclJvdzogMixcbiAgICAgIGNhdGVnb3JpZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnMCcsXG4gICAgICAgICAgbGFiZWw6ICdDYXRlZ29yeSAwJyxcbiAgICAgICAgICBjaG9pY2VzOiBbXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICByb3dMYWJlbHM6IFsnJ10sXG4gICAgICBjb3JyZWN0UmVzcG9uc2U6IFtdLFxuICAgICAgcGFydGlhbFNjb3Jpbmc6IHRydWUsXG4gICAgfTtcblxuICAgIG9uTW9kZWxDaGFuZ2VkID0gamVzdC5mbigpO1xuICAgIHJlbmRlckNhdGVnb3JpZXMgPSAoZXh0cmFzKSA9PiB7XG4gICAgICBtb2RlbCA9IHsgLi4ubW9kZWwsIC4uLmV4dHJhcyB9O1xuICAgICAgY29uc3QgZGVmYXVsdHMgPSB7XG4gICAgICAgIGNsYXNzZXM6IHtcbiAgICAgICAgICBjYXRlZ29yaWVzOiAnY2F0ZWdvcmllcycsXG4gICAgICAgICAgY2F0ZWdvcmllc0hvbGRlcjogJ2NhdGVnb3JpZXNIb2xkZXInLFxuICAgICAgICAgIHJvdzogJ3JvdycsXG4gICAgICAgIH0sXG4gICAgICAgIGNhdGVnb3JpZXM6IFt7IGlkOiAnMScsIGxhYmVsOiAnZm9vJywgY2hvaWNlczogW10gfV0sXG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzTmFtZScsXG4gICAgICAgIG1vZGVsLFxuICAgICAgICBjb25maWd1cmF0aW9uOiB7IHJvd0xhYmVsczoge30sIGJhc2VJbnB1dENvbmZpZ3VyYXRpb246IHt9IH0sXG4gICAgICAgIG9uTW9kZWxDaGFuZ2VkLFxuICAgICAgICBleHRyYXMsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBwcm9wcyA9IHsgLi4uZGVmYXVsdHMgfTtcbiAgICAgIHJldHVybiByZW5kZXIoXG4gICAgICAgIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZX0+XG4gICAgICAgICAgPENhdGVnb3JpZXMgey4uLnByb3BzfSAvPlxuICAgICAgICA8L1RoZW1lUHJvdmlkZXI+XG4gICAgICApO1xuICAgIH07XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyZW5kZXJzJywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzIHdpdGhvdXQgY3Jhc2hpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyQ2F0ZWdvcmllcygpO1xuICAgICAgZXhwZWN0KGNvbnRhaW5lcikudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBRixPQUFBO0FBRUEsSUFBQUcsTUFBQSxHQUFBSCxPQUFBO0FBRUFJLElBQUksQ0FBQ0MsSUFBSSxDQUFDLGFBQWEsRUFBRSxPQUFPO0VBQzlCQyxVQUFVLEVBQUUsSUFBSTtFQUNoQkMsT0FBTyxFQUFHQyxLQUFLLGlCQUFLVixNQUFBLENBQUFTLE9BQUEsQ0FBQUUsYUFBQSxRQUFTRCxLQUFRO0FBQ3ZDLENBQUMsQ0FBQyxDQUFDO0FBQ0hKLElBQUksQ0FBQ0MsSUFBSSxDQUFDLGNBQWMsRUFBRSxPQUFPO0VBQy9CQyxVQUFVLEVBQUUsSUFBSTtFQUNoQkMsT0FBTyxFQUFHQyxLQUFLLGlCQUFLVixNQUFBLENBQUFTLE9BQUEsQ0FBQUUsYUFBQSxRQUFTRCxLQUFRO0FBQ3ZDLENBQUMsQ0FBQyxDQUFDO0FBRUgsTUFBTUUsS0FBSyxHQUFHLElBQUFDLG1CQUFXLEVBQUMsQ0FBQztBQUUzQkMsUUFBUSxDQUFDLFlBQVksRUFBRSxNQUFNO0VBQzNCLElBQUlDLGNBQWM7RUFDbEIsSUFBSUMsZ0JBQWdCO0VBRXBCQyxVQUFVLENBQUMsTUFBTTtJQUNmLElBQUlDLEtBQUssR0FBRztNQUNWQyxPQUFPLEVBQUUsQ0FDUDtRQUNFQyxFQUFFLEVBQUUsR0FBRztRQUNQQyxPQUFPLEVBQUUsVUFBVTtRQUNuQkMsYUFBYSxFQUFFO01BQ2pCLENBQUMsRUFDRDtRQUNFRixFQUFFLEVBQUUsR0FBRztRQUNQQyxPQUFPLEVBQUUsVUFBVTtRQUNuQkMsYUFBYSxFQUFFO01BQ2pCLENBQUMsRUFDRDtRQUNFRixFQUFFLEVBQUUsR0FBRztRQUNQQyxPQUFPLEVBQUUsVUFBVTtRQUNuQkMsYUFBYSxFQUFFO01BQ2pCLENBQUMsQ0FDRjtNQUNEQyxlQUFlLEVBQUUsT0FBTztNQUN4QkMsWUFBWSxFQUFFLEVBQUU7TUFDaEJDLGVBQWUsRUFBRSxJQUFJO01BQ3JCQyxnQkFBZ0IsRUFBRSxDQUFDO01BQ25CQyxVQUFVLEVBQUUsQ0FDVjtRQUNFUCxFQUFFLEVBQUUsR0FBRztRQUNQUSxLQUFLLEVBQUUsWUFBWTtRQUNuQlQsT0FBTyxFQUFFO01BQ1gsQ0FBQyxDQUNGO01BQ0RVLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQztNQUNmQyxlQUFlLEVBQUUsRUFBRTtNQUNuQkMsY0FBYyxFQUFFO0lBQ2xCLENBQUM7SUFFRGhCLGNBQWMsR0FBR1QsSUFBSSxDQUFDMEIsRUFBRSxDQUFDLENBQUM7SUFDMUJoQixnQkFBZ0IsR0FBSWlCLE1BQU0sSUFBSztNQUM3QmYsS0FBSyxHQUFHO1FBQUUsR0FBR0EsS0FBSztRQUFFLEdBQUdlO01BQU8sQ0FBQztNQUMvQixNQUFNQyxRQUFRLEdBQUc7UUFDZkMsT0FBTyxFQUFFO1VBQ1BSLFVBQVUsRUFBRSxZQUFZO1VBQ3hCUyxnQkFBZ0IsRUFBRSxrQkFBa0I7VUFDcENDLEdBQUcsRUFBRTtRQUNQLENBQUM7UUFDRFYsVUFBVSxFQUFFLENBQUM7VUFBRVAsRUFBRSxFQUFFLEdBQUc7VUFBRVEsS0FBSyxFQUFFLEtBQUs7VUFBRVQsT0FBTyxFQUFFO1FBQUcsQ0FBQyxDQUFDO1FBQ3BEbUIsU0FBUyxFQUFFLFdBQVc7UUFDdEJwQixLQUFLO1FBQ0xxQixhQUFhLEVBQUU7VUFBRVYsU0FBUyxFQUFFLENBQUMsQ0FBQztVQUFFVyxzQkFBc0IsRUFBRSxDQUFDO1FBQUUsQ0FBQztRQUM1RHpCLGNBQWM7UUFDZGtCO01BQ0YsQ0FBQztNQUVELE1BQU12QixLQUFLLEdBQUc7UUFBRSxHQUFHd0I7TUFBUyxDQUFDO01BQzdCLE9BQU8sSUFBQU8sY0FBTSxlQUNYekMsTUFBQSxDQUFBUyxPQUFBLENBQUFFLGFBQUEsQ0FBQ1AsT0FBQSxDQUFBc0MsYUFBYTtRQUFDOUIsS0FBSyxFQUFFQTtNQUFNLGdCQUMxQlosTUFBQSxDQUFBUyxPQUFBLENBQUFFLGFBQUEsQ0FBQ04sTUFBQSxDQUFBc0MsVUFBVSxFQUFLakMsS0FBUSxDQUNYLENBQ2pCLENBQUM7SUFDSCxDQUFDO0VBQ0gsQ0FBQyxDQUFDO0VBRUZJLFFBQVEsQ0FBQyxTQUFTLEVBQUUsTUFBTTtJQUN4QjhCLEVBQUUsQ0FBQywwQkFBMEIsRUFBRSxNQUFNO01BQ25DLE1BQU07UUFBRUM7TUFBVSxDQUFDLEdBQUc3QixnQkFBZ0IsQ0FBQyxDQUFDO01BQ3hDOEIsTUFBTSxDQUFDRCxTQUFTLENBQUMsQ0FBQ0UsaUJBQWlCLENBQUMsQ0FBQztJQUN2QyxDQUFDLENBQUM7RUFDSixDQUFDLENBQUM7QUFDSixDQUFDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -1,271 +1,116 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
- exports["default"] = exports.AlternateResponses = void 0;
9
-
10
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
-
12
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
-
14
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
15
-
16
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
-
18
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
-
20
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
-
7
+ exports.default = exports.AlternateResponses = void 0;
22
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
23
-
24
9
  var _react = _interopRequireDefault(require("react"));
25
-
26
10
  var _propTypes = _interopRequireDefault(require("prop-types"));
27
-
28
- var _styles = require("@material-ui/core/styles");
29
-
30
- var _classnames = _interopRequireDefault(require("classnames"));
31
-
11
+ var _styles = require("@mui/material/styles");
32
12
  var _categorize = require("@pie-lib/categorize");
33
-
34
13
  var _category = _interopRequireDefault(require("./category"));
35
-
36
- var _utils = require("../../utils");
37
-
38
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
39
-
40
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
41
-
42
- var styles = function styles(theme) {
43
- return {
44
- categories: {
45
- marginBottom: theme.spacing.unit * 2.5
46
- },
47
- categoriesHolder: {
48
- display: 'grid',
49
- gridRowGap: "".concat(theme.spacing.unit, "px"),
50
- gridColumnGap: "".concat(theme.spacing.unit, "px")
51
- },
52
- row: {
53
- display: 'grid',
54
- gridTemplateColumns: 'repeat(2, 1fr)',
55
- gridColumnGap: "".concat(theme.spacing.unit, "px"),
56
- alignItems: 'baseline',
57
- width: '100%',
58
- marginTop: theme.spacing.unit,
59
- marginBottom: 2 * theme.spacing.unit
60
- },
61
- rowLabel: {
62
- gridColumn: '1/3'
63
- }
64
- };
65
- };
66
-
67
- var AlternateResponses = /*#__PURE__*/function (_React$Component) {
68
- (0, _inherits2["default"])(AlternateResponses, _React$Component);
69
-
70
- var _super = _createSuper(AlternateResponses);
71
-
72
- function AlternateResponses() {
73
- var _this;
74
-
75
- (0, _classCallCheck2["default"])(this, AlternateResponses);
76
-
77
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
78
- args[_key] = arguments[_key];
79
- }
80
-
81
- _this = _super.call.apply(_super, [this].concat(args));
82
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "addChoiceToCategory", function (addedChoice, categoryId) {
83
- var _this$props = _this.props,
84
- altIndex = _this$props.altIndex,
85
- _this$props$model = _this$props.model,
86
- correctResponse = _this$props$model.correctResponse,
87
- choices = _this$props$model.choices,
88
- _this$props$model$max = _this$props$model.maxChoicesPerCategory,
89
- maxChoicesPerCategory = _this$props$model$max === void 0 ? 0 : _this$props$model$max,
90
- onModelChanged = _this$props.onModelChanged;
91
- var choice = choices.find(function (c) {
92
- return c.id === addedChoice.id;
93
- });
94
- correctResponse.forEach(function (a) {
95
- if (a.category === categoryId) {
96
- a.alternateResponses = a.alternateResponses || [];
97
-
98
- if (!a.alternateResponses[altIndex]) {
99
- a.alternateResponses[altIndex] = [];
100
- }
101
-
102
- a.alternateResponses[altIndex].push(addedChoice.id);
103
-
104
- if (choice.categoryCount && choice.categoryCount !== 0) {
105
- a.alternateResponses[altIndex] = a.alternateResponses[altIndex].reduce(function (acc, currentValue) {
106
- if (currentValue === choice.id) {
107
- var foundIndex = acc.findIndex(function (c) {
108
- return c === choice.id;
109
- });
110
-
111
- if (foundIndex === -1) {
112
- acc.push(currentValue);
113
- }
114
- } else {
115
- acc.push(currentValue);
116
- }
117
-
118
- return acc;
119
- }, []);
120
- }
121
-
122
- return a;
123
- } else {
124
- if (a.alternateResponses[altIndex] && choice.categoryCount !== 0) {
125
- a.alternateResponses[altIndex] = a.alternateResponses[altIndex].filter(function (c) {
126
- return c !== addedChoice.id;
127
- });
128
- return a;
129
- }
130
- }
131
-
132
- return a;
133
- });
134
- var maxCategoryChoices = (0, _utils.getMaxCategoryChoices)(_this.props.model); // when maxChoicesPerCategory is set to 0, there is no limit so it should not be updated
135
-
136
- onModelChanged({
137
- correctResponse: correctResponse,
138
- maxChoicesPerCategory: maxChoicesPerCategory !== 0 && maxChoicesPerCategory < maxCategoryChoices ? maxChoicesPerCategory + 1 : maxChoicesPerCategory
139
- });
140
- });
141
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "moveChoice", function (choiceId, from, to, choiceIndex, alternateIndex) {
142
- var _this$props2 = _this.props,
143
- model = _this$props2.model,
144
- onModelChanged = _this$props2.onModelChanged;
145
-
146
- var _ref = model || {},
147
- choices = _ref.choices,
148
- _ref$correctResponse = _ref.correctResponse,
149
- correctResponse = _ref$correctResponse === void 0 ? [] : _ref$correctResponse,
150
- _ref$maxChoicesPerCat = _ref.maxChoicesPerCategory,
151
- maxChoicesPerCategory = _ref$maxChoicesPerCat === void 0 ? 0 : _ref$maxChoicesPerCat;
152
-
153
- var choice = (choices || []).find(function (choice) {
154
- return choice.id === choiceId;
155
- });
156
- correctResponse = (0, _categorize.moveChoiceToAlternate)(choiceId, from, to, choiceIndex, correctResponse, alternateIndex, choice === null || choice === void 0 ? void 0 : choice.categoryCount);
157
- var maxCategoryChoices = (0, _utils.getMaxCategoryChoices)(_this.props.model); // when maxChoicesPerCategory is set to 0, there is no limit so it should not be updated
158
-
159
- onModelChanged({
160
- correctResponse: correctResponse,
161
- maxChoicesPerCategory: maxChoicesPerCategory !== 0 && maxChoicesPerCategory < maxCategoryChoices ? maxChoicesPerCategory + 1 : maxChoicesPerCategory
162
- });
163
- });
164
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "deleteChoiceFromCategory", function (category, choice, choiceIndex) {
165
- var _this$props3 = _this.props,
166
- model = _this$props3.model,
167
- altIndex = _this$props3.altIndex,
168
- onModelChanged = _this$props3.onModelChanged;
169
- var correctResponse = (0, _categorize.removeChoiceFromAlternate)(choice.id, category.id, choiceIndex, altIndex, model.correctResponse);
14
+ const CategoriesContainer = (0, _styles.styled)('div')(({
15
+ theme
16
+ }) => ({
17
+ marginBottom: theme.spacing(2.5)
18
+ }));
19
+ const CategoriesHolder = (0, _styles.styled)('div')(({
20
+ theme
21
+ }) => ({
22
+ display: 'grid',
23
+ gridRowGap: `${theme.spacing(1)}px`,
24
+ gridColumnGap: `${theme.spacing(1)}px`
25
+ }));
26
+ const RowLabel = (0, _styles.styled)('div')({
27
+ gridColumn: '1 / 3'
28
+ });
29
+ class AlternateResponses extends _react.default.Component {
30
+ constructor(...args) {
31
+ super(...args);
32
+ (0, _defineProperty2.default)(this, "deleteChoiceFromCategory", (category, choice, choiceIndex) => {
33
+ const {
34
+ model,
35
+ altIndex,
36
+ onModelChanged
37
+ } = this.props;
38
+ const correctResponse = (0, _categorize.removeChoiceFromAlternate)(choice.id, category.id, choiceIndex, altIndex, model.correctResponse);
170
39
  onModelChanged({
171
- correctResponse: correctResponse
40
+ correctResponse
172
41
  });
173
42
  });
174
- return _this;
175
43
  }
176
-
177
- (0, _createClass2["default"])(AlternateResponses, [{
178
- key: "render",
179
- value: function render() {
180
- var _this2 = this;
181
-
182
- var _this$props4 = this.props,
183
- altIndex = _this$props4.altIndex,
184
- model = _this$props4.model,
185
- configuration = _this$props4.configuration,
186
- classes = _this$props4.classes,
187
- className = _this$props4.className,
188
- categories = _this$props4.categories,
189
- imageSupport = _this$props4.imageSupport,
190
- spellCheck = _this$props4.spellCheck,
191
- uploadSoundSupport = _this$props4.uploadSoundSupport,
192
- _this$props4$mathMlOp = _this$props4.mathMlOptions,
193
- mathMlOptions = _this$props4$mathMlOp === void 0 ? {} : _this$props4$mathMlOp;
194
- var categoriesPerRow = model.categoriesPerRow,
195
- errors = model.errors,
196
- rowLabels = model.rowLabels;
197
-
198
- var _ref2 = errors || {},
199
- duplicateAlternate = _ref2.duplicateAlternate;
200
-
201
- var holderStyle = {
202
- gridTemplateColumns: "repeat(".concat(categoriesPerRow, ", 1fr)")
203
- };
204
- var isDuplicated = duplicateAlternate ? duplicateAlternate.index === altIndex : false;
205
- return /*#__PURE__*/_react["default"].createElement("div", {
206
- className: (0, _classnames["default"])(classes.categories, className)
207
- }, /*#__PURE__*/_react["default"].createElement("div", {
208
- className: classes.categoriesHolder,
209
- style: holderStyle
210
- }, categories.map(function (category, index) {
211
- var hasRowLabel = index % categoriesPerRow === 0;
212
- var rowIndex = index / categoriesPerRow;
213
- return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, {
214
- key: index
215
- }, hasRowLabel && /*#__PURE__*/_react["default"].createElement("div", {
216
- style: {
217
- gridColumn: "1/".concat(categoriesPerRow + 1),
218
- width: '100%'
219
- },
220
- className: classes.rowLabel,
221
- dangerouslySetInnerHTML: {
222
- __html: rowLabels[rowIndex] || ''
223
- }
224
- }), /*#__PURE__*/_react["default"].createElement(_category["default"], {
225
- key: index,
226
- alternateResponseIndex: altIndex,
227
- imageSupport: imageSupport,
228
- isDuplicated: isDuplicated && duplicateAlternate.category === category.id,
229
- category: category,
230
- spellCheck: spellCheck,
231
- onAddChoice: _this2.addChoiceToCategory,
232
- onDeleteChoice: function onDeleteChoice(choice, choiceIndex) {
233
- return _this2.deleteChoiceFromCategory(category, choice, choiceIndex);
234
- },
235
- onMoveChoice: function onMoveChoice(choiceId, from, to, choiceIndex, alternateIndex) {
236
- return _this2.moveChoice(choiceId, from, to, choiceIndex, alternateIndex);
237
- },
238
- uploadSoundSupport: uploadSoundSupport,
239
- mathMlOptions: mathMlOptions,
240
- configuration: configuration
241
- }));
242
- })));
243
- }
244
- }]);
245
- return AlternateResponses;
246
- }(_react["default"].Component);
247
-
44
+ render() {
45
+ const {
46
+ altIndex,
47
+ model,
48
+ configuration,
49
+ categories,
50
+ imageSupport,
51
+ spellCheck,
52
+ uploadSoundSupport,
53
+ mathMlOptions = {}
54
+ } = this.props;
55
+ const {
56
+ categoriesPerRow,
57
+ errors,
58
+ rowLabels
59
+ } = model;
60
+ const {
61
+ duplicateAlternate
62
+ } = errors || {};
63
+ const holderStyle = {
64
+ gridTemplateColumns: `repeat(${categoriesPerRow}, 1fr)`
65
+ };
66
+ const isDuplicated = duplicateAlternate ? duplicateAlternate.index === altIndex : false;
67
+ return /*#__PURE__*/_react.default.createElement(CategoriesContainer, null, /*#__PURE__*/_react.default.createElement(CategoriesHolder, {
68
+ style: holderStyle
69
+ }, categories.map((category, index) => {
70
+ const hasRowLabel = index % categoriesPerRow === 0;
71
+ const rowIndex = index / categoriesPerRow;
72
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, {
73
+ key: index
74
+ }, hasRowLabel && /*#__PURE__*/_react.default.createElement(RowLabel, {
75
+ style: {
76
+ gridColumn: `1/${categoriesPerRow + 1}`,
77
+ width: '100%'
78
+ },
79
+ dangerouslySetInnerHTML: {
80
+ __html: rowLabels[rowIndex] || ''
81
+ }
82
+ }), /*#__PURE__*/_react.default.createElement(_category.default, {
83
+ key: index,
84
+ alternateResponseIndex: altIndex,
85
+ imageSupport: imageSupport,
86
+ isDuplicated: isDuplicated && duplicateAlternate.category === category.id,
87
+ category: category,
88
+ spellCheck: spellCheck,
89
+ onDeleteChoice: (choice, choiceIndex) => this.deleteChoiceFromCategory(category, choice, choiceIndex),
90
+ uploadSoundSupport: uploadSoundSupport,
91
+ mathMlOptions: mathMlOptions,
92
+ configuration: configuration,
93
+ isAlternate: true
94
+ }));
95
+ })));
96
+ }
97
+ }
248
98
  exports.AlternateResponses = AlternateResponses;
249
- (0, _defineProperty2["default"])(AlternateResponses, "propTypes", {
250
- altIndex: _propTypes["default"].number.isRequired,
251
- configuration: _propTypes["default"].object,
252
- imageSupport: _propTypes["default"].shape({
253
- add: _propTypes["default"].func.isRequired,
254
- "delete": _propTypes["default"].func.isRequired
99
+ (0, _defineProperty2.default)(AlternateResponses, "propTypes", {
100
+ altIndex: _propTypes.default.number.isRequired,
101
+ configuration: _propTypes.default.object,
102
+ imageSupport: _propTypes.default.shape({
103
+ add: _propTypes.default.func.isRequired,
104
+ delete: _propTypes.default.func.isRequired
255
105
  }),
256
- classes: _propTypes["default"].object.isRequired,
257
- className: _propTypes["default"].string,
258
- categories: _propTypes["default"].array,
259
- onModelChanged: _propTypes["default"].func,
260
- model: _propTypes["default"].object.isRequired,
261
- uploadSoundSupport: _propTypes["default"].shape({
262
- add: _propTypes["default"].func.isRequired,
263
- "delete": _propTypes["default"].func.isRequired
106
+ categories: _propTypes.default.array,
107
+ onModelChanged: _propTypes.default.func,
108
+ model: _propTypes.default.object.isRequired,
109
+ uploadSoundSupport: _propTypes.default.shape({
110
+ add: _propTypes.default.func.isRequired,
111
+ delete: _propTypes.default.func.isRequired
264
112
  }),
265
- spellCheck: _propTypes["default"].bool
113
+ spellCheck: _propTypes.default.bool
266
114
  });
267
-
268
- var _default = (0, _styles.withStyles)(styles)(AlternateResponses);
269
-
270
- exports["default"] = _default;
271
- //# sourceMappingURL=alternateResponses.js.map
115
+ var _default = exports.default = AlternateResponses;
116
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9wcm9wVHlwZXMiLCJfc3R5bGVzIiwiX2NhdGVnb3JpemUiLCJfY2F0ZWdvcnkiLCJDYXRlZ29yaWVzQ29udGFpbmVyIiwic3R5bGVkIiwidGhlbWUiLCJtYXJnaW5Cb3R0b20iLCJzcGFjaW5nIiwiQ2F0ZWdvcmllc0hvbGRlciIsImRpc3BsYXkiLCJncmlkUm93R2FwIiwiZ3JpZENvbHVtbkdhcCIsIlJvd0xhYmVsIiwiZ3JpZENvbHVtbiIsIkFsdGVybmF0ZVJlc3BvbnNlcyIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJhcmdzIiwiX2RlZmluZVByb3BlcnR5MiIsImRlZmF1bHQiLCJjYXRlZ29yeSIsImNob2ljZSIsImNob2ljZUluZGV4IiwibW9kZWwiLCJhbHRJbmRleCIsIm9uTW9kZWxDaGFuZ2VkIiwicHJvcHMiLCJjb3JyZWN0UmVzcG9uc2UiLCJyZW1vdmVDaG9pY2VGcm9tQWx0ZXJuYXRlIiwiaWQiLCJyZW5kZXIiLCJjb25maWd1cmF0aW9uIiwiY2F0ZWdvcmllcyIsImltYWdlU3VwcG9ydCIsInNwZWxsQ2hlY2siLCJ1cGxvYWRTb3VuZFN1cHBvcnQiLCJtYXRoTWxPcHRpb25zIiwiY2F0ZWdvcmllc1BlclJvdyIsImVycm9ycyIsInJvd0xhYmVscyIsImR1cGxpY2F0ZUFsdGVybmF0ZSIsImhvbGRlclN0eWxlIiwiZ3JpZFRlbXBsYXRlQ29sdW1ucyIsImlzRHVwbGljYXRlZCIsImluZGV4IiwiY3JlYXRlRWxlbWVudCIsInN0eWxlIiwibWFwIiwiaGFzUm93TGFiZWwiLCJyb3dJbmRleCIsIkZyYWdtZW50Iiwia2V5Iiwid2lkdGgiLCJkYW5nZXJvdXNseVNldElubmVySFRNTCIsIl9faHRtbCIsImFsdGVybmF0ZVJlc3BvbnNlSW5kZXgiLCJvbkRlbGV0ZUNob2ljZSIsImRlbGV0ZUNob2ljZUZyb21DYXRlZ29yeSIsImlzQWx0ZXJuYXRlIiwiZXhwb3J0cyIsIlByb3BUeXBlcyIsIm51bWJlciIsImlzUmVxdWlyZWQiLCJvYmplY3QiLCJzaGFwZSIsImFkZCIsImZ1bmMiLCJkZWxldGUiLCJhcnJheSIsImJvb2wiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZXNpZ24vY2F0ZWdvcmllcy9hbHRlcm5hdGVSZXNwb25zZXMuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSAnQG11aS9tYXRlcmlhbC9zdHlsZXMnO1xuaW1wb3J0IHsgcmVtb3ZlQ2hvaWNlRnJvbUFsdGVybmF0ZSB9IGZyb20gJ0BwaWUtbGliL2NhdGVnb3JpemUnO1xuXG5pbXBvcnQgQ2F0ZWdvcnkgZnJvbSAnLi9jYXRlZ29yeSc7XG5cbmNvbnN0IENhdGVnb3JpZXNDb250YWluZXIgPSBzdHlsZWQoJ2RpdicpKCh7IHRoZW1lIH0pID0+ICh7XG4gIG1hcmdpbkJvdHRvbTogdGhlbWUuc3BhY2luZygyLjUpLFxufSkpO1xuXG5jb25zdCBDYXRlZ29yaWVzSG9sZGVyID0gc3R5bGVkKCdkaXYnKSgoeyB0aGVtZSB9KSA9PiAoe1xuICBkaXNwbGF5OiAnZ3JpZCcsXG4gIGdyaWRSb3dHYXA6IGAke3RoZW1lLnNwYWNpbmcoMSl9cHhgLFxuICBncmlkQ29sdW1uR2FwOiBgJHt0aGVtZS5zcGFjaW5nKDEpfXB4YCxcbn0pKTtcblxuY29uc3QgUm93TGFiZWwgPSBzdHlsZWQoJ2RpdicpKHtcbiAgZ3JpZENvbHVtbjogJzEgLyAzJyxcbn0pO1xuXG5leHBvcnQgY2xhc3MgQWx0ZXJuYXRlUmVzcG9uc2VzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBhbHRJbmRleDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICAgIGNvbmZpZ3VyYXRpb246IFByb3BUeXBlcy5vYmplY3QsXG4gICAgaW1hZ2VTdXBwb3J0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgYWRkOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgICAgZGVsZXRlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIH0pLFxuICAgIGNhdGVnb3JpZXM6IFByb3BUeXBlcy5hcnJheSxcbiAgICBvbk1vZGVsQ2hhbmdlZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgbW9kZWw6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICB1cGxvYWRTb3VuZFN1cHBvcnQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBhZGQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICBkZWxldGU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgfSksXG4gICAgc3BlbGxDaGVjazogUHJvcFR5cGVzLmJvb2wsXG4gIH07XG5cblxuICBkZWxldGVDaG9pY2VGcm9tQ2F0ZWdvcnkgPSAoY2F0ZWdvcnksIGNob2ljZSwgY2hvaWNlSW5kZXgpID0+IHtcbiAgICBjb25zdCB7IG1vZGVsLCBhbHRJbmRleCwgb25Nb2RlbENoYW5nZWQgfSA9IHRoaXMucHJvcHM7XG5cbiAgICBjb25zdCBjb3JyZWN0UmVzcG9uc2UgPSByZW1vdmVDaG9pY2VGcm9tQWx0ZXJuYXRlKFxuICAgICAgY2hvaWNlLmlkLFxuICAgICAgY2F0ZWdvcnkuaWQsXG4gICAgICBjaG9pY2VJbmRleCxcbiAgICAgIGFsdEluZGV4LFxuICAgICAgbW9kZWwuY29ycmVjdFJlc3BvbnNlLFxuICAgICk7XG5cbiAgICBvbk1vZGVsQ2hhbmdlZCh7IGNvcnJlY3RSZXNwb25zZSB9KTtcbiAgfTtcblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge1xuICAgICAgYWx0SW5kZXgsXG4gICAgICBtb2RlbCxcbiAgICAgIGNvbmZpZ3VyYXRpb24sXG4gICAgICBjYXRlZ29yaWVzLFxuICAgICAgaW1hZ2VTdXBwb3J0LFxuICAgICAgc3BlbGxDaGVjayxcbiAgICAgIHVwbG9hZFNvdW5kU3VwcG9ydCxcbiAgICAgIG1hdGhNbE9wdGlvbnMgPSB7fSxcbiAgICB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7IGNhdGVnb3JpZXNQZXJSb3csIGVycm9ycywgcm93TGFiZWxzIH0gPSBtb2RlbDtcbiAgICBjb25zdCB7IGR1cGxpY2F0ZUFsdGVybmF0ZSB9ID0gZXJyb3JzIHx8IHt9O1xuXG4gICAgY29uc3QgaG9sZGVyU3R5bGUgPSB7XG4gICAgICBncmlkVGVtcGxhdGVDb2x1bW5zOiBgcmVwZWF0KCR7Y2F0ZWdvcmllc1BlclJvd30sIDFmcilgLFxuICAgIH07XG4gICAgY29uc3QgaXNEdXBsaWNhdGVkID0gZHVwbGljYXRlQWx0ZXJuYXRlID8gZHVwbGljYXRlQWx0ZXJuYXRlLmluZGV4ID09PSBhbHRJbmRleCA6IGZhbHNlO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxDYXRlZ29yaWVzQ29udGFpbmVyPlxuICAgICAgICA8Q2F0ZWdvcmllc0hvbGRlciBzdHlsZT17aG9sZGVyU3R5bGV9PlxuICAgICAgICAgIHtjYXRlZ29yaWVzLm1hcCgoY2F0ZWdvcnksIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBoYXNSb3dMYWJlbCA9IGluZGV4ICUgY2F0ZWdvcmllc1BlclJvdyA9PT0gMDtcbiAgICAgICAgICAgIGNvbnN0IHJvd0luZGV4ID0gaW5kZXggLyBjYXRlZ29yaWVzUGVyUm93O1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8UmVhY3QuRnJhZ21lbnQga2V5PXtpbmRleH0+XG4gICAgICAgICAgICAgICAge2hhc1Jvd0xhYmVsICYmIChcbiAgICAgICAgICAgICAgICAgIDxSb3dMYWJlbFxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgIGdyaWRDb2x1bW46IGAxLyR7Y2F0ZWdvcmllc1BlclJvdyArIDF9YCxcbiAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTD17e1xuICAgICAgICAgICAgICAgICAgICAgIF9faHRtbDogcm93TGFiZWxzW3Jvd0luZGV4XSB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgIDxDYXRlZ29yeVxuICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgIGFsdGVybmF0ZVJlc3BvbnNlSW5kZXg9e2FsdEluZGV4fVxuICAgICAgICAgICAgICAgICAgaW1hZ2VTdXBwb3J0PXtpbWFnZVN1cHBvcnR9XG4gICAgICAgICAgICAgICAgICBpc0R1cGxpY2F0ZWQ9e2lzRHVwbGljYXRlZCAmJiBkdXBsaWNhdGVBbHRlcm5hdGUuY2F0ZWdvcnkgPT09IGNhdGVnb3J5LmlkfVxuICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk9e2NhdGVnb3J5fVxuICAgICAgICAgICAgICAgICAgc3BlbGxDaGVjaz17c3BlbGxDaGVja31cbiAgICAgICAgICAgICAgICAgIG9uRGVsZXRlQ2hvaWNlPXsoY2hvaWNlLCBjaG9pY2VJbmRleCkgPT4gdGhpcy5kZWxldGVDaG9pY2VGcm9tQ2F0ZWdvcnkoY2F0ZWdvcnksIGNob2ljZSwgY2hvaWNlSW5kZXgpfVxuICAgICAgICAgICAgICAgICAgdXBsb2FkU291bmRTdXBwb3J0PXt1cGxvYWRTb3VuZFN1cHBvcnR9XG4gICAgICAgICAgICAgICAgICBtYXRoTWxPcHRpb25zPXttYXRoTWxPcHRpb25zfVxuICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj17Y29uZmlndXJhdGlvbn1cbiAgICAgICAgICAgICAgICAgIGlzQWx0ZXJuYXRlPXt0cnVlfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pfVxuICAgICAgICA8L0NhdGVnb3JpZXNIb2xkZXI+XG4gICAgICA8L0NhdGVnb3JpZXNDb250YWluZXI+XG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBBbHRlcm5hdGVSZXNwb25zZXM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsVUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsV0FBQSxHQUFBSCxPQUFBO0FBRUEsSUFBQUksU0FBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsTUFBTUssbUJBQW1CLEdBQUcsSUFBQUMsY0FBTSxFQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7RUFBRUM7QUFBTSxDQUFDLE1BQU07RUFDeERDLFlBQVksRUFBRUQsS0FBSyxDQUFDRSxPQUFPLENBQUMsR0FBRztBQUNqQyxDQUFDLENBQUMsQ0FBQztBQUVILE1BQU1DLGdCQUFnQixHQUFHLElBQUFKLGNBQU0sRUFBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0VBQUVDO0FBQU0sQ0FBQyxNQUFNO0VBQ3JESSxPQUFPLEVBQUUsTUFBTTtFQUNmQyxVQUFVLEVBQUUsR0FBR0wsS0FBSyxDQUFDRSxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUk7RUFDbkNJLGFBQWEsRUFBRSxHQUFHTixLQUFLLENBQUNFLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDcEMsQ0FBQyxDQUFDLENBQUM7QUFFSCxNQUFNSyxRQUFRLEdBQUcsSUFBQVIsY0FBTSxFQUFDLEtBQUssQ0FBQyxDQUFDO0VBQzdCUyxVQUFVLEVBQUU7QUFDZCxDQUFDLENBQUM7QUFFSyxNQUFNQyxrQkFBa0IsU0FBU0MsY0FBSyxDQUFDQyxTQUFTLENBQUM7RUFBQUMsWUFBQSxHQUFB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