@pie-lib/mask-markup 1.13.46 → 1.15.0-beta.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.
Files changed (76) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/NEXT.CHANGELOG.json +1 -0
  3. package/lib/__tests__/drag-in-the-blank.test.js +71 -0
  4. package/lib/__tests__/index.test.js +50 -0
  5. package/lib/__tests__/mask.test.js +149 -0
  6. package/lib/__tests__/serialization.test.js +45 -0
  7. package/lib/__tests__/utils.js +17 -0
  8. package/lib/__tests__/with-mask.test.js +65 -0
  9. package/lib/choices/__tests__/index.test.js +85 -0
  10. package/lib/choices/choice.js +81 -18
  11. package/lib/choices/index.js +12 -4
  12. package/lib/componentize.js +1 -1
  13. package/lib/components/__tests__/blank.test.js +234 -0
  14. package/lib/components/__tests__/correct-input.test.js +63 -0
  15. package/lib/components/__tests__/dropdown.test.js +70 -0
  16. package/lib/components/__tests__/input.test.js +64 -0
  17. package/lib/components/blank.js +147 -35
  18. package/lib/components/correct-input.js +9 -4
  19. package/lib/components/dropdown.js +183 -50
  20. package/lib/components/input.js +1 -1
  21. package/lib/constructed-response.js +88 -24
  22. package/lib/customizable.js +48 -0
  23. package/lib/drag-in-the-blank.js +35 -9
  24. package/lib/index.js +9 -1
  25. package/lib/inline-dropdown.js +4 -2
  26. package/lib/mask.js +46 -7
  27. package/lib/serialization.js +1 -1
  28. package/lib/with-mask.js +35 -3
  29. package/package.json +5 -5
  30. package/src/__tests__/__snapshots__/drag-in-the-blank.test.js.snap +316 -0
  31. package/src/__tests__/__snapshots__/mask.test.js.snap +55 -0
  32. package/src/__tests__/__snapshots__/with-mask.test.js.snap +62 -0
  33. package/src/__tests__/drag-in-the-blank.test.js +71 -0
  34. package/src/__tests__/index.test.js +39 -0
  35. package/src/__tests__/mask.test.js +152 -0
  36. package/src/__tests__/serialization.test.js +54 -0
  37. package/src/__tests__/utils.js +1 -0
  38. package/src/__tests__/with-mask.test.js +51 -0
  39. package/src/choices/__tests__/__snapshots__/index.test.js.snap +209 -0
  40. package/src/choices/__tests__/index.test.js +62 -0
  41. package/src/choices/choice.jsx +60 -6
  42. package/src/choices/index.jsx +2 -2
  43. package/src/components/__tests__/__snapshots__/blank.test.js.snap +111 -0
  44. package/src/components/__tests__/__snapshots__/correct-input.test.js.snap +64 -0
  45. package/src/components/__tests__/__snapshots__/dropdown.test.js.snap +133 -0
  46. package/src/components/__tests__/__snapshots__/input.test.js.snap +34 -0
  47. package/src/components/__tests__/blank.test.js +202 -0
  48. package/src/components/__tests__/correct-input.test.js +49 -0
  49. package/src/components/__tests__/dropdown.test.js +51 -0
  50. package/src/components/__tests__/input.test.js +50 -0
  51. package/src/components/blank.jsx +139 -28
  52. package/src/components/correct-input.jsx +6 -1
  53. package/src/components/dropdown.jsx +192 -71
  54. package/src/constructed-response.jsx +76 -18
  55. package/src/customizable.jsx +35 -0
  56. package/src/drag-in-the-blank.jsx +26 -3
  57. package/src/index.js +10 -1
  58. package/src/inline-dropdown.jsx +2 -0
  59. package/src/mask.jsx +30 -5
  60. package/src/serialization.js +1 -1
  61. package/src/with-mask.jsx +39 -2
  62. package/README.md +0 -14
  63. package/lib/choices/choice.js.map +0 -1
  64. package/lib/choices/index.js.map +0 -1
  65. package/lib/componentize.js.map +0 -1
  66. package/lib/components/blank.js.map +0 -1
  67. package/lib/components/correct-input.js.map +0 -1
  68. package/lib/components/dropdown.js.map +0 -1
  69. package/lib/components/input.js.map +0 -1
  70. package/lib/constructed-response.js.map +0 -1
  71. package/lib/drag-in-the-blank.js.map +0 -1
  72. package/lib/index.js.map +0 -1
  73. package/lib/inline-dropdown.js.map +0 -1
  74. package/lib/mask.js.map +0 -1
  75. package/lib/serialization.js.map +0 -1
  76. package/lib/with-mask.js.map +0 -1
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ var React = _interopRequireWildcard(require("react"));
8
+
9
+ var _enzyme = require("enzyme");
10
+
11
+ var _utils = require("../../__tests__/utils");
12
+
13
+ var _dropdown = _interopRequireDefault(require("../dropdown"));
14
+
15
+ 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); }
16
+
17
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
18
+
19
+ describe('Dropdown', function () {
20
+ var onChange = jest.fn();
21
+ var defaultProps = {
22
+ onChange: onChange,
23
+ id: '1',
24
+ correct: false,
25
+ disabled: false,
26
+ value: 'Jumped',
27
+ choices: [(0, _utils.choice)('Jumped'), (0, _utils.choice)('Laughed'), (0, _utils.choice)('Smiled')]
28
+ };
29
+ var wrapper;
30
+ beforeEach(function () {
31
+ wrapper = (0, _enzyme.shallow)( /*#__PURE__*/React.createElement(_dropdown["default"], defaultProps));
32
+ });
33
+ describe('render', function () {
34
+ it('renders correctly with default props', function () {
35
+ expect(wrapper).toMatchSnapshot();
36
+ });
37
+ it('renders correctly with disabled prop as true', function () {
38
+ wrapper.setProps({
39
+ disabled: true
40
+ });
41
+ expect(wrapper).toMatchSnapshot();
42
+ });
43
+ it('renders correctly with correct as true', function () {
44
+ wrapper.setProps({
45
+ correct: true
46
+ });
47
+ expect(wrapper).toMatchSnapshot();
48
+ });
49
+ });
50
+ describe('onChange', function () {
51
+ var event = function event(value) {
52
+ return {
53
+ target: {
54
+ value: value
55
+ }
56
+ };
57
+ };
58
+
59
+ it('should be called with an appropriate value', function () {
60
+ var e = event('Laughed');
61
+ wrapper.simulate('change', e);
62
+ expect(onChange).toHaveBeenCalledWith({
63
+ target: {
64
+ value: e.target.value
65
+ }
66
+ });
67
+ });
68
+ });
69
+ });
70
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL19fdGVzdHNfXy9kcm9wZG93bi50ZXN0LmpzIl0sIm5hbWVzIjpbImRlc2NyaWJlIiwib25DaGFuZ2UiLCJqZXN0IiwiZm4iLCJkZWZhdWx0UHJvcHMiLCJpZCIsImNvcnJlY3QiLCJkaXNhYmxlZCIsInZhbHVlIiwiY2hvaWNlcyIsIndyYXBwZXIiLCJiZWZvcmVFYWNoIiwiaXQiLCJleHBlY3QiLCJ0b01hdGNoU25hcHNob3QiLCJzZXRQcm9wcyIsImV2ZW50IiwidGFyZ2V0IiwiZSIsInNpbXVsYXRlIiwidG9IYXZlQmVlbkNhbGxlZFdpdGgiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7QUFFQUEsUUFBUSxDQUFDLFVBQUQsRUFBYSxZQUFNO0FBQ3pCLE1BQU1DLFFBQVEsR0FBR0MsSUFBSSxDQUFDQyxFQUFMLEVBQWpCO0FBQ0EsTUFBTUMsWUFBWSxHQUFHO0FBQ25CSCxJQUFBQSxRQUFRLEVBQVJBLFFBRG1CO0FBRW5CSSxJQUFBQSxFQUFFLEVBQUUsR0FGZTtBQUduQkMsSUFBQUEsT0FBTyxFQUFFLEtBSFU7QUFJbkJDLElBQUFBLFFBQVEsRUFBRSxLQUpTO0FBS25CQyxJQUFBQSxLQUFLLEVBQUUsUUFMWTtBQU1uQkMsSUFBQUEsT0FBTyxFQUFFLENBQUMsbUJBQU8sUUFBUCxDQUFELEVBQW1CLG1CQUFPLFNBQVAsQ0FBbkIsRUFBc0MsbUJBQU8sUUFBUCxDQUF0QztBQU5VLEdBQXJCO0FBUUEsTUFBSUMsT0FBSjtBQUVBQyxFQUFBQSxVQUFVLENBQUMsWUFBTTtBQUNmRCxJQUFBQSxPQUFPLEdBQUcsbUNBQVEsb0JBQUMsb0JBQUQsRUFBY04sWUFBZCxDQUFSLENBQVY7QUFDRCxHQUZTLENBQVY7QUFJQUosRUFBQUEsUUFBUSxDQUFDLFFBQUQsRUFBVyxZQUFNO0FBQ3ZCWSxJQUFBQSxFQUFFLENBQUMsc0NBQUQsRUFBeUMsWUFBTTtBQUMvQ0MsTUFBQUEsTUFBTSxDQUFDSCxPQUFELENBQU4sQ0FBZ0JJLGVBQWhCO0FBQ0QsS0FGQyxDQUFGO0FBSUFGLElBQUFBLEVBQUUsQ0FBQyw4Q0FBRCxFQUFpRCxZQUFNO0FBQ3ZERixNQUFBQSxPQUFPLENBQUNLLFFBQVIsQ0FBaUI7QUFBRVIsUUFBQUEsUUFBUSxFQUFFO0FBQVosT0FBakI7QUFDQU0sTUFBQUEsTUFBTSxDQUFDSCxPQUFELENBQU4sQ0FBZ0JJLGVBQWhCO0FBQ0QsS0FIQyxDQUFGO0FBS0FGLElBQUFBLEVBQUUsQ0FBQyx3Q0FBRCxFQUEyQyxZQUFNO0FBQ2pERixNQUFBQSxPQUFPLENBQUNLLFFBQVIsQ0FBaUI7QUFBRVQsUUFBQUEsT0FBTyxFQUFFO0FBQVgsT0FBakI7QUFDQU8sTUFBQUEsTUFBTSxDQUFDSCxPQUFELENBQU4sQ0FBZ0JJLGVBQWhCO0FBQ0QsS0FIQyxDQUFGO0FBSUQsR0FkTyxDQUFSO0FBZ0JBZCxFQUFBQSxRQUFRLENBQUMsVUFBRCxFQUFhLFlBQU07QUFDekIsUUFBTWdCLEtBQUssR0FBRyxTQUFSQSxLQUFRLENBQUNSLEtBQUQ7QUFBQSxhQUFZO0FBQ3hCUyxRQUFBQSxNQUFNLEVBQUU7QUFBRVQsVUFBQUEsS0FBSyxFQUFMQTtBQUFGO0FBRGdCLE9BQVo7QUFBQSxLQUFkOztBQUlBSSxJQUFBQSxFQUFFLENBQUMsNENBQUQsRUFBK0MsWUFBTTtBQUNyRCxVQUFNTSxDQUFDLEdBQUdGLEtBQUssQ0FBQyxTQUFELENBQWY7QUFFQU4sTUFBQUEsT0FBTyxDQUFDUyxRQUFSLENBQWlCLFFBQWpCLEVBQTJCRCxDQUEzQjtBQUVBTCxNQUFBQSxNQUFNLENBQUNaLFFBQUQsQ0FBTixDQUFpQm1CLG9CQUFqQixDQUFzQztBQUFFSCxRQUFBQSxNQUFNLEVBQUU7QUFBRVQsVUFBQUEsS0FBSyxFQUFFVSxDQUFDLENBQUNELE1BQUYsQ0FBU1Q7QUFBbEI7QUFBVixPQUF0QztBQUNELEtBTkMsQ0FBRjtBQU9ELEdBWk8sQ0FBUjtBQWFELENBN0NPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBzaGFsbG93IH0gZnJvbSAnZW56eW1lJztcbmltcG9ydCB7IGNob2ljZSB9IGZyb20gJy4uLy4uL19fdGVzdHNfXy91dGlscyc7XG5pbXBvcnQgRHJvcGRvd24gZnJvbSAnLi4vZHJvcGRvd24nO1xuXG5kZXNjcmliZSgnRHJvcGRvd24nLCAoKSA9PiB7XG4gIGNvbnN0IG9uQ2hhbmdlID0gamVzdC5mbigpO1xuICBjb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gICAgb25DaGFuZ2UsXG4gICAgaWQ6ICcxJyxcbiAgICBjb3JyZWN0OiBmYWxzZSxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgdmFsdWU6ICdKdW1wZWQnLFxuICAgIGNob2ljZXM6IFtjaG9pY2UoJ0p1bXBlZCcpLCBjaG9pY2UoJ0xhdWdoZWQnKSwgY2hvaWNlKCdTbWlsZWQnKV0sXG4gIH07XG4gIGxldCB3cmFwcGVyO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIHdyYXBwZXIgPSBzaGFsbG93KDxEcm9wZG93biB7Li4uZGVmYXVsdFByb3BzfSAvPik7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyZW5kZXInLCAoKSA9PiB7XG4gICAgaXQoJ3JlbmRlcnMgY29ycmVjdGx5IHdpdGggZGVmYXVsdCBwcm9wcycsICgpID0+IHtcbiAgICAgIGV4cGVjdCh3cmFwcGVyKS50b01hdGNoU25hcHNob3QoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIGNvcnJlY3RseSB3aXRoIGRpc2FibGVkIHByb3AgYXMgdHJ1ZScsICgpID0+IHtcbiAgICAgIHdyYXBwZXIuc2V0UHJvcHMoeyBkaXNhYmxlZDogdHJ1ZSB9KTtcbiAgICAgIGV4cGVjdCh3cmFwcGVyKS50b01hdGNoU25hcHNob3QoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIGNvcnJlY3RseSB3aXRoIGNvcnJlY3QgYXMgdHJ1ZScsICgpID0+IHtcbiAgICAgIHdyYXBwZXIuc2V0UHJvcHMoeyBjb3JyZWN0OiB0cnVlIH0pO1xuICAgICAgZXhwZWN0KHdyYXBwZXIpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnb25DaGFuZ2UnLCAoKSA9PiB7XG4gICAgY29uc3QgZXZlbnQgPSAodmFsdWUpID0+ICh7XG4gICAgICB0YXJnZXQ6IHsgdmFsdWUgfSxcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYmUgY2FsbGVkIHdpdGggYW4gYXBwcm9wcmlhdGUgdmFsdWUnLCAoKSA9PiB7XG4gICAgICBjb25zdCBlID0gZXZlbnQoJ0xhdWdoZWQnKTtcblxuICAgICAgd3JhcHBlci5zaW11bGF0ZSgnY2hhbmdlJywgZSk7XG5cbiAgICAgIGV4cGVjdChvbkNoYW5nZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoeyB0YXJnZXQ6IHsgdmFsdWU6IGUudGFyZ2V0LnZhbHVlIH0gfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ var React = _interopRequireWildcard(require("react"));
8
+
9
+ var _enzyme = require("enzyme");
10
+
11
+ var _input = _interopRequireDefault(require("../input"));
12
+
13
+ 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); }
14
+
15
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
16
+
17
+ describe('Input', function () {
18
+ var onChange = jest.fn();
19
+ var defaultProps = {
20
+ disabled: false,
21
+ correct: false,
22
+ variant: 'outlined',
23
+ value: 'Cow',
24
+ id: '1',
25
+ onChange: onChange
26
+ };
27
+ var wrapper;
28
+ beforeEach(function () {
29
+ wrapper = (0, _enzyme.shallow)( /*#__PURE__*/React.createElement(_input["default"], defaultProps));
30
+ });
31
+ describe('render', function () {
32
+ it('renders correctly with default props', function () {
33
+ expect(wrapper).toMatchSnapshot();
34
+ });
35
+ it('renders correctly with disabled prop as true', function () {
36
+ wrapper.setProps({
37
+ disabled: true
38
+ });
39
+ expect(wrapper).toMatchSnapshot();
40
+ });
41
+ it('renders correctly with correct as false', function () {
42
+ wrapper.setProps({
43
+ correct: false
44
+ });
45
+ expect(wrapper).toMatchSnapshot();
46
+ });
47
+ });
48
+ describe('onChange', function () {
49
+ var event = function event(value) {
50
+ return {
51
+ target: {
52
+ value: value
53
+ }
54
+ };
55
+ };
56
+
57
+ it('should be called', function () {
58
+ var e = event('20');
59
+ wrapper.simulate('change', e);
60
+ expect(onChange).toHaveBeenCalledWith('1', e.target.value);
61
+ });
62
+ });
63
+ });
64
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL19fdGVzdHNfXy9pbnB1dC50ZXN0LmpzIl0sIm5hbWVzIjpbImRlc2NyaWJlIiwib25DaGFuZ2UiLCJqZXN0IiwiZm4iLCJkZWZhdWx0UHJvcHMiLCJkaXNhYmxlZCIsImNvcnJlY3QiLCJ2YXJpYW50IiwidmFsdWUiLCJpZCIsIndyYXBwZXIiLCJiZWZvcmVFYWNoIiwiaXQiLCJleHBlY3QiLCJ0b01hdGNoU25hcHNob3QiLCJzZXRQcm9wcyIsImV2ZW50IiwidGFyZ2V0IiwiZSIsInNpbXVsYXRlIiwidG9IYXZlQmVlbkNhbGxlZFdpdGgiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOztBQUNBOztBQUNBOzs7Ozs7QUFFQUEsUUFBUSxDQUFDLE9BQUQsRUFBVSxZQUFNO0FBQ3RCLE1BQU1DLFFBQVEsR0FBR0MsSUFBSSxDQUFDQyxFQUFMLEVBQWpCO0FBQ0EsTUFBTUMsWUFBWSxHQUFHO0FBQ25CQyxJQUFBQSxRQUFRLEVBQUUsS0FEUztBQUVuQkMsSUFBQUEsT0FBTyxFQUFFLEtBRlU7QUFHbkJDLElBQUFBLE9BQU8sRUFBRSxVQUhVO0FBSW5CQyxJQUFBQSxLQUFLLEVBQUUsS0FKWTtBQUtuQkMsSUFBQUEsRUFBRSxFQUFFLEdBTGU7QUFNbkJSLElBQUFBLFFBQVEsRUFBUkE7QUFObUIsR0FBckI7QUFRQSxNQUFJUyxPQUFKO0FBRUFDLEVBQUFBLFVBQVUsQ0FBQyxZQUFNO0FBQ2ZELElBQUFBLE9BQU8sR0FBRyxtQ0FBUSxvQkFBQyxpQkFBRCxFQUFXTixZQUFYLENBQVIsQ0FBVjtBQUNELEdBRlMsQ0FBVjtBQUlBSixFQUFBQSxRQUFRLENBQUMsUUFBRCxFQUFXLFlBQU07QUFDdkJZLElBQUFBLEVBQUUsQ0FBQyxzQ0FBRCxFQUF5QyxZQUFNO0FBQy9DQyxNQUFBQSxNQUFNLENBQUNILE9BQUQsQ0FBTixDQUFnQkksZUFBaEI7QUFDRCxLQUZDLENBQUY7QUFJQUYsSUFBQUEsRUFBRSxDQUFDLDhDQUFELEVBQWlELFlBQU07QUFDdkRGLE1BQUFBLE9BQU8sQ0FBQ0ssUUFBUixDQUFpQjtBQUFFVixRQUFBQSxRQUFRLEVBQUU7QUFBWixPQUFqQjtBQUNBUSxNQUFBQSxNQUFNLENBQUNILE9BQUQsQ0FBTixDQUFnQkksZUFBaEI7QUFDRCxLQUhDLENBQUY7QUFLQUYsSUFBQUEsRUFBRSxDQUFDLHlDQUFELEVBQTRDLFlBQU07QUFDbERGLE1BQUFBLE9BQU8sQ0FBQ0ssUUFBUixDQUFpQjtBQUFFVCxRQUFBQSxPQUFPLEVBQUU7QUFBWCxPQUFqQjtBQUNBTyxNQUFBQSxNQUFNLENBQUNILE9BQUQsQ0FBTixDQUFnQkksZUFBaEI7QUFDRCxLQUhDLENBQUY7QUFJRCxHQWRPLENBQVI7QUFnQkFkLEVBQUFBLFFBQVEsQ0FBQyxVQUFELEVBQWEsWUFBTTtBQUN6QixRQUFNZ0IsS0FBSyxHQUFHLFNBQVJBLEtBQVEsQ0FBQ1IsS0FBRDtBQUFBLGFBQVk7QUFDeEJTLFFBQUFBLE1BQU0sRUFBRTtBQUFFVCxVQUFBQSxLQUFLLEVBQUxBO0FBQUY7QUFEZ0IsT0FBWjtBQUFBLEtBQWQ7O0FBSUFJLElBQUFBLEVBQUUsQ0FBQyxrQkFBRCxFQUFxQixZQUFNO0FBQzNCLFVBQU1NLENBQUMsR0FBR0YsS0FBSyxDQUFDLElBQUQsQ0FBZjtBQUVBTixNQUFBQSxPQUFPLENBQUNTLFFBQVIsQ0FBaUIsUUFBakIsRUFBMkJELENBQTNCO0FBRUFMLE1BQUFBLE1BQU0sQ0FBQ1osUUFBRCxDQUFOLENBQWlCbUIsb0JBQWpCLENBQXNDLEdBQXRDLEVBQTJDRixDQUFDLENBQUNELE1BQUYsQ0FBU1QsS0FBcEQ7QUFDRCxLQU5DLENBQUY7QUFPRCxHQVpPLENBQVI7QUFhRCxDQTdDTyxDQUFSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgc2hhbGxvdyB9IGZyb20gJ2VuenltZSc7XG5pbXBvcnQgSW5wdXQgZnJvbSAnLi4vaW5wdXQnO1xuXG5kZXNjcmliZSgnSW5wdXQnLCAoKSA9PiB7XG4gIGNvbnN0IG9uQ2hhbmdlID0gamVzdC5mbigpO1xuICBjb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGNvcnJlY3Q6IGZhbHNlLFxuICAgIHZhcmlhbnQ6ICdvdXRsaW5lZCcsXG4gICAgdmFsdWU6ICdDb3cnLFxuICAgIGlkOiAnMScsXG4gICAgb25DaGFuZ2UsXG4gIH07XG4gIGxldCB3cmFwcGVyO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIHdyYXBwZXIgPSBzaGFsbG93KDxJbnB1dCB7Li4uZGVmYXVsdFByb3BzfSAvPik7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyZW5kZXInLCAoKSA9PiB7XG4gICAgaXQoJ3JlbmRlcnMgY29ycmVjdGx5IHdpdGggZGVmYXVsdCBwcm9wcycsICgpID0+IHtcbiAgICAgIGV4cGVjdCh3cmFwcGVyKS50b01hdGNoU25hcHNob3QoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIGNvcnJlY3RseSB3aXRoIGRpc2FibGVkIHByb3AgYXMgdHJ1ZScsICgpID0+IHtcbiAgICAgIHdyYXBwZXIuc2V0UHJvcHMoeyBkaXNhYmxlZDogdHJ1ZSB9KTtcbiAgICAgIGV4cGVjdCh3cmFwcGVyKS50b01hdGNoU25hcHNob3QoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIGNvcnJlY3RseSB3aXRoIGNvcnJlY3QgYXMgZmFsc2UnLCAoKSA9PiB7XG4gICAgICB3cmFwcGVyLnNldFByb3BzKHsgY29ycmVjdDogZmFsc2UgfSk7XG4gICAgICBleHBlY3Qod3JhcHBlcikudG9NYXRjaFNuYXBzaG90KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdvbkNoYW5nZScsICgpID0+IHtcbiAgICBjb25zdCBldmVudCA9ICh2YWx1ZSkgPT4gKHtcbiAgICAgIHRhcmdldDogeyB2YWx1ZSB9LFxuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBiZSBjYWxsZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBlID0gZXZlbnQoJzIwJyk7XG5cbiAgICAgIHdyYXBwZXIuc2ltdWxhdGUoJ2NoYW5nZScsIGUpO1xuXG4gICAgICBleHBlY3Qob25DaGFuZ2UpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCcxJywgZS50YXJnZXQudmFsdWUpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -13,6 +13,8 @@ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/cl
13
13
 
14
14
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
15
 
16
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
17
+
16
18
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
19
 
18
20
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
@@ -21,6 +23,8 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/ge
21
23
 
22
24
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
23
25
 
26
+ var _grey = _interopRequireDefault(require("@material-ui/core/colors/grey"));
27
+
24
28
  var _react = _interopRequireDefault(require("react"));
25
29
 
26
30
  var _reactDom = _interopRequireDefault(require("react-dom"));
@@ -60,21 +64,21 @@ var useStyles = (0, _styles.withStyles)(function () {
60
64
  border: "solid 0px ".concat(_renderUi.color.primary()),
61
65
  minWidth: '200px',
62
66
  touchAction: 'none',
63
- overflow: 'hidden'
67
+ overflow: 'hidden',
68
+ whiteSpace: 'nowrap' // Prevent line wrapping
69
+
64
70
  },
65
71
  chip: {
66
72
  backgroundColor: _renderUi.color.background(),
67
- border: "1px solid ".concat(_renderUi.color.text()),
73
+ border: "2px dashed ".concat(_renderUi.color.text()),
68
74
  color: _renderUi.color.text(),
69
- minWidth: '90px',
70
75
  fontSize: 'inherit',
71
- minHeight: '32px',
72
- height: 'auto',
73
76
  maxWidth: '374px',
74
- position: 'relative'
77
+ position: 'relative',
78
+ borderRadius: '3px'
75
79
  },
76
80
  chipLabel: {
77
- whiteSpace: 'pre-wrap',
81
+ whiteSpace: 'normal',
78
82
  // Added for touch devices, for image content.
79
83
  // This will prevent the context menu from appearing and not allowing other interactions with the image.
80
84
  // If interactions with the image in the token will be requested we should handle only the context Menu.
@@ -82,6 +86,16 @@ var useStyles = (0, _styles.withStyles)(function () {
82
86
  '& img': {
83
87
  display: 'block',
84
88
  padding: '2px 0'
89
+ },
90
+ // Remove default <p> margins to ensure consistent spacing across all wrapped content (p, span, div, math)
91
+ // Padding for top and bottom will instead be controlled by the container for consistent layout
92
+ // Ensures consistent behavior with pie-api-browser, where marginTop is already removed by a Bootstrap stylesheet
93
+ '& p': {
94
+ marginTop: '0',
95
+ marginBottom: '0'
96
+ },
97
+ '& mjx-frac': {
98
+ fontSize: '120% !important'
85
99
  }
86
100
  },
87
101
  hidden: {
@@ -102,6 +116,10 @@ var useStyles = (0, _styles.withStyles)(function () {
102
116
  over: {
103
117
  whiteSpace: 'nowrap',
104
118
  overflow: 'hidden'
119
+ },
120
+ parentOver: {
121
+ border: "1px solid ".concat(_grey["default"][500]),
122
+ backgroundColor: "".concat(_grey["default"][300])
105
123
  }
106
124
  };
107
125
  });
@@ -116,17 +134,61 @@ var BlankContent = /*#__PURE__*/function (_React$Component) {
116
134
 
117
135
  (0, _classCallCheck2["default"])(this, BlankContent);
118
136
  _this = _super.call(this);
137
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleImageLoad", function () {
138
+ _this.updateDimensions();
139
+ });
140
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleTouchStart", function (e) {
141
+ e.preventDefault();
142
+ _this.touchStartTimer = setTimeout(function () {
143
+ _this.startDrag();
144
+ }, 300); // Start drag after 300ms (touch and hold duration)
145
+ });
146
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "startDrag", function () {
147
+ var _this$props = _this.props,
148
+ connectDragSource = _this$props.connectDragSource,
149
+ disabled = _this$props.disabled;
150
+
151
+ if (!disabled) {
152
+ connectDragSource(_this.rootRef);
153
+ }
154
+ });
119
155
  _this.state = {
120
- height: 0
156
+ height: 0,
157
+ width: 0
121
158
  };
122
159
  return _this;
123
160
  }
124
161
 
125
162
  (0, _createClass2["default"])(BlankContent, [{
163
+ key: "handleElements",
164
+ value: function handleElements() {
165
+ var _this$spanRef,
166
+ _this2 = this;
167
+
168
+ var imageElement = (_this$spanRef = this.spanRef) === null || _this$spanRef === void 0 ? void 0 : _this$spanRef.querySelector('img');
169
+
170
+ if (imageElement) {
171
+ imageElement.onload = this.handleImageLoad;
172
+ } else {
173
+ setTimeout(function () {
174
+ _this2.updateDimensions();
175
+ }, 300);
176
+ }
177
+ }
178
+ }, {
179
+ key: "componentDidMount",
180
+ value: function componentDidMount() {
181
+ this.handleElements();
182
+
183
+ if (this.rootRef) {
184
+ this.rootRef.addEventListener('touchstart', this.handleTouchStart, {
185
+ passive: false
186
+ });
187
+ }
188
+ }
189
+ }, {
126
190
  key: "componentDidUpdate",
127
191
  value: function componentDidUpdate(prevProps) {
128
- var _this2 = this;
129
-
130
192
  (0, _mathRendering.renderMath)(this.rootRef);
131
193
  var currentChoice = this.props.choice;
132
194
  var prevChoice = prevProps.choice;
@@ -134,16 +196,47 @@ var BlankContent = /*#__PURE__*/function (_React$Component) {
134
196
  if (JSON.stringify(currentChoice) !== JSON.stringify(prevChoice)) {
135
197
  if (!currentChoice) {
136
198
  this.setState({
137
- height: 0
199
+ height: 0,
200
+ width: 0
138
201
  });
139
202
  return;
140
203
  }
141
204
 
142
- setTimeout(function () {
143
- _this2.setState({
144
- height: _this2.spanRef.offsetHeight
145
- });
146
- }, 300);
205
+ this.handleElements();
206
+ }
207
+ }
208
+ }, {
209
+ key: "componentWillUnmount",
210
+ value: function componentWillUnmount() {
211
+ if (this.rootRef) {
212
+ this.rootRef.removeEventListener('touchstart', this.handleTouchStart);
213
+ }
214
+ }
215
+ }, {
216
+ key: "updateDimensions",
217
+ value: function updateDimensions() {
218
+ if (this.spanRef && this.rootRef) {
219
+ // Temporarily set rootRef width to 'auto' for natural measurement
220
+ this.rootRef.style.width = 'auto'; // Get the natural dimensions of the content
221
+
222
+ var width = this.spanRef.offsetWidth || 0;
223
+ var height = this.spanRef.offsetHeight || 0;
224
+ var widthWithPadding = width + 24; // 12px padding on each side
225
+
226
+ var heightWithPadding = height + 24; // 12px padding on top and bottom
227
+
228
+ var responseAreaWidth = parseFloat(this.props.emptyResponseAreaWidth) || 0;
229
+ var responseAreaHeight = parseFloat(this.props.emptyResponseAreaHeight) || 0;
230
+ var adjustedWidth = widthWithPadding <= responseAreaWidth ? responseAreaWidth : widthWithPadding;
231
+ var adjustedHeight = heightWithPadding <= responseAreaHeight ? responseAreaHeight : heightWithPadding;
232
+ this.setState(function (prevState) {
233
+ return {
234
+ width: adjustedWidth > responseAreaWidth ? adjustedWidth : prevState.width,
235
+ height: adjustedHeight > responseAreaHeight ? adjustedHeight : prevState.height
236
+ };
237
+ });
238
+ this.rootRef.style.width = "".concat(adjustedWidth, "px");
239
+ this.rootRef.style.height = "".concat(adjustedHeight, "px");
147
240
  }
148
241
  }
149
242
  }, {
@@ -155,19 +248,37 @@ var BlankContent = /*#__PURE__*/function (_React$Component) {
155
248
  }
156
249
  });
157
250
  }
251
+ }, {
252
+ key: "getRootDimensions",
253
+ value: function getRootDimensions() {
254
+ // Handle potential non-numeric values
255
+ var responseAreaWidth = !isNaN(parseFloat(this.props.emptyResponseAreaWidth)) ? parseFloat(this.props.emptyResponseAreaWidth) : 0;
256
+ var responseAreaHeight = !isNaN(parseFloat(this.props.emptyResponseAreaHeight)) ? parseFloat(this.props.emptyResponseAreaHeight) : 0;
257
+ var rootStyle = {
258
+ height: this.state.height || responseAreaHeight,
259
+ width: this.state.width || responseAreaWidth
260
+ }; // add minWidth, minHeight if width and height are not defined
261
+ // minWidth, minHeight will be also in model in the future
262
+
263
+ return _objectSpread(_objectSpread(_objectSpread({}, rootStyle), responseAreaWidth ? {} : {
264
+ minWidth: 90
265
+ }), responseAreaHeight ? {} : {
266
+ minHeight: 32
267
+ });
268
+ }
158
269
  }, {
159
270
  key: "render",
160
271
  value: function render() {
161
272
  var _this3 = this,
162
273
  _classnames2;
163
274
 
164
- var _this$props = this.props,
165
- disabled = _this$props.disabled,
166
- choice = _this$props.choice,
167
- classes = _this$props.classes,
168
- isOver = _this$props.isOver,
169
- dragItem = _this$props.dragItem,
170
- correct = _this$props.correct;
275
+ var _this$props2 = this.props,
276
+ disabled = _this$props2.disabled,
277
+ choice = _this$props2.choice,
278
+ classes = _this$props2.classes,
279
+ isOver = _this$props2.isOver,
280
+ dragItem = _this$props2.dragItem,
281
+ correct = _this$props2.correct;
171
282
  var draggedLabel = dragItem && isOver && dragItem.choice.value;
172
283
  var label = choice && choice.value;
173
284
  return (
@@ -204,14 +315,9 @@ var BlankContent = /*#__PURE__*/function (_React$Component) {
204
315
  }
205
316
  }
206
317
  }, ' ')),
207
- className: (0, _classnames3["default"])(classes.chip, isOver && classes.over, (_classnames2 = {}, (0, _defineProperty2["default"])(_classnames2, classes.correct, correct !== undefined && correct), (0, _defineProperty2["default"])(_classnames2, classes.incorrect, correct !== undefined && !correct), _classnames2)),
318
+ className: (0, _classnames3["default"])(classes.chip, isOver && classes.over, isOver && classes.parentOver, (_classnames2 = {}, (0, _defineProperty2["default"])(_classnames2, classes.correct, correct !== undefined && correct), (0, _defineProperty2["default"])(_classnames2, classes.incorrect, correct !== undefined && !correct), _classnames2)),
208
319
  variant: disabled ? 'outlined' : undefined,
209
- style: _objectSpread({}, this.state.height ? {
210
- height: this.state.height
211
- } : {}),
212
- classes: {
213
- label: isOver && classes.over
214
- }
320
+ style: _objectSpread({}, this.getRootDimensions())
215
321
  })
216
322
  );
217
323
  }
@@ -220,7 +326,11 @@ var BlankContent = /*#__PURE__*/function (_React$Component) {
220
326
  }(_react["default"].Component);
221
327
 
222
328
  exports.BlankContent = BlankContent;
223
- (0, _defineProperty2["default"])(BlankContent, "propTypes", {
329
+ BlankContent.defaultProps = {
330
+ emptyResponseAreaWidth: 0,
331
+ emptyResponseAreaHeight: 0
332
+ };
333
+ BlankContent.propTypes = {
224
334
  id: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
225
335
  disabled: _propTypes["default"].bool,
226
336
  duplicates: _propTypes["default"].bool,
@@ -229,8 +339,10 @@ exports.BlankContent = BlankContent;
229
339
  isOver: _propTypes["default"].bool,
230
340
  dragItem: _propTypes["default"].object,
231
341
  correct: _propTypes["default"].bool,
232
- onChange: _propTypes["default"].func
233
- });
342
+ onChange: _propTypes["default"].func,
343
+ emptyResponseAreaWidth: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
344
+ emptyResponseAreaHeight: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number])
345
+ };
234
346
  var StyledBlankContent = useStyles(BlankContent);
235
347
  var connectedBlankContent = useStyles(function (_ref4) {
236
348
  var connectDragSource = _ref4.connectDragSource,
@@ -283,7 +395,7 @@ var tileSource = {
283
395
  // this will be null if it did not drop
284
396
  var dropResult = monitor.getDropResult();
285
397
 
286
- if (!dropResult || dropResult.dropped && !props.duplicates) {
398
+ if (!dropResult || dropResult.dropped) {
287
399
  var draggedItem = monitor.getItem();
288
400
 
289
401
  if (draggedItem.fromChoice) {
@@ -300,4 +412,4 @@ var DragDropTile = (0, _drag.DragSource)(DRAG_TYPE, tileSource, function (connec
300
412
  })(DropTile);
301
413
  var _default = DragDropTile;
302
414
  exports["default"] = _default;
303
- //# sourceMappingURL=blank.js.map
415
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL2JsYW5rLmpzeCJdLCJuYW1lcyI6WyJsb2ciLCJEUkFHX1RZUEUiLCJ1c2VTdHlsZXMiLCJjb250ZW50IiwiYm9yZGVyIiwiY29sb3IiLCJwcmltYXJ5IiwibWluV2lkdGgiLCJ0b3VjaEFjdGlvbiIsIm92ZXJmbG93Iiwid2hpdGVTcGFjZSIsImNoaXAiLCJiYWNrZ3JvdW5kQ29sb3IiLCJiYWNrZ3JvdW5kIiwidGV4dCIsImZvbnRTaXplIiwibWF4V2lkdGgiLCJwb3NpdGlvbiIsImJvcmRlclJhZGl1cyIsImNoaXBMYWJlbCIsInBvaW50ZXJFdmVudHMiLCJkaXNwbGF5IiwicGFkZGluZyIsIm1hcmdpblRvcCIsIm1hcmdpbkJvdHRvbSIsImhpZGRlbiIsIm9wYWNpdHkiLCJkcmFnZ2VkIiwibGVmdCIsImNvcnJlY3QiLCJpbmNvcnJlY3QiLCJvdmVyIiwicGFyZW50T3ZlciIsImdyZXkiLCJCbGFua0NvbnRlbnQiLCJ1cGRhdGVEaW1lbnNpb25zIiwiZSIsInByZXZlbnREZWZhdWx0IiwidG91Y2hTdGFydFRpbWVyIiwic2V0VGltZW91dCIsInN0YXJ0RHJhZyIsInByb3BzIiwiY29ubmVjdERyYWdTb3VyY2UiLCJkaXNhYmxlZCIsInJvb3RSZWYiLCJzdGF0ZSIsImhlaWdodCIsIndpZHRoIiwiaW1hZ2VFbGVtZW50Iiwic3BhblJlZiIsInF1ZXJ5U2VsZWN0b3IiLCJvbmxvYWQiLCJoYW5kbGVJbWFnZUxvYWQiLCJoYW5kbGVFbGVtZW50cyIsImFkZEV2ZW50TGlzdGVuZXIiLCJoYW5kbGVUb3VjaFN0YXJ0IiwicGFzc2l2ZSIsInByZXZQcm9wcyIsImN1cnJlbnRDaG9pY2UiLCJjaG9pY2UiLCJwcmV2Q2hvaWNlIiwiSlNPTiIsInN0cmluZ2lmeSIsInNldFN0YXRlIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInN0eWxlIiwib2Zmc2V0V2lkdGgiLCJvZmZzZXRIZWlnaHQiLCJ3aWR0aFdpdGhQYWRkaW5nIiwiaGVpZ2h0V2l0aFBhZGRpbmciLCJyZXNwb25zZUFyZWFXaWR0aCIsInBhcnNlRmxvYXQiLCJlbXB0eVJlc3BvbnNlQXJlYVdpZHRoIiwicmVzcG9uc2VBcmVhSGVpZ2h0IiwiZW1wdHlSZXNwb25zZUFyZWFIZWlnaHQiLCJhZGp1c3RlZFdpZHRoIiwiYWRqdXN0ZWRIZWlnaHQiLCJwcmV2U3RhdGUiLCJwYXJlbnQiLCJjaGlsZE5vZGVzIiwiZm9yRWFjaCIsImVsZW0iLCJFbGVtZW50IiwiSFRNTERvY3VtZW50Iiwic2V0QXR0cmlidXRlIiwiaXNOYU4iLCJyb290U3R5bGUiLCJtaW5IZWlnaHQiLCJjbGFzc2VzIiwiaXNPdmVyIiwiZHJhZ0l0ZW0iLCJkcmFnZ2VkTGFiZWwiLCJ2YWx1ZSIsImxhYmVsIiwicmVmIiwiUmVhY3RET00iLCJmaW5kRE9NTm9kZSIsImlubmVySFRNTCIsImFkZERyYWdnYWJsZUZhbHNlQXR0cmlidXRlcyIsInVuZGVmaW5lZCIsImdldFJvb3REaW1lbnNpb25zIiwiUmVhY3QiLCJDb21wb25lbnQiLCJkZWZhdWx0UHJvcHMiLCJwcm9wVHlwZXMiLCJpZCIsIlByb3BUeXBlcyIsIm9uZU9mVHlwZSIsInN0cmluZyIsIm51bWJlciIsImJvb2wiLCJkdXBsaWNhdGVzIiwib2JqZWN0Iiwib25DaGFuZ2UiLCJmdW5jIiwiU3R5bGVkQmxhbmtDb250ZW50IiwiY29ubmVjdGVkQmxhbmtDb250ZW50IiwiY29ubmVjdERyb3BUYXJnZXQiLCJ0aWxlVGFyZ2V0IiwiZHJvcCIsIm1vbml0b3IiLCJkcmFnZ2VkSXRlbSIsImdldEl0ZW0iLCJpbnN0YW5jZUlkIiwiZHJvcHBlZCIsImNhbkRyb3AiLCJEcm9wVGlsZSIsImNvbm5lY3QiLCJkcm9wVGFyZ2V0IiwidGlsZVNvdXJjZSIsImNhbkRyYWciLCJiZWdpbkRyYWciLCJmcm9tQ2hvaWNlIiwiZW5kRHJhZyIsImRyb3BSZXN1bHQiLCJnZXREcm9wUmVzdWx0IiwiRHJhZ0Ryb3BUaWxlIiwiZHJhZ1NvdXJjZSIsImlzRHJhZ2dpbmci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VUFBVSxFQUFFbEYsS0FBSyxDQUFDa0YsVUFIYjtBQUlMUyxNQUFBQSxVQUFVLEVBQUU7QUFKUCxLQUFQO0FBTUQsR0FYZ0I7QUFZakJDLEVBQUFBLE9BWmlCLG1CQVlUNUYsS0FaUyxFQVlGK0UsT0FaRSxFQVlPO0FBQ3RCO0FBQ0EsUUFBTWMsVUFBVSxHQUFHZCxPQUFPLENBQUNlLGFBQVIsRUFBbkI7O0FBRUEsUUFBSSxDQUFDRCxVQUFELElBQWVBLFVBQVUsQ0FBQ1YsT0FBOUIsRUFBdUM7QUFDckMsVUFBTUgsV0FBVyxHQUFHRCxPQUFPLENBQUNFLE9BQVIsRUFBcEI7O0FBRUEsVUFBSUQsV0FBVyxDQUFDVyxVQUFoQixFQUE0QjtBQUMxQjNGLFFBQUFBLEtBQUssQ0FBQ3dFLFFBQU4sQ0FBZXhFLEtBQUssQ0FBQ2dFLEVBQXJCLEVBQXlCTixTQUF6QjtBQUNEO0FBQ0Y7QUFDRjtBQXZCZ0IsQ0FBbkI7QUEwQkEsSUFBTXFDLFlBQVksR0FBRyxzQkFBV3ZJLFNBQVgsRUFBc0JnSSxVQUF0QixFQUFrQyxVQUFDRixPQUFELEVBQVVQLE9BQVY7QUFBQSxTQUF1QjtBQUM1RTlFLElBQUFBLGlCQUFpQixFQUFFcUYsT0FBTyxDQUFDVSxVQUFSLEVBRHlEO0FBRTVFQyxJQUFBQSxVQUFVLEVBQUVsQixPQUFPLENBQUNrQixVQUFSO0FBRmdFLEdBQXZCO0FBQUEsQ0FBbEMsRUFHakJaLFFBSGlCLENBQXJCO2VBS2VVLFkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ3JleSBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9jb2xvcnMvZ3JleSc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgcmVuZGVyTWF0aCB9IGZyb20gJ0BwaWUtbGliL21hdGgtcmVuZGVyaW5nJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgeyBEcmFnU291cmNlLCBEcm9wVGFyZ2V0IH0gZnJvbSAnQHBpZS1saWIvZHJhZyc7XG5pbXBvcnQgeyB3aXRoU3R5bGVzIH0gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvc3R5bGVzJztcbmltcG9ydCBDaGlwIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0NoaXAnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyBjb2xvciB9IGZyb20gJ0BwaWUtbGliL3JlbmRlci11aSc7XG5cbmNvbnN0IGxvZyA9IGRlYnVnKCdwaWUtbGliOm1hc2stbWFya3VwOmJsYW5rJyk7XG5leHBvcnQgY29uc3QgRFJBR19UWVBFID0gJ01hc2tCbGFuayc7XG5cbmNvbnN0IHVzZVN0eWxlcyA9IHdpdGhTdHlsZXMoKCkgPT4gKHtcbiAgY29udGVudDoge1xuICAgIGJvcmRlcjogYHNvbGlkIDBweCAke2NvbG9yLnByaW1hcnkoKX1gLFxuICAgIG1pbldpZHRoOiAnMjAwcHgnLFxuICAgIHRvdWNoQWN0aW9uOiAnbm9uZScsXG4gICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLCAvLyBQcmV2ZW50IGxpbmUgd3JhcHBpbmdcbiAgfSxcbiAgY2hpcDoge1xuICAgIGJhY2tncm91bmRDb2xvcjogY29sb3IuYmFja2dyb3VuZCgpLFxuICAgIGJvcmRlcjogYDJweCBkYXNoZWQgJHtjb2xvci50ZXh0KCl9YCxcbiAgICBjb2xvcjogY29sb3IudGV4dCgpLFxuICAgIGZvbnRTaXplOiAnaW5oZXJpdCcsXG4gICAgbWF4V2lkdGg6ICczNzRweCcsXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgYm9yZGVyUmFkaXVzOiAnM3B4JyxcbiAgfSxcbiAgY2hpcExhYmVsOiB7XG4gICAgd2hpdGVTcGFjZTogJ25vcm1hbCcsXG4gICAgLy8gQWRkZWQgZm9yIHRvdWNoIGRldmljZXMsIGZvciBpbWFnZSBjb250ZW50LlxuICAgIC8vIFRoaXMgd2lsbCBwcmV2ZW50IHRoZSBjb250ZXh0IG1lbnUgZnJvbSBhcHBlYXJpbmcgYW5kIG5vdCBhbGxvd2luZyBvdGhlciBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgaW1hZ2UuXG4gICAgLy8gSWYgaW50ZXJhY3Rpb25zIHdpdGggdGhlIGltYWdlIGluIHRoZSB0b2tlbiB3aWxsIGJlIHJlcXVlc3RlZCB3ZSBzaG91bGQgaGFuZGxlIG9ubHkgdGhlIGNvbnRleHQgTWVudS5cbiAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gICAgJyYgaW1nJzoge1xuICAgICAgZGlzcGxheTogJ2Jsb2NrJyxcbiAgICAgIHBhZGRpbmc6ICcycHggMCcsXG4gICAgfSxcbiAgICAvLyBSZW1vdmUgZGVmYXVsdCA8cD4gbWFyZ2lucyB0byBlbnN1cmUgY29uc2lzdGVudCBzcGFjaW5nIGFjcm9zcyBhbGwgd3JhcHBlZCBjb250ZW50IChwLCBzcGFuLCBkaXYsIG1hdGgpXG4gICAgLy8gUGFkZGluZyBmb3IgdG9wIGFuZCBib3R0b20gd2lsbCBpbnN0ZWFkIGJlIGNvbnRyb2xsZWQgYnkgdGhlIGNvbnRhaW5lciBmb3IgY29uc2lzdGVudCBsYXlvdXRcbiAgICAvLyBFbnN1cmVzIGNvbnNpc3RlbnQgYmVoYXZpb3Igd2l0aCBwaWUtYXBpLWJyb3dzZXIsIHdoZXJlIG1hcmdpblRvcCBpcyBhbHJlYWR5IHJlbW92ZWQgYnkgYSBCb290c3RyYXAgc3R5bGVzaGVldFxuICAgICcmIHAnOiB7XG4gICAgICBtYXJnaW5Ub3A6ICcwJyxcbiAgICAgIG1hcmdpbkJvdHRvbTogJzAnLFxuICAgIH0sXG4gICAgJyYgbWp4LWZyYWMnOiB7XG4gICAgICBmb250U2l6ZTogJzEyMCUgIWltcG9ydGFudCcsXG4gICAgfSxcbiAgfSxcbiAgaGlkZGVuOiB7XG4gICAgY29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgb3BhY2l0eTogMCxcbiAgfSxcbiAgZHJhZ2dlZDoge1xuICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgIGxlZnQ6IDE2LFxuICAgIG1heFdpZHRoOiAnNjBweCcsXG4gIH0sXG4gIGNvcnJlY3Q6IHtcbiAgICBib3JkZXI6IGBzb2xpZCAxcHggJHtjb2xvci5jb3JyZWN0KCl9YCxcbiAgfSxcbiAgaW5jb3JyZWN0OiB7XG4gICAgYm9yZGVyOiBgc29saWQgMXB4ICR7Y29sb3IuaW5jb3JyZWN0KCl9YCxcbiAgfSxcbiAgb3Zlcjoge1xuICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgfSxcbiAgcGFyZW50T3Zlcjoge1xuICAgIGJvcmRlcjogYDFweCBzb2xpZCAke2dyZXlbNTAwXX1gLFxuICAgIGJhY2tncm91bmRDb2xvcjogYCR7Z3JleVszMDBdfWAsXG4gIH0sXG59KSk7XG5cbmV4cG9ydCBjbGFzcyBCbGFua0NvbnRlbnQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBoZWlnaHQ6IDAsXG4gICAgICB3aWR0aDogMCxcbiAgICB9O1xuICB9XG5cbiAgaGFuZGxlSW1hZ2VMb2FkID0gKCkgPT4ge1xuICAgIHRoaXMudXBkYXRlRGltZW5zaW9ucygpO1xuICB9O1xuXG4gIGhhbmRsZUVsZW1lbnRzKCkge1xuICAgIGNvbnN0IGltYWdlRWxlbWVudCA9IHRoaXMuc3BhblJlZj8ucXVlcnlTZWxlY3RvcignaW1nJyk7XG5cbiAgICBpZiAoaW1hZ2VFbGVtZW50KSB7XG4gICAgICBpbWFnZUVsZW1lbnQub25sb2FkID0gdGhpcy5oYW5kbGVJbWFnZUxvYWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZURpbWVuc2lvbnMoKTtcbiAgICAgIH0sIDMwMCk7XG4gICAgfVxuICB9XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgdGhpcy5oYW5kbGVFbGVtZW50cygpO1xuICAgIGlmICh0aGlzLnJvb3RSZWYpIHtcbiAgICAgIHRoaXMucm9vdFJlZi5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgdGhpcy5oYW5kbGVUb3VjaFN0YXJ0LCB7IHBhc3NpdmU6IGZhbHNlIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMpIHtcbiAgICByZW5kZXJNYXRoKHRoaXMucm9vdFJlZik7XG4gICAgY29uc3QgeyBjaG9pY2U6IGN1cnJlbnRDaG9pY2UgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgeyBjaG9pY2U6IHByZXZDaG9pY2UgfSA9IHByZXZQcm9wcztcblxuICAgIGlmIChKU09OLnN0cmluZ2lmeShjdXJyZW50Q2hvaWNlKSAhPT0gSlNPTi5zdHJpbmdpZnkocHJldkNob2ljZSkpIHtcbiAgICAgIGlmICghY3VycmVudENob2ljZSkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBoZWlnaHQ6IDAsXG4gICAgICAgICAgd2lkdGg6IDAsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLmhhbmRsZUVsZW1lbnRzKCk7XG4gICAgfVxuICB9XG5cbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgaWYgKHRoaXMucm9vdFJlZikge1xuICAgICAgdGhpcy5yb290UmVmLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCB0aGlzLmhhbmRsZVRvdWNoU3RhcnQpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVRvdWNoU3RhcnQgPSAoZSkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLnRvdWNoU3RhcnRUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zdGFydERyYWcoKTtcbiAgICB9LCAzMDApOyAvLyBTdGFydCBkcmFnIGFmdGVyIDMwMG1zICh0b3VjaCBhbmQgaG9sZCBkdXJhdGlvbilcbiAgfTtcblxuICBzdGFydERyYWcgPSAoKSA9PiB7XG4gICAgY29uc3QgeyBjb25uZWN0RHJhZ1NvdXJjZSwgZGlzYWJsZWQgfSA9IHRoaXMucHJvcHM7XG4gICAgaWYgKCFkaXNhYmxlZCkge1xuICAgICAgY29ubmVjdERyYWdTb3VyY2UodGhpcy5yb290UmVmKTtcbiAgICB9XG4gIH07XG5cbiAgdXBkYXRlRGltZW5zaW9ucygpIHtcbiAgICBpZiAodGhpcy5zcGFuUmVmICYmIHRoaXMucm9vdFJlZikge1xuICAgICAgLy8gVGVtcG9yYXJpbHkgc2V0IHJvb3RSZWYgd2lkdGggdG8gJ2F1dG8nIGZvciBuYXR1cmFsIG1lYXN1cmVtZW50XG4gICAgICB0aGlzLnJvb3RSZWYuc3R5bGUud2lkdGggPSAnYXV0byc7XG5cbiAgICAgIC8vIEdldCB0aGUgbmF0dXJhbCBkaW1lbnNpb25zIG9mIHRoZSBjb250ZW50XG4gICAgICBjb25zdCB3aWR0aCA9IHRoaXMuc3BhblJlZi5vZmZzZXRXaWR0aCB8fCAwO1xuICAgICAgY29uc3QgaGVpZ2h0ID0gdGhpcy5zcGFuUmVmLm9mZnNldEhlaWdodCB8fCAwO1xuXG4gICAgICBjb25zdCB3aWR0aFdpdGhQYWRkaW5nID0gd2lkdGggKyAyNDsgLy8gMTJweCBwYWRkaW5nIG9uIGVhY2ggc2lkZVxuICAgICAgY29uc3QgaGVpZ2h0V2l0aFBhZGRpbmcgPSBoZWlnaHQgKyAyNDsgLy8gMTJweCBwYWRkaW5nIG9uIHRvcCBhbmQgYm90dG9tXG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlQXJlYVdpZHRoID0gcGFyc2VGbG9hdCh0aGlzLnByb3BzLmVtcHR5UmVzcG9uc2VBcmVhV2lkdGgpIHx8IDA7XG4gICAgICBjb25zdCByZXNwb25zZUFyZWFIZWlnaHQgPSBwYXJzZUZsb2F0KHRoaXMucHJvcHMuZW1wdHlSZXNwb25zZUFyZWFIZWlnaHQpIHx8IDA7XG5cbiAgICAgIGNvbnN0IGFkanVzdGVkV2lkdGggPSB3aWR0aFdpdGhQYWRkaW5nIDw9IHJlc3BvbnNlQXJlYVdpZHRoID8gcmVzcG9uc2VBcmVhV2lkdGggOiB3aWR0aFdpdGhQYWRkaW5nO1xuICAgICAgY29uc3QgYWRqdXN0ZWRIZWlnaHQgPSBoZWlnaHRXaXRoUGFkZGluZyA8PSByZXNwb25zZUFyZWFIZWlnaHQgPyByZXNwb25zZUFyZWFIZWlnaHQgOiBoZWlnaHRXaXRoUGFkZGluZztcblxuICAgICAgdGhpcy5zZXRTdGF0ZSgocHJldlN0YXRlKSA9PiAoe1xuICAgICAgICB3aWR0aDogYWRqdXN0ZWRXaWR0aCA+IHJlc3BvbnNlQXJlYVdpZHRoID8gYWRqdXN0ZWRXaWR0aCA6IHByZXZTdGF0ZS53aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBhZGp1c3RlZEhlaWdodCA+IHJlc3BvbnNlQXJlYUhlaWdodCA/IGFkanVzdGVkSGVpZ2h0IDogcHJldlN0YXRlLmhlaWdodCxcbiAgICAgIH0pKTtcblxuICAgICAgdGhpcy5yb290UmVmLnN0eWxlLndpZHRoID0gYCR7YWRqdXN0ZWRXaWR0aH1weGA7XG4gICAgICB0aGlzLnJvb3RSZWYuc3R5bGUuaGVpZ2h0ID0gYCR7YWRqdXN0ZWRIZWlnaHR9cHhgO1xuICAgIH1cbiAgfVxuXG4gIGFkZERyYWdnYWJsZUZhbHNlQXR0cmlidXRlcyhwYXJlbnQpIHtcbiAgICBwYXJlbnQuY2hpbGROb2Rlcy5mb3JFYWNoKChlbGVtKSA9PiB7XG4gICAgICBpZiAoZWxlbSBpbnN0YW5jZW9mIEVsZW1lbnQgfHwgZWxlbSBpbnN0YW5jZW9mIEhUTUxEb2N1bWVudCkge1xuICAgICAgICBlbGVtLnNldEF0dHJpYnV0ZSgnZHJhZ2dhYmxlJywgZmFsc2UpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0Um9vdERpbWVuc2lvbnMoKSB7XG4gICAgLy8gSGFuZGxlIHBvdGVudGlhbCBub24tbnVtZXJpYyB2YWx1ZXNcbiAgICBjb25zdCByZXNwb25zZUFyZWFXaWR0aCA9ICFpc05hTihwYXJzZUZsb2F0KHRoaXMucHJvcHMuZW1wdHlSZXNwb25zZUFyZWFXaWR0aCkpXG4gICAgICA/IHBhcnNlRmxvYXQodGhpcy5wcm9wcy5lbXB0eVJlc3BvbnNlQXJlYVdpZHRoKVxuICAgICAgOiAwO1xuICAgIGNvbnN0IHJlc3BvbnNlQXJlYUhlaWdodCA9ICFpc05hTihwYXJzZUZsb2F0KHRoaXMucHJvcHMuZW1wdHlSZXNwb25zZUFyZWFIZWlnaHQpKVxuICAgICAgPyBwYXJzZUZsb2F0KHRoaXMucHJvcHMuZW1wdHlSZXNwb25zZUFyZWFIZWlnaHQpXG4gICAgICA6IDA7XG5cbiAgICBjb25zdCByb290U3R5bGUgPSB7XG4gICAgICBoZWlnaHQ6IHRoaXMuc3RhdGUuaGVpZ2h0IHx8IHJlc3BvbnNlQXJlYUhlaWdodCxcbiAgICAgIHdpZHRoOiB0aGlzLnN0YXRlLndpZHRoIHx8IHJlc3BvbnNlQXJlYVdpZHRoLFxuICAgIH07XG5cbiAgICAvLyBhZGQgbWluV2lkdGgsIG1pbkhlaWdodCBpZiB3aWR0aCBhbmQgaGVpZ2h0IGFyZSBub3QgZGVmaW5lZFxuICAgIC8vIG1pbldpZHRoLCBtaW5IZWlnaHQgd2lsbCBiZSBhbHNvIGluIG1vZGVsIGluIHRoZSBmdXR1cmVcbiAgICByZXR1cm4ge1xuICAgICAgLi4ucm9vdFN0eWxlLFxuICAgICAgLi4uKHJlc3BvbnNlQXJlYVdpZHRoID8ge30gOiB7IG1pbldpZHRoOiA5MCB9KSxcbiAgICAgIC4uLihyZXNwb25zZUFyZWFIZWlnaHQgPyB7fSA6IHsgbWluSGVpZ2h0OiAzMiB9KSxcbiAgICB9O1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgZGlzYWJsZWQsIGNob2ljZSwgY2xhc3NlcywgaXNPdmVyLCBkcmFnSXRlbSwgY29ycmVjdCB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBkcmFnZ2VkTGFiZWwgPSBkcmFnSXRlbSAmJiBpc092ZXIgJiYgZHJhZ0l0ZW0uY2hvaWNlLnZhbHVlO1xuICAgIGNvbnN0IGxhYmVsID0gY2hvaWNlICYmIGNob2ljZS52YWx1ZTtcblxuICAgIHJldHVybiAoXG4gICAgICAvLyBUT0RPIHRoZSBDaGlwIGVsZW1lbnQgaXMgY2F1c2luZyBkcmFnIHByb2JsZW1zIG9uIHRvdWNoIGRldmljZXMuIEF2b2lkIHVzaW5nIENoaXAgYW5kIGNvbnNpZGVyIHJlZmFjdG9yaW5nIHRoZSBjb2RlLiBLZWVwIGluIG1pbmQgdGhhdCBDaGlwIGlzIGEgc3BhbiB3aXRoIGEgYnV0dG9uIHJvbGUsIHdoaWNoIGludGVyZmVyZXMgd2l0aCBzZWFtbGVzcyB0b3VjaCBkZXZpY2UgZHJhZ2dpbmcuXG4gICAgICA8Q2hpcFxuICAgICAgICBjbGlja2FibGU9e2ZhbHNlfVxuICAgICAgICBkaXNhYmxlZD17dHJ1ZX1cbiAgICAgICAgcmVmPXsocmVmKSA9PiB7XG4gICAgICAgICAgLy9lc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgICB0aGlzLnJvb3RSZWYgPSBSZWFjdERPTS5maW5kRE9NTm9kZShyZWYpO1xuICAgICAgICB9fVxuICAgICAgICBjb21wb25lbnQ9XCJzcGFuXCJcbiAgICAgICAgbGFiZWw9e1xuICAgICAgICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhjbGFzc2VzLmNoaXBMYWJlbCwgaXNPdmVyICYmIGNsYXNzZXMub3Zlciwge1xuICAgICAgICAgICAgICAgIFtjbGFzc2VzLmhpZGRlbl06IGRyYWdnZWRMYWJlbCxcbiAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgIHJlZj17KHJlZikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZWYpIHtcbiAgICAgICAgICAgICAgICAgIC8vZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICAgICAgICAgICAgICB0aGlzLnNwYW5SZWYgPSBSZWFjdERPTS5maW5kRE9NTm9kZShyZWYpO1xuICAgICAgICAgICAgICAgICAgcmVmLmlubmVySFRNTCA9IGxhYmVsIHx8ICcnO1xuICAgICAgICAgICAgICAgICAgdGhpcy5hZGREcmFnZ2FibGVGYWxzZUF0dHJpYnV0ZXMocmVmKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHsnICd9XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB7ZHJhZ2dlZExhYmVsICYmIChcbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoY2xhc3Nlcy5jaGlwTGFiZWwsIGlzT3ZlciAmJiBjbGFzc2VzLm92ZXIsIGNsYXNzZXMuZHJhZ2dlZCl9XG4gICAgICAgICAgICAgICAgcmVmPXsocmVmKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3BhblJlZiA9IFJlYWN0RE9NLmZpbmRET01Ob2RlKHJlZik7XG4gICAgICAgICAgICAgICAgICAgIHJlZi5pbm5lckhUTUwgPSBkcmFnZ2VkTGFiZWwgfHwgJyc7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkRHJhZ2dhYmxlRmFsc2VBdHRyaWJ1dGVzKHJlZik7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHsnICd9XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICAgfVxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoY2xhc3Nlcy5jaGlwLCBpc092ZXIgJiYgY2xhc3Nlcy5vdmVyLCBpc092ZXIgJiYgY2xhc3Nlcy5wYXJlbnRPdmVyLCB7XG4gICAgICAgICAgW2NsYXNzZXMuY29ycmVjdF06IGNvcnJlY3QgIT09IHVuZGVmaW5lZCAmJiBjb3JyZWN0LFxuICAgICAgICAgIFtjbGFzc2VzLmluY29ycmVjdF06IGNvcnJlY3QgIT09IHVuZGVmaW5lZCAmJiAhY29ycmVjdCxcbiAgICAgICAgfSl9XG4gICAgICAgIHZhcmlhbnQ9e2Rpc2FibGVkID8gJ291dGxpbmVkJyA6IHVuZGVmaW5lZH1cbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAuLi50aGlzLmdldFJvb3REaW1lbnNpb25zKCksXG4gICAgICAgIH19XG4gICAgICAvPlxuICAgICk7XG4gIH1cbn1cblxuQmxhbmtDb250ZW50LmRlZmF1bHRQcm9wcyA9IHtcbiAgZW1wdHlSZXNwb25zZUFyZWFXaWR0aDogMCxcbiAgZW1wdHlSZXNwb25zZUFyZWFIZWlnaHQ6IDAsXG59O1xuXG5CbGFua0NvbnRlbnQucHJvcFR5cGVzID0ge1xuICBpZDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLm51bWJlcl0pLFxuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGR1cGxpY2F0ZXM6IFByb3BUeXBlcy5ib29sLFxuICBjaG9pY2U6IFByb3BUeXBlcy5vYmplY3QsXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIGlzT3ZlcjogUHJvcFR5cGVzLmJvb2wsXG4gIGRyYWdJdGVtOiBQcm9wVHlwZXMub2JqZWN0LFxuICBjb3JyZWN0OiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICBlbXB0eVJlc3BvbnNlQXJlYVdpZHRoOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMubnVtYmVyXSksXG4gIGVtcHR5UmVzcG9uc2VBcmVhSGVpZ2h0OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMubnVtYmVyXSksXG59O1xuXG5jb25zdCBTdHlsZWRCbGFua0NvbnRlbnQgPSB1c2VTdHlsZXMoQmxhbmtDb250ZW50KTtcblxuY29uc3QgY29ubmVjdGVkQmxhbmtDb250ZW50ID0gdXNlU3R5bGVzKCh7IGNvbm5lY3REcmFnU291cmNlLCBjb25uZWN0RHJvcFRhcmdldCwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCB7IGNsYXNzZXMsIGlzT3ZlciB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIGNvbm5lY3REcm9wVGFyZ2V0KFxuICAgIGNvbm5lY3REcmFnU291cmNlKFxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtjbGFzc25hbWVzKGNsYXNzZXMuY29udGVudCwgaXNPdmVyICYmIGNsYXNzZXMub3Zlcil9PlxuICAgICAgICA8U3R5bGVkQmxhbmtDb250ZW50IHsuLi5wcm9wc30gLz5cbiAgICAgIDwvc3Bhbj4sXG4gICAgKSxcbiAgKTtcbn0pO1xuXG5jb25zdCB0aWxlVGFyZ2V0ID0ge1xuICBkcm9wKHByb3BzLCBtb25pdG9yKSB7XG4gICAgY29uc3QgZHJhZ2dlZEl0ZW0gPSBtb25pdG9yLmdldEl0ZW0oKTtcblxuICAgIGxvZygncHJvcHMuaW5zdGFuY2VJZCcsIHByb3BzLmluc3RhbmNlSWQsICdkcmFnZ2VkSXRlbS5pbnN0YW5jZUlkOicsIGRyYWdnZWRJdGVtLmluc3RhbmNlSWQpO1xuXG4gICAgaWYgKGRyYWdnZWRJdGVtLmlkICE9PSBwcm9wcy5pZCkge1xuICAgICAgcHJvcHMub25DaGFuZ2UocHJvcHMuaWQsIGRyYWdnZWRJdGVtLmNob2ljZS5pZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRyb3BwZWQ6IGRyYWdnZWRJdGVtLmlkICE9PSBwcm9wcy5pZCxcbiAgICB9O1xuICB9LFxuICBjYW5Ecm9wKHByb3BzLCBtb25pdG9yKSB7XG4gICAgY29uc3QgZHJhZ2dlZEl0ZW0gPSBtb25pdG9yLmdldEl0ZW0oKTtcblxuICAgIHJldHVybiBkcmFnZ2VkSXRlbS5pbnN0YW5jZUlkID09PSBwcm9wcy5pbnN0YW5jZUlkO1xuICB9LFxufTtcblxuY29uc3QgRHJvcFRpbGUgPSBEcm9wVGFyZ2V0KERSQUdfVFlQRSwgdGlsZVRhcmdldCwgKGNvbm5lY3QsIG1vbml0b3IpID0+ICh7XG4gIGNvbm5lY3REcm9wVGFyZ2V0OiBjb25uZWN0LmRyb3BUYXJnZXQoKSxcbiAgaXNPdmVyOiBtb25pdG9yLmlzT3ZlcigpLFxuICBkcmFnSXRlbTogbW9uaXRvci5nZXRJdGVtKCksXG59KSkoY29ubmVjdGVkQmxhbmtDb250ZW50KTtcblxuY29uc3QgdGlsZVNvdXJjZSA9IHtcbiAgY2FuRHJhZyhwcm9wcykge1xuICAgIHJldHVybiAhcHJvcHMuZGlzYWJsZWQgJiYgISFwcm9wcy5jaG9pY2U7XG4gIH0sXG4gIGJlZ2luRHJhZyhwcm9wcykge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogcHJvcHMuaWQsXG4gICAgICBjaG9pY2U6IHByb3BzLmNob2ljZSxcbiAgICAgIGluc3RhbmNlSWQ6IHByb3BzLmluc3RhbmNlSWQsXG4gICAgICBmcm9tQ2hvaWNlOiB0cnVlLFxuICAgIH07XG4gIH0sXG4gIGVuZERyYWcocHJvcHMsIG1vbml0b3IpIHtcbiAgICAvLyB0aGlzIHdpbGwgYmUgbnVsbCBpZiBpdCBkaWQgbm90IGRyb3BcbiAgICBjb25zdCBkcm9wUmVzdWx0ID0gbW9uaXRvci5nZXREcm9wUmVzdWx0KCk7XG5cbiAgICBpZiAoIWRyb3BSZXN1bHQgfHwgZHJvcFJlc3VsdC5kcm9wcGVkKSB7XG4gICAgICBjb25zdCBkcmFnZ2VkSXRlbSA9IG1vbml0b3IuZ2V0SXRlbSgpO1xuXG4gICAgICBpZiAoZHJhZ2dlZEl0ZW0uZnJvbUNob2ljZSkge1xuICAgICAgICBwcm9wcy5vbkNoYW5nZShwcm9wcy5pZCwgdW5kZWZpbmVkKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG59O1xuXG5jb25zdCBEcmFnRHJvcFRpbGUgPSBEcmFnU291cmNlKERSQUdfVFlQRSwgdGlsZVNvdXJjZSwgKGNvbm5lY3QsIG1vbml0b3IpID0+ICh7XG4gIGNvbm5lY3REcmFnU291cmNlOiBjb25uZWN0LmRyYWdTb3VyY2UoKSxcbiAgaXNEcmFnZ2luZzogbW9uaXRvci5pc0RyYWdnaW5nKCksXG59KSkoRHJvcFRpbGUpO1xuXG5leHBvcnQgZGVmYXVsdCBEcmFnRHJvcFRpbGU7XG4iXX0=
@@ -60,7 +60,9 @@ var _default = (0, _styles.withStyles)(function () {
60
60
  correct: correctStyle(_renderUi.color.correct()),
61
61
  incorrect: correctStyle(_renderUi.color.incorrect()),
62
62
  box: {
63
- fontSize: 'inherit'
63
+ fontSize: 'inherit',
64
+ display: 'inline-block',
65
+ verticalAlign: 'middle'
64
66
  },
65
67
  outlinedInput: {
66
68
  padding: '2px',
@@ -87,8 +89,11 @@ var _default = (0, _styles.withStyles)(function () {
87
89
  rest = (0, _objectWithoutProperties2["default"])(props, _excluded);
88
90
  var label = typeof correct === 'boolean' ? correct ? 'correct' : 'incorrect' : undefined;
89
91
  var inputProps = charactersLimit ? {
90
- maxLength: charactersLimit
91
- } : {};
92
+ maxLength: charactersLimit,
93
+ 'aria-label': 'Enter answer'
94
+ } : {
95
+ 'aria-label': 'Enter answer'
96
+ };
92
97
 
93
98
  if (width) {
94
99
  inputProps.style = {
@@ -110,4 +115,4 @@ var _default = (0, _styles.withStyles)(function () {
110
115
  });
111
116
 
112
117
  exports["default"] = _default;
113
- //# sourceMappingURL=correct-input.js.map
118
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL2NvcnJlY3QtaW5wdXQuanN4Il0sIm5hbWVzIjpbImNvcnJlY3RTdHlsZSIsImNvbG9yIiwiYm9yZGVyQ29sb3IiLCJpbnB1dCIsInRleHQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJiYWNrZ3JvdW5kIiwiYm9yZGVyUmFkaXVzIiwiYm9yZGVyV2lkdGgiLCJib3JkZXJTdHlsZSIsInBhZGRpbmciLCJvcGFjaXR5IiwiY3Vyc29yIiwicHJpbWFyeSIsInByaW1hcnlEYXJrIiwiY3JJbnB1dCIsImNvcnJlY3QiLCJpbmNvcnJlY3QiLCJib3giLCJmb250U2l6ZSIsImRpc3BsYXkiLCJ2ZXJ0aWNhbEFsaWduIiwib3V0bGluZWRJbnB1dCIsImJvcmRlciIsIm5vdGNoZWRPdXRsaW5lIiwicHJvcHMiLCJjaGFyYWN0ZXJzTGltaXQiLCJjbGFzc2VzIiwiZGlzYWJsZWQiLCJpc0JveCIsImlzQ29uc3RydWN0ZWRSZXNwb25zZSIsIndpZHRoIiwic3BlbGxDaGVjayIsInJlc3QiLCJsYWJlbCIsInVuZGVmaW5lZCIsImlucHV0UHJvcHMiLCJtYXhMZW5ndGgiLCJzdHlsZSIsIk1hdGgiLCJyb3VuZCIsImRpc2FibGVkSW5wdXQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7O0FBRUEsSUFBTUEsWUFBWSxHQUFHLFNBQWZBLFlBQWUsQ0FBQ0MsS0FBRDtBQUFBLFNBQVk7QUFDL0JDLElBQUFBLFdBQVcsWUFBS0QsS0FBTDtBQURvQixHQUFaO0FBQUEsQ0FBckI7O2VBSWUsd0JBQVc7QUFBQSxTQUFPO0FBQy9CRSxJQUFBQSxLQUFLLEVBQUU7QUFDTEYsTUFBQUEsS0FBSyxFQUFFQSxnQkFBTUcsSUFBTixFQURGO0FBRUxDLE1BQUFBLGVBQWUsRUFBRUosZ0JBQU1LLFVBQU4sRUFGWjtBQUdMQyxNQUFBQSxZQUFZLEVBQUUsZ0JBSFQ7QUFJTEMsTUFBQUEsV0FBVyxFQUFF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QUZILEVBRWFBLEtBRmIsa0RBR0pQLE9BQU8sQ0FBQ1osT0FISixFQUdjZSxxQkFIZDtBQURBLEtBTlg7QUFhRSxJQUFBLFVBQVUsRUFBRU0sVUFiZDtBQWNFLElBQUEsVUFBVSxFQUFFLENBZGQ7QUFlRSxJQUFBLFFBQVEsRUFBRVIsUUFmWjtBQWdCRSxJQUFBLFVBQVUsRUFBRUk7QUFoQmQsS0FpQk1DLElBakJOLEVBREY7QUFxQkQsQ0F2RmMsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgT3V0bGluZWRJbnB1dCBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9PdXRsaW5lZElucHV0JztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsgd2l0aFN0eWxlcyB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL3N0eWxlcyc7XG5pbXBvcnQgeyBjb2xvciB9IGZyb20gJ0BwaWUtbGliL3JlbmRlci11aSc7XG5cbmNvbnN0IGNvcnJlY3RTdHlsZSA9IChjb2xvcikgPT4gKHtcbiAgYm9yZGVyQ29sb3I6IGAke2NvbG9yfSAhaW1wb3J0YW50YCxcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCB3aXRoU3R5bGVzKCgpID0+ICh7XG4gIGlucHV0OiB7XG4gICAgY29sb3I6IGNvbG9yLnRleHQoKSxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yLmJhY2tncm91bmQoKSxcbiAgICBib3JkZXJSYWRpdXM6ICc0cHggIWltcG9ydGFudCcsXG4gICAgYm9yZGVyV2lkdGg6ICcxcHgnLFxuICAgIGJvcmRlclN0eWxlOiAnc29saWQnLFxuICAgIHBhZGRpbmc6ICcxMHB4IDIwcHggMTBweCAxMHB4JyxcbiAgICAnJjpkaXNhYmxlZCc6IHtcbiAgICAgIG9wYWNpdHk6IDAuOCxcbiAgICAgIGN1cnNvcjogJ25vdC1hbGxvd2VkICFpbXBvcnRhbnQnLFxuICAgIH0sXG4gICAgJyY6aG92ZXInOiB7XG4gICAgICBib3JkZXJDb2xvcjogY29sb3IucHJpbWFyeSgpLFxuICAgICAgJyY6ZGlzYWJsZWQnOiB7XG4gICAgICAgIGJvcmRlckNvbG9yOiAnaW5pdGlhbCcsXG4gICAgICB9LFxuICAgIH0sXG4gICAgJyY6Zm9jdXMnOiB7XG4gICAgICBib3JkZXJDb2xvcjogY29sb3IucHJpbWFyeURhcmsoKSxcbiAgICB9LFxuICB9LFxuICBjcklucHV0OiB7XG4gICAgcGFkZGluZzogJzhweCAhaW1wb3J0YW50JyxcbiAgfSxcbiAgY29ycmVjdDogY29ycmVjdFN0eWxlKGNvbG9yLmNvcnJlY3QoKSksXG4gIGluY29ycmVjdDogY29ycmVjdFN0eWxlKGNvbG9yLmluY29ycmVjdCgpKSxcbiAgYm94OiB7XG4gICAgZm9udFNpemU6ICdpbmhlcml0JyxcbiAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICB2ZXJ0aWNhbEFsaWduOiAnbWlkZGxlJyxcbiAgfSxcbiAgb3V0bGluZWRJbnB1dDoge1xuICAgIHBhZGRpbmc6ICcycHgnLFxuICAgIGJvcmRlclJhZGl1czogJzRweCcsXG4gICAgJyYgZmllbGRzZXQnOiB7XG4gICAgICBib3JkZXI6IDAsXG4gICAgfSxcbiAgfSxcbiAgbm90Y2hlZE91dGxpbmU6IHtcbiAgICBib3JkZXJDb2xvcjogY29sb3IuY29ycmVjdCgpLFxuICB9LFxufSkpKChwcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgY29ycmVjdCxcbiAgICBjaGFyYWN0ZXJzTGltaXQsXG4gICAgY2xhc3NlcyxcbiAgICBkaXNhYmxlZCxcbiAgICBpc0JveCxcbiAgICBpc0NvbnN0cnVjdGVkUmVzcG9uc2UsXG4gICAgd2lkdGgsXG4gICAgc3BlbGxDaGVjayxcbiAgICAuLi5yZXN0XG4gIH0gPSBwcm9wcztcblxuICBjb25zdCBsYWJlbCA9IHR5cGVvZiBjb3JyZWN0ID09PSAnYm9vbGVhbicgPyAoY29ycmVjdCA/ICdjb3JyZWN0JyA6ICdpbmNvcnJlY3QnKSA6IHVuZGVmaW5lZDtcbiAgY29uc3QgaW5wdXRQcm9wcyA9IGNoYXJhY3RlcnNMaW1pdFxuICAgID8geyBtYXhMZW5ndGg6IGNoYXJhY3RlcnNMaW1pdCwgJ2FyaWEtbGFiZWwnOiAnRW50ZXIgYW5zd2VyJyB9XG4gICAgOiB7ICdhcmlhLWxhYmVsJzogJ0VudGVyIGFuc3dlcicgfTtcblxuICBpZiAod2lkdGgpIHtcbiAgICBpbnB1dFByb3BzLnN0eWxlID0ge1xuICAgICAgd2lkdGg6IGAke3dpZHRoICsgTWF0aC5yb3VuZCh3aWR0aCAvIDEwKSArIDF9Y2hgLCAvLyBhZGRlZCBzb21lIGV4dHJhIHNwYWNlIGZvciBjYXBpdGFsIGxldHRlcnNcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8T3V0bGluZWRJbnB1dFxuICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKHtcbiAgICAgICAgW2NsYXNzZXMuZGlzYWJsZWRJbnB1dF06IGRpc2FibGVkLFxuICAgICAgICBbY2xhc3Nlcy5ib3hdOiBpc0JveCxcbiAgICAgICAgW2NsYXNzZXMub3V0bGluZWRJbnB1dF06IHRydWUsXG4gICAgICB9KX1cbiAgICAgIGNsYXNzZXM9e3tcbiAgICAgICAgaW5wdXQ6IGNsYXNzbmFtZXMoe1xuICAgICAgICAgIFtjbGFzc2VzLmlucHV0XTogdHJ1ZSxcbiAgICAgICAgICBbY2xhc3Nlc1tsYWJlbF1dOiBsYWJlbCxcbiAgICAgICAgICBbY2xhc3Nlcy5jcklucHV0XTogaXNDb25zdHJ1Y3RlZFJlc3BvbnNlLFxuICAgICAgICB9KSxcbiAgICAgIH19XG4gICAgICBpbnB1dFByb3BzPXtpbnB1dFByb3BzfVxuICAgICAgbGFiZWxXaWR0aD17MH1cbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgIHNwZWxsQ2hlY2s9e3NwZWxsQ2hlY2t9XG4gICAgICB7Li4ucmVzdH1cbiAgICAvPlxuICApO1xufSk7XG4iXX0=