@pie-lib/math-input 6.11.4 → 6.13.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 (94) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/NEXT.CHANGELOG.json +1 -0
  3. package/lib/__tests__/math-input-test.js +109 -0
  4. package/lib/horizontal-keypad.js +10 -4
  5. package/lib/index.js +11 -15
  6. package/lib/keypad/__tests__/index.test.js +41 -0
  7. package/lib/keypad/__tests__/keys-layout.test.js +15 -0
  8. package/lib/keypad/index.js +96 -25
  9. package/lib/keypad/keys-layout.js +1 -1
  10. package/lib/keys/__tests__/utils.test.js +60 -0
  11. package/lib/keys/basic-operators.js +1 -1
  12. package/lib/keys/chars.js +1 -1
  13. package/lib/keys/comparison.js +1 -1
  14. package/lib/keys/constants.js +1 -1
  15. package/lib/keys/digits.js +1 -1
  16. package/lib/keys/edit.js +1 -1
  17. package/lib/keys/exponent.js +1 -1
  18. package/lib/keys/fractions.js +1 -1
  19. package/lib/keys/geometry.js +5 -3
  20. package/lib/keys/grades.js +13 -1
  21. package/lib/keys/index.js +1 -1
  22. package/lib/keys/log.js +2 -2
  23. package/lib/keys/logic.js +1 -1
  24. package/lib/keys/matrices.js +1 -1
  25. package/lib/keys/misc.js +1 -1
  26. package/lib/keys/navigation.js +1 -1
  27. package/lib/keys/operators.js +1 -1
  28. package/lib/keys/statistics.js +1 -1
  29. package/lib/keys/sub-sup.js +1 -1
  30. package/lib/keys/trigonometry.js +1 -1
  31. package/lib/keys/utils.js +1 -1
  32. package/lib/keys/vars.js +1 -1
  33. package/lib/math-input.js +1 -1
  34. package/lib/mq/__tests__/input.test.js +119 -0
  35. package/lib/mq/__tests__/static.test.js +74 -0
  36. package/lib/mq/common-mq-styles.js +110 -0
  37. package/lib/mq/custom-elements.js +1 -1
  38. package/lib/mq/index.js +9 -1
  39. package/lib/mq/input.js +13 -11
  40. package/lib/mq/static.js +199 -76
  41. package/lib/updateSpans.js +23 -0
  42. package/package.json +2 -2
  43. package/src/__tests__/__snapshots__/math-input-test.jsx.snap +152 -0
  44. package/src/__tests__/math-input-test.jsx +85 -0
  45. package/src/horizontal-keypad.jsx +14 -1
  46. package/src/index.jsx +1 -10
  47. package/src/keypad/__tests__/__snapshots__/index.test.jsx.snap +193 -0
  48. package/src/keypad/__tests__/index.test.jsx +24 -0
  49. package/src/keypad/__tests__/keys-layout.test.js +15 -0
  50. package/src/keypad/index.jsx +99 -15
  51. package/src/keys/__tests__/utils.test.js +57 -0
  52. package/src/keys/geometry.js +6 -2
  53. package/src/keys/grades.js +11 -0
  54. package/src/keys/log.js +1 -1
  55. package/src/mq/__tests__/__snapshots__/input.test.jsx.snap +9 -0
  56. package/src/mq/__tests__/input.test.jsx +92 -0
  57. package/src/mq/__tests__/static.test.jsx +57 -0
  58. package/src/mq/common-mq-styles.js +105 -0
  59. package/src/mq/index.js +2 -1
  60. package/src/mq/input.jsx +22 -9
  61. package/src/mq/static.jsx +142 -13
  62. package/src/updateSpans.js +15 -0
  63. package/README.md +0 -27
  64. package/lib/horizontal-keypad.js.map +0 -1
  65. package/lib/index.js.map +0 -1
  66. package/lib/keypad/index.js.map +0 -1
  67. package/lib/keypad/keys-layout.js.map +0 -1
  68. package/lib/keys/basic-operators.js.map +0 -1
  69. package/lib/keys/chars.js.map +0 -1
  70. package/lib/keys/comparison.js.map +0 -1
  71. package/lib/keys/constants.js.map +0 -1
  72. package/lib/keys/digits.js.map +0 -1
  73. package/lib/keys/edit.js.map +0 -1
  74. package/lib/keys/exponent.js.map +0 -1
  75. package/lib/keys/fractions.js.map +0 -1
  76. package/lib/keys/geometry.js.map +0 -1
  77. package/lib/keys/grades.js.map +0 -1
  78. package/lib/keys/index.js.map +0 -1
  79. package/lib/keys/log.js.map +0 -1
  80. package/lib/keys/logic.js.map +0 -1
  81. package/lib/keys/matrices.js.map +0 -1
  82. package/lib/keys/misc.js.map +0 -1
  83. package/lib/keys/navigation.js.map +0 -1
  84. package/lib/keys/operators.js.map +0 -1
  85. package/lib/keys/statistics.js.map +0 -1
  86. package/lib/keys/sub-sup.js.map +0 -1
  87. package/lib/keys/trigonometry.js.map +0 -1
  88. package/lib/keys/utils.js.map +0 -1
  89. package/lib/keys/vars.js.map +0 -1
  90. package/lib/math-input.js.map +0 -1
  91. package/lib/mq/custom-elements.js.map +0 -1
  92. package/lib/mq/index.js.map +0 -1
  93. package/lib/mq/input.js.map +0 -1
  94. package/lib/mq/static.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,22 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [6.13.0-beta.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-input@6.11.4...@pie-lib/math-input@6.13.0-beta.0) (2025-07-15)
7
+
8
+ **Note:** Version bump only for package @pie-lib/math-input
9
+
10
+
11
+
12
+
13
+
14
+ # [6.12.0-beta.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-input@6.11.4...@pie-lib/math-input@6.12.0-beta.0) (2025-07-15)
15
+
16
+ **Note:** Version bump only for package @pie-lib/math-input
17
+
18
+
19
+
20
+
21
+
6
22
  ## [6.11.4](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-input@6.11.3...@pie-lib/math-input@6.11.4) (2023-07-04)
7
23
 
8
24
 
@@ -0,0 +1 @@
1
+ []
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
6
+
7
+ var _enzyme = require("enzyme");
8
+
9
+ var _react = _interopRequireDefault(require("react"));
10
+
11
+ var _mathInput = require("@pie-lib/math-input");
12
+
13
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
14
+
15
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
16
+
17
+ describe('MathInput', function () {
18
+ var w;
19
+ var onChange;
20
+ beforeEach(function () {
21
+ onChange = jest.fn();
22
+ });
23
+
24
+ var wrapper = function wrapper(extras) {
25
+ var defaults = {
26
+ classes: {},
27
+ className: 'className',
28
+ onChange: onChange
29
+ };
30
+
31
+ var props = _objectSpread(_objectSpread({}, defaults), extras);
32
+
33
+ return (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_mathInput.MathInput, props));
34
+ };
35
+
36
+ describe('snapshot', function () {
37
+ it('renders', function () {
38
+ w = wrapper();
39
+ expect(w).toMatchSnapshot();
40
+ });
41
+ });
42
+ describe('logic', function () {
43
+ beforeEach(function () {
44
+ w = wrapper();
45
+ w.instance().input = {
46
+ write: jest.fn(),
47
+ command: jest.fn(),
48
+ keystroke: jest.fn()
49
+ };
50
+ });
51
+ describe('keypadPress', function () {
52
+ it('calls input.write for latex', function () {
53
+ w.instance().keypadPress({
54
+ latex: 'latex'
55
+ });
56
+ expect(w.instance().input.write).toHaveBeenLastCalledWith('latex');
57
+ });
58
+ it('calls input.write for write', function () {
59
+ w.instance().keypadPress({
60
+ write: 'write'
61
+ });
62
+ expect(w.instance().input.write).toHaveBeenLastCalledWith('write');
63
+ });
64
+ it('calls input.command for command', function () {
65
+ w.instance().keypadPress({
66
+ command: 'cmd'
67
+ });
68
+ expect(w.instance().input.command).toHaveBeenLastCalledWith('cmd');
69
+ });
70
+ it('calls input.keystroke for keystroke', function () {
71
+ w.instance().keypadPress({
72
+ keystroke: 'k'
73
+ });
74
+ expect(w.instance().input.keystroke).toHaveBeenLastCalledWith('k');
75
+ });
76
+ });
77
+ });
78
+ describe('changeLatex', function () {
79
+ it('calls onChange', function () {
80
+ w = wrapper();
81
+ w.instance().changeLatex('new-latex');
82
+ expect(onChange).toHaveBeenCalledWith('new-latex');
83
+ });
84
+ it('does not call onChange if it is the same as the existing latex', function () {
85
+ w = wrapper();
86
+ w.setProps({
87
+ latex: 'new-latex'
88
+ });
89
+ w.instance().changeLatex('new-latex');
90
+ expect(onChange).not.toHaveBeenCalledWith('new-latex');
91
+ });
92
+ });
93
+ describe('inputFocus', function () {
94
+ it('sets state', function () {
95
+ w = wrapper();
96
+ w.instance().inputFocus();
97
+ expect(w.state().focused).toBe(true);
98
+ });
99
+ });
100
+ describe('inputBlur', function () {
101
+ it('sets state', function () {
102
+ w = wrapper();
103
+ w.instance().inputFocus();
104
+ w.instance().inputBlur();
105
+ expect(w.state().focused).toBe(false);
106
+ });
107
+ });
108
+ });
109
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vbWF0aC1pbnB1dC10ZXN0LmpzeCJdLCJuYW1lcyI6WyJkZXNjcmliZSIsInciLCJvbkNoYW5nZSIsImJlZm9yZUVhY2giLCJqZXN0IiwiZm4iLCJ3cmFwcGVyIiwiZXh0cmFzIiwiZGVmYXVsdHMiLCJjbGFzc2VzIiwiY2xhc3NOYW1lIiwicHJvcHMiLCJpdCIsImV4cGVjdCIsInRvTWF0Y2hTbmFwc2hvdCIsImluc3RhbmNlIiwiaW5wdXQiLCJ3cml0ZSIsImNvbW1hbmQiLCJrZXlzdHJva2UiLCJrZXlwYWRQcmVzcyIsImxhdGV4IiwidG9IYXZlQmVlbkxhc3RDYWxsZWRXaXRoIiwiY2hhbmdlTGF0ZXgiLCJ0b0hhdmVCZWVuQ2FsbGVkV2l0aCIsInNldFByb3BzIiwibm90IiwiaW5wdXRGb2N1cyIsInN0YXRlIiwiZm9jdXNlZCIsInRvQmUiLCJpbnB1dEJsdXIiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOztBQUNBOztBQUNBOzs7Ozs7QUFFQUEsUUFBUSxDQUFDLFdBQUQsRUFBYyxZQUFNO0FBQzFCLE1BQUlDLENBQUo7QUFDQSxNQUFJQyxRQUFKO0FBRUFDLEVBQUFBLFVBQVUsQ0FBQyxZQUFNO0FBQ2ZELElBQUFBLFFBQVEsR0FBR0UsSUFBSSxDQUFDQyxFQUFMLEVBQVg7QUFDRCxHQUZTLENBQVY7O0FBR0EsTUFBTUMsT0FBTyxHQUFHLFNBQVZBLE9BQVUsQ0FBQ0MsTUFBRCxFQUFZO0FBQzFCLFFBQU1DLFFBQVEsR0FBRztBQUNmQyxNQUFBQSxPQUFPLEVBQUUsRUFETTtBQUVmQyxNQUFBQSxTQUFTLEVBQUUsV0FGSTtBQUdmUixNQUFBQSxRQUFRLEVBQVJBO0FBSGUsS0FBakI7O0FBS0EsUUFBTVMsS0FBSyxtQ0FBUUgsUUFBUixHQUFxQkQsTUFBckIsQ0FBWDs7QUFDQSxXQUFPLG1DQUFRLGdDQUFDLG9CQUFELEVBQWVJLEtBQWYsQ0FBUixDQUFQO0FBQ0QsR0FSRDs7QUFTQVgsRUFBQUEsUUFBUSxDQUFD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S0FBSyxFQUFFO0FBQVQsT0FBWDtBQUNBcEIsTUFBQUEsQ0FBQyxDQUFDYyxRQUFGLEdBQWFRLFdBQWIsQ0FBeUIsV0FBekI7QUFDQVYsTUFBQUEsTUFBTSxDQUFDWCxRQUFELENBQU4sQ0FBaUJ3QixHQUFqQixDQUFxQkYsb0JBQXJCLENBQTBDLFdBQTFDO0FBQ0QsS0FMQyxDQUFGO0FBTUQsR0FaTyxDQUFSO0FBY0F4QixFQUFBQSxRQUFRLENBQUMsWUFBRCxFQUFlLFlBQU07QUFDM0JZLElBQUFBLEVBQUUsQ0FBQyxZQUFELEVBQWUsWUFBTTtBQUNyQlgsTUFBQUEsQ0FBQyxHQUFHSyxPQUFPLEVBQVg7QUFDQUwsTUFBQUEsQ0FBQyxDQUFDYyxRQUFGLEdBQWFZLFVBQWI7QUFDQWQsTUFBQUEsTUFBTSxDQUFDWixDQUFDLENBQUMyQixLQUFGLEdBQVVDLE9BQVgsQ0FBTixDQUEwQkMsSUFBMUIsQ0FBK0IsSUFBL0I7QUFDRCxLQUpDLENBQUY7QUFLRCxHQU5PLENBQVI7QUFPQTlCLEVBQUFBLFFBQVEsQ0FBQyxXQUFELEVBQWMsWUFBTTtBQUMxQlksSUFBQUEsRUFBRSxDQUFDLFlBQUQsRUFBZSxZQUFNO0FBQ3JCWCxNQUFBQSxDQUFDLEdBQUdLLE9BQU8sRUFBWDtBQUNBTCxNQUFBQSxDQUFDLENBQUNjLFFBQUYsR0FBYVksVUFBYjtBQUNBMUIsTUFBQUEsQ0FBQyxDQUFDYyxRQUFGLEdBQWFnQixTQUFiO0FBQ0FsQixNQUFBQSxNQUFNLENBQUNaLENBQUMsQ0FBQzJCLEtBQUYsR0FBVUMsT0FBWCxDQUFOLENBQTBCQyxJQUExQixDQUErQixLQUEvQjtBQUNELEtBTEMsQ0FBRjtBQU1ELEdBUE8sQ0FBUjtBQVFELENBaEZPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzaGFsbG93IH0gZnJvbSAnZW56eW1lJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBNYXRoSW5wdXQgfSBmcm9tICdAcGllLWxpYi9tYXRoLWlucHV0JztcblxuZGVzY3JpYmUoJ01hdGhJbnB1dCcsICgpID0+IHtcbiAgbGV0IHc7XG4gIGxldCBvbkNoYW5nZTtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBvbkNoYW5nZSA9IGplc3QuZm4oKTtcbiAgfSk7XG4gIGNvbnN0IHdyYXBwZXIgPSAoZXh0cmFzKSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdHMgPSB7XG4gICAgICBjbGFzc2VzOiB7fSxcbiAgICAgIGNsYXNzTmFtZTogJ2NsYXNzTmFtZScsXG4gICAgICBvbkNoYW5nZSxcbiAgICB9O1xuICAgIGNvbnN0IHByb3BzID0geyAuLi5kZWZhdWx0cywgLi4uZXh0cmFzIH07XG4gICAgcmV0dXJuIHNoYWxsb3coPE1hdGhJbnB1dCB7Li4ucHJvcHN9IC8+KTtcbiAgfTtcbiAgZGVzY3JpYmUoJ3NuYXBzaG90JywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzJywgKCkgPT4ge1xuICAgICAgdyA9IHdyYXBwZXIoKTtcbiAgICAgIGV4cGVjdCh3KS50b01hdGNoU25hcHNob3QoKTtcbiAgICB9KTtcbiAgfSk7XG4gIGRlc2NyaWJlKCdsb2dpYycsICgpID0+IHtcbiAgICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAgIHcgPSB3cmFwcGVyKCk7XG4gICAgICB3Lmluc3RhbmNlKCkuaW5wdXQgPSB7XG4gICAgICAgIHdyaXRlOiBqZXN0LmZuKCksXG4gICAgICAgIGNvbW1hbmQ6IGplc3QuZm4oKSxcbiAgICAgICAga2V5c3Ryb2tlOiBqZXN0LmZuKCksXG4gICAgICB9O1xuICAgIH0pO1xuICAgIGRlc2NyaWJlKCdrZXlwYWRQcmVzcycsICgpID0+IHtcbiAgICAgIGl0KCdjYWxscyBpbnB1dC53cml0ZSBmb3IgbGF0ZXgnLCAoKSA9PiB7XG4gICAgICAgIHcuaW5zdGFuY2UoKS5rZXlwYWRQcmVzcyh7IGxhdGV4OiAnbGF0ZXgnIH0pO1xuICAgICAgICBleHBlY3Qody5pbnN0YW5jZSgpLmlucHV0LndyaXRlKS50b0hhdmVCZWVuTGFzdENhbGxlZFdpdGgoJ2xhdGV4Jyk7XG4gICAgICB9KTtcbiAgICAgIGl0KCdjYWxscyBpbnB1dC53cml0ZSBmb3Igd3JpdGUnLCAoKSA9PiB7XG4gICAgICAgIHcuaW5zdGFuY2UoKS5rZXlwYWRQcmVzcyh7IHdyaXRlOiAnd3JpdGUnIH0pO1xuICAgICAgICBleHBlY3Qody5pbnN0YW5jZSgpLmlucHV0LndyaXRlKS50b0hhdmVCZWVuTGFzdENhbGxlZFdpdGgoJ3dyaXRlJyk7XG4gICAgICB9KTtcbiAgICAgIGl0KCdjYWxscyBpbnB1dC5jb21tYW5kIGZvciBjb21tYW5kJywgKCkgPT4ge1xuICAgICAgICB3Lmluc3RhbmNlKCkua2V5cGFkUHJlc3MoeyBjb21tYW5kOiAnY21kJyB9KTtcbiAgICAgICAgZXhwZWN0KHcuaW5zdGFuY2UoKS5pbnB1dC5jb21tYW5kKS50b0hhdmVCZWVuTGFzdENhbGxlZFdpdGgoJ2NtZCcpO1xuICAgICAgfSk7XG4gICAgICBpdCgnY2FsbHMgaW5wdXQua2V5c3Ryb2tlIGZvciBrZXlzdHJva2UnLCAoKSA9PiB7XG4gICAgICAgIHcuaW5zdGFuY2UoKS5rZXlwYWRQcmVzcyh7IGtleXN0cm9rZTogJ2snIH0pO1xuICAgICAgICBleHBlY3Qody5pbnN0YW5jZSgpLmlucHV0LmtleXN0cm9rZSkudG9IYXZlQmVlbkxhc3RDYWxsZWRXaXRoKCdrJyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2NoYW5nZUxhdGV4JywgKCkgPT4ge1xuICAgIGl0KCdjYWxscyBvbkNoYW5nZScsICgpID0+IHtcbiAgICAgIHcgPSB3cmFwcGVyKCk7XG4gICAgICB3Lmluc3RhbmNlKCkuY2hhbmdlTGF0ZXgoJ25ldy1sYXRleCcpO1xuICAgICAgZXhwZWN0KG9uQ2hhbmdlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgnbmV3LWxhdGV4Jyk7XG4gICAgfSk7XG4gICAgaXQoJ2RvZXMgbm90IGNhbGwgb25DaGFuZ2UgaWYgaXQgaXMgdGhlIHNhbWUgYXMgdGhlIGV4aXN0aW5nIGxhdGV4JywgKCkgPT4ge1xuICAgICAgdyA9IHdyYXBwZXIoKTtcbiAgICAgIHcuc2V0UHJvcHMoeyBsYXRleDogJ25ldy1sYXRleCcgfSk7XG4gICAgICB3Lmluc3RhbmNlKCkuY2hhbmdlTGF0ZXgoJ25ldy1sYXRleCcpO1xuICAgICAgZXhwZWN0KG9uQ2hhbmdlKS5ub3QudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ25ldy1sYXRleCcpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnaW5wdXRGb2N1cycsICgpID0+IHtcbiAgICBpdCgnc2V0cyBzdGF0ZScsICgpID0+IHtcbiAgICAgIHcgPSB3cmFwcGVyKCk7XG4gICAgICB3Lmluc3RhbmNlKCkuaW5wdXRGb2N1cygpO1xuICAgICAgZXhwZWN0KHcuc3RhdGUoKS5mb2N1c2VkKS50b0JlKHRydWUpO1xuICAgIH0pO1xuICB9KTtcbiAgZGVzY3JpYmUoJ2lucHV0Qmx1cicsICgpID0+IHtcbiAgICBpdCgnc2V0cyBzdGF0ZScsICgpID0+IHtcbiAgICAgIHcgPSB3cmFwcGVyKCk7XG4gICAgICB3Lmluc3RhbmNlKCkuaW5wdXRGb2N1cygpO1xuICAgICAgdy5pbnN0YW5jZSgpLmlucHV0Qmx1cigpO1xuICAgICAgZXhwZWN0KHcuc3RhdGUoKS5mb2N1c2VkKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -81,19 +81,23 @@ var HorizontalKeypad = /*#__PURE__*/function (_React$Component) {
81
81
  var _this$props = this.props,
82
82
  mode = _this$props.mode,
83
83
  onFocus = _this$props.onFocus,
84
+ controlledKeypadMode = _this$props.controlledKeypadMode,
84
85
  noDecimal = _this$props.noDecimal,
85
86
  className = _this$props.className,
86
87
  additionalKeys = _this$props.additionalKeys,
87
- layoutForKeyPad = _this$props.layoutForKeyPad;
88
+ layoutForKeyPad = _this$props.layoutForKeyPad,
89
+ setKeypadInteraction = _this$props.setKeypadInteraction;
88
90
  var normalizedKeys = (0, _grades.normalizeAdditionalKeys)(additionalKeys);
89
91
  return /*#__PURE__*/_react["default"].createElement(_keypad["default"], {
90
92
  className: className,
93
+ controlledKeypadMode: controlledKeypadMode,
91
94
  onFocus: onFocus,
92
95
  noDecimal: noDecimal,
93
96
  layoutForKeyPad: layoutForKeyPad,
94
97
  additionalKeys: (0, _utils.extendKeySet)((0, _grades.keysForGrade)(mode), normalizedKeys),
95
98
  onPress: this.keypadPress,
96
- mode: mode
99
+ mode: mode,
100
+ setKeypadInteraction: setKeypadInteraction
97
101
  });
98
102
  }
99
103
  }]);
@@ -103,16 +107,18 @@ var HorizontalKeypad = /*#__PURE__*/function (_React$Component) {
103
107
  exports["default"] = HorizontalKeypad;
104
108
  (0, _defineProperty2["default"])(HorizontalKeypad, "propTypes", {
105
109
  className: _propTypes["default"].string,
110
+ controlledKeypadMode: _propTypes["default"].bool,
106
111
  mode: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
107
112
  layoutForKeyPad: _propTypes["default"].object,
108
113
  onClick: _propTypes["default"].func.isRequired,
109
114
  onFocus: _propTypes["default"].func,
110
115
  noDecimal: _propTypes["default"].bool,
111
- additionalKeys: _propTypes["default"].array
116
+ additionalKeys: _propTypes["default"].array,
117
+ setKeypadInteraction: _propTypes["default"].func
112
118
  });
113
119
  (0, _defineProperty2["default"])(HorizontalKeypad, "defaultProps", {
114
120
  mode: 'scientific',
115
121
  noDecimal: false,
116
122
  additionalKeys: []
117
123
  });
118
- //# sourceMappingURL=horizontal-keypad.js.map
124
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9ob3Jpem9udGFsLWtleXBhZC5qc3giXSwibmFtZXMiOlsidG9PbGRNb2RlbCIsImQiLCJjb21tYW5kIiwidmFsdWUiLCJ0eXBlIiwid3JpdGUiLCJrZXlzdHJva2UiLCJIb3Jpem9udGFsS2V5cGFkIiwiZGF0YSIsIm9uQ2xpY2siLCJwcm9wcyIsIm1vZGUiLCJvbkZvY3VzIiwiY29udHJvbGxlZEtleXBhZE1vZGUiLCJub0RlY2ltYWwiLCJjbGFzc05hbWUiLCJhZGRpdGlvbmFsS2V5cyIsImxheW91dEZvcktleVBhZCIsInNldEtleXBhZEludGVyYWN0aW9uIiwibm9ybWFsaXplZEtleXMiLCJrZXlwYWRQcmVzcyIsIlJlYWN0IiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwic3RyaW5nIiwiYm9vbCIsIm9uZU9mVHlwZSIsIm51bWJlciIsIm9iamVjdCIsImZ1bmMiLCJpc1JlcXVpcmVkIiwiYXJyYXkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7OztBQUVBLElBQU1BLFVBQVUsR0FBRyxTQUFiQSxVQUFhLENBQUNDLENBQUQsRUFBTztBQUN4QixNQUFJQSxDQUFDLENBQUNDLE9BQU4sRUFBZTtBQUNiLFdBQU87QUFBRUMsTUFBQUEsS0FBSyxFQUFFRixDQUFDLENBQUNDLE9BQVg7QUFBb0JFLE1BQUFBLElBQUksRUFBRTtBQUExQixLQUFQO0FBQ0QsR0FGRCxNQUVPLElBQUlILENBQUMsQ0FBQ0ksS0FBTixFQUFhO0FBQ2xCLFdBQU87QUFBRUYsTUFBQUEsS0FBSyxFQUFFRixDQUFDLENBQUNJO0FBQVgsS0FBUDtBQUNELEdBRk0sTUFFQSxJQUFJSixDQUFDLENBQUNLLFNBQU4sRUFBaUI7QUFDdEIsV0FBTztBQUFFRixNQUFBQSxJQUFJLEVBQUUsUUFBUjtBQUFrQkQsTUFBQUEsS0FBSyxFQUFFRixDQUFDLENBQUNLO0FBQTNCLEtBQVA7QUFDRDtBQUNGLENBUkQ7O0lBVXFCQyxnQjs7Ozs7Ozs7Ozs7Ozs7O29HQW1CTCxVQUFDQyxJQUFELEVBQVU7QUFDdEIsVUFBUUMsT0FBUixHQUFvQixNQUFLQyxLQUF6QixDQUFRRCxPQUFSO0FBRUFBLE1BQUFBLE9BQU8sQ0FBQ1QsVUFBVSxDQUFDUSxJQUFELENBQVgsQ0FBUDtBQUNELEs7Ozs7OztXQUVELGtCQUFTO0FBQ1Asd0JBU0ksS0FBS0UsS0FUVDtBQUFBLFVBQ0VDLElBREYsZUFDRUEsSUFERjtBQUFBLFVBRUVDLE9BRkYsZUFFRUEsT0FGRjtBQUFBLFVBR0VDLG9CQUhGLGVBR0VBLG9CQUhGO0FBQUEsVUFJRUMsU0FKRixlQUlFQSxTQUpGO0FBQUEsVUFLRUMsU0FMRixlQUtFQSxTQUxGO0FBQUEsVUFNRUMsY0FORixlQU1FQSxjQU5GO0FBQUEsVUFPRUMsZUFQRixlQU9FQSxlQVBGO0FBQUEsVUFRRUMsb0JBUkYsZUFRRUEsb0JBUkY7QUFVQSxVQUFNQyxjQUFjLEdBQUcscUNBQXdCSCxjQUF4QixDQUF2QjtBQUVBLDBCQUNFLGdDQUFDLGtCQUFEO0FBQ0UsUUFBQSxTQUFTLEVBQUVELFNBRGI7QUFFRSxRQUFBLG9CQUFvQixFQUFFRixvQkFGeEI7QUFHRSxRQUFBLE9BQU8sRUFBRUQsT0FIWDtBQUlFLFFBQUEsU0FBUyxFQUFFRSxTQUpiO0FBS0UsUUFBQSxlQUFlLEVBQUVHLGVBTG5CO0FBTUUsUUFBQSxjQUFjLEVBQUUseUJBQWEsMEJBQWFOLElBQWIsQ0FBYixFQUFpQ1EsY0FBakMsQ0FObEI7QUFPRSxRQUFBLE9BQU8sRUFBRSxLQUFLQyxXQVBoQjtBQVFFLFFBQUEsSUFBSSxFQUFFVCxJQVJSO0FBU0UsUUFBQSxvQkFBb0IsRUFBRU87QUFUeEIsUUFERjtBQWFEOzs7RUFuRDJDRyxrQkFBTUMsUzs7O2lDQUEvQmYsZ0IsZUFDQTtBQUNqQlEsRUFBQUEsU0FBUyxFQUFFUSxzQkFBVUMsTUFESjtBQUVqQlgsRUFBQUEsb0JBQW9CLEVBQUVVLHNCQUFVRSxJQUZmO0FBR2pCZCxFQUFBQSxJQUFJLEVBQUVZLHNCQUFVRyxTQUFWLENBQW9CLENBQUNILHNCQUFVQyxNQUFYLEVBQW1CRCxzQkFBVUksTUFBN0IsQ0FBcEIsQ0FIVztBQUlqQlYsRUFBQUEsZUFBZSxFQUFFTSxzQkFBVUssTUFKVjtBQUtqQm5CLEVBQUFBLE9BQU8sRUFBRWMsc0JBQVVNLElBQVYsQ0FBZUMsVUFMUDtBQU1qQmxCLEVBQUFBLE9BQU8sRUFBRVcsc0JBQVVNLElBTkY7QUFPakJmLEVBQUFBLFNBQVMsRUFBRVMsc0JBQVVFLElBUEo7QUFRakJULEVBQUFBLGNBQWMsRUFBRU8sc0JBQVVRLEtBUlQ7QUFTakJiLEVBQUFBLG9CQUFvQixFQUFFSyxzQkFBVU07QUFUZixDO2lDQURBdEIsZ0Isa0JBYUc7QUFDcEJJLEVBQUFBLElBQUksRUFBRSxZQURjO0FBRXBCRyxFQUFBQSxTQUFTLEVBQUUsS0FGUztBQUdwQkUsRUFBQUEsY0FBYyxFQUFFO0FBSEksQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsga2V5c0ZvckdyYWRlLCBub3JtYWxpemVBZGRpdGlvbmFsS2V5cyB9IGZyb20gJy4va2V5cy9ncmFkZXMnO1xuaW1wb3J0IHsgZXh0ZW5kS2V5U2V0IH0gZnJvbSAnLi9rZXlzL3V0aWxzJztcbmltcG9ydCBLZXlwYWQgZnJvbSAnLi9rZXlwYWQnO1xuXG5jb25zdCB0b09sZE1vZGVsID0gKGQpID0+IHtcbiAgaWYgKGQuY29tbWFuZCkge1xuICAgIHJldHVybiB7IHZhbHVlOiBkLmNvbW1hbmQsIHR5cGU6ICdjb21tYW5kJyB9O1xuICB9IGVsc2UgaWYgKGQud3JpdGUpIHtcbiAgICByZXR1cm4geyB2YWx1ZTogZC53cml0ZSB9O1xuICB9IGVsc2UgaWYgKGQua2V5c3Ryb2tlKSB7XG4gICAgcmV0dXJuIHsgdHlwZTogJ2N1cnNvcicsIHZhbHVlOiBkLmtleXN0cm9rZSB9O1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBIb3Jpem9udGFsS2V5cGFkIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY29udHJvbGxlZEtleXBhZE1vZGU6IFByb3BUeXBlcy5ib29sLFxuICAgIG1vZGU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5udW1iZXJdKSxcbiAgICBsYXlvdXRGb3JLZXlQYWQ6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBvbkZvY3VzOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBub0RlY2ltYWw6IFByb3BUeXBlcy5ib29sLFxuICAgIGFkZGl0aW9uYWxLZXlzOiBQcm9wVHlwZXMuYXJyYXksXG4gICAgc2V0S2V5cGFkSW50ZXJhY3Rpb246IFByb3BUeXBlcy5mdW5jLFxuICB9O1xuXG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgbW9kZTogJ3NjaWVudGlmaWMnLFxuICAgIG5vRGVjaW1hbDogZmFsc2UsXG4gICAgYWRkaXRpb25hbEtleXM6IFtdLFxuICB9O1xuXG4gIGtleXBhZFByZXNzID0gKGRhdGEpID0+IHtcbiAgICBjb25zdCB7IG9uQ2xpY2sgfSA9IHRoaXMucHJvcHM7XG5cbiAgICBvbkNsaWNrKHRvT2xkTW9kZWwoZGF0YSkpO1xuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7XG4gICAgICBtb2RlLFxuICAgICAgb25Gb2N1cyxcbiAgICAgIGNvbnRyb2xsZWRLZXlwYWRNb2RlLFxuICAgICAgbm9EZWNpbWFsLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgYWRkaXRpb25hbEtleXMsXG4gICAgICBsYXlvdXRGb3JLZXlQYWQsXG4gICAgICBzZXRLZXlwYWRJbnRlcmFjdGlvbixcbiAgICB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBub3JtYWxpemVkS2V5cyA9IG5vcm1hbGl6ZUFkZGl0aW9uYWxLZXlzKGFkZGl0aW9uYWxLZXlzKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8S2V5cGFkXG4gICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgICBjb250cm9sbGVkS2V5cGFkTW9kZT17Y29udHJvbGxlZEtleXBhZE1vZGV9XG4gICAgICAgIG9uRm9jdXM9e29uRm9jdXN9XG4gICAgICAgIG5vRGVjaW1hbD17bm9EZWNpbWFsfVxuICAgICAgICBsYXlvdXRGb3JLZXlQYWQ9e2xheW91dEZvcktleVBhZH1cbiAgICAgICAgYWRkaXRpb25hbEtleXM9e2V4dGVuZEtleVNldChrZXlzRm9yR3JhZGUobW9kZSksIG5vcm1hbGl6ZWRLZXlzKX1cbiAgICAgICAgb25QcmVzcz17dGhpcy5rZXlwYWRQcmVzc31cbiAgICAgICAgbW9kZT17bW9kZX1cbiAgICAgICAgc2V0S2V5cGFkSW50ZXJhY3Rpb249e3NldEtleXBhZEludGVyYWN0aW9ufVxuICAgICAgLz5cbiAgICApO1xuICB9XG59XG4iXX0=
package/lib/index.js CHANGED
@@ -20,10 +20,18 @@ Object.defineProperty(exports, "keysForGrade", {
20
20
  return _grades.keysForGrade;
21
21
  }
22
22
  });
23
- exports.updateSpans = exports.removeBrackets = exports.mq = void 0;
23
+ exports.removeBrackets = exports.mq = void 0;
24
+ Object.defineProperty(exports, "updateSpans", {
25
+ enumerable: true,
26
+ get: function get() {
27
+ return _updateSpans.updateSpans;
28
+ }
29
+ });
24
30
 
25
31
  var _grades = require("./keys/grades");
26
32
 
33
+ var _updateSpans = require("./updateSpans");
34
+
27
35
  var keys = _interopRequireWildcard(require("./keys"));
28
36
 
29
37
  exports.keys = keys;
@@ -62,19 +70,7 @@ exports.addBrackets = addBrackets;
62
70
 
63
71
  var removeBrackets = function removeBrackets(s) {
64
72
  return rmRightBracket(rmLeftBracket(s));
65
- }; // increase the font of parallel notation
66
-
67
-
68
- exports.removeBrackets = removeBrackets;
69
-
70
- var updateSpans = function updateSpans() {
71
- var spans = Array.from(document.querySelectorAll('span[mathquill-command-id]'));
72
- (spans || []).forEach(function (span) {
73
- if (span && span.innerText === '∥' && span.className !== 'mq-editable-field') {
74
- span.style.fontSize = '32px';
75
- }
76
- });
77
73
  };
78
74
 
79
- exports.updateSpans = updateSpans;
80
- //# sourceMappingURL=index.js.map
75
+ exports.removeBrackets = removeBrackets;
76
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qc3giXSwibmFtZXMiOlsiYWRkTGVmdEJyYWNrZXQiLCJzIiwiaW5kZXhPZiIsImFkZFJpZ2h0QnJhY2tldCIsImxlbmd0aCIsInJtTGVmdEJyYWNrZXQiLCJzdWJzdHJpbmciLCJybVJpZ2h0QnJhY2tldCIsImFkZEJyYWNrZXRzIiwicmVtb3ZlQnJhY2tldHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQVVBOzs7O0FBRUE7O0FBRUE7Ozs7Ozs7O0FBWkEsSUFBTUEsY0FBYyxHQUFHLFNBQWpCQSxjQUFpQixDQUFDQyxDQUFEO0FBQUEsU0FBUUEsQ0FBQyxDQUFDQyxPQUFGLENBQVUsS0FBVixNQUFxQixDQUFyQixHQUF5QkQsQ0FBekIsZ0JBQW1DQSxDQUFuQyxDQUFSO0FBQUEsQ0FBdkI7O0FBQ0EsSUFBTUUsZUFBZSxHQUFHLFNBQWxCQSxlQUFrQixDQUFDRixDQUFEO0FBQUEsU0FBUUEsQ0FBQyxDQUFDQyxPQUFGLENBQVUsS0FBVixNQUFxQkQsQ0FBQyxDQUFDRyxNQUFGLEdBQVcsQ0FBaEMsR0FBb0NILENBQXBDLGFBQTJDQSxDQUEzQyxRQUFSO0FBQUEsQ0FBeEI7O0FBQ0EsSUFBTUksYUFBYSxHQUFHLFNBQWhCQSxhQUFnQixDQUFDSixDQUFEO0FBQUEsU0FBUUEsQ0FBQyxDQUFDQyxPQUFGLENBQVUsS0FBVixNQUFxQixDQUFyQixHQUF5QkQsQ0FBQyxDQUFDSyxTQUFGLENBQVksQ0FBWixDQUF6QixHQUEwQ0wsQ0FBbEQ7QUFBQSxDQUF0Qjs7QUFDQSxJQUFNTSxjQUFjLEdBQUcsU0FBakJBLGNBQWlCLENBQUNOLENBQUQ7QUFBQSxTQUFRQSxDQUFDLENBQUNDLE9BQUYsQ0FBVSxLQUFWLE1BQXFCRCxDQUFDLENBQUNHLE1BQUYsR0FBVyxDQUFoQyxHQUFvQ0gsQ0FBQyxDQUFDSyxTQUFGLENBQVksQ0FBWixFQUFlTCxDQUFDLENBQUNHLE1BQUYsR0FBVyxDQUExQixDQUFwQyxHQUFtRUgsQ0FBM0U7QUFBQSxDQUF2Qjs7QUFFQSxJQUFNTyxXQUFXLEdBQUcsU0FBZEEsV0FBYyxDQUFDUCxDQUFEO0FBQUEsU0FBT0UsZUFBZSxDQUFDSCxjQUFjLENBQUNDLENBQUQsQ0FBZixDQUF0QjtBQUFBLENBQXBCOzs7O0FBQ0EsSUFBTVEsY0FBYyxHQUFHLFNBQWpCQSxjQUFpQixDQUFDUixDQUFEO0FBQUEsU0FBT00sY0FBYyxDQUFDRixhQUFhLENBQUNKLENBQUQsQ0FBZCxDQUFyQjtBQUFBLENBQXZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsga2V5c0ZvckdyYWRlIH0gZnJvbSAnLi9rZXlzL2dyYWRlcyc7XG5pbXBvcnQgeyB1cGRhdGVTcGFuc30gZnJvbSBcIi4vdXBkYXRlU3BhbnNcIjtcblxuY29uc3QgYWRkTGVmdEJyYWNrZXQgPSAocykgPT4gKHMuaW5kZXhPZignXFxcXCgnKSA9PT0gMCA/IHMgOiBgXFxcXCgke3N9YCk7XG5jb25zdCBhZGRSaWdodEJyYWNrZXQgPSAocykgPT4gKHMuaW5kZXhPZignXFxcXCknKSA9PT0gcy5sZW5ndGggLSAyID8gcyA6IGAke3N9XFxcXClgKTtcbmNvbnN0IHJtTGVmdEJyYWNrZXQgPSAocykgPT4gKHMuaW5kZXhPZignXFxcXCgnKSA9PT0gMCA/IHMuc3Vic3RyaW5nKDIpIDogcyk7XG5jb25zdCBybVJpZ2h0QnJhY2tldCA9IChzKSA9PiAocy5pbmRleE9mKCdcXFxcKScpID09PSBzLmxlbmd0aCAtIDIgPyBzLnN1YnN0cmluZygwLCBzLmxlbmd0aCAtIDIpIDogcyk7XG5cbmNvbnN0IGFkZEJyYWNrZXRzID0gKHMpID0+IGFkZFJpZ2h0QnJhY2tldChhZGRMZWZ0QnJhY2tldChzKSk7XG5jb25zdCByZW1vdmVCcmFja2V0cyA9IChzKSA9PiBybVJpZ2h0QnJhY2tldChybUxlZnRCcmFja2V0KHMpKTtcblxuaW1wb3J0ICogYXMga2V5cyBmcm9tICcuL2tleXMnO1xuXG5pbXBvcnQgSG9yaXpvbnRhbEtleXBhZCBmcm9tICcuL2hvcml6b250YWwta2V5cGFkJztcblxuaW1wb3J0ICogYXMgbXEgZnJvbSAnLi9tcSc7XG5cbmV4cG9ydCB7IGtleXNGb3JHcmFkZSwgYWRkQnJhY2tldHMsIHJlbW92ZUJyYWNrZXRzLCBrZXlzLCBIb3Jpem9udGFsS2V5cGFkLCBtcSwgdXBkYXRlU3BhbnMgfTtcbiJdfQ==
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
6
+
7
+ var _enzyme = require("enzyme");
8
+
9
+ var _react = _interopRequireDefault(require("react"));
10
+
11
+ var _index = require("../index");
12
+
13
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
14
+
15
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
16
+
17
+ describe('Keypad', function () {
18
+ var w;
19
+ var onChange = jest.fn();
20
+
21
+ var wrapper = function wrapper(extras) {
22
+ var defaults = {
23
+ classes: {},
24
+ className: 'className',
25
+ onChange: onChange,
26
+ onPress: jest.fn()
27
+ };
28
+
29
+ var props = _objectSpread(_objectSpread({}, defaults), extras);
30
+
31
+ return (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_index.KeyPad, props));
32
+ };
33
+
34
+ describe('snapshot', function () {
35
+ it('renders', function () {
36
+ w = wrapper();
37
+ expect(w).toMatchSnapshot();
38
+ });
39
+ });
40
+ });
41
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9rZXlwYWQvX190ZXN0c19fL2luZGV4LnRlc3QuanN4Il0sIm5hbWVzIjpbImRlc2NyaWJlIiwidyIsIm9uQ2hhbmdlIiwiamVzdCIsImZuIiwid3JhcHBlciIsImV4dHJhcyIsImRlZmF1bHRzIiwiY2xhc3NlcyIsImNsYXNzTmFtZSIsIm9uUHJlc3MiLCJwcm9wcyIsIml0IiwiZXhwZWN0IiwidG9NYXRjaFNuYXBzaG90Il0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7Ozs7O0FBRUFBLFFBQVEsQ0FBQyxRQUFELEVBQVcsWUFBTTtBQUN2QixNQUFJQyxDQUFKO0FBQ0EsTUFBSUMsUUFBUSxHQUFHQyxJQUFJLENBQUNDLEVBQUwsRUFBZjs7QUFDQSxNQUFNQyxPQUFPLEdBQUcsU0FBVkEsT0FBVSxDQUFDQyxNQUFELEVBQVk7QUFDMUIsUUFBTUMsUUFBUSxHQUFHO0FBQ2ZDLE1BQUFBLE9BQU8sRUFBRSxFQURNO0FBRWZDLE1BQUFBLFNBQVMsRUFBRSxXQUZJO0FBR2ZQLE1BQUFBLFFBQVEsRUFBUkEsUUFIZTtBQUlmUSxNQUFBQSxPQUFPLEVBQUVQLElBQUksQ0FBQ0MsRUFBTDtBQUpNLEtBQWpCOztBQU1BLFFBQU1PLEtBQUssbUNBQVFKLFFBQVIsR0FBcUJELE1BQXJCLENBQVg7O0FBQ0EsV0FBTyxtQ0FBUSxnQ0FBQyxhQUFELEVBQVlLLEtBQVosQ0FBUixDQUFQO0FBQ0QsR0FURDs7QUFVQVgsRUFBQUEsUUFBUSxDQUFDLFVBQUQsRUFBYSxZQUFNO0FBQ3pCWSxJQUFBQSxFQUFFLENBQUMsU0FBRCxFQUFZLFlBQU07QUFDbEJYLE1BQUFBLENBQUMsR0FBR0ksT0FBTyxFQUFYO0FBQ0FRLE1BQUFBLE1BQU0sQ0FBQ1osQ0FBRCxDQUFOLENBQVVhLGVBQVY7QUFDRCxLQUhDLENBQUY7QUFJRCxHQUxPLENBQVI7QUFNRCxDQW5CTyxDQUFSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc2hhbGxvdyB9IGZyb20gJ2VuenltZSc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgS2V5UGFkIH0gZnJvbSAnLi4vaW5kZXgnO1xuXG5kZXNjcmliZSgnS2V5cGFkJywgKCkgPT4ge1xuICBsZXQgdztcbiAgbGV0IG9uQ2hhbmdlID0gamVzdC5mbigpO1xuICBjb25zdCB3cmFwcGVyID0gKGV4dHJhcykgPT4ge1xuICAgIGNvbnN0IGRlZmF1bHRzID0ge1xuICAgICAgY2xhc3Nlczoge30sXG4gICAgICBjbGFzc05hbWU6ICdjbGFzc05hbWUnLFxuICAgICAgb25DaGFuZ2UsXG4gICAgICBvblByZXNzOiBqZXN0LmZuKCksXG4gICAgfTtcbiAgICBjb25zdCBwcm9wcyA9IHsgLi4uZGVmYXVsdHMsIC4uLmV4dHJhcyB9O1xuICAgIHJldHVybiBzaGFsbG93KDxLZXlQYWQgey4uLnByb3BzfSAvPik7XG4gIH07XG4gIGRlc2NyaWJlKCdzbmFwc2hvdCcsICgpID0+IHtcbiAgICBpdCgncmVuZGVycycsICgpID0+IHtcbiAgICAgIHcgPSB3cmFwcGVyKCk7XG4gICAgICBleHBlY3QodykudG9NYXRjaFNuYXBzaG90KCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ var _keysLayout = require("../keys-layout");
4
+
5
+ var _keys = require("../../keys");
6
+
7
+ describe('keys-layout', function () {
8
+ describe('sortKeys', function () {
9
+ it('pads the rows', function () {
10
+ var result = (0, _keysLayout.sortKeys)([[1, 2, 3]]);
11
+ expect(result).toEqual([[1, undefined, undefined, undefined, undefined], [2, undefined, undefined, undefined, undefined], [3, undefined, undefined, undefined, undefined]]);
12
+ });
13
+ });
14
+ });
15
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9rZXlwYWQvX190ZXN0c19fL2tleXMtbGF5b3V0LnRlc3QuanMiXSwibmFtZXMiOlsiZGVzY3JpYmUiLCJpdCIsInJlc3VsdCIsImV4cGVjdCIsInRvRXF1YWwiLCJ1bmRlZmluZWQiXSwibWFwcGluZ3MiOiI7O0FBQUE7O0FBQ0E7O0FBRUFBLFFBQVEsQ0FBQyxhQUFELEVBQWdCLFlBQU07QUFDNUJBLEVBQUFBLFFBQVEsQ0FBQyxVQUFELEVBQWEsWUFBTTtBQUN6QkMsSUFBQUEsRUFBRSxDQUFDLGVBQUQsRUFBa0IsWUFBTTtBQUN4QixVQUFNQyxNQUFNLEdBQUcsMEJBQVMsQ0FBQyxDQUFDLENBQUQsRUFBSSxDQUFKLEVBQU8sQ0FBUCxDQUFELENBQVQsQ0FBZjtBQUNBQyxNQUFBQSxNQUFNLENBQUNELE1BQUQsQ0FBTixDQUFlRSxPQUFmLENBQXVCLENBQ3JCLENBQUMsQ0FBRCxFQUFJQyxTQUFKLEVBQWVBLFNBQWYsRUFBMEJBLFNBQTFCLEVBQXFDQSxTQUFyQyxDQURxQixFQUVyQixDQUFDLENBQUQsRUFBSUEsU0FBSixFQUFlQSxTQUFmLEVBQTBCQSxTQUExQixFQUFxQ0EsU0FBckMsQ0FGcUIsRUFHckIsQ0FBQyxDQUFELEVBQUlBLFNBQUosRUFBZUEsU0FBZixFQUEwQkEsU0FBMUIsRUFBcUNBLFNBQXJDLENBSHFCLENBQXZCO0FBS0QsS0FQQyxDQUFGO0FBUUQsR0FUTyxDQUFSO0FBVUQsQ0FYTyxDQUFSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc29ydEtleXMgfSBmcm9tICcuLi9rZXlzLWxheW91dCc7XG5pbXBvcnQgeyBiYXNlU2V0LCBjb21wYXJpc29uIH0gZnJvbSAnLi4vLi4va2V5cyc7XG5cbmRlc2NyaWJlKCdrZXlzLWxheW91dCcsICgpID0+IHtcbiAgZGVzY3JpYmUoJ3NvcnRLZXlzJywgKCkgPT4ge1xuICAgIGl0KCdwYWRzIHRoZSByb3dzJywgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gc29ydEtleXMoW1sxLCAyLCAzXV0pO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChbXG4gICAgICAgIFsxLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWRdLFxuICAgICAgICBbMiwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkXSxcbiAgICAgICAgWzMsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZF0sXG4gICAgICBdKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -43,17 +43,21 @@ var _colorManipulator = require("@material-ui/core/styles/colorManipulator");
43
43
 
44
44
  var _green = _interopRequireDefault(require("@material-ui/core/colors/green"));
45
45
 
46
- var _keysLayout = require("./keys-layout");
46
+ var _debug = _interopRequireDefault(require("debug"));
47
+
48
+ var _lodash = _interopRequireDefault(require("lodash"));
49
+
50
+ var _mathquill = _interopRequireDefault(require("@pie-framework/mathquill"));
47
51
 
48
52
  var mq = _interopRequireWildcard(require("../mq"));
49
53
 
50
54
  var _keys = require("../keys");
51
55
 
52
- var _debug = _interopRequireDefault(require("debug"));
56
+ var _editableHtml = require("@pie-lib/editable-html");
53
57
 
54
- var _lodash = _interopRequireDefault(require("lodash"));
58
+ var _commonMqStyles = require("../mq/common-mq-styles");
55
59
 
56
- var _mathquill = _interopRequireDefault(require("@pie-framework/mathquill"));
60
+ var _keysLayout = require("./keys-layout");
57
61
 
58
62
  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); }
59
63
 
@@ -91,6 +95,10 @@ var LatexButton = (0, _styles.withStyles)(function (theme) {
91
95
  '& .mq-overline .mq-overline-inner': {
92
96
  borderTop: '2px solid black'
93
97
  },
98
+ '& .mq-non-leaf.mq-overline': {
99
+ borderTop: 'none !important' // fixing PD-4873 - in OT, it has border-top 1px and adds extra line
100
+
101
+ },
94
102
  '& .mq-overarrow': {
95
103
  width: '30px',
96
104
  marginTop: '0 !important',
@@ -99,12 +107,14 @@ var LatexButton = (0, _styles.withStyles)(function (theme) {
99
107
  '&.mq-arrow-both': {
100
108
  top: '0px !important',
101
109
  '& *': {
102
- lineHeight: '1 !important'
110
+ lineHeight: '1 !important',
111
+ borderTop: 'none !important' // fixing PD-4873 - in OT, it has border-top 1px and adds extra line,
112
+
103
113
  },
104
114
  '&:before': {
105
115
  fontSize: '80%',
106
- left: 'calc(-13%)',
107
- top: '-0.31em'
116
+ left: 'calc(-13%) !important',
117
+ top: '-0.31em !important'
108
118
  },
109
119
  '&:after': {
110
120
  fontSize: '80% !important',
@@ -127,8 +137,8 @@ var LatexButton = (0, _styles.withStyles)(function (theme) {
127
137
  },
128
138
  '&.mq-arrow-right:before': {
129
139
  fontSize: '80%',
130
- right: 'calc(-13%)',
131
- top: '-0.26em'
140
+ right: 'calc(-13%) !important',
141
+ top: '-0.26em !important'
132
142
  },
133
143
  '& .mq-overarrow-inner': {
134
144
  border: 'none !important'
@@ -164,6 +174,10 @@ var LatexButton = (0, _styles.withStyles)(function (theme) {
164
174
  },
165
175
  '& .mq-overarc': {
166
176
  borderTop: '2px solid black !important',
177
+ '& .mq-overline': {
178
+ borderTop: 'none !important' // fixing PD-4873 - in OT, it has border-top 1px and adds extra line
179
+
180
+ },
167
181
  '& .mq-overline-inner': {
168
182
  borderTop: 'none !important',
169
183
  paddingTop: '0 !important'
@@ -171,7 +185,7 @@ var LatexButton = (0, _styles.withStyles)(function (theme) {
171
185
  }
172
186
  },
173
187
  parallelButton: {
174
- fontStyle: 'italic'
188
+ fontStyle: 'italic !important'
175
189
  },
176
190
  leftRightArrowButton: {
177
191
  '& .mq-overarrow.mq-arrow-both': {
@@ -237,16 +251,18 @@ var KeyPad = /*#__PURE__*/function (_React$Component) {
237
251
 
238
252
  var _super = _createSuper(KeyPad);
239
253
 
240
- function KeyPad() {
254
+ function KeyPad(props) {
241
255
  var _this;
242
256
 
243
257
  (0, _classCallCheck2["default"])(this, KeyPad);
244
-
245
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
246
- args[_key] = arguments[_key];
247
- }
248
-
249
- _this = _super.call.apply(_super, [this].concat(args));
258
+ _this = _super.call(this, props);
259
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleKeypadInteraction", function () {
260
+ // Check if the setKeypadInteraction prop is available, which is used for both
261
+ // the language keypad and the special characters keypad
262
+ if (_this.props.setKeypadInteraction) {
263
+ _this.props.setKeypadInteraction(true);
264
+ }
265
+ });
250
266
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "buttonClick", function (key) {
251
267
  log('[buttonClick]', key);
252
268
  var onPress = _this.props.onPress;
@@ -265,10 +281,59 @@ var KeyPad = /*#__PURE__*/function (_React$Component) {
265
281
 
266
282
  return false;
267
283
  });
284
+ _this.keypadRef = /*#__PURE__*/_react["default"].createRef();
268
285
  return _this;
269
286
  }
270
287
 
271
288
  (0, _createClass2["default"])(KeyPad, [{
289
+ key: "componentDidMount",
290
+ value: function componentDidMount() {
291
+ var _this$keypadRef;
292
+
293
+ var keyPadElement = (_this$keypadRef = this.keypadRef) === null || _this$keypadRef === void 0 ? void 0 : _this$keypadRef.current;
294
+ var mainContainer = keyPadElement === null || keyPadElement === void 0 ? void 0 : keyPadElement.closest(".".concat(_editableHtml.constants.MAIN_CONTAINER_CLASS));
295
+ var currentToolbar = keyPadElement === null || keyPadElement === void 0 ? void 0 : keyPadElement.closest('.pie-toolbar'); // need only for math keyboard so we need also controlledKeypadMode
296
+
297
+ if (this.props.controlledKeypadMode && mainContainer && currentToolbar) {
298
+ var mainContainerPosition = mainContainer.getBoundingClientRect();
299
+ var currentToolbarPosition = currentToolbar.getBoundingClientRect();
300
+ var difference = mainContainerPosition.top + mainContainerPosition.height - (currentToolbarPosition.top + currentToolbarPosition.height);
301
+
302
+ if (difference < 0) {
303
+ var totalHeight = mainContainerPosition.height + mainContainerPosition.top - difference; // increase the height of the main container if keyboard needs it
304
+
305
+ if (mainContainer) {
306
+ mainContainer.style.height = "".concat(totalHeight, "px");
307
+ }
308
+ }
309
+ }
310
+
311
+ if (keyPadElement) {
312
+ keyPadElement.addEventListener('touchstart', this.handleKeypadInteraction, true);
313
+ keyPadElement.addEventListener('mousedown', this.handleKeypadInteraction, true);
314
+ }
315
+ }
316
+ }, {
317
+ key: "componentWillUnmount",
318
+ value: function componentWillUnmount() {
319
+ var _this$keypadRef2;
320
+
321
+ var keyPadElement = (_this$keypadRef2 = this.keypadRef) === null || _this$keypadRef2 === void 0 ? void 0 : _this$keypadRef2.current; // need only for math keyboard
322
+
323
+ if (this.props.controlledKeypadMode && keyPadElement) {
324
+ var mainContainer = keyPadElement.closest(".".concat(_editableHtml.constants.MAIN_CONTAINER_CLASS));
325
+
326
+ if (mainContainer) {
327
+ mainContainer.style.height = 'unset';
328
+ }
329
+ }
330
+
331
+ if (keyPadElement) {
332
+ keyPadElement.removeEventListener('touchstart', this.handleKeypadInteraction, true);
333
+ keyPadElement.removeEventListener('mousedown', this.handleKeypadInteraction, true);
334
+ }
335
+ }
336
+ }, {
272
337
  key: "render",
273
338
  value: function render() {
274
339
  var _this2 = this;
@@ -292,6 +357,7 @@ var KeyPad = /*#__PURE__*/function (_React$Component) {
292
357
  }, createCustomLayout(layoutForKeyPad));
293
358
 
294
359
  return /*#__PURE__*/_react["default"].createElement("div", {
360
+ ref: this.keypadRef,
295
361
  className: (0, _classnames["default"])(classes.keys, className, classes[mode]),
296
362
  style: style,
297
363
  onFocus: onFocus
@@ -325,6 +391,7 @@ var KeyPad = /*#__PURE__*/function (_React$Component) {
325
391
  return /*#__PURE__*/_react["default"].createElement(_Button["default"], (0, _extends2["default"])({
326
392
  key: index
327
393
  }, common, {
394
+ className: (0, _classnames["default"])(common.className, (0, _defineProperty2["default"])({}, classes.deleteButton, k.label === '⌫')),
328
395
  "aria-label": k.ariaLabel ? k.ariaLabel : k.name || k.label
329
396
  }), k.label);
330
397
  } else {
@@ -347,13 +414,15 @@ exports.KeyPad = KeyPad;
347
414
  (0, _defineProperty2["default"])(KeyPad, "propTypes", {
348
415
  classes: _propTypes["default"].object.isRequired,
349
416
  className: _propTypes["default"].string,
417
+ controlledKeypadMode: _propTypes["default"].bool,
350
418
  baseSet: _propTypes["default"].array,
351
419
  additionalKeys: _propTypes["default"].array,
352
420
  layoutForKeyPad: _propTypes["default"].object,
353
421
  onPress: _propTypes["default"].func.isRequired,
354
422
  onFocus: _propTypes["default"].func,
355
423
  noDecimal: _propTypes["default"].bool,
356
- mode: _propTypes["default"].string
424
+ setKeypadInteraction: _propTypes["default"].func,
425
+ mode: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number])
357
426
  });
358
427
  (0, _defineProperty2["default"])(KeyPad, "defaultProps", {
359
428
  baseSet: _keys.baseSet,
@@ -362,23 +431,20 @@ exports.KeyPad = KeyPad;
362
431
 
363
432
  var styles = function styles(theme) {
364
433
  return {
365
- keys: {
366
- '& *': {
367
- fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important'
368
- },
434
+ keys: _objectSpread(_objectSpread({}, _commonMqStyles.commonMqKeyboardStyles), {}, {
369
435
  width: '100%',
370
436
  display: 'grid',
371
437
  gridTemplateRows: 'repeat(5, minmax(40px, 60px))',
372
438
  gridRowGap: '0px',
373
439
  gridColumnGap: '0px',
374
440
  gridAutoFlow: 'column'
375
- },
441
+ }),
376
442
  character: {
377
443
  textTransform: 'initial !important',
378
444
  gridTemplateRows: 'repeat(5, minmax(40px, 50px)) !important'
379
445
  },
380
446
  language: {
381
- gridTemplateRows: 'repeat(5, minmax(40px, 50px)) !important',
447
+ gridTemplateRows: 'repeat(4, minmax(40px, 50px)) !important',
382
448
  '& *': {
383
449
  fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important'
384
450
  }
@@ -408,6 +474,11 @@ var styles = function styles(theme) {
408
474
  backgroundColor: (0, _colorManipulator.lighten)(theme.palette.primary.light, 0.7)
409
475
  }
410
476
  },
477
+ deleteButton: {
478
+ '& > span': {
479
+ fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important'
480
+ }
481
+ },
411
482
  base: {},
412
483
  operators: {
413
484
  backgroundColor: (0, _colorManipulator.lighten)(theme.palette.secondary.light, 0.5),
@@ -438,4 +509,4 @@ var styles = function styles(theme) {
438
509
  var _default = (0, _styles.withStyles)(styles)(KeyPad);
439
510
 
440
511
  exports["default"] = _default;
441
- //# sourceMappingURL=index.js.map
512
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9rZXlwYWQvaW5kZXguanN4Il0sIm5hbWVzIjpbImxvZyIsIkxhdGV4QnV0dG9uIiwidGhlbWUiLCJyb290IiwidGV4dFRyYW5zZm9ybSIsInBhZGRpbmciLCJtYXJnaW4iLCJmb250U2l6ZSIsImxhdGV4QnV0dG9uIiwicG9pbnRlckV2ZW50cyIsInRyYW5zZm9ybSIsIm1hcmdpbkJvdHRvbSIsImJhY2tncm91bmRDb2xvciIsInBhbGV0dGUiLCJzZWNvbmRhcnkiLCJtYWluIiwiYm9yZGVyVG9wIiwid2lkdGgiLCJtYXJnaW5Ub3AiLCJmb250RmFtaWx5IiwidG9wIiwibGluZUhlaWdodCIsImxlZnQiLCJyaWdodCIsIm1pbkhlaWdodCIsImJvcmRlciIsImRpc3BsYXkiLCJwYWRkaW5nVG9wIiwicGFyYWxsZWxCdXR0b24iLCJmb250U3R5bGUiLCJsZWZ0UmlnaHRBcnJvd0J1dHRvbiIsInBvc2l0aW9uIiwicHJvcHMiLCJidXR0b25DbGFzcyIsImxhdGV4IiwiY2xhc3NlcyIsIm1xQ2xhc3NOYW1lIiwiTVEiLCJNYXRoUXVpbGwiLCJnZXRJbnRlcmZhY2UiLCJzcGFuIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiaW5uZXJIVE1MIiwibWF0aEZpZWxkIiwiU3RhdGljTWF0aCIsInBhcnNlTGF0ZXgiLCJlIiwiY2xhc3NOYW1lIiwib25DbGljayIsImFyaWFMYWJlbCIsImNyZWF0ZUN1c3RvbUxheW91dCIsImxheW91dE9iaiIsImdyaWRUZW1wbGF0ZUNvbHVtbnMiLCJjb2x1bW5zIiwiZ3JpZFRlbXBsYXRlUm93cyIsInJvd3MiLCJncmlkQXV0b0Zsb3ciLCJLZXlQYWQiLCJzZXRLZXlwYWRJbnRlcmFjdGlvbiIsImtleSIsIm9uUHJlc3MiLCJiYXNlIiwiZXh0cmFzIiwidHJhbnNwb3NlZCIsIl8iLCJmbGF0dGVuIiwibm9EZWNpbWFsIiwid3JpdGUiLCJsYWJlbCIsImtleXBhZFJlZiIsIlJlYWN0IiwiY3JlYXRlUmVmIiwia2V5UGFkRWxlbWVudCIsImN1cnJlbnQiLCJtYWluQ29udGFpbmVyIiwiY2xvc2VzdCIsImNvbnN0YW50cyIsIk1BSU5fQ09OVEFJTkVSX0NMQVNTIiwiY3VycmVudFRvb2xiYXIiLCJjb250cm9sbGVkS2V5cGFkTW9kZSIsIm1haW5Db250YWluZXJQb3NpdGlvbiIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImN1cnJlbnRUb29sYmFyUG9zaXRpb24iLCJkaWZmZXJlbmNlIiwiaGVpZ2h0IiwidG90YWxIZWlnaHQiLCJzdHlsZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJoYW5kbGVLZXlwYWRJbnRlcmFjdGlvbiIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJiYXNlU2V0IiwiYWRkaXRpb25hbEtleXMiLCJsYXlvdXRGb3JLZXlQYWQiLCJvbkZvY3VzIiwibW9kZSIsIm5vQmFzZVNldCIsImtleXNXaXRob3V0QmFzZVNldCIsImluY2x1ZGVzIiwiYWxsS2V5cyIsImZsb3dLZXlzIiwic2hpZnQiLCJsZW5ndGgiLCJNYXRoIiwiZmxvb3IiLCJrZXlzIiwibWFwIiwiayIsImluZGV4IiwiYnV0dG9uQ2xpY2siLCJiaW5kIiwiY29tbW9uIiwibGFiZWxCdXR0b24iLCJjYXRlZ29yeSIsImV4dHJhQ2xhc3MiLCJjb21tYSIsImRvdCIsImRpc2FibGVkIiwia2V5SXNOb3RBbGxvd2VkIiwiY29tbWFuZCIsImFjdGlvbnMiLCJleHRyYVByb3BzIiwibmFtZSIsImRlbGV0ZUJ1dHRvbiIsIkljb24iLCJpY29uIiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwib2JqZWN0IiwiaXNSZXF1aXJlZCIsInN0cmluZyIsImJvb2wiLCJhcnJheSIsImZ1bmMiLCJvbmVPZlR5cGUiLCJudW1iZXIiLCJzdHlsZXMiLCJjb21tb25NcUtleWJvYXJkU3R5bGVzIiwiZ3JpZFJvd0dhcCIsImdyaWRDb2x1bW5HYXAiLCJjaGFyYWN0ZXIiLCJsYW5ndWFnZSIsImhvbGRlciIsImJvcmRlclJhZGl1cyIsInNwYWNpbmciLCJ1bml0Iiwi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QUEsSUFBSSxFQUFFO0FBQ0p4QyxNQUFBQSxNQUFNLEVBQUU7QUFESjtBQXZFbUIsR0FBWjtBQUFBLENBQWY7O2VBNEVlLHdCQUFXbUQsTUFBWCxFQUFtQjlFLE1BQW5CLEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBCdXR0b24gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvQnV0dG9uJztcbmltcG9ydCBJY29uQnV0dG9uIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0ljb25CdXR0b24nO1xuaW1wb3J0IHsgd2l0aFN0eWxlcyB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL3N0eWxlcyc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCB7IGxpZ2h0ZW4sIGZhZGUgfSBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9zdHlsZXMvY29sb3JNYW5pcHVsYXRvcic7XG5pbXBvcnQgZ3JlZW4gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvY29sb3JzL2dyZWVuJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IE1hdGhRdWlsbCBmcm9tICdAcGllLWZyYW1ld29yay9tYXRocXVpbGwnO1xuXG5pbXBvcnQgKiBhcyBtcSBmcm9tICcuLi9tcSc7XG5pbXBvcnQgeyBiYXNlU2V0IH0gZnJvbSAnLi4va2V5cyc7XG5pbXBvcnQgeyBjb25zdGFudHMgfSBmcm9tICdAcGllLWxpYi9lZGl0YWJsZS1odG1sJztcbmltcG9ydCB7IGNvbW1vbk1xS2V5Ym9hcmRTdHlsZXMgfSBmcm9tICcuLi9tcS9jb21tb24tbXEtc3R5bGVzJztcbmltcG9ydCB7IHNvcnRLZXlzIH0gZnJvbSAnLi9rZXlzLWxheW91dCc7XG5cbmNvbnN0IGxvZyA9IGRlYnVnKCdwaWUtbGliOm1hdGgtaW5saW5lOmtleXBhZCcpO1xuXG5jb25zdCBMYXRleEJ1dHRvbiA9IHdpdGhTdHlsZXMoKHRoZW1lKSA9PiAoe1xuICByb290OiB7XG4gICAgdGV4dFRyYW5zZm9ybTogJ25vbmUnLFxuICAgIHBhZGRpbmc6IDAsXG4gICAgbWFyZ2luOiAwLFxuICAgIGZvbnRTaXplOiAnMTEwJSAhaW1wb3J0YW50JyxcbiAgfSxcbiAgbGF0ZXhCdXR0b246IHtcbiAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gICAgdGV4dFRyYW5zZm9ybTogJ25vbmUgIWltcG9ydGFudCcsXG4gICAgJyYgLm1xLXNjYWxlZC5tcS1zcXJ0LXByZWZpeCc6IHtcbiAgICAgIHRyYW5zZm9ybTogJ3NjYWxlKDEsIDAuOSkgIWltcG9ydGFudCcsXG4gICAgfSxcbiAgICAnJiAubXEtc3VwLW9ubHkgLm1xLXN1cCc6IHtcbiAgICAgIG1hcmdpbkJvdHRvbTogJzAuOXB4ICFpbXBvcnRhbnQnLFxuICAgIH0sXG4gICAgJyYgLm1xLWVtcHR5Jzoge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiBgJHtmYWRlKHRoZW1lLnBhbGV0dGUuc2Vjb25kYXJ5Lm1haW4sIDAuNCl9ICFpbXBvcnRhbnRgLFxuICAgIH0sXG4gICAgJyYgLm1xLW92ZXJsaW5lIC5tcS1vdmVybGluZS1pbm5lcic6IHtcbiAgICAgIGJvcmRlclRvcDogJzJweCBzb2xpZCBibGFjaycsXG4gICAgfSxcbiAgICAnJiAubXEtbm9uLWxlYWYubXEtb3ZlcmxpbmUnOiB7XG4gICAgICBib3JkZXJUb3A6ICdub25lICFpbXBvcnRhbnQnLCAvLyBmaXhpbmcgUEQtNDg3MyAtIGluIE9ULCBpdCBoYXMgYm9yZGVyLXRvcCAxcHggYW5kIGFkZHMgZXh0cmEgbGluZVxuICAgIH0sXG4gICAgJyYgLm1xLW92ZXJhcnJvdyc6IHtcbiAgICAgIHdpZHRoOiAnMzBweCcsXG4gICAgICBtYXJnaW5Ub3A6ICcwICFpbXBvcnRhbnQnLFxuICAgICAgYm9yZGVyVG9wOiAnMnB4IHNvbGlkIGJsYWNrJyxcbiAgICAgIGZvbnRGYW1pbHk6ICdSb2JvdG8sIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWYgIWltcG9ydGFudCcsXG5cbiAgICAgICcmLm1xLWFycm93LWJvdGgnOiB7XG4gICAgICAgIHRvcDogJzBweCAhaW1wb3J0YW50JyxcbiAgICAgICAgJyYgKic6IHtcbiAgICAgICAgICBsaW5lSGVpZ2h0OiAnMSAhaW1wb3J0YW50JyxcbiAgICAgICAgICBib3JkZXJUb3A6ICdub25lICFpbXBvcnRhbnQnLCAvLyBmaXhpbmcgUEQtNDg3MyAtIGluIE9ULCBpdCBoYXMgYm9yZGVyLXRvcCAxcHggYW5kIGFkZHMgZXh0cmEgbGluZSxcbiAgICAgICAgfSxcbiAgICAgICAgJyY6YmVmb3JlJzoge1xuICAgICAgICAgIGZvbnRTaXplOiAnODAlJyxcbiAgICAgICAgICBsZWZ0OiAnY2FsYygtMTMlKSAhaW1wb3J0YW50JyxcbiAgICAgICAgICB0b3A6ICctMC4zMWVtICFpbXBvcnRhbnQnLFxuICAgICAgICB9LFxuICAgICAgICAnJjphZnRlcic6IHtcbiAgICAgICAgICBmb250U2l6ZTogJzgwJSAhaW1wb3J0YW50JyxcbiAgICAgICAgICByaWdodDogJ2NhbGMoLTEzJSkgIWltcG9ydGFudCcsXG4gICAgICAgICAgdG9wOiAnLTEuNWVtJyxcbiAgICAgICAgfSxcbiAgICAgICAgJyYubXEtZW1wdHk6YmVmb3JlJzoge1xuICAgICAgICAgIGZvbnRTaXplOiAnODAlJyxcbiAgICAgICAgICBsZWZ0OiAnY2FsYygtMTMlKScsXG4gICAgICAgICAgdG9wOiAnLTAuMjZlbScsXG4gICAgICAgIH0sXG4gICAgICAgICcmLm1xLWVtcHR5OmFmdGVyJzoge1xuICAgICAgICAgIGZvbnRTaXplOiAnODAlJyxcbiAgICAgICAgICByaWdodDogJ2NhbGMoLTEzJSknLFxuICAgICAgICAgIHRvcDogJy0wLjI2ZW0nLFxuICAgICAgICB9LFxuICAgICAgICAnJi5tcS1lbXB0eSc6IHtcbiAgICAgICAgICBtaW5IZWlnaHQ6ICcxLjRlbScsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgJyYubXEtYXJyb3ctcmlnaHQ6YmVmb3JlJzoge1xuICAgICAgICBmb250U2l6ZTogJzgwJScsXG4gICAgICAgIHJpZ2h0OiAnY2FsYygtMTMlKSAhaW1wb3J0YW50JyxcbiAgICAgICAgdG9wOiAnLTAuMjZlbSAhaW1wb3J0YW50JyxcbiAgICAgIH0sXG4gICAgICAnJiAubXEtb3ZlcmFycm93LWlubmVyJzoge1xuICAgICAgICBib3JkZXI6ICdub25lICFpbXBvcnRhbnQnLFxuICAgICAgfSxcbiAgICAgICcmIC5tcS1vdmVyYXJyb3ctaW5uZXIgLm1xLW92ZXJhcnJvdy1pbm5lci1yaWdodCc6IHtcbiAgICAgICAgZGlzcGxheTogJ25vbmUgIWltcG9ydGFudCcsXG4gICAgICB9LFxuICAgIH0sXG4gICAgJyYgLm1xLXJvb3QtYmxvY2snOiB7XG4gICAgICBwYWRkaW5nOiAnNXB4ICFpbXBvcnRhbnQnLFxuICAgIH0sXG4gICAgJyYgLm1xLW92ZXJhcnJvdy5tcS1hcnJvdy1ib3RoLm1xLWVtcHR5OmFmdGVyJzoge1xuICAgICAgcmlnaHQ6ICctNnB4JyxcbiAgICAgIGZvbnRTaXplOiAnODAlICFpbXBvcnRhbnQnLFxuICAgICAgdG9wOiAnLTNweCcsXG4gICAgfSxcbiAgICAnJiAubXEtb3ZlcmFycm93Lm1xLWFycm93LXJpZ2h0Lm1xLWVtcHR5OmJlZm9yZSc6IHtcbiAgICAgIHJpZ2h0OiAnLTVweCcsXG4gICAgICBmb250U2l6ZTogJzgwJSAhaW1wb3J0YW50JyxcbiAgICAgIHRvcDogJy0zcHgnLFxuICAgIH0sXG4gICAgJyYgLm1xLW92ZXJhcnJvdy5tcS1hcnJvdy1ib3RoLm1xLWVtcHR5OmJlZm9yZSc6IHtcbiAgICAgIGxlZnQ6ICctNnB4JyxcbiAgICAgIGZvbnRTaXplOiAnODAlICFpbXBvcnRhbnQnLFxuICAgICAgdG9wOiAnLTNweCcsXG4gICAgfSxcbiAgICAnJiAubXEtbG9uZ2Rpdi1pbm5lcic6IHtcbiAgICAgIGJvcmRlclRvcDogJzFweCBzb2xpZCAhaW1wb3J0YW50JyxcbiAgICAgIHBhZGRpbmdUb3A6ICcxLjVweCAhaW1wb3J0YW50JyxcbiAgICB9LFxuICAgICcmIC5tcS1wYXJhbGxlbG9ncmFtJzoge1xuICAgICAgbGluZUhlaWdodDogMC44NSxcbiAgICB9LFxuICAgICcmIC5tcS1vdmVyYXJjJzoge1xuICAgICAgYm9yZGVyVG9wOiAnMnB4IHNvbGlkIGJsYWNrICFpbXBvcnRhbnQnLFxuICAgICAgJyYgLm1xLW92ZXJsaW5lJzoge1xuICAgICAgICBib3JkZXJUb3A6ICdub25lICFpbXBvcnRhbnQnLCAvLyBmaXhpbmcgUEQtNDg3MyAtIGluIE9ULCBpdCBoYXMgYm9yZGVyLXRvcCAxcHggYW5kIGFkZHMgZXh0cmEgbGluZVxuICAgICAgfSxcbiAgICAgICcmIC5tcS1vdmVybGluZS1pbm5lcic6IHtcbiAgICAgICAgYm9yZGVyVG9wOiAnbm9uZSAhaW1wb3J0YW50JyxcbiAgICAgICAgcGFkZGluZ1RvcDogJzAgIWltcG9ydGFudCcsXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG4gIHBhcmFsbGVsQnV0dG9uOiB7XG4gICAgZm9udFN0eWxlOiAnaXRhbGljICFpbXBvcnRhbnQnLFxuICB9LFxuICBsZWZ0UmlnaHRBcnJvd0J1dHRvbjoge1xuICAgICcmIC5tcS1vdmVyYXJyb3cubXEtYXJyb3ctYm90aCc6IHtcbiAgICAgICcmIC5tcS1vdmVybGluZS1pbm5lcic6IHtcbiAgICAgICAgYm9yZGVyVG9wOiAnbm9uZSAhaW1wb3J0YW50JyxcbiAgICAgICAgcGFkZGluZ1RvcDogJzAgIWltcG9ydGFudCcsXG4gICAgICB9LFxuICAgICAgJyY6YWZ0ZXInOiB7XG4gICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUgIWltcG9ydGFudCcsXG4gICAgICAgIHRvcDogJzBweCAhaW1wb3J0YW50JyxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSxcbn0pKSgocHJvcHMpID0+IHtcbiAgbGV0IGJ1dHRvbkNsYXNzO1xuXG4gIGlmIChwcm9wcy5sYXRleCA9PT0gJ1xcXFxwYXJhbGxlbCcpIHtcbiAgICBidXR0b25DbGFzcyA9IGNsYXNzTmFtZXMocHJvcHMuY2xhc3Nlcy5sYXRleEJ1dHRvbiwgcHJvcHMubXFDbGFzc05hbWUsIHByb3BzLmNsYXNzZXMucGFyYWxsZWxCdXR0b24pO1xuICB9IGVsc2UgaWYgKHByb3BzLmxhdGV4ID09PSAnXFxcXG92ZXJsZWZ0cmlnaHRhcnJvd3tcXFxcb3ZlcmxpbmV7fX0nKSB7XG4gICAgYnV0dG9uQ2xhc3MgPSBjbGFzc05hbWVzKHByb3BzLmNsYXNzZXMubGF0ZXhCdXR0b24sIHByb3BzLm1xQ2xhc3NOYW1lLCBwcm9wcy5jbGFzc2VzLmxlZnRSaWdodEFycm93QnV0dG9uKTtcbiAgfSBlbHNlIHtcbiAgICBidXR0b25DbGFzcyA9IGNsYXNzTmFtZXMocHJvcHMuY2xhc3Nlcy5sYXRleEJ1dHRvbiwgcHJvcHMubXFDbGFzc05hbWUpO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBNUSA9IE1hdGhRdWlsbC5nZXRJbnRlcmZhY2UoMik7XG4gICAgY29uc3Qgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICBzcGFuLmlubmVySFRNTCA9ICcnO1xuICAgIGNvbnN0IG1hdGhGaWVsZCA9IE1RLlN0YXRpY01hdGgoc3Bhbik7XG5cbiAgICBtYXRoRmllbGQucGFyc2VMYXRleChwcm9wcy5sYXRleCk7XG4gICAgbWF0aEZpZWxkLmxhdGV4KHByb3BzLmxhdGV4KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIHJlY2VpdmVkIGxhdGV4IGhhcyBlcnJvcnMgLSBkbyBub3QgY3JlYXRlIGJ1dHRvblxuICAgIHJldHVybiA8PjwvPjtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPEJ1dHRvblxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKHByb3BzLmNsYXNzZXMucm9vdCwgcHJvcHMuY2xhc3NOYW1lKX1cbiAgICAgIG9uQ2xpY2s9e3Byb3BzLm9uQ2xpY2t9XG4gICAgICBhcmlhLWxhYmVsPXtwcm9wcy5hcmlhTGFiZWx9XG4gICAgPlxuICAgICAgPG1xLlN0YXRpYyBjbGFzc05hbWU9e2J1dHRvbkNsYXNzfSBsYXRleD17cHJvcHMubGF0ZXh9IC8+XG4gICAgPC9CdXR0b24+XG4gICk7XG59KTtcblxuY29uc3QgY3JlYXRlQ3VzdG9tTGF5b3V0ID0gKGxheW91dE9iaikgPT4ge1xuICBpZiAobGF5b3V0T2JqKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdyaWRUZW1wbGF0ZUNvbHVtbnM6IGByZXBlYXQoJHtsYXlvdXRPYmouY29sdW1uc30sIG1pbm1heChtaW4tY29udGVudCwgMTUwcHgpKWAsXG4gICAgICBncmlkVGVtcGxhdGVSb3dzOiBgcmVwZWF0KCR7bGF5b3V0T2JqLnJvd3N9LCBtaW5tYXgoNDBweCwgNjBweCkpYCxcbiAgICAgIGdyaWRBdXRvRmxvdzogJ2luaXRpYWwnLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge307XG59O1xuXG5leHBvcnQgY2xhc3MgS2V5UGFkIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGNvbnRyb2xsZWRLZXlwYWRNb2RlOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBiYXNlU2V0OiBQcm9wVHlwZXMuYXJyYXksXG4gICAgYWRkaXRpb25hbEtleXM6IFByb3BUeXBlcy5hcnJheSxcbiAgICBsYXlvdXRGb3JLZXlQYWQ6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgb25QcmVzczogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBvbkZvY3VzOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBub0RlY2ltYWw6IFByb3BUeXBlcy5ib29sLFxuICAgIHNldEtleXBhZEludGVyYWN0aW9uOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBtb2RlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMubnVtYmVyXSksXG4gIH07XG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgYmFzZVNldDogYmFzZVNldCxcbiAgICBub0RlY2ltYWw6IGZhbHNlLFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICAgIHRoaXMua2V5cGFkUmVmID0gUmVhY3QuY3JlYXRlUmVmKCk7XG4gIH1cblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICBjb25zdCBrZXlQYWRFbGVtZW50ID0gdGhpcy5rZXlwYWRSZWY/LmN1cnJlbnQ7XG4gICAgY29uc3QgbWFpbkNvbnRhaW5lciA9IGtleVBhZEVsZW1lbnQ/LmNsb3Nlc3QoYC4ke2NvbnN0YW50cy5NQUlOX0NPTlRBSU5FUl9DTEFTU31gKTtcbiAgICBjb25zdCBjdXJyZW50VG9vbGJhciA9IGtleVBhZEVsZW1lbnQ/LmNsb3Nlc3QoJy5waWUtdG9vbGJhcicpO1xuXG4gICAgLy8gbmVlZCBvbmx5IGZvciBtYXRoIGtleWJvYXJkIHNvIHdlIG5lZWQgYWxzbyBjb250cm9sbGVkS2V5cGFkTW9kZVxuICAgIGlmICh0aGlzLnByb3BzLmNvbnRyb2xsZWRLZXlwYWRNb2RlICYmIG1haW5Db250YWluZXIgJiYgY3VycmVudFRvb2xiYXIpIHtcbiAgICAgIGNvbnN0IG1haW5Db250YWluZXJQb3NpdGlvbiA9IG1haW5Db250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBjdXJyZW50VG9vbGJhclBvc2l0aW9uID0gY3VycmVudFRvb2xiYXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBkaWZmZXJlbmNlID1cbiAgICAgICAgbWFpbkNvbnRhaW5lclBvc2l0aW9uLnRvcCArXG4gICAgICAgIG1haW5Db250YWluZXJQb3NpdGlvbi5oZWlnaHQgLVxuICAgICAgICAoY3VycmVudFRvb2xiYXJQb3NpdGlvbi50b3AgKyBjdXJyZW50VG9vbGJhclBvc2l0aW9uLmhlaWdodCk7XG4gICAgICBpZiAoZGlmZmVyZW5jZSA8IDApIHtcbiAgICAgICAgY29uc3QgdG90YWxIZWlnaHQgPSBtYWluQ29udGFpbmVyUG9zaXRpb24uaGVpZ2h0ICsgbWFpbkNvbnRhaW5lclBvc2l0aW9uLnRvcCAtIGRpZmZlcmVuY2U7XG4gICAgICAgIC8vIGluY3JlYXNlIHRoZSBoZWlnaHQgb2YgdGhlIG1haW4gY29udGFpbmVyIGlmIGtleWJvYXJkIG5lZWRzIGl0XG4gICAgICAgIGlmIChtYWluQ29udGFpbmVyKSB7XG4gICAgICAgICAgbWFpbkNvbnRhaW5lci5zdHlsZS5oZWlnaHQgPSBgJHt0b3RhbEhlaWdodH1weGA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoa2V5UGFkRWxlbWVudCkge1xuICAgICAga2V5UGFkRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgdGhpcy5oYW5kbGVLZXlwYWRJbnRlcmFjdGlvbiwgdHJ1ZSk7XG4gICAgICBrZXlQYWRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuaGFuZGxlS2V5cGFkSW50ZXJhY3Rpb24sIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIGNvbnN0IGtleVBhZEVsZW1lbnQgPSB0aGlzLmtleXBhZFJlZj8uY3VycmVudDtcbiAgICAvLyBuZWVkIG9ubHkgZm9yIG1hdGgga2V5Ym9hcmRcbiAgICBpZiAodGhpcy5wcm9wcy5jb250cm9sbGVkS2V5cGFkTW9kZSAmJiBrZXlQYWRFbGVtZW50KSB7XG4gICAgICBjb25zdCBtYWluQ29udGFpbmVyID0ga2V5UGFkRWxlbWVudC5jbG9zZXN0KGAuJHtjb25zdGFudHMuTUFJTl9DT05UQUlORVJfQ0xBU1N9YCk7XG5cbiAgICAgIGlmIChtYWluQ29udGFpbmVyKSB7XG4gICAgICAgIG1haW5Db250YWluZXIuc3R5bGUuaGVpZ2h0ID0gJ3Vuc2V0JztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoa2V5UGFkRWxlbWVudCkge1xuICAgICAga2V5UGFkRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgdGhpcy5oYW5kbGVLZXlwYWRJbnRlcmFjdGlvbiwgdHJ1ZSk7XG4gICAgICBrZXlQYWRFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuaGFuZGxlS2V5cGFkSW50ZXJhY3Rpb24sIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUtleXBhZEludGVyYWN0aW9uID0gKCkgPT4ge1xuICAgIC8vIENoZWNrIGlmIHRoZSBzZXRLZXlwYWRJbnRlcmFjdGlvbiBwcm9wIGlzIGF2YWlsYWJsZSwgd2hpY2ggaXMgdXNlZCBmb3IgYm90aFxuICAgIC8vIHRoZSBsYW5ndWFnZSBrZXlwYWQgYW5kIHRoZSBzcGVjaWFsIGNoYXJhY3RlcnMga2V5cGFkXG4gICAgaWYgKHRoaXMucHJvcHMuc2V0S2V5cGFkSW50ZXJhY3Rpb24pIHtcbiAgICAgIHRoaXMucHJvcHMuc2V0S2V5cGFkSW50ZXJhY3Rpb24odHJ1ZSk7XG4gICAgfVxuICB9O1xuXG4gIGJ1dHRvbkNsaWNrID0gKGtleSkgPT4ge1xuICAgIGxvZygnW2J1dHRvbkNsaWNrXScsIGtleSk7XG4gICAgY29uc3QgeyBvblByZXNzIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgb25QcmVzcyhrZXkpO1xuICB9O1xuXG4gIGZsb3dLZXlzID0gKGJhc2UsIGV4dHJhcykgPT4ge1xuICAgIGNvbnN0IHRyYW5zcG9zZWQgPSBbLi4uc29ydEtleXMoYmFzZSksIC4uLnNvcnRLZXlzKGV4dHJhcyldO1xuICAgIHJldHVybiBfLmZsYXR0ZW4odHJhbnNwb3NlZCk7XG4gIH07XG5cbiAga2V5SXNOb3RBbGxvd2VkID0gKGtleSkgPT4ge1xuICAgIGNvbnN0IHsgbm9EZWNpbWFsIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgaWYgKCgoa2V5LndyaXRlID09PSAnLicgJiYga2V5LmxhYmVsID09PSAnLicpIHx8IChrZXkud3JpdGUgPT09ICcsJyAmJiBrZXkubGFiZWwgPT09ICcsJykpICYmIG5vRGVjaW1hbCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IGNsYXNzZXMsIGNsYXNzTmFtZSwgYmFzZVNldCwgYWRkaXRpb25hbEtleXMsIGxheW91dEZvcktleVBhZCwgb25Gb2N1cywgbW9kZSB9ID0gdGhpcy5wcm9wcztcblxuICAgIGNvbnN0IG5vQmFzZVNldCA9IFsnbm9uLW5lZ2F0aXZlLWludGVnZXJzJywgJ2ludGVnZXJzJywgJ2RlY2ltYWxzJywgJ2ZyYWN0aW9ucycsICdpdGVtLWF1dGhvcmluZycsICdsYW5ndWFnZSddO1xuXG4gICAgY29uc3Qga2V5c1dpdGhvdXRCYXNlU2V0ID0gbm9CYXNlU2V0LmluY2x1ZGVzKG1vZGUpO1xuICAgIGNvbnN0IGFsbEtleXMgPSBrZXlzV2l0aG91dEJhc2VTZXRcbiAgICAgID8gdGhpcy5mbG93S2V5cyhbXSwgYWRkaXRpb25hbEtleXMgfHwgW10pXG4gICAgICA6IHRoaXMuZmxvd0tleXMoYmFzZVNldCwgYWRkaXRpb25hbEtleXMgfHwgW10pOyAvLywgLi4uc29ydEtleXMoYWRkaXRpb25hbEtleXMpXTtcblxuICAgIGNvbnN0IHNoaWZ0ID0gYWxsS2V5cy5sZW5ndGggJSA1ID8gMSA6IDA7XG4gICAgY29uc3Qgc3R5bGUgPSB7XG4gICAgICBncmlkVGVtcGxhdGVDb2x1bW5zOiBgcmVwZWF0KCR7TWF0aC5mbG9vcihhbGxLZXlzLmxlbmd0aCAvIDUpICsgc2hpZnR9LCBtaW5tYXgobWluLWNvbnRlbnQsIDE1MHB4KSlgLFxuICAgICAgLi4uY3JlYXRlQ3VzdG9tTGF5b3V0KGxheW91dEZvcktleVBhZCksXG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2XG4gICAgICAgIHJlZj17dGhpcy5rZXlwYWRSZWZ9XG4gICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhjbGFzc2VzLmtleXMsIGNsYXNzTmFtZSwgY2xhc3Nlc1ttb2RlXSl9XG4gICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgICAgb25Gb2N1cz17b25Gb2N1c31cbiAgICAgID5cbiAgICAgICAge2FsbEtleXMubWFwKChrLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG9uQ2xpY2sgPSB0aGlzLmJ1dHRvbkNsaWNrLmJpbmQodGhpcywgayk7XG5cbiAgICAgICAgICBpZiAoIWspIHtcbiAgICAgICAgICAgIHJldHVybiA8c3BhbiBrZXk9e2BlbXB0eS0ke2luZGV4fWB9IC8+O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGNvbW1vbiA9IHtcbiAgICAgICAgICAgIG9uQ2xpY2ssXG4gICAgICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoXG4gICAgICAgICAgICAgIGNsYXNzZXMubGFiZWxCdXR0b24sXG4gICAgICAgICAgICAgICFrZXlzV2l0aG91dEJhc2VTZXQgJiYgY2xhc3Nlc1trLmNhdGVnb3J5XSxcbiAgICAgICAgICAgICAgY2xhc3Nlc1trLmV4dHJhQ2xhc3NdLFxuICAgICAgICAgICAgICBrLmxhYmVsID09PSAnLCcgJiYgY2xhc3Nlcy5jb21tYSxcbiAgICAgICAgICAgICAgay5sYWJlbCA9PT0gJy4nICYmIGNsYXNzZXMuZG90LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLmtleUlzTm90QWxsb3dlZChrKSxcbiAgICAgICAgICAgIGtleTogYCR7ay5sYWJlbCB8fCBrLmxhdGV4IHx8IGsuY29tbWFuZH0tJHtpbmRleH1gLFxuICAgICAgICAgICAgLi4uKGsuYWN0aW9ucyB8fCB7fSksXG4gICAgICAgICAgICAuLi4oay5leHRyYVByb3BzIHx8IHt9KSxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgaWYgKGsubGF0ZXgpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxMYXRleEJ1dHRvblxuICAgICAgICAgICAgICAgIGxhdGV4PXtrLmxhdGV4fVxuICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgICAgey4uLmNvbW1vbn1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMubGF0ZXhCdXR0b259XG4gICAgICAgICAgICAgICAgYXJpYUxhYmVsPXtrLmFyaWFMYWJlbCA/IGsuYXJpYUxhYmVsIDogay5uYW1lIHx8IGsubGFiZWx9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChrLmxhYmVsKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICB7Li4uY29tbW9ufVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhjb21tb24uY2xhc3NOYW1lLCB7IFtjbGFzc2VzLmRlbGV0ZUJ1dHRvbl06IGsubGFiZWwgPT09ICfijKsnIH0pfVxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2suYXJpYUxhYmVsID8gay5hcmlhTGFiZWwgOiBrLm5hbWUgfHwgay5sYWJlbH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtrLmxhYmVsfVxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IEljb24gPSBrLmljb24gPyBrLmljb24gOiAnZGl2JztcblxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPEljb25CdXR0b24gdGFiSW5kZXg9eyctMSd9IHsuLi5jb21tb259IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgIDxJY29uIGNsYXNzTmFtZT17Y2xhc3Nlcy5pY29ufSAvPlxuICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSl9XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG59XG5cbmNvbnN0IHN0eWxlcyA9ICh0aGVtZSkgPT4gKHtcbiAga2V5czoge1xuICAgIC4uLmNvbW1vbk1xS2V5Ym9hcmRTdHlsZXMsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgZ3JpZFRlbXBsYXRlUm93czogJ3JlcGVhdCg1LCBtaW5tYXgoNDBweCwgNjBweCkpJyxcbiAgICBncmlkUm93R2FwOiAnMHB4JyxcbiAgICBncmlkQ29sdW1uR2FwOiAnMHB4JyxcbiAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICB9LFxuICBjaGFyYWN0ZXI6IHtcbiAgICB0ZXh0VHJhbnNmb3JtOiAnaW5pdGlhbCAhaW1wb3J0YW50JyxcbiAgICBncmlkVGVtcGxhdGVSb3dzOiAncmVwZWF0KDUsIG1pbm1heCg0MHB4LCA1MHB4KSkgIWltcG9ydGFudCcsXG4gIH0sXG4gIGxhbmd1YWdlOiB7XG4gICAgZ3JpZFRlbXBsYXRlUm93czogJ3JlcGVhdCg0LCBtaW5tYXgoNDBweCwgNTBweCkpICFpbXBvcnRhbnQnLFxuICAgICcmIConOiB7XG4gICAgICBmb250RmFtaWx5OiAnUm9ib3RvLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQnLFxuICAgIH0sXG4gIH0sXG4gIGhvbGRlcjoge1xuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgIHdpZHRoOiAnMTAwJScsXG4gICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgYmFja2dyb3VuZENvbG9yOiAnI2NlZicsXG4gICAgYm9yZGVyUmFkaXVzOiAwLFxuICAgIHBhZGRpbmc6IGAke3RoZW1lLnNwYWNpbmcudW5pdH1weCAwICR7dGhlbWUuc3BhY2luZy51bml0fXB4IDBgLFxuICB9LFxuICBsYWJlbEJ1dHRvbjoge1xuICAgIG1pbldpZHRoOiAnYXV0bycsXG4gICAgZm9udFNpemU6ICcxNDAlICFpbXBvcnRhbnQnLFxuICAgIGJhY2tncm91bmRDb2xvcjogbGlnaHRlbih0aGVtZS5wYWxldHRlLnByaW1hcnkubGlnaHQsIDAuNSksXG4gICAgJyY6aG92ZXInOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IGxpZ2h0ZW4odGhlbWUucGFsZXR0ZS5wcmltYXJ5LmxpZ2h0LCAwLjcpLFxuICAgIH0sXG4gICAgYm9yZGVyUmFkaXVzOiAwLFxuICB9LFxuICBsYXRleEJ1dHRvbjoge1xuICAgIG1pbldpZHRoOiAnYXV0bycsXG4gICAgYm9yZGVyUmFkaXVzOiAwLFxuICAgIGJhY2tncm91bmRDb2xvcjogbGlnaHRlbih0aGVtZS5wYWxldHRlLnByaW1hcnkubGlnaHQsIDAuNSksXG4gICAgJyY6aG92ZXInOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IGxpZ2h0ZW4odGhlbWUucGFsZXR0ZS5wcmltYXJ5LmxpZ2h0LCAwLjcpLFxuICAgIH0sXG4gIH0sXG4gIGRlbGV0ZUJ1dHRvbjoge1xuICAgICcmID4gc3Bhbic6IHtcbiAgICAgIGZvbnRGYW1pbHk6ICdSb2JvdG8sIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWYgIWltcG9ydGFudCcsXG4gICAgfSxcbiAgfSxcbiAgYmFzZToge30sXG4gIG9wZXJhdG9yczoge1xuICAgIGJhY2tncm91bmRDb2xvcjogbGlnaHRlbih0aGVtZS5wYWxldHRlLnNlY29uZGFyeS5saWdodCwgMC41KSxcbiAgICAnJjpob3Zlcic6IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogbGlnaHRlbih0aGVtZS5wYWxldHRlLnNlY29uZGFyeS5saWdodCwgMC43KSxcbiAgICB9LFxuICB9LFxuICBjb21wYXJpc29uOiB7XG4gICAgYmFja2dyb3VuZENvbG9yOiBsaWdodGVuKGdyZWVuWzUwMF0sIDAuNSksXG4gICAgJyY6aG92ZXInOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IGxpZ2h0ZW4oZ3JlZW5bNTAwXSwgMC43KSxcbiAgICB9LFxuICB9LFxuICBjb21tYToge1xuICAgIGZvbnRTaXplOiAnMjAwJSAhaW1wb3J0YW50JyxcbiAgICBsaW5lSGVpZ2h0OiAnMTAwJScsXG4gIH0sXG4gIGRvdDoge1xuICAgIGZvbnRTaXplOiAnMjAwJSAhaW1wb3J0YW50JyxcbiAgICBsaW5lSGVpZ2h0OiAnMTAwJScsXG4gIH0sXG4gIGljb246IHtcbiAgICBoZWlnaHQ6ICczMHB4JyxcbiAgfSxcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCB3aXRoU3R5bGVzKHN0eWxlcykoS2V5UGFkKTtcbiJdfQ==